Ticket #3685: 3685_2.patch

File 3685_2.patch, 18.5 KB (added by Artur Formella, 10 years ago)
  • _source/plugins/scayt/dialogs/options.js

     
    99                captions,
    1010                doc = CKEDITOR.document,
    1111                fckLang = 'en';
     12        var dic_buttons = [
     13                // [0] contains buttons for creating
     14                "dic_create,dic_restore",
     15                // [1] contains buton for manipulation
     16                "dic_rename,dic_delete"
     17        ];
    1218
    1319        var init_with_captions = function()
    1420        {
     
    1824                        labels = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ],
    1925                        i;
    2026
    21 /*
    2227                // Add buttons titles
    2328                for ( var i in buttons )
    2429                {
    2530                        var button = buttons[ i ];
    26                         doc.getById( button ).setHtml( captions[ 'button_' + button] );
     31                        doc.getById( button ).setHtml( '<span class="cke_dialog_ui_button">' + captions[ 'button_' + button]  +'</span>' );
    2732                }
    2833                doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] );
    29 */
    3034
    3135                // Fill options and dictionary labels.
    3236                for ( i in labels )
    3337                {
    3438                        var label = 'label_' + labels[ i ],
    3539                                labelElement = doc.getById( label );
    36                         if ( labelElement )
     40
     41                        if (  'undefined' != typeof labelElement
     42                           && 'undefined' != typeof captions[ label ]
     43                           && 'undefined' != typeof dialog.options[labels[ i ]] )
     44                        {
    3745                                labelElement.setHtml( captions[ label ] );
     46                                var labelParent = labelElement.getParent();
     47                                labelParent.$.style.display = "block";
     48                        }
    3849                }
    3950               
    4051                var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
     
    94105                        var field = ( i < langList.length / 2 ) ? fieldL : fieldR;
    95106                        field.append( langList[ i ].radio );
    96107                }
     108
     109                // user dictionary handlers
     110                dic = {};         
     111                dic.dic_create = function( el, dic_name , dic_buttons )
     112                        {
     113                                // comma separated button's ids include repeats if exists
     114                                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
     115                       
     116                                var err_massage = captions["err_dic_create"];
     117                                var suc_massage = captions["succ_dic_create"];
     118                                //console.info("--plugin ");
     119
     120                                scayt.createUserDictionary(dic_name,
     121                                        function(arg)
     122                                                {
     123                                                        //console.info( "dic_create callback called with args" , arg );
     124                                                        hide_dic_buttons ( all_buttons );
     125                                                        display_dic_buttons ( dic_buttons[1] );
     126                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
     127                                                        dic_success_message (suc_massage);
     128                                                },
     129                                        function(arg)
     130                                                {
     131                                                        //console.info( "dic_create errorback called with args" , arg )
     132                                                        err_massage = err_massage.replace("%s" ,arg.dname );
     133                                                        dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
     134                                                });
     135                               
     136                        }
     137                       
     138                dic.dic_rename = function( el, dic_name , dic_buttons )
     139                        {
     140                                //
     141                                // try to rename dictionary
     142                                // @TODO: rename dict
     143                                //console.info ( captions["err_dic_rename"] )
     144                                var err_massage = captions["err_dic_rename"] || "";
     145                                var suc_massage = captions["succ_dic_rename"] || "";
     146                                scayt.renameUserDictionary(dic_name,
     147                                        function(arg)
     148                                                {
     149                                                        //console.info( "dic_rename callback called with args" , arg );
     150                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
     151                                                        set_dic_name( dic_name );
     152                                                        dic_success_message ( suc_massage );
     153                                                },
     154                                        function(arg)
     155                                                {
     156                                                        //console.info( "dic_rename errorback called with args" , arg )
     157                                                        err_massage = err_massage.replace("%s" , arg.dname  );
     158                                                        set_dic_name( dic_name );
     159                                                        dic_error_message (err_massage + "( "+ (arg.message || "") +" )")
     160                                                });
     161                        }
     162                       
     163                dic.dic_delete = function ( el, dic_name , dic_buttons )
     164                        {
     165                                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
     166                                var err_massage = captions["err_dic_delete"];
     167                                var suc_massage = captions["succ_dic_delete"];
     168                               
     169                                // try to delete dictionary
     170                                // @TODO: delete dict
     171                                scayt.deleteUserDictionary(
     172                                        function(arg)
     173                                                {
     174                                                        //console.info( "dic_delete callback " , dic_name ,arg );
     175                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
     176                                                        hide_dic_buttons ( all_buttons );
     177                                                        display_dic_buttons ( dic_buttons[0] );
     178                                                        set_dic_name( "" ); // empty input field
     179                                                        dic_success_message( suc_massage );
     180                                                },
     181                                        function(arg)
     182                                                {
     183                                                        //console.info( " dic_delete errorback called with args" , arg )
     184                                                        err_massage = err_massage.replace("%s" , arg.dname );
     185                                                        dic_error_message(err_massage);
     186                                                });
     187                        }
     188                dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
     189                        {
     190                                // try to restore existing dictionary
     191                                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
     192                                var err_massage = captions["err_dic_restore"];
     193                                var suc_massage = captions["succ_dic_restore"];
     194                               
     195                                scayt.restoreUserDictionary(dic_name,
     196                                        function(arg)
     197                                                {
     198                                                        //console.info( "dic_restore callback called with args" , arg );
     199                                                        suc_massage = suc_massage.replace("%s" , arg.dname );
     200                                                        hide_dic_buttons ( all_buttons );
     201                                                        display_dic_buttons(dic_buttons[1]);
     202                                                        dic_success_message( suc_massage );
     203                                                },
     204                                        function(arg)
     205                                                {
     206                                                        //console.info( " dic_restore errorback called with args" , arg )
     207                                                        err_massage = err_massage.replace("%s" , arg.dname );
     208                                                        dic_error_message( err_massage );
     209                                                });
     210                        }
     211                 // ** bind event listeners
     212                 var arr_buttons = (dic_buttons[0] + ',' +dic_buttons[1]).split(',');
     213                 for (i=0, l=arr_buttons.length; i<l ; i+=1)
     214                {
     215                        var dic_button = doc.getById(arr_buttons[i]);
     216
     217                        dic_button.on('click', function ()
     218                                {
     219                                        var dic_name = doc.getById('dic_name').getValue();
     220                                        if (!dic_name)
     221                                        {
     222                                                dic_error_message(" Dictionary name should not be empty. ");
     223                                                return false;
     224                                        }
     225                                        //apply handler
     226                                        dic[this.getId()].apply( null, [this, dic_name, dic_buttons ] );
     227                                });
     228                }
    97229        };
    98230        var reload = function()
    99231        {
     
    121253                }
    122254
    123255                // * user dictionary   
    124                 var dic_buttons = [
    125                         // [0] contains buttons for creating
    126                         'dic_create,dic_restore',
    127                         // [1] contains buton for manipulation
    128                         'dic_rename,dic_delete,dic_restore'
    129                 ];
    130256                scayt.getNameUserDictionary(
    131257                        function( o )
    132258                        {
    133259                                var dic_name = o.dname;
    134260                                if ( dic_name )
    135261                                {
    136                                         dojo.byId( 'dic_name' ).value = dic_name;
     262                                        doc.getById( 'dic_name' ).setValue(dic_name);
    137263                                        display_dic_buttons( dic_buttons[1] );
    138264                                }
    139265                                else
    140266                                        display_dic_buttons( dic_buttons[0] );
    141267                               
    142268                        },
    143                         function () {
    144                         });
     269                        function ()
     270                                {
     271                                        doc.getById( 'dic_name' ).setValue("");
     272                                });
    145273
     274                dic_success_message("")
    146275                var dic_flag = 0;
    147                  // ** bind event listeners
    148                 dojo.query('div.dic_buttons a.button').onclick(function( ev )
    149                         {
    150                                 if (typeof window[this.id] == 'function'  ){
    151                                         // get dic name
    152                                         var dic_name = dojo.trim ( dojo.byId('dic_name').value );
    153                                         // check common dictionary rules
    154                                         if (!dic_name)
    155                                         {
    156                                                 dic_error_message( editor.lang.scayt.emptyDic );
    157                                                 return false;
    158                                         }
    159                                         // Apply handler
    160                                         window[this.id].apply( window, [this,ev , dic_name, dic_buttons ] );
    161                                 }
    162                                 //console.info( typeof window[this.id], window[this.id].calle )
    163                                 return false;
    164                         });
    165276        };
    166277
    167     return {
    168            title : editor.lang.scayt.title,
    169            minWidth : 340,
    170            minHeight : 200,
    171            onShow : function()
    172                    {
     278        function dic_error_message ( m )
     279                {
     280                        doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
     281                }
     282        function dic_success_message ( m )
     283                {
     284                        doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
     285                }
     286        function display_dic_buttons ( sIds )
     287                {
     288                       
     289                        sIds = new String( sIds );
     290                        var aIds = sIds.split(',');
     291                        for ( var i=0, l = aIds.length; i < l ; i+=1)
     292                        {
     293                                doc.getById( aIds[i] ).$.style.display = "inline";
     294                        }
     295                       
     296                }
     297        function hide_dic_buttons ( sIds )
     298                {
     299                        sIds = new String( sIds );
     300                        var aIds = sIds.split(',');
     301                        for ( var i=0, l = aIds.length; i < l ; i+=1)
     302                        {
     303                                doc.getById( aIds[i] ).$.style.display = "none"
     304                        }
     305                }
     306        function set_dic_name ( dic_name )
     307                {
     308                        doc.getById('dic_name').$.value= dic_name;
     309                }
     310
     311        return {
     312                title : editor.lang.scayt.title,
     313                minWidth : 340,
     314                minHeight : 200,
     315                onShow : function()
     316                        {
    173317                                var dialog = this;
    174318                                dialog.data = editor.fire( 'scaytDialog', {} );
    175319                                dialog.options = dialog.data.scayt_control.option();
     
    236380                                                        id : 'options',
    237381                                                        html :  '<div class="inner_options">' +
    238382                                                                        '       <div class="messagebox"></div>' +
    239                                                                         '       <div>' +
     383                                                                        '       <div style="display:none;">' +
    240384                                                                        '               <input type="checkbox" value="0" id="allCaps" />' +
    241385                                                                        '               <label for="allCaps" id="label_allCaps"></label>' +
    242386                                                                        '       </div>' +
    243                                                                         '       <div>' +
     387                                                                        '       <div style="display:none;">' +
    244388                                                                        '               <input type="checkbox" value="0" id="ignoreDomainNames" />' +
    245389                                                                        '               <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>' +
    246390                                                                        '       </div>' +
    247                                                                         '       <div>' +
     391                                                                        '       <div style="display:none;">' +
    248392                                                                        '       <input type="checkbox" value="0" id="mixedCase" />' +
    249393                                                                        '               <label for="mixedCase" id="label_mixedCase"></label>' +
    250394                                                                        '       </div>' +
    251                                                                         '       <div>' +
     395                                                                        '       <div style="display:none;">' +
    252396                                                                        '               <input type="checkbox" value="0" id="mixedWithDigits" />' +
    253397                                                                        '               <label for="mixedWithDigits" id="label_mixedWithDigits"></label>' +
    254398                                                                        '       </div>' +
     
    271415                                                }
    272416                                        ]
    273417                                },
    274                                 /*
    275418                                {
    276419                                        id : 'dictionaries',
    277420                                        label : editor.lang.scayt.dictionariesTab,
     
    280423                                                        type : 'html',
    281424                                                        style: '',
    282425                                                        id : 'dic',
    283                                                         html :  '<div class="inner_dictionary">' +
    284                                                                         '       <div class="messagebox" id="dic_message"></div>' +
    285                                                                         '       <div class="dictionary" > ' +
    286                                                                         '               <label for="dname" id="dname"></label>' +
    287                                                                         '               <input type="text" size="14" maxlength="15" value="" id="dic_name" name="dic_name"/>' +
    288                                                                         '               <div class="dic_buttons">' +
    289                                                                         '                       <a href="javascript:void(0)" id="dic_create" class="button"></a>' +
    290                                                                         '                       <a href="javascript:void(0)" id="dic_delete" class="button"></a>' +
    291                                                                         '                       <a href="javascript:void(0)" id="dic_rename" class="button"></a>' +
    292                                                                         '                       <a href="javascript:void(0)" id="dic_restore" class="button"></a>' +
     426                                                        html :  '<div class="inner_dictionary" style="text-align:left; white-space:normal;">' +
     427                                                                        '       <div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' +
     428                                                                        '       <div style="margin:5px auto; width:80%;white-space:normal;"> ' +
     429                                                                        '       <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+
     430                                                                        '               <span class="cke_dialog_ui_labeled_content" >'+
     431                                                                        '                       <div class="cke_dialog_ui_input_text">'+
     432                                                                        '                               <input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>'+
     433                                                                        '               </div></span></div>'+
     434                                                                        '               <div style="margin:5px auto; width:80%;white-space:normal;">'+
     435                                                                        '                       <a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">'+
     436                                                                        '                               </a>' +
     437                                                                        '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">'+
     438                                                                        '                               </a>' +
     439                                                                        '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">'+
     440                                                                        '                               </a>' +
     441                                                                        '                       <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">'+
     442                                                                        '                               </a>' +
    293443                                                                        '               </div>' +
    294                                                                         '       </div><p id="dic_info"></p>' +
     444                                                                        '       <div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div>' +
    295445                                                                        '</div>'
    296446                                                }
    297447                                        ]
    298448                                },
    299                                 */
    300449                                {
    301450                                        id : 'about',
    302451                                        label : editor.lang.scayt.aboutTab,
  • _source/plugins/scayt/plugin.js

     
    2323                var createInstance = function() // Create new instance every time Document is created.
    2424                {
    2525                        // Initialise Scayt instance.
    26                         var scayt_control = new scayt(
    27                                 {
    28                                         srcNodeRef: editor.document.getWindow().$.frameElement
    29                                 });
     26                        var oParams = CKEDITOR.config.scaytParams || {};
     27                        oParams.srcNodeRef = editor.document.getWindow().$.frameElement;                // Get the iframe.
     28                        // syntax : AppName.AppVersion@AppRevision
     29                        oParams.assocApp  = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision;
     30                        var scayt_control = new scayt( oParams );
    3031
    3132                        // Copy config.
    3233                        var     lastInstance = plugin.instances[ editor.name ];
     
    4445                        } catch (e) {}
    4546                };
    4647
    47                 editor.on( 'contentDom', createInstance );              // Get the iframe somehow.
     48                editor.on( 'contentDom', createInstance );
    4849                editor.on( 'contentDomUnload', function()
    4950                        {
    5051                                // Remove scripts.
    5152                                var scripts = CKEDITOR.document.getElementsByTag( 'script' );
    5253                                scaytIdRegex =  /^dojoIoScript(\d+)$/i;
    53                                 scaytSrcRegex =  /^http:\/\/demo\.spellchecker\.net\/spellcheck3\/script\/ssrv\.cgi/i;
    54 
     54                                scaytSrcRegex =  /^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;
    5555                                for ( var i=0; i < scripts.count(); i++ )
    5656                                {
    5757                                        var script = scripts.getItem( i ),
     
    140140                                0 );    // First to run.
    141141
    142142                        this.engineLoaded = -1; // Loading in progress.
    143                         djConfig =
     143                        // assign diojo configurable vars
     144                        var parseUrl =  function(data)
     145                                {
     146                                        var m = data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/);
     147                                        return {path: m[1], file: m[2]}
     148                                }
     149
     150                        // compose scayt url
     151                        var protocol = document.location.protocol;
     152                        var baseUrl  = "svc.spellchecker.net/spellcheck/lf/scayt/scayt.js";
     153                        var scaytUrl  =  editor.config.scaytParams.srcScayt ||
     154                                (protocol + "//" + baseUrl);
     155                        var scaytConfigBaseUrl = parseUrl(scaytUrl).path +  "/";
     156
     157                        djScaytConfig =
    144158                        {
    145                                 baseUrl: './',
    146                                 blankGif: 'http://demo.spellchecker.net/spellcheck3/lf/scayt/blank.gif',
    147                                 parseOnLoad: true,
    148                                 afterOnLoad: true,
    149                                 useXDomain: true,
    150                                 locale: 'en',
    151                                 xdWaitSeconds: 10,
    152                                 preventCache: false,
    153                                 scaytNodes: document.getElementById('foo'),
    154                                 require: [
    155                                         'dojo.i18n',
    156                                         'scayt._base'
    157                                 ],
    158                                 modulePaths:
    159                                 {
    160                                         'scayt': 'http://demo.spellchecker.net/spellcheck3/lf/scayt'
    161                                 },
     159                                baseUrl: scaytConfigBaseUrl,
    162160                                addOnLoad:
    163161                                [
    164162                                        function()
    165163                                        {
    166                                                 CKEDITOR.fireOnce( 'scaytReady' );
     164                                                CKEDITOR.fireOnce( "scaytReady" );
    167165                                        }
    168166                                ],
    169167                                isDebug: false
    170168                        };
    171 
    172169                        // Append javascript code.
    173170                        CKEDITOR.document.getHead().append(
    174171                                CKEDITOR.document.createElement( 'script',
     
    176173                                                attributes :
    177174                                                        {
    178175                                                                type : 'text/javascript',
    179                                                                 src : 'http://demo.spellchecker.net/spellcheck3/lf/dojo/dojo/dojo.xd.js'
     176                                                                src : scaytUrl
    180177                                                        }
    181178                                        })
    182179                        );
     
    215212                                var scayt_control = plugin.getScayt( editor );
    216213                                scayt_control.setDisabled( isEnabled );
    217214                        }
    218                         else if ( !editor.config.scayt_autoStartup && plugin.engineLoaded >= 0 )        // Load first time
     215                        else if ( !editor.config.scaytParams.autoStartup && plugin.engineLoaded >= 0 )  // Load first time
    219216                        {
    220217                                this.setState( CKEDITOR.TRISTATE_DISABLED );
    221218                               
     
    343340                                                var sLang = scayt_control.getLang(),
    344341                                                        _r = {},
    345342                                                        items_suggestion = scayt.getSuggestion( word, sLang );
    346 
     343                                                if (!items_suggestion || !items_suggestion.length || items_suggestion.length == 0 )
     344                                                        return null;
    347345                                                // Remove unused commands and menuitems
    348346                                                for ( i in moreSuggestions )
    349347                                                {
     
    357355                                                }
    358356                                                moreSuggestions = {};           // Reset items.
    359357                                                mainSuggestions = {};
     358                                                moreSuggestionsUnable = false;
    360359
    361                                                 // Register the More suggestions group;
    362                                                 editor.addMenuItem( 'scayt_moresuggest',
    363                                                         {
    364                                                                 label : editor.lang.scayt.moreSuggestions,
    365                                                                 group : 'scayt_moresuggest',
    366                                                                 order : 10,
    367                                                                 getItems : function()
    368                                                                 {
    369                                                                         return moreSuggestions;
    370                                                                 }
    371                                                         });
    372 
    373360                                                for ( var i = 0, l = items_suggestion.length; i < l; i += 1 )
    374361                                                {
    375362                                                        var commandName = 'scayt_suggestion_' + items_suggestion[i].replace( ' ', '_' );
     
    383370                                                                        };
    384371                                                                })( element.$, items_suggestion[i] );
    385372
    386                                                         if ( i < editor.config.scayt_maxSuggestions )
     373                                                        if ( i < editor.config.scaytParams.maxSuggestions )
    387374                                                        {
    388375                                                                addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],
    389376                                                                        commandName, exec, 'scayt_suggest', i + 1 );
     
    395382                                                                addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],
    396383                                                                        commandName, exec, 'scayt_moresuggest', i + 1 );
    397384                                                                moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;
     385                                                                moreSuggestionsUnable = true;
    398386                                                        }
    399387                                                }
     388                                                if ( moreSuggestionsUnable )
     389                                                        // Rgister the More suggestions group;
     390                                                        editor.addMenuItem( 'scayt_moresuggest',
     391                                                                {
     392                                                                        label : editor.lang.scayt.moreSuggestions,
     393                                                                        group : 'scayt_moresuggest',
     394                                                                        order : 10,
     395                                                                        getItems : function()
     396                                                                        {
     397                                                                                return moreSuggestions;
     398                                                                        }
     399                                                                });
     400                                               
    400401
    401402                                                var ignore_command =
    402403                                                {
     
    432433                                                mainSuggestions[ 'scayt_ignore_all' ] = CKEDITOR.TRISTATE_OFF;
    433434                                                mainSuggestions[ 'scayt_add_word' ] = CKEDITOR.TRISTATE_OFF;
    434435
     436                                                // ** ahow ads entry point
     437                                                // ** hide ads listener register
     438//                                              try{
     439                                                        //scayt_control.showBanner( editor )   
     440//                                              }catch(err){}
     441                                               
    435442                                                return mainSuggestions;
    436443                                        });
    437444                        }
    438445
    439446                        // Start plugin
    440                         if ( editor.config.scayt_autoStartup )
     447                        if ( editor.config.scaytParams.autoStartup )
    441448                                plugin.loadEngine( editor );
    442449                }
    443450        });
    444451})();
    445452
    446 CKEDITOR.config.scayt_maxSuggestions = 5;
    447 CKEDITOR.config.scayt_autoStartup = false;
     453CKEDITOR.config.scaytParams = CKEDITOR.config.scaytParams || {};
     454CKEDITOR.config.scaytParams.maxSuggestions = CKEDITOR.config.scaytParams.maxSuggestions || 5;
     455CKEDITOR.config.scaytParams.autoStartup = CKEDITOR.config.scaytParams.autoStartup || false;
     456
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy