Index: /CKEditor/trunk/CHANGES.html =================================================================== --- /CKEditor/trunk/CHANGES.html (revision 3856) +++ /CKEditor/trunk/CHANGES.html (revision 3857) @@ -120,4 +120,5 @@ list command may leak outside of a selected table cell and into the rest of document.
' + captions[ 'about_throwt_image' ] + '
'+ - '' + captions[ 'version' ] + dialog.data.scayt.version.toString() + '
' + - '' + captions[ 'about_throwt_copy' ] + '
'; - - doc.getById( 'scayt_about' ).setHtml( about ); - - // Create languages tab. - var createOption = function( option, list ) - { - var label = doc.createElement( 'label' ); - label.setAttribute( 'for', 'cke_option' + option ); - label.setHtml( list[ option ] ); - - if ( dialog.sLang == option ) // Current. - dialog.chosed_lang = option; - - var div = doc.createElement( 'div' ); - var radio = CKEDITOR.dom.element.createFromHtml( '' ); - - radio.on( 'click', function() - { - this.$.checked = true; - dialog.chosed_lang = option; - }); - - div.append( radio ); - div.append( label ); - - return { - lang : list[ option ], - code : option, - radio : div - }; - }; - - var langList = []; - for ( i in lang_list.rtl ) - langList[ langList.length ] = createOption( i, lang_list.ltr ); - - for ( i in lang_list.ltr ) - langList[ langList.length ] = createOption( i, lang_list.ltr ); - - langList.sort( function( lang1, lang2 ) - { - return ( lang2.lang > lang1.lang ) ? -1 : 1 ; - }); - - var fieldL = doc.getById( 'scayt_lcol' ), - fieldR = doc.getById( 'scayt_rcol' ); - for ( i=0; i < langList.length; i++ ) - { - var field = ( i < langList.length / 2 ) ? fieldL : fieldR; - field.append( langList[ i ].radio ); - } - - // user dictionary handlers - var dic = {}; - dic.dic_create = function( el, dic_name , dic_buttons ) - { - // comma separated button's ids include repeats if exists - var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; - - var err_massage = captions["err_dic_create"]; - var suc_massage = captions["succ_dic_create"]; - //console.info("--plugin "); - - scayt.createUserDictionary(dic_name, - function(arg) - { - //console.info( "dic_create callback called with args" , arg ); - hide_dic_buttons ( all_buttons ); - display_dic_buttons ( dic_buttons[1] ); - suc_massage = suc_massage.replace("%s" , arg.dname ); - dic_success_message (suc_massage); - }, - function(arg) - { - //console.info( "dic_create errorback called with args" , arg ) - err_massage = err_massage.replace("%s" ,arg.dname ); - dic_error_message ( err_massage + "( "+ (arg.message || "") +")"); - }); - - }; - - dic.dic_rename = function( el, dic_name , dic_buttons ) - { - // - // try to rename dictionary - // @TODO: rename dict - //console.info ( captions["err_dic_rename"] ) - var err_massage = captions["err_dic_rename"] || ""; - var suc_massage = captions["succ_dic_rename"] || ""; - scayt.renameUserDictionary(dic_name, - function(arg) - { - //console.info( "dic_rename callback called with args" , arg ); - suc_massage = suc_massage.replace("%s" , arg.dname ); - set_dic_name( dic_name ); - dic_success_message ( suc_massage ); - }, - function(arg) - { - //console.info( "dic_rename errorback called with args" , arg ) - err_massage = err_massage.replace("%s" , arg.dname ); - set_dic_name( dic_name ); - dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" ); - }); - }; - - dic.dic_delete = function ( el, dic_name , dic_buttons ) - { - var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; - var err_massage = captions["err_dic_delete"]; - var suc_massage = captions["succ_dic_delete"]; - - // try to delete dictionary - // @TODO: delete dict - scayt.deleteUserDictionary( - function(arg) - { - //console.info( "dic_delete callback " , dic_name ,arg ); - suc_massage = suc_massage.replace("%s" , arg.dname ); - hide_dic_buttons ( all_buttons ); - display_dic_buttons ( dic_buttons[0] ); - set_dic_name( "" ); // empty input field - dic_success_message( suc_massage ); - }, - function(arg) - { - //console.info( " dic_delete errorback called with args" , arg ) - err_massage = err_massage.replace("%s" , arg.dname ); - dic_error_message(err_massage); - }); - }; - - dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons ) - { - // try to restore existing dictionary - var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; - var err_massage = captions["err_dic_restore"]; - var suc_massage = captions["succ_dic_restore"]; - - scayt.restoreUserDictionary(dic_name, - function(arg) - { - //console.info( "dic_restore callback called with args" , arg ); - suc_massage = suc_massage.replace("%s" , arg.dname ); - hide_dic_buttons ( all_buttons ); - display_dic_buttons(dic_buttons[1]); - dic_success_message( suc_massage ); - }, - function(arg) - { - //console.info( " dic_restore errorback called with args" , arg ) - err_massage = err_massage.replace("%s" , arg.dname ); - dic_error_message( err_massage ); - }); - }; - - // ** bind event listeners - var arr_buttons = ( dic_buttons[0] + ',' + dic_buttons[1] ).split( ',' ), - l; - - for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 ) - { - var dic_button = doc.getById(arr_buttons[i]); - - dic_button.on( 'click', function () - { - var dic_name = doc.getById('dic_name').getValue(); - if ( !dic_name ) - { - dic_error_message(" Dictionary name should not be empty. "); - return false; - } - //apply handler - dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] ); - - return true; - }); - } - }; - var reload = function() - { - var dialog = this; - - // Animate options. - for ( var i in dialog.options ) - { - var checkbox = doc.getById( i ); - if ( checkbox ) - { - checkbox.removeAttribute( 'checked' ); - if ( dialog.options[ i ] == 1 ) - checkbox.setAttribute( 'checked', 'checked' ); - - // Bind events. Do it only once. - if ( firstLoad ) - { - checkbox.on( 'click', function() - { - dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ; - } ); - } - } - } - - // * user dictionary - scayt.getNameUserDictionary( - function( o ) - { - var dic_name = o.dname; - if ( dic_name ) - { - doc.getById( 'dic_name' ).setValue(dic_name); - display_dic_buttons( dic_buttons[1] ); - } - else - display_dic_buttons( dic_buttons[0] ); - - }, - function () - { - doc.getById( 'dic_name' ).setValue(""); - }); - - dic_success_message(""); - }; - - function dic_error_message ( m ) - { - doc.getById('dic_message').setHtml('' + m + '' ); - } - function dic_success_message ( m ) - { - doc.getById('dic_message').setHtml('' + m + '') ; - } - function display_dic_buttons ( sIds ) - { - - sIds = new String( sIds ); - var aIds = sIds.split(','); - for ( var i=0, l = aIds.length; i < l ; i+=1) - { - doc.getById( aIds[i] ).$.style.display = "inline"; - } - - } - function hide_dic_buttons ( sIds ) - { - sIds = new String( sIds ); - var aIds = sIds.split(','); - for ( var i = 0, l = aIds.length; i < l ; i += 1 ) - { - doc.getById( aIds[i] ).$.style.display = "none"; - } - } - function set_dic_name ( dic_name ) - { - doc.getById('dic_name').$.value= dic_name; - } - - return { - title : editor.lang.scayt.title, - minWidth : 340, - minHeight : 200, - onShow : function() - { - var dialog = this; - dialog.data = editor.fire( 'scaytDialog', {} ); - dialog.options = dialog.data.scayt_control.option(); - dialog.sLang = dialog.data.scayt_control.sLang; - - if ( !dialog.data || !dialog.data.scayt || !dialog.data.scayt_control ) - { - alert( 'Error loading application service' ); - dialog.hide(); - return; - } - - var stop = 0; - if ( firstLoad ) - { - dialog.data.scayt.getCaption( 'en', function( caps ) - { - if ( stop++ > 0 ) // Once only - return; - captions = caps; - init_with_captions.apply( dialog ); - reload.apply( dialog ); - firstLoad = false; - }); - } - else - reload.apply( dialog ); - - dialog.selectPage( dialog.data.tab ); - }, - onOk : function() - { - var scayt_control = this.data.scayt_control, - o = scayt_control.option(), - c = 0; - - // Set up options if any was set. - for ( var oN in this.options ) - { - if (o[oN] != this.options[ oN ] && c === 0 ) - { - scayt_control.option( this.options ); - c++; - } - } - - // Setup languge if it was changed. - var csLang = this.chosed_lang; - if ( csLang && this.data.sLang != csLang ) - { - scayt_control.setLang( csLang ); - c++; - } - if ( c > 0 ) - scayt_control.refresh(); - }, - contents : [ + var tags_contents = [ { id : 'options', @@ -464,5 +107,388 @@ ] } - ] + ]; + var dialogDefiniton = { + title : editor.lang.scayt.title, + minWidth : 340, + minHeight : 200, + onShow : function() + { + var dialog = this; + dialog.data = editor.fire( 'scaytDialog', {} ); + dialog.options = dialog.data.scayt_control.option(); + dialog.sLang = dialog.data.scayt_control.sLang; + + if ( !dialog.data || !dialog.data.scayt || !dialog.data.scayt_control ) + { + alert( 'Error loading application service' ); + dialog.hide(); + return; + } + + var stop = 0; + if ( firstLoad ) + { + dialog.data.scayt.getCaption( 'en', function( caps ) + { + if ( stop++ > 0 ) // Once only + return; + captions = caps; + init_with_captions.apply( dialog ); + reload.apply( dialog ); + firstLoad = false; + }); + } + else + reload.apply( dialog ); + + dialog.selectPage( dialog.data.tab ); + }, + onOk : function() + { + var scayt_control = this.data.scayt_control, + o = scayt_control.option(), + c = 0; + + // Set up options if any was set. + for ( var i in this.options ) + { + if (o[i] != this.options[ i ] && c === 0 ) + { + scayt_control.option( this.options ); + c++; + } + } + + // Setup languge if it was changed. + var csLang = this.chosed_lang; + if ( csLang && this.data.sLang != csLang ) + { + scayt_control.setLang( csLang ); + c++; + } + if ( c > 0 ) + scayt_control.refresh(); + }, + contents : contents }; + + var scayt_control = CKEDITOR.plugins.scayt.getScayt( editor ); + if ( scayt_control ) + { + tags = scayt_control.uiTags; + } + + for ( i in tags ) { + if ( tags[ i ] == 1 ) + contents[ contents.length ] = tags_contents[ i ]; + } + if ( tags[2] == 1 ) + userDicActive = true; + + function onDicButtonClick() + { + var dic_name = doc.getById('dic_name').getValue(); + if ( !dic_name ) + { + dic_error_message(" Dictionary name should not be empty. "); + return false; + } + //apply handler + dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] ); + + return true; + } + var init_with_captions = function() + { + var dialog = this, + lang_list = dialog.data.scayt.getLangList(), + buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ], + labels = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ], + i; + + // Add buttons titles + if (userDicActive) + { + for ( i in buttons ) + { + var button = buttons[ i ]; + doc.getById( button ).setHtml( ' ' ); + } + doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] ); + } + + + // Fill options and dictionary labels. + for ( i in labels ) + { + var label = 'label_' + labels[ i ], + labelElement = doc.getById( label ); + + if ( 'undefined' != typeof labelElement + && 'undefined' != typeof captions[ label ] + && 'undefined' != typeof dialog.options[labels[ i ]] ) + { + labelElement.setHtml( captions[ label ] ); + var labelParent = labelElement.getParent(); + labelParent.$.style.display = "block"; + } + } + + var about = '' + captions[ 'about_throwt_image' ] + '
'+ + '' + captions[ 'version' ] + dialog.data.scayt.version.toString() + '
' + + '' + captions[ 'about_throwt_copy' ] + '
'; + + doc.getById( 'scayt_about' ).setHtml( about ); + + // Create languages tab. + var createOption = function( option, list ) + { + var label = doc.createElement( 'label' ); + label.setAttribute( 'for', 'cke_option' + option ); + label.setHtml( list[ option ] ); + + if ( dialog.sLang == option ) // Current. + dialog.chosed_lang = option; + + var div = doc.createElement( 'div' ); + var radio = CKEDITOR.dom.element.createFromHtml( '' ); + + radio.on( 'click', function() + { + this.$.checked = true; + dialog.chosed_lang = option; + }); + + div.append( radio ); + div.append( label ); + + return { + lang : list[ option ], + code : option, + radio : div + }; + }; + + var langList = []; + for ( i in lang_list.rtl ) + langList[ langList.length ] = createOption( i, lang_list.ltr ); + + for ( i in lang_list.ltr ) + langList[ langList.length ] = createOption( i, lang_list.ltr ); + + langList.sort( function( lang1, lang2 ) + { + return ( lang2.lang > lang1.lang ) ? -1 : 1 ; + }); + + var fieldL = doc.getById( 'scayt_lcol' ), + fieldR = doc.getById( 'scayt_rcol' ); + for ( i=0; i < langList.length; i++ ) + { + var field = ( i < langList.length / 2 ) ? fieldL : fieldR; + field.append( langList[ i ].radio ); + } + + // user dictionary handlers + var dic = {}; + dic.dic_create = function( el, dic_name , dic_buttons ) + { + // comma separated button's ids include repeats if exists + var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; + + var err_massage = captions["err_dic_create"]; + var suc_massage = captions["succ_dic_create"]; + //console.info("--plugin "); + + scayt.createUserDictionary(dic_name, + function(arg) + { + //console.info( "dic_create callback called with args" , arg ); + hide_dic_buttons ( all_buttons ); + display_dic_buttons ( dic_buttons[1] ); + suc_massage = suc_massage.replace("%s" , arg.dname ); + dic_success_message (suc_massage); + }, + function(arg) + { + //console.info( "dic_create errorback called with args" , arg ) + err_massage = err_massage.replace("%s" ,arg.dname ); + dic_error_message ( err_massage + "( "+ (arg.message || "") +")"); + }); + + }; + + dic.dic_rename = function( el, dic_name , dic_buttons ) + { + // + // try to rename dictionary + // @TODO: rename dict + //console.info ( captions["err_dic_rename"] ) + var err_massage = captions["err_dic_rename"] || ""; + var suc_massage = captions["succ_dic_rename"] || ""; + scayt.renameUserDictionary(dic_name, + function(arg) + { + //console.info( "dic_rename callback called with args" , arg ); + suc_massage = suc_massage.replace("%s" , arg.dname ); + set_dic_name( dic_name ); + dic_success_message ( suc_massage ); + }, + function(arg) + { + //console.info( "dic_rename errorback called with args" , arg ) + err_massage = err_massage.replace("%s" , arg.dname ); + set_dic_name( dic_name ); + dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" ); + }); + }; + + dic.dic_delete = function ( el, dic_name , dic_buttons ) + { + var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; + var err_massage = captions["err_dic_delete"]; + var suc_massage = captions["succ_dic_delete"]; + + // try to delete dictionary + // @TODO: delete dict + scayt.deleteUserDictionary( + function(arg) + { + //console.info( "dic_delete callback " , dic_name ,arg ); + suc_massage = suc_massage.replace("%s" , arg.dname ); + hide_dic_buttons ( all_buttons ); + display_dic_buttons ( dic_buttons[0] ); + set_dic_name( "" ); // empty input field + dic_success_message( suc_massage ); + }, + function(arg) + { + //console.info( " dic_delete errorback called with args" , arg ) + err_massage = err_massage.replace("%s" , arg.dname ); + dic_error_message(err_massage); + }); + }; + + dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons ) + { + // try to restore existing dictionary + var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; + var err_massage = captions["err_dic_restore"]; + var suc_massage = captions["succ_dic_restore"]; + + scayt.restoreUserDictionary(dic_name, + function(arg) + { + //console.info( "dic_restore callback called with args" , arg ); + suc_massage = suc_massage.replace("%s" , arg.dname ); + hide_dic_buttons ( all_buttons ); + display_dic_buttons(dic_buttons[1]); + dic_success_message( suc_massage ); + }, + function(arg) + { + //console.info( " dic_restore errorback called with args" , arg ) + err_massage = err_massage.replace("%s" , arg.dname ); + dic_error_message( err_massage ); + }); + }; + + // ** bind event listeners + var arr_buttons = ( dic_buttons[0] + ',' + dic_buttons[1] ).split( ',' ), + l; + + for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 ) + { + var dic_button = doc.getById(arr_buttons[i]); + if ( dic_button ) + dic_button.on( 'click', onDicButtonClick, this ); + } + }; + + var reload = function() + { + var dialog = this; + + // Animate options. + for ( var i in dialog.options ) + { + var checkbox = doc.getById( i ); + if ( checkbox ) + { + checkbox.removeAttribute( 'checked' ); + if ( dialog.options[ i ] == 1 ) + checkbox.setAttribute( 'checked', 'checked' ); + + // Bind events. Do it only once. + if ( firstLoad ) + { + checkbox.on( 'click', function() + { + dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ; + } ); + } + } + } + + // * user dictionary + if ( userDicActive ){ + scayt.getNameUserDictionary( + function( o ) + { + var dic_name = o.dname; + if ( dic_name ) + { + doc.getById( 'dic_name' ).setValue(dic_name); + display_dic_buttons( dic_buttons[1] ); + } + else + display_dic_buttons( dic_buttons[0] ); + + }, + function () + { + doc.getById( 'dic_name' ).setValue(""); + }); + dic_success_message(""); + } + + }; + + function dic_error_message ( m ) + { + doc.getById('dic_message').setHtml('' + m + '' ); + } + function dic_success_message ( m ) + { + doc.getById('dic_message').setHtml('' + m + '') ; + } + function display_dic_buttons ( sIds ) + { + + sIds = String( sIds ); + var aIds = sIds.split(','); + for ( var i=0, l = aIds.length; i < l ; i+=1) + { + doc.getById( aIds[i] ).$.style.display = "inline"; + } + + } + function hide_dic_buttons ( sIds ) + { + sIds = String( sIds ); + var aIds = sIds.split(','); + for ( var i = 0, l = aIds.length; i < l ; i += 1 ) + { + doc.getById( aIds[i] ).$.style.display = "none"; + } + } + function set_dic_name ( dic_name ) + { + doc.getById('dic_name').$.value= dic_name; + } + + return dialogDefiniton; }); Index: /CKEditor/trunk/_source/plugins/scayt/plugin.js =================================================================== --- /CKEditor/trunk/_source/plugins/scayt/plugin.js (revision 3856) +++ /CKEditor/trunk/_source/plugins/scayt/plugin.js (revision 3857) @@ -19,13 +19,24 @@ { var editor = this; - dojo.requireLocalization( 'scayt', 'caption', '', 'ROOT' ); var createInstance = function() // Create new instance every time Document is created. { // Initialise Scayt instance. - var oParams = CKEDITOR.config.scaytParams || {}; + var oParams = {}; oParams.srcNodeRef = editor.document.getWindow().$.frameElement; // Get the iframe. // syntax : AppName.AppVersion@AppRevision oParams.assocApp = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision; + + oParams.customerid = editor.config.scayt_customerid || "1:11111111111111111111111111111111111111"; + oParams.customDictionaryName = editor.config.scayt_customDictionaryName; + oParams.userDictionaryName = editor.config.scayt_userDictionaryName; + oParams.defLang = editor.scayt_defLang; + + if ( CKEDITOR._scaytParams ) + for ( var k in CKEDITOR._scaytParams ) + { + oParams[ k ] = CKEDITOR._scaytParams[ k ]; + } + var scayt_control = new scayt( oParams ); @@ -38,5 +49,5 @@ scayt_control.paused = lastInstance.paused; } - + plugin.instances[ editor.name ] = scayt_control; @@ -68,15 +79,16 @@ editor.on( 'beforeCommandExec', function( ev ) // Disable SCAYT before Source command execution. { - if ( ev.data.name == 'source' && editor.mode == 'wysiwyg' ) - { - var scayt = plugin.getScayt( editor ); - if ( scayt ) - { - scayt.paused = !scayt.disabled; - scayt.setDisabled( true ); + if ( (ev.data.name == 'source' || ev.data.name == 'newpage') && editor.mode == 'wysiwyg' ) + { + var scayt_instanse = plugin.getScayt( editor ); + if ( scayt_instanse ) + { + scayt_instanse.paused = !scayt_instanse.disabled; + scayt_instanse.destroy(); + delete plugin.instances[ editor.name ]; } } }); - + // Listen to data manipulation to reflect scayt markup. editor.on( 'afterSetData', function() @@ -85,4 +97,23 @@ plugin.getScayt( editor ).refresh(); }); + + // Reload spell-checking for current word after insertion completed. + editor.on( 'insertElement', function() + { + var scayt_instance = plugin.getScayt( editor ); + if ( plugin.isScaytEnabled( editor ) ) + { + // Unlock the selection before reload, SCAYT will take + // care selection update. + if ( CKEDITOR.env.ie ) + editor.getSelection().unlock( true ); + + // Swallow any SCAYT engine errors. + try{ + scayt_instance.refresh(); + }catch( er ) + {} + } + }, this, null, 50 ); editor.on( 'scaytDialog', function( ev ) // Communication with dialog. @@ -135,6 +166,6 @@ isScaytEnabled : function( editor ) { - var scayt = this.getScayt( editor ); - return ( scayt ) ? scayt.disabled === false : false; + var scayt_instanse = this.getScayt( editor ); + return ( scayt_instanse ) ? scayt_instanse.disabled === false : false; }, loadEngine : function( editor ) @@ -155,19 +186,15 @@ this.engineLoaded = -1; // Loading in progress. - // assign diojo configurable vars - var parseUrl = function(data) - { - var m = data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/); - return { path: m[1], file: m[2] }; - }; // compose scayt url var protocol = document.location.protocol; - var baseUrl = "svc.spellchecker.net/spellcheck/lf/scayt/scayt.js"; - var scaytUrl = editor.config.scaytParams.srcScayt || - (protocol + "//" + baseUrl); - var scaytConfigBaseUrl = parseUrl(scaytUrl).path + "/"; - - djScaytConfig = + // Default to 'http' for unknown. + protocol = protocol.search( /https?:/) != -1? protocol : 'http:'; + var baseUrl = "svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js"; + + var scaytUrl = editor.config.scayt_srcUrl || ( protocol + "//" + baseUrl ); + var scaytConfigBaseUrl = plugin.parseUrl( scaytUrl ).path + "/"; + + CKEDITOR._djScaytConfig = { baseUrl: scaytConfigBaseUrl, @@ -194,4 +221,12 @@ return null; + }, + parseUrl : function ( data ) + { + var match; + if ( data.match && ( match = data.match(/(.*)[\/\\](.*?\.\w+)$/) ) ) + return { path: match[1], file: match[2] } + else + return data; } }; @@ -312,11 +347,11 @@ }); - editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON, - { - label : editor.lang.scayt.title, - title : editor.lang.scayt.title, - className : 'cke_button_scayt', - onRender: function() - { + editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON, + { + label : editor.lang.scayt.title, + title : editor.lang.scayt.title, + className : 'cke_button_scayt', + onRender: function() + { command.on( 'state', function() { @@ -331,12 +366,12 @@ editor.getMenuItem( 'scaytToggle' ).label = editor.lang.scayt[ isEnabled ? 'disable' : 'enable' ]; - return { - scaytToggle : CKEDITOR.TRISTATE_OFF, - scaytOptions : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, - scaytLangs : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, - scaytAbout : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED - }; - } - }); + return { + scaytToggle : CKEDITOR.TRISTATE_OFF, + scaytOptions : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, + scaytLangs : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, + scaytAbout : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED + }; + } + }); // If the "contextmenu" plugin is loaded, register the listeners. @@ -345,9 +380,9 @@ editor.contextMenu.addListener( function( element, selection ) { - var scayt_control = plugin.getScayt( editor ); - if ( !plugin.isScaytEnabled( editor ) || !element || !element.$ ) + if ( !( plugin.isScaytEnabled( editor ) && element ) ) return null; - var word = scayt_control.getWord( element.$ ); + var scayt_control = plugin.getScayt( editor ), + word = scayt_control.getWord( element.$ ); if ( !word ) @@ -451,9 +486,6 @@ mainSuggestions[ 'scayt_add_word' ] = CKEDITOR.TRISTATE_OFF; - // ** ahow ads entry point - // ** hide ads listener register -// try{ - //scayt_control.showBanner( editor ) -// }catch(err){} + if ( scayt_control.fireOnContextMenu ) + scayt_control.fireOnContextMenu( editor ) return mainSuggestions; @@ -477,5 +509,4 @@ })(); -CKEDITOR.config.scaytParams = CKEDITOR.config.scaytParams || {}; -CKEDITOR.config.scayt_maxSuggestions = 5; +CKEDITOR.config.scayt_maxSuggestions = 5; CKEDITOR.config.scayt_autoStartup = false;