source: sandbox/2.3-MailArchiver/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/options.js @ 6779

Revision 6779, 14.3 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1/*
2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.html or http://ckeditor.com/license
4*/
5
6CKEDITOR.dialog.add( 'scaytcheck', function( editor )
7{
8        var firstLoad = true,
9                captions,
10                doc = CKEDITOR.document,
11                tags = [],
12                i,
13                contents = [],
14                userDicActive = false;
15        var dic_buttons = [
16                // [0] contains buttons for creating
17                "dic_create,dic_restore",
18                // [1] contains buton for manipulation
19                "dic_rename,dic_delete"
20        ];
21        var tags_contents =  [
22                                {
23                                        id : 'options',
24                                        label : editor.lang.scayt.optionsTab,
25                                        elements : [
26                                                {
27                                                        type : 'html',
28                                                        id : 'options',
29                                                        html :  '<div class="inner_options">' +
30                                                                        '       <div class="messagebox"></div>' +
31                                                                        '       <div style="display:none;">' +
32                                                                        '               <input type="checkbox" value="0" id="allCaps" />' +
33                                                                        '               <label for="allCaps" id="label_allCaps"></label>' +
34                                                                        '       </div>' +
35                                                                        '       <div style="display:none;">' +
36                                                                        '               <input type="checkbox" value="0" id="ignoreDomainNames" />' +
37                                                                        '               <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>' +
38                                                                        '       </div>' +
39                                                                        '       <div style="display:none;">' +
40                                                                        '       <input type="checkbox" value="0" id="mixedCase" />' +
41                                                                        '               <label for="mixedCase" id="label_mixedCase"></label>' +
42                                                                        '       </div>' +
43                                                                        '       <div style="display:none;">' +
44                                                                        '               <input type="checkbox" value="0" id="mixedWithDigits" />' +
45                                                                        '               <label for="mixedWithDigits" id="label_mixedWithDigits"></label>' +
46                                                                        '       </div>' +
47                                                                        '</div>'
48                                                }
49                                        ]
50                                },
51                                {
52                                        id : 'langs',
53                                        label : editor.lang.scayt.languagesTab,
54                                        elements : [
55                                                {
56                                                        type : 'html',
57                                                        id : 'langs',
58                                                        html :  '<div class="inner_langs">' +
59                                                                        '       <div class="messagebox"></div>  ' +
60                                                                        '   <div style="float:left;width:47%;margin-left:5px;" id="scayt_lcol" ></div>' +
61                                                                        '   <div style="float:left;width:47%;margin-left:15px;" id="scayt_rcol"></div>' +
62                                                                        '</div>'
63                                                }
64                                        ]
65                                },
66                                {
67                                        id : 'dictionaries',
68                                        label : editor.lang.scayt.dictionariesTab,
69                                        elements : [
70                                                {
71                                                        type : 'html',
72                                                        style: '',
73                                                        id : 'dic',
74                                                        html :  '<div class="inner_dictionary" style="text-align:left; white-space:normal;">' +
75                                                                        '       <div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' +
76                                                                        '       <div style="margin:5px auto; width:80%;white-space:normal;"> ' +
77                                                                        '       <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+
78                                                                        '               <span class="cke_dialog_ui_labeled_content" >'+
79                                                                        '                       <div class="cke_dialog_ui_input_text">'+
80                                                                        '                               <input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>'+
81                                                                        '               </div></span></div>'+
82                                                                        '               <div style="margin:5px auto; width:80%;white-space:normal;">'+
83                                                                        '                       <a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">'+
84                                                                        '                               </a>' +
85                                                                        '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">'+
86                                                                        '                               </a>' +
87                                                                        '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">'+
88                                                                        '                               </a>' +
89                                                                        '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">'+
90                                                                        '                               </a>' +
91                                                                        '               </div>' +
92                                                                        '       <div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div>' +
93                                                                        '</div>'
94                                                }
95                                        ]
96                                },
97                                {
98                                        id : 'about',
99                                        label : editor.lang.scayt.aboutTab,
100                                        elements : [
101                                                {
102                                                        type : 'html',
103                                                        id : 'about',
104                                                        style : 'margin: 10px 40px;',
105                                                        html : '<div id="scayt_about"></div>'
106                                                }
107                                        ]
108                                }
109                        ];
110        var dialogDefiniton = {
111                title : editor.lang.scayt.title,
112                minWidth : 340,
113                minHeight : 200,
114                onShow : function()
115                {
116                        var dialog = this;
117                        dialog.data = editor.fire( 'scaytDialog', {} );
118                        dialog.options = dialog.data.scayt_control.option();
119                        dialog.sLang = dialog.data.scayt_control.sLang;
120
121                        if ( !dialog.data || !dialog.data.scayt || !dialog.data.scayt_control )
122                        {
123                                alert( 'Error loading application service' );
124                                dialog.hide();
125                                return;
126                        }
127
128                        var stop = 0;
129                        if ( firstLoad )
130                        {
131                                dialog.data.scayt.getCaption( 'en', function( caps )
132                                        {
133                                                if ( stop++ > 0 )       // Once only
134                                                        return;
135                                                captions = caps;
136                                                init_with_captions.apply( dialog );
137                                                reload.apply( dialog );
138                                                firstLoad = false;
139                                        });
140                        }
141                        else
142                                reload.apply( dialog );
143
144                        dialog.selectPage( dialog.data.tab );
145                },
146                onOk : function()
147                {
148                        var scayt_control =  this.data.scayt_control,
149                                o = scayt_control.option(),
150                                c = 0;
151
152                        // Set up options if any was set.
153                        for ( var i in this.options )
154                        {
155                                if (o[i] != this.options[ i ] && c === 0 )
156                                {
157                                        scayt_control.option( this.options );
158                                        c++;
159                                }
160                        }
161
162                        // Setup languge if it was changed.
163                        var csLang = this.chosed_lang;
164                        if ( csLang && this.data.sLang != csLang )
165                        {
166                                scayt_control.setLang( csLang );
167                                c++;
168                        }
169                        if ( c > 0 )
170                                scayt_control.refresh();
171                },
172                contents : contents
173        };
174
175        var scayt_control = CKEDITOR.plugins.scayt.getScayt( editor );
176        if ( scayt_control )
177        {
178                tags = scayt_control.uiTags;
179        }
180
181        for ( i in tags ) {
182                if ( tags[ i ] == 1 )
183                        contents[ contents.length ] = tags_contents[ i ];
184        }
185        if ( tags[2] == 1 )
186                userDicActive = true;
187
188        function onDicButtonClick()
189        {
190                var dic_name = doc.getById('dic_name').getValue();
191                if ( !dic_name )
192                {
193                        dic_error_message(" Dictionary name should not be empty. ");
194                        return false;
195                }
196                //apply handler
197                window.dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] );
198
199                return true;
200        }
201        var init_with_captions = function()
202        {
203                var dialog = this,
204                        lang_list = dialog.data.scayt.getLangList(),
205                        buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ],
206                        labels = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ],
207                        i;
208
209                // Add buttons titles
210                if (userDicActive)
211                {
212                        for ( i in buttons )
213                        {
214                                var button = buttons[ i ];
215                                doc.getById( button ).setHtml( '<span class="cke_dialog_ui_button">' + captions[ 'button_' + button]  +'</span>' );
216                        }
217                        doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] );
218                }
219
220
221                // Fill options and dictionary labels.
222                for ( i in labels )
223                {
224                        var label = 'label_' + labels[ i ],
225                                labelElement = doc.getById( label );
226
227                        if (  'undefined' != typeof labelElement
228                           && 'undefined' != typeof captions[ label ]
229                           && 'undefined' != typeof dialog.options[labels[ i ]] )
230                        {
231                                labelElement.setHtml( captions[ label ] );
232                                var labelParent = labelElement.getParent();
233                                labelParent.$.style.display = "block";
234                        }
235                }
236
237                var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
238                                        '<p>' + captions[ 'version' ]  + dialog.data.scayt.version.toString() + '</p>' +
239                                        '<p>' + captions[ 'about_throwt_copy' ] + '</p>';
240
241                doc.getById( 'scayt_about' ).setHtml( about );
242
243                // Create languages tab.
244                var createOption = function( option, list )
245                {
246                        var label = doc.createElement( 'label' );
247                        label.setAttribute( 'for', 'cke_option' + option );
248                        label.setHtml( list[ option ] );
249
250                        if ( dialog.sLang == option )   // Current.
251                                dialog.chosed_lang = option;
252
253                        var div = doc.createElement( 'div' );
254                        var radio = CKEDITOR.dom.element.createFromHtml( '<input id="cke_option' +
255                                        option + '" type="radio" ' +
256                                        ( dialog.sLang == option ? 'checked="checked"' : '' ) +
257                                        ' value="' + option + '" name="scayt_lang" />' );
258
259                        radio.on( 'click', function()
260                                {
261                                        this.$.checked = true;
262                                        dialog.chosed_lang = option;
263                                });
264
265                        div.append( radio );
266                        div.append( label );
267
268                        return {
269                                lang : list[ option ],
270                                code : option,
271                                radio : div
272                        };
273                };
274
275                var langList = [];
276                for ( i in lang_list.rtl )
277                        langList[ langList.length ] = createOption( i, lang_list.ltr );
278
279                for ( i in lang_list.ltr )
280                        langList[ langList.length  ] = createOption( i, lang_list.ltr );
281
282                langList.sort(  function( lang1, lang2 )
283                        {
284                                return ( lang2.lang > lang1.lang ) ? -1 : 1 ;
285                        });
286
287                var fieldL = doc.getById( 'scayt_lcol' ),
288                        fieldR = doc.getById( 'scayt_rcol' );
289                for ( i=0; i < langList.length; i++ )
290                {
291                        var field = ( i < langList.length / 2 ) ? fieldL : fieldR;
292                        field.append( langList[ i ].radio );
293                }
294
295                // user dictionary handlers
296                var dic = {};
297                dic.dic_create = function( el, dic_name , dic_buttons )
298                        {
299                                // comma separated button's ids include repeats if exists
300                                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
301
302                                var err_massage = captions["err_dic_create"];
303                                var suc_massage = captions["succ_dic_create"];
304                                //console.info("--plugin ");
305
306                                window.scayt.createUserDictionary(dic_name,
307                                        function(arg)
308                                                {
309                                                        //console.info( "dic_create callback called with args" , arg );
310                                                        hide_dic_buttons ( all_buttons );
311                                                        display_dic_buttons ( dic_buttons[1] );
312                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
313                                                        dic_success_message (suc_massage);
314                                                },
315                                        function(arg)
316                                                {
317                                                        //console.info( "dic_create errorback called with args" , arg )
318                                                        err_massage = err_massage.replace("%s" ,arg.dname );
319                                                        dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
320                                                });
321
322                        };
323
324                dic.dic_rename = function( el, dic_name )
325                        {
326                                //
327                                // try to rename dictionary
328                                // @TODO: rename dict
329                                //console.info ( captions["err_dic_rename"] )
330                                var err_massage = captions["err_dic_rename"] || "";
331                                var suc_massage = captions["succ_dic_rename"] || "";
332                                window.scayt.renameUserDictionary(dic_name,
333                                        function(arg)
334                                                {
335                                                        //console.info( "dic_rename callback called with args" , arg );
336                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
337                                                        set_dic_name( dic_name );
338                                                        dic_success_message ( suc_massage );
339                                                },
340                                        function(arg)
341                                                {
342                                                        //console.info( "dic_rename errorback called with args" , arg )
343                                                        err_massage = err_massage.replace("%s" , arg.dname  );
344                                                        set_dic_name( dic_name );
345                                                        dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
346                                                });
347                        };
348
349                dic.dic_delete = function ( el, dic_name , dic_buttons )
350                        {
351                                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
352                                var err_massage = captions["err_dic_delete"];
353                                var suc_massage = captions["succ_dic_delete"];
354
355                                // try to delete dictionary
356                                // @TODO: delete dict
357                                window.scayt.deleteUserDictionary(
358                                        function(arg)
359                                                {
360                                                        //console.info( "dic_delete callback " , dic_name ,arg );
361                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
362                                                        hide_dic_buttons ( all_buttons );
363                                                        display_dic_buttons ( dic_buttons[0] );
364                                                        set_dic_name( "" ); // empty input field
365                                                        dic_success_message( suc_massage );
366                                                },
367                                        function(arg)
368                                                {
369                                                        //console.info( " dic_delete errorback called with args" , arg )
370                                                        err_massage = err_massage.replace("%s" , arg.dname );
371                                                        dic_error_message(err_massage);
372                                                });
373                        };
374
375                dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
376                        {
377                                // try to restore existing dictionary
378                                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
379                                var err_massage = captions["err_dic_restore"];
380                                var suc_massage = captions["succ_dic_restore"];
381
382                                window.scayt.restoreUserDictionary(dic_name,
383                                        function(arg)
384                                                {
385                                                        //console.info( "dic_restore callback called with args" , arg );
386                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
387                                                        hide_dic_buttons ( all_buttons );
388                                                        display_dic_buttons(dic_buttons[1]);
389                                                        dic_success_message( suc_massage );
390                                                },
391                                        function(arg)
392                                                {
393                                                        //console.info( " dic_restore errorback called with args" , arg )
394                                                        err_massage = err_massage.replace("%s" , arg.dname );
395                                                        dic_error_message( err_massage );
396                                                });
397                        };
398
399                // ** bind event listeners
400                var arr_buttons = ( dic_buttons[0] + ',' + dic_buttons[1] ).split( ',' ),
401                        l;
402
403                for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 )
404                {
405                        var dic_button = doc.getById(arr_buttons[i]);
406                        if ( dic_button )
407                                dic_button.on( 'click', onDicButtonClick, this );
408                }
409        };
410
411        var reload = function()
412        {
413                var dialog = this;
414
415                // Animate options.
416                for ( var i in dialog.options )
417                {
418                        var checkbox = doc.getById( i );
419                        if ( checkbox )
420                        {
421                                checkbox.removeAttribute( 'checked' );
422                                if ( dialog.options[ i ] == 1 )
423                                        checkbox.setAttribute( 'checked', 'checked' );
424
425                                // Bind events. Do it only once.
426                                if ( firstLoad )
427                                {
428                                        checkbox.on( 'click', function()
429                                                {
430                                                        dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ;
431                                                } );
432                                }
433                        }
434                }
435
436                // * user dictionary
437                if ( userDicActive ){
438                        window.scayt.getNameUserDictionary(
439                        function( o )
440                        {
441                                var dic_name = o.dname;
442                                if ( dic_name )
443                                {
444                                        doc.getById( 'dic_name' ).setValue(dic_name);
445                                        display_dic_buttons( dic_buttons[1] );
446                                }
447                                else
448                                        display_dic_buttons( dic_buttons[0] );
449
450                        },
451                        function ()
452                        {
453                                doc.getById( 'dic_name' ).setValue("");
454                        });
455                        dic_success_message("");
456                }
457
458        };
459
460        function dic_error_message ( m )
461                {
462                        doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
463                }
464    function dic_success_message ( m )
465                {
466                        doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
467                }
468        function display_dic_buttons ( sIds )
469                {
470
471                        sIds = String( sIds );
472                        var aIds = sIds.split(',');
473                        for ( var i=0, l = aIds.length; i < l ; i+=1)
474                        {
475                                doc.getById( aIds[i] ).$.style.display = "inline";
476                        }
477
478                }
479        function hide_dic_buttons ( sIds )
480                {
481                        sIds = String( sIds );
482                        var aIds = sIds.split(',');
483                        for ( var i = 0, l = aIds.length; i < l ; i += 1 )
484                        {
485                                doc.getById( aIds[i] ).$.style.display = "none";
486                        }
487                }
488        function set_dic_name ( dic_name )
489                {
490                        doc.getById('dic_name').$.value= dic_name;
491                }
492
493        return dialogDefiniton;
494});
Note: See TracBrowser for help on using the repository browser.