/* Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ /** * @fileOverview Spell Check As You Type (SCAYT). * Button name : Scayt. */ (function() { var commandName = 'scaytcheck', openPage = ''; // Checks if a value exists in an array function in_array(needle, haystack) { var found = false, key; for (key in haystack) { if ((haystack[key] === needle) || ( haystack[key] == needle)) { found = true; break; } } return found; } var onEngineLoad = function() { var editor = this; var createInstance = function() // Create new instance every time Document is created. { // Initialise Scayt instance. var oParams = {}; // Get the iframe. oParams.srcNodeRef = editor.document.getWindow().$.frameElement; // syntax : AppName.AppVersion@AppRevision oParams.assocApp = 'CKEDITOR.' + CKEDITOR.version + '@' + CKEDITOR.revision; oParams.customerid = editor.config.scayt_customerid || '1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2'; oParams.customDictionaryIds = editor.config.scayt_customDictionaryIds || ''; oParams.userDictionaryName = editor.config.scayt_userDictionaryName || ''; oParams.sLang = editor.config.scayt_sLang || 'en_US'; // Introduce SCAYT onLoad callback. (#5632) oParams.onLoad = function() { // Draw down word marker to avoid being covered by background-color style.(#5466) if ( !( CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) ) this.addStyle( this.selectorCss(), 'padding-bottom: 2px !important;' ); // Call scayt_control.focus when SCAYT loaded // and only if editor has focus and scayt control creates at first time (#5720) if ( editor.focusManager.hasFocus && !plugin.isControlRestored( editor ) ) this.focus(); }; oParams.onBeforeChange = function() { if ( plugin.getScayt( editor ) && !editor.checkDirty() ) setTimeout( function(){ editor.resetDirty(); } ); }; var scayt_custom_params = window.scayt_custom_params; if ( typeof scayt_custom_params == 'object') { for ( var k in scayt_custom_params ) { oParams[ k ] = scayt_custom_params[ k ]; } } // needs for restoring a specific scayt control settings if ( plugin.getControlId(editor) ) oParams.id = plugin.getControlId(editor); var scayt_control = new window.scayt( oParams ); scayt_control.afterMarkupRemove.push( function( node ) { ( new CKEDITOR.dom.element( node, scayt_control.document ) ).mergeSiblings(); } ); // Copy config. var lastInstance = plugin.instances[ editor.name ]; if ( lastInstance ) { scayt_control.sLang = lastInstance.sLang; scayt_control.option( lastInstance.option() ); scayt_control.paused = lastInstance.paused; } plugin.instances[ editor.name ] = scayt_control; //window.scayt.uiTags var menuGroup = 'scaytButton'; var uiTabs = window.scayt.uiTags; var fTabs = []; for (var i = 0,l=4; i= 0 ) // Load first time { this.setState( CKEDITOR.TRISTATE_DISABLED ); plugin.loadEngine( editor ); } } }; // Add scayt plugin. CKEDITOR.plugins.add( 'scayt', { requires : [ 'menubutton' ], beforeInit : function( editor ) { var items_order = editor.config.scayt_contextMenuItemsOrder || 'suggest|moresuggest|control', items_order_str = ""; items_order = items_order.split( '|' ); if ( items_order && items_order.length ) { for ( var pos in items_order ) items_order_str += 'scayt_' + items_order[ pos ] + ( items_order.length != parseInt( pos, 10 ) + 1 ? ',' : '' ); } // Register scayt rbc menu group. if ( editor.config.scayt_contextMenuOntop ) // Put it on top of all context menu items editor.config.menu_groups = items_order_str + ',' + editor.config.menu_groups; else // Put it down editor.config.menu_groups = editor.config.menu_groups + ',' +items_order_str; }, init : function( editor ) { var moreSuggestions = {}; var mainSuggestions = {}; // Scayt command. var command = editor.addCommand( commandName, commandDefinition ); // Add Options dialog. CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/options.js' ) ); // read ui tags var confuiTabs = editor.config.scayt_uiTabs || '1,1,1'; var uiTabs =[]; // string to array convert confuiTabs = confuiTabs.split( ',' ); // check array length ! always must be 3 filled with 1 or 0 for (var i=0,l=3; i *
  • 0 (zero): All suggestions are displayed in the main context menu.
  • *
  • Positive number: The maximum number of suggestions to shown in context * menu. Other entries will be shown in "More Suggestions" sub-menu.
  • *
  • Negative number: No suggestions are shown in the main context menu. All * entries will be listed in the "Suggestions" sub-menu.
  • * * @name CKEDITOR.config.scayt_maxSuggestions * @type Number * @default 5 * @example * // Display only three suggestions in the main context menu. * config.scayt_maxSuggestions = 3; * @example * // Do not show the suggestions directly. * config.scayt_maxSuggestions = -1; */ /** * Sets the customer ID for SCAYT. Required for migration from free version * with banner to paid version. * @name CKEDITOR.config.scayt_customerid * @type String * @default '' * @example * // Load SCAYT using my customer ID. * config.scayt_customerid = 'your-encrypted-customer-id'; */ /** * Enables/disables the "More Suggestions" sub-menu in the context menu. * The possible values are "on" or "off". * @name CKEDITOR.config.scayt_moreSuggestions * @type String * @default 'on' * @example * // Disables the "More Suggestions" sub-menu. * config.scayt_moreSuggestions = 'off'; */ /** * Customizes the display of SCAYT context menu commands ("Add Word", "Ignore" * and "Ignore All"). It must be a string with one or more of the following * words separated by a pipe ("|"): * * @name CKEDITOR.config.scayt_contextCommands * @type String * @default 'all' * @example * // Show only "Add Word" and "Ignore All" in the context menu. * config.scayt_contextCommands = 'add|ignoreall'; */ /** * Sets the default spellchecking language for SCAYT. * @name CKEDITOR.config.scayt_sLang * @type String * @default 'en_US' * @example * // Sets SCAYT to German. * config.scayt_sLang = 'de_DE'; */ /** * Sets the visibility of the SCAYT tabs in the settings dialog and toolbar * button. The value must contain a "1" (enabled) or "0" (disabled) number for * each of the following entries, in this precise order, separated by a * comma (","): "Options", "Languages" and "Dictionary". * @name CKEDITOR.config.scayt_uiTabs * @type String * @default '1,1,1' * @example * // Hide the "Languages" tab. * config.scayt_uiTabs = '1,0,1'; */ /** * Set the URL to SCAYT core. Required to switch to licensed version of SCAYT application. * Further details at http://wiki.spellchecker.net/doku.php?id=3rd:wysiwyg:fckeditor:wscckf3l . * @name CKEDITOR.config.scayt_srcUrl * @type String * @default '' * @example * config.scayt_srcUrl = "http://my-host/spellcheck/lf/scayt/scayt.js"; */ /** * Links SCAYT to custom dictionaries. It's a string containing dictionary ids * separared by commas (","). Available only for licensed version. * Further details at http://wiki.spellchecker.net/doku.php?id=custom_dictionary_support . * @name CKEDITOR.config.scayt_customDictionaryIds * @type String * @default '' * @example * config.scayt_customDictionaryIds = '3021,3456,3478"'; */ /** * Makes it possible to activate a custom dictionary on SCAYT. The user * dictionary name must be used. Available only for licensed version. * @name CKEDITOR.config.scayt_userDictionaryName * @type String * @default '' * @example * config.scayt_userDictionaryName = 'MyDictionary'; */ /** * Makes it possible to place the SCAYT context menu items above others. * @name CKEDITOR.config.scayt_contextMenuOntop * @type Boolean * @default false * @example * config.scayt_contextMenuOntop = true; */ /** * Define order of placing of SCAYT context menu items by groups. * It must be a string with one or more of the following * words separated by a pipe ("|"): * * * @name CKEDITOR.config.scayt_contextMenuItemsOrder * @type String * @default 'suggest|moresuggest|control' * @example * config.scayt_contextMenuItemsOrder = 'moresuggest|control|suggest'; */