Ticket #3839: 3839.patch

File 3839.patch, 19.0 KB (added by WebSpellChecker.net, 11 years ago)

patch proposed

  • dialogs/options.js

     
    88        var firstLoad = true,
    99                captions,
    1010                doc = CKEDITOR.document,
    11                 fckLang = 'en';
     11                tags = [1111],
     12                i,
     13                contents = [],
     14                userDicActive = false;
    1215        var dic_buttons = [
    1316                // [0] contains buttons for creating
    1417                "dic_create,dic_restore",
    1518                // [1] contains buton for manipulation
    1619                "dic_rename,dic_delete"
    1720        ];
     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 _return = {
     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;
    18120
     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 oN in this.options )
     154                                {
     155                                        if (o[oN] != this.options[ oN ] && 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 ( var i in tags) {
     182                if (tags[i] == 1)
     183                        contents[contents.length] = tags_contents[i];
     184        }
     185        if (tags.length > 0 && typeof tags[2] != 'undefined' && tags[2] == 1)
     186                userDicActive = true;
     187       
    19188        var init_with_captions = function()
    20189        {
    21190                var dialog = this,
     
    25194                        i;
    26195
    27196                // Add buttons titles
    28                 for ( i in buttons )
     197                if (userDicActive)
    29198                {
    30                         var button = buttons[ i ];
    31                         doc.getById( button ).setHtml( '<span class="cke_dialog_ui_button">' + captions[ 'button_' + button]  +'</span>' );
     199                        for ( var i in buttons )
     200                        {
     201                                var button = buttons[ i ];
     202                                doc.getById( button ).setHtml( '<span class="cke_dialog_ui_button">' + captions[ 'button_' + button]  +'</span>' );
     203                        }
     204                        doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] );
    32205                }
    33                 doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] );
     206               
    34207
    35208                // Fill options and dictionary labels.
    36209                for ( i in labels )
     
    217390                for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 )
    218391                {
    219392                        var dic_button = doc.getById(arr_buttons[i]);
    220 
    221                         dic_button.on( 'click', function ()
    222                                 {
    223                                         var dic_name = doc.getById('dic_name').getValue();
    224                                         if ( !dic_name )
     393                        if ( dic_button )       
     394                                dic_button.on( 'click', function ()
    225395                                        {
    226                                                 dic_error_message(" Dictionary name should not be empty. ");
    227                                                 return false;
    228                                         }
    229                                         //apply handler
    230                                         dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] );
    231 
    232                                         return true;
    233                                 });
     396                                                var dic_name = doc.getById('dic_name').getValue();
     397                                                if ( !dic_name )
     398                                                {
     399                                                        dic_error_message(" Dictionary name should not be empty. ");
     400                                                        return false;
     401                                                }
     402                                                //apply handler
     403                                                dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] );
     404       
     405                                                return true;
     406                                        });
    234407                }
    235408        };
    236409        var reload = function()
     
    259432                }
    260433
    261434                // * user dictionary
    262                 scayt.getNameUserDictionary(
     435                if ( userDicActive ){
     436                        scayt.getNameUserDictionary(
    263437                        function( o )
    264438                        {
    265439                                var dic_name = o.dname;
     
    273447
    274448                        },
    275449                        function ()
    276                                 {
    277                                         doc.getById( 'dic_name' ).setValue("");
    278                                 });
    279 
    280                 dic_success_message("");
     450                        {
     451                                doc.getById( 'dic_name' ).setValue("");
     452                        });
     453                        dic_success_message("");
     454                }
     455               
    281456        };
    282457
    283458        function dic_error_message ( m )
    284459                {
    285460                        doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
    286461                }
    287         function dic_success_message ( m )
     462    function dic_success_message ( m )
    288463                {
    289464                        doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
    290465                }
     
    313488                        doc.getById('dic_name').$.value= dic_name;
    314489                }
    315490
    316         return {
    317                 title : editor.lang.scayt.title,
    318                 minWidth : 340,
    319                 minHeight : 200,
    320                 onShow : function()
    321                         {
    322                                 var dialog = this;
    323                                 dialog.data = editor.fire( 'scaytDialog', {} );
    324                                 dialog.options = dialog.data.scayt_control.option();
    325                                 dialog.sLang = dialog.data.scayt_control.sLang;
    326 
    327                                 if ( !dialog.data || !dialog.data.scayt || !dialog.data.scayt_control )
    328                                 {
    329                                         alert( 'Error loading application service' );
    330                                         dialog.hide();
    331                                         return;
    332                                 }
    333 
    334                                 var stop = 0;
    335                                 if ( firstLoad )
    336                                 {
    337                                         dialog.data.scayt.getCaption( 'en', function( caps )
    338                                                 {
    339                                                         if ( stop++ > 0 )       // Once only
    340                                                                 return;
    341                                                         captions = caps;
    342                                                         init_with_captions.apply( dialog );
    343                                                         reload.apply( dialog );
    344                                                         firstLoad = false;
    345                                                 });
    346                                 }
    347                                 else
    348                                         reload.apply( dialog );
    349 
    350                                 dialog.selectPage( dialog.data.tab );
    351                         },
    352                         onOk : function()
    353                         {
    354                                 var scayt_control =  this.data.scayt_control,
    355                                         o = scayt_control.option(),
    356                                         c = 0;
    357 
    358                                 // Set up options if any was set.
    359                                 for ( var oN in this.options )
    360                                 {
    361                                         if (o[oN] != this.options[ oN ] && c === 0 )
    362                                         {
    363                                                 scayt_control.option( this.options );
    364                                                 c++;
    365                                         }
    366                                 }
    367 
    368                                 // Setup languge if it was changed.
    369                                 var csLang = this.chosed_lang;
    370                                 if ( csLang && this.data.sLang != csLang )
    371                                 {
    372                                         scayt_control.setLang( csLang );
    373                                         c++;
    374                                 }
    375                                 if ( c > 0 )
    376                                         scayt_control.refresh();
    377                         },
    378                         contents : [
    379                                 {
    380                                         id : 'options',
    381                                         label : editor.lang.scayt.optionsTab,
    382                                         elements : [
    383                                                 {
    384                                                         type : 'html',
    385                                                         id : 'options',
    386                                                         html :  '<div class="inner_options">' +
    387                                                                         '       <div class="messagebox"></div>' +
    388                                                                         '       <div style="display:none;">' +
    389                                                                         '               <input type="checkbox" value="0" id="allCaps" />' +
    390                                                                         '               <label for="allCaps" id="label_allCaps"></label>' +
    391                                                                         '       </div>' +
    392                                                                         '       <div style="display:none;">' +
    393                                                                         '               <input type="checkbox" value="0" id="ignoreDomainNames" />' +
    394                                                                         '               <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>' +
    395                                                                         '       </div>' +
    396                                                                         '       <div style="display:none;">' +
    397                                                                         '       <input type="checkbox" value="0" id="mixedCase" />' +
    398                                                                         '               <label for="mixedCase" id="label_mixedCase"></label>' +
    399                                                                         '       </div>' +
    400                                                                         '       <div style="display:none;">' +
    401                                                                         '               <input type="checkbox" value="0" id="mixedWithDigits" />' +
    402                                                                         '               <label for="mixedWithDigits" id="label_mixedWithDigits"></label>' +
    403                                                                         '       </div>' +
    404                                                                         '</div>'
    405                                                 }
    406                                         ]
    407                                 },
    408                                 {
    409                                         id : 'langs',
    410                                         label : editor.lang.scayt.languagesTab,
    411                                         elements : [
    412                                                 {
    413                                                         type : 'html',
    414                                                         id : 'langs',
    415                                                         html :  '<div class="inner_langs">' +
    416                                                                         '       <div class="messagebox"></div>  ' +
    417                                                                         '   <div style="float:left;width:47%;margin-left:5px;" id="scayt_lcol" ></div>' +
    418                                                                         '   <div style="float:left;width:47%;margin-left:15px;" id="scayt_rcol"></div>' +
    419                                                                         '</div>'
    420                                                 }
    421                                         ]
    422                                 },
    423                                 {
    424                                         id : 'dictionaries',
    425                                         label : editor.lang.scayt.dictionariesTab,
    426                                         elements : [
    427                                                 {
    428                                                         type : 'html',
    429                                                         style: '',
    430                                                         id : 'dic',
    431                                                         html :  '<div class="inner_dictionary" style="text-align:left; white-space:normal;">' +
    432                                                                         '       <div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' +
    433                                                                         '       <div style="margin:5px auto; width:80%;white-space:normal;"> ' +
    434                                                                         '       <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+
    435                                                                         '               <span class="cke_dialog_ui_labeled_content" >'+
    436                                                                         '                       <div class="cke_dialog_ui_input_text">'+
    437                                                                         '                               <input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>'+
    438                                                                         '               </div></span></div>'+
    439                                                                         '               <div style="margin:5px auto; width:80%;white-space:normal;">'+
    440                                                                         '                       <a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">'+
    441                                                                         '                               </a>' +
    442                                                                         '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">'+
    443                                                                         '                               </a>' +
    444                                                                         '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">'+
    445                                                                         '                               </a>' +
    446                                                                         '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">'+
    447                                                                         '                               </a>' +
    448                                                                         '               </div>' +
    449                                                                         '       <div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div>' +
    450                                                                         '</div>'
    451                                                 }
    452                                         ]
    453                                 },
    454                                 {
    455                                         id : 'about',
    456                                         label : editor.lang.scayt.aboutTab,
    457                                         elements : [
    458                                                 {
    459                                                         type : 'html',
    460                                                         id : 'about',
    461                                                         style : 'margin: 10px 40px;',
    462                                                         html : '<div id="scayt_about"></div>'
    463                                                 }
    464                                         ]
    465                                 }
    466                         ]
    467         };
     491        return _return;
    468492});
  • plugin.js

     
    1818        var onEngineLoad = function()
    1919        {
    2020                var editor = this;
    21                 dojo.requireLocalization( 'scayt', 'caption', '', 'ROOT' );
    2221
    2322                var createInstance = function() // Create new instance every time Document is created.
    2423                {
    2524                        // Initialise Scayt instance.
    26                         var oParams = CKEDITOR.config.scaytParams || {};
     25                        var oParams = {};
    2726                        oParams.srcNodeRef = editor.document.getWindow().$.frameElement;                // Get the iframe.
    2827                        // syntax : AppName.AppVersion@AppRevision
    2928                        oParams.assocApp  = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision;
     29                       
     30                        oParams.customerid = CKEDITOR.config.scayt_customerid  || "1:11111111111111111111111111111111111111";
     31                        oParams.customDictionaryName = CKEDITOR.config.scayt_customDictionaryName;
     32                        oParams.userDictionaryName = CKEDITOR.config.scayt_userDictionaryName;
     33                        oParams.defLang = CKEDITOR.config.scayt_defLang;
     34                       
     35                        if ( CKEDITOR._scaytParams )
     36                                for (var k in CKEDITOR._scaytParams){
     37                                        oParams[k] = CKEDITOR._scaytParams[k];
     38                                }
     39                       
    3040                        var scayt_control = new scayt( oParams );
    3141
    3242                        // Copy config.
     
    3747                                scayt_control.option( lastInstance.option() );
    3848                                scayt_control.paused = lastInstance.paused;
    3949                        }
    40 
     50                       
    4151                        plugin.instances[ editor.name ] = scayt_control;
    4252
    4353                        try {
     
    6777
    6878                editor.on( 'beforeCommandExec', function( ev )          // Disable SCAYT before Source command execution.
    6979                        {
    70                                 if ( ev.data.name == 'source' && editor.mode == 'wysiwyg' )
     80                                if ( (ev.data.name == 'source' ||  ev.data.name == 'newpage') && editor.mode == 'wysiwyg' )
    7181                                {
    72                                         var scayt = plugin.getScayt( editor );
    73                                         if ( scayt )
     82                                        var scayt_instanse = plugin.getScayt( editor );
     83                                        if ( scayt_instanse )
    7484                                        {
    75                                                 scayt.paused = !scayt.disabled;
    76                                                 scayt.setDisabled( true );
     85                                                scayt_instanse.paused = !scayt_instanse.disabled;
     86                                                scayt_instanse.destroy();
     87                                                delete plugin.instances[ editor.name ];
    7788                                        }
    7889                                }
    7990                        });
    80 
     91               
    8192                // Listen to data manipulation to reflect scayt markup.
    8293                editor.on( 'afterSetData', function()
    8394                        {
     
    8596                                        plugin.getScayt( editor ).refresh();
    8697                        });
    8798
     99                // Reload spell-checking for current word after insertion completed.
     100                editor.on( 'insertElement', function()
     101                        {
     102                                var scayt_instance = plugin.getScayt( editor );
     103                                if ( plugin.isScaytEnabled( editor ) )
     104                                {
     105                                        // Unlock the selection before reload, SCAYT will take
     106                                        // care selection update.
     107                                        if ( CKEDITOR.env.ie )
     108                                                editor.getSelection().unlock( true );
     109
     110                                        // Swallow any SCAYT engine errors.
     111                                        try{
     112                                                scayt_instance.refresh();
     113                                        }catch( er )
     114                                        {}
     115                                }
     116                        }, this, null, 50 );
     117
    88118                editor.on( 'scaytDialog', function( ev )        // Communication with dialog.
    89119                        {
    90120                                ev.data.djConfig = djConfig;
     
    134164                },
    135165                isScaytEnabled : function( editor )
    136166                {
    137                         var scayt = this.getScayt( editor );
    138                         return ( scayt ) ? scayt.disabled === false : false;
     167                        var scayt_instanse = this.getScayt( editor );
     168                        return ( scayt_instanse ) ? scayt_instanse.disabled === false : false;
    139169                },
    140170                loadEngine : function( editor )
    141171                {
     
    158188                        var parseUrl =  function(data)
    159189                                {
    160190                                        var m = data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/);
    161                                         return { path: m[1], file: m[2] };
     191                                        return m == null
     192                                                        ? data
     193                                                        :{ path: m[1], file: m[2] };
    162194                                };
    163195
    164196                        // compose scayt url
    165197                        var protocol = document.location.protocol;
    166                         var baseUrl  = "svc.spellchecker.net/spellcheck/lf/scayt/scayt.js";
    167                         var scaytUrl  =  editor.config.scaytParams.srcScayt ||
    168                                 (protocol + "//" + baseUrl);
    169                         var scaytConfigBaseUrl = parseUrl(scaytUrl).path +  "/";
     198                        var baseUrl  = "svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js";
     199                       
     200                        var scaytUrl  =  CKEDITOR.config.scayt_srcUrl || (protocol + "//" + baseUrl);
     201                        var scaytConfigBaseUrl =  parseUrl(scaytUrl).path +  "/";
    170202
    171                         djScaytConfig =
     203                        CKEDITOR._djScaytConfig =
    172204                        {
    173205                                baseUrl: scaytConfigBaseUrl,
    174206                                addOnLoad:
     
    181213                                isDebug: false
    182214                        };
    183215                        // Append javascript code.
     216                       
    184217                        CKEDITOR.document.getHead().append(
    185218                                CKEDITOR.document.createElement( 'script',
    186219                                        {
     
    311344                                        }
    312345                                });
    313346
    314                         // Disabling it on IE for now, as it's blocking the browser (#3802).
    315                         if ( !CKEDITOR.env.ie )
    316                         {
    317347                                editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON,
    318348                                        {
    319349                                                label : editor.lang.scayt.title,
     
    341371                                                        };
    342372                                                }
    343373                                        });
    344                         }
    345374
    346375                        // If the "contextmenu" plugin is loaded, register the listeners.
    347376                        if ( editor.contextMenu && editor.addMenuItems )
     
    454483                                                mainSuggestions[ 'scayt_ignore_all' ] = CKEDITOR.TRISTATE_OFF;
    455484                                                mainSuggestions[ 'scayt_add_word' ] = CKEDITOR.TRISTATE_OFF;
    456485
    457                                                 // ** ahow ads entry point
    458                                                 // ** hide ads listener register
    459 //                                              try{
    460                                                         //scayt_control.showBanner( editor )
    461 //                                              }catch(err){}
     486                                                if ( scayt_control && 'undefined' != typeof scayt_control.fireOnContextMenu )
     487                                                        scayt_control.fireOnContextMenu( editor )
    462488
    463489                                                return mainSuggestions;
    464490                                        });
     
    480506        });
    481507})();
    482508
    483 CKEDITOR.config.scaytParams = CKEDITOR.config.scaytParams || {};
    484 CKEDITOR.config.scayt_maxSuggestions = 5;
    485 CKEDITOR.config.scayt_autoStartup = false;
     509CKEDITOR.config.scayt_maxSuggestions = CKEDITOR.config.scayt_maxSuggestions || 5;
     510CKEDITOR.config.scayt_autoStartup = CKEDITOR.config.scayt_autoStartup || false;
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy