/*\r
-Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
\r
var createInstance = function() // Create new instance every time Document is created.\r
{\r
+ if( plugin.instances[ editor.name ] )\r
+ plugin.instances[ editor.name ].destroy();\r
+\r
var config = editor.config;\r
// Initialise Scayt instance.\r
var oParams = {};\r
oParams.id = plugin.getControlId( editor );\r
\r
var scayt_control = new window.scayt( oParams );\r
-\r
scayt_control.afterMarkupRemove.push( function( node )\r
{\r
( new CKEDITOR.dom.element( node, scayt_control.document ) ).mergeSiblings();\r
\r
plugin.instances[ editor.name ] = scayt_control;\r
\r
- //window.scayt.uiTags\r
- var menuGroup = 'scaytButton';\r
- var uiTabs = window.scayt.uiTags;\r
- var fTabs = [];\r
-\r
- for ( var i = 0, l=4; i < l; i++ )\r
- fTabs.push( uiTabs[i] && plugin.uiTabs[i] );\r
-\r
- plugin.uiTabs = fTabs;\r
try {\r
scayt_control.setDisabled( plugin.isPaused( editor ) === false );\r
} catch (e) {}\r
editor.fire( 'showScaytState' );\r
};\r
\r
- editor.on( 'contentDom', createInstance );\r
+ editor.on( 'contentDom', function(ev)\r
+ {\r
+ createInstance();\r
+ });\r
editor.on( 'contentDomUnload', function()\r
{\r
// Remove scripts.\r
var scripts = CKEDITOR.document.getElementsByTag( 'script' ),\r
scaytIdRegex = /^dojoIoScript(\d+)$/i,\r
- scaytSrcRegex = /^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;\r
+ scaytSrcRegex = /^https?:\/\/svc\.webspellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;\r
\r
for ( var i=0; i < scripts.count(); i++ )\r
{\r
\r
editor.on( 'beforeCommandExec', function( ev ) // Disable SCAYT before Source command execution.\r
{\r
- if ( ( ev.data.name == 'source' || ev.data.name == 'newpage' ) && editor.mode == 'wysiwyg' )\r
- {\r
- var scayt_instance = plugin.getScayt( editor );\r
- if ( scayt_instance )\r
- {\r
- plugin.setPaused( editor, !scayt_instance.disabled );\r
- // store a control id for restore a specific scayt control settings\r
- plugin.setControlId( editor, scayt_instance.id );\r
- scayt_instance.destroy( true );\r
- delete plugin.instances[ editor.name ];\r
- }\r
- }\r
- // Catch on source mode switch off (#5720)\r
- else if ( ev.data.name == 'source' && editor.mode == 'source' )\r
+ if ( ev.data.name == 'source' && editor.mode == 'source' )\r
plugin.markControlRestore( editor );\r
});\r
\r
if ( editor.mode == 'wysiwyg' && ( ev.data.name == 'undo' || ev.data.name == 'redo' ) )\r
window.setTimeout( function() { plugin.getScayt( editor ).refresh(); }, 10 );\r
});\r
-\r
editor.on( 'destroy', function( ev )\r
{\r
var editor = ev.editor,\r
plugin.setControlId( editor, scayt_instance.id );\r
scayt_instance.destroy( true );\r
});\r
-\r
- // Listen to data manipulation to reflect scayt markup.\r
- editor.on( 'afterSetData', function()\r
+ //#9439 after SetData method fires contentDom event and SCAYT create additional instanse\r
+ // This way we should destroy SCAYT on setData event when contenteditable Iframe was re-created\r
+ editor.on( 'setData', function( ev )\r
{\r
- if ( plugin.isScaytEnabled( editor ) ) {\r
- window.setTimeout( function()\r
- {\r
- var instance = plugin.getScayt( editor );\r
- instance && instance.refresh();\r
- }, 10 );\r
- }\r
+ var scayt_instance = plugin.getScayt( editor );\r
+ if ( scayt_instance )\r
+ {\r
+ plugin.setPaused( editor, !scayt_instance.disabled );\r
+ // store a control id for restore a specific scayt control settings\r
+ plugin.setControlId( editor, scayt_instance.id );\r
+ scayt_instance.destroy( true );\r
+ delete plugin.instances[ editor.name ];\r
+ }\r
});\r
\r
// Reload spell-checking for current word after insertion completed.\r
var scayt_instance = this.getScayt( editor );\r
return ( scayt_instance ) ? scayt_instance.disabled === false : false;\r
},\r
+ getUiTabs : function( editor )\r
+ {\r
+ var uiTabs = [];\r
+\r
+ // read UI tabs value from config\r
+ var configUiTabs = editor.config.scayt_uiTabs || "1,1,1";\r
+\r
+ // convert string to array\r
+ configUiTabs = configUiTabs.split( ',' );\r
+\r
+ // "About us" should be always shown for standard config\r
+ configUiTabs[3] = "1";\r
+\r
+ for ( var i = 0; i < 4; i++ ) {\r
+ uiTabs[i] = (typeof window.scayt != "undefined" && typeof window.scayt.uiTags != "undefined")\r
+ ? (parseInt(configUiTabs[i],10) && window.scayt.uiTags[i])\r
+ : parseInt(configUiTabs[i],10);\r
+ }\r
+ return uiTabs;\r
+ },\r
loadEngine : function( editor )\r
{\r
// SCAYT doesn't work with Firefox2, Opera and AIR.\r
return editor.fire( 'showScaytState' );\r
\r
if ( this.engineLoaded === true )\r
- return onEngineLoad.apply( editor ); // Add new instance.\r
- else if ( this.engineLoaded == -1 ) // We are waiting.\r
+ {\r
+ return onEngineLoad.apply( editor );\r
+ }\r
+ // Add new instance.\r
+ else if ( this.engineLoaded == -1 )\r
+ { // We are waiting.\r
return CKEDITOR.on( 'scaytReady', function(){ onEngineLoad.apply( editor ); } ); // Use function(){} to avoid rejection as duplicate.\r
+ }\r
\r
CKEDITOR.on( 'scaytReady', onEngineLoad, editor );\r
CKEDITOR.on( 'scaytReady', function()\r
var protocol = document.location.protocol;\r
// Default to 'http' for unknown.\r
protocol = protocol.search( /https?:/) != -1? protocol : 'http:';\r
- var baseUrl = 'svc.spellchecker.net/scayt26/loader__base.js';\r
+ var baseUrl = 'svc.webspellchecker.net/scayt26/loader__base.js';\r
\r
var scaytUrl = editor.config.scayt_srcUrl || ( protocol + '//' + baseUrl );\r
var scaytConfigBaseUrl = plugin.parseUrl( scaytUrl ).path + '/';\r
);\r
}\r
else\r
+ {\r
CKEDITOR.fireOnce( 'scaytReady' );\r
+ }\r
\r
return null;\r
},\r
\r
init : function( editor )\r
{\r
+ // Delete span[data-scaytid] when text pasting in editor (#6921)\r
+ var dataFilter = editor.dataProcessor && editor.dataProcessor.dataFilter;\r
+ var dataFilterRules =\r
+ {\r
+ elements :\r
+ {\r
+ span : function( element )\r
+ {\r
+ var attrs = element.attributes;\r
+ if ( attrs && attrs[ 'data-scaytid' ] )\r
+ delete element.name;\r
+ }\r
+ }\r
+ };\r
+ dataFilter && dataFilter.addRules( dataFilterRules );\r
+\r
var moreSuggestions = {},\r
mainSuggestions = {};\r
\r
\r
// Add Options dialog.\r
CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/options.js' ) );\r
- // read ui tags\r
- var confuiTabs = editor.config.scayt_uiTabs || '1,1,1';\r
- var uiTabs =[];\r
- // string to array convert\r
- confuiTabs = confuiTabs.split( ',' );\r
- // check array length ! always must be 3 filled with 1 or 0\r
- for ( var i=0, l=3; i < l; i++ )\r
- {\r
- var flag = parseInt( confuiTabs[i] || '1', 10 );\r
- uiTabs.push( flag );\r
- }\r
+\r
+ var uiTabs = plugin.getUiTabs( editor );\r
\r
var menuGroup = 'scaytButton';\r
editor.addMenuGroup( menuGroup );\r
// combine menu items to render\r
- var uiMuneItems = {};\r
+ var uiMenuItems = {};\r
\r
var lang = editor.lang.scayt;\r
\r
// always added\r
- uiMuneItems.scaytToggle =\r
+ uiMenuItems.scaytToggle =\r
{\r
label : lang.enable,\r
command : commandName,\r
};\r
\r
if ( uiTabs[0] == 1 )\r
- uiMuneItems.scaytOptions =\r
+ uiMenuItems.scaytOptions =\r
{\r
label : lang.options,\r
group : menuGroup,\r
};\r
\r
if ( uiTabs[1] == 1 )\r
- uiMuneItems.scaytLangs =\r
+ uiMenuItems.scaytLangs =\r
{\r
label : lang.langs,\r
group : menuGroup,\r
}\r
};\r
if ( uiTabs[2] == 1 )\r
- uiMuneItems.scaytDict =\r
+ uiMenuItems.scaytDict =\r
{\r
label : lang.dictionariesTab,\r
group : menuGroup,\r
}\r
};\r
// always added\r
- uiMuneItems.scaytAbout =\r
+ uiMenuItems.scaytAbout =\r
{\r
label : editor.lang.scayt.about,\r
group : menuGroup,\r
}\r
};\r
\r
- uiTabs[3] = 1; // about us tab is always on\r
- plugin.uiTabs = uiTabs;\r
-\r
- editor.addMenuItems( uiMuneItems );\r
+ editor.addMenuItems( uiMenuItems );\r
\r
editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON,\r
{\r
\r
editor.getMenuItem( 'scaytToggle' ).label = lang[ isEnabled ? 'disable' : 'enable' ];\r
\r
+ var uiTabs = plugin.getUiTabs( editor );\r
+\r
return {\r
scaytToggle : CKEDITOR.TRISTATE_OFF,\r
- scaytOptions : isEnabled && plugin.uiTabs[0] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,\r
- scaytLangs : isEnabled && plugin.uiTabs[1] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,\r
- scaytDict : isEnabled && plugin.uiTabs[2] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,\r
- scaytAbout : isEnabled && plugin.uiTabs[3] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED\r
+ scaytOptions : isEnabled && uiTabs[0] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,\r
+ scaytLangs : isEnabled && uiTabs[1] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,\r
+ scaytDict : isEnabled && uiTabs[2] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,\r
+ scaytAbout : isEnabled && uiTabs[3] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED\r
};\r
}\r
});\r
return null;\r
\r
var sLang = scayt_control.getLang(),\r
- _r = {},\r
items_suggestion = window.scayt.getSuggestion( word, sLang );\r
- if ( !items_suggestion || !items_suggestion.length )\r
- return null;\r
// Remove unused commands and menuitems\r
- for ( i in moreSuggestions )\r
+ for ( var m in moreSuggestions )\r
{\r
- delete editor._.menuItems[ i ];\r
- delete editor._.commands[ i ];\r
+ delete editor._.menuItems[ m ];\r
+ delete editor._.commands[ m ];\r
}\r
- for ( i in mainSuggestions )\r
+ for ( m in mainSuggestions )\r
{\r
- delete editor._.menuItems[ i ];\r
- delete editor._.commands[ i ];\r
+ delete editor._.menuItems[ m ];\r
+ delete editor._.commands[ m ];\r
}\r
moreSuggestions = {}; // Reset items.\r
mainSuggestions = {};\r
var contextCommands = editor.config.scayt_contextCommands || 'all';\r
contextCommands = contextCommands.split( '|' );\r
\r
- for ( var i = 0, l = items_suggestion.length; i < l; i += 1 )\r
- {\r
- var commandName = 'scayt_suggestion_' + items_suggestion[i].replace( ' ', '_' );\r
- var exec = ( function( el, s )\r
- {\r
- return {\r
- exec: function()\r
- {\r
- scayt_control.replace( el, s );\r
- }\r
- };\r
- })( node, items_suggestion[i] );\r
-\r
- if ( i < maxSuggestions )\r
+ if ( items_suggestion && items_suggestion.length ) {\r
+ for ( var i = 0, l = items_suggestion.length; i < l; i += 1 )\r
{\r
- addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],\r
- commandName, exec, 'scayt_suggest', i + 1 );\r
- _r[ commandName ] = CKEDITOR.TRISTATE_OFF;\r
- mainSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;\r
+ var commandName = 'scayt_suggestion_' + items_suggestion[i].replace( ' ', '_' );\r
+ var exec = ( function( el, s )\r
+ {\r
+ return {\r
+ exec: function()\r
+ {\r
+ scayt_control.replace(el, s);\r
+ }\r
+ };\r
+ })( node, items_suggestion[i] );\r
+\r
+ if ( i < maxSuggestions )\r
+ {\r
+ addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],\r
+ commandName, exec, 'scayt_suggest', i + 1 );\r
+ mainSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;\r
+ }\r
+ else if ( moreSuggestionsUnable == 'on' )\r
+ {\r
+ addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],\r
+ commandName, exec, 'scayt_moresuggest', i + 1 );\r
+ moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;\r
+ moreSuggestionsUnableAdded = true;\r
+ }\r
}\r
- else if ( moreSuggestionsUnable == 'on' )\r
+\r
+ if ( moreSuggestionsUnableAdded )\r
{\r
- addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],\r
- commandName, exec, 'scayt_moresuggest', i + 1 );\r
- moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;\r
- moreSuggestionsUnableAdded = true;\r
+ // Register the More suggestions group;\r
+ editor.addMenuItem( 'scayt_moresuggest',\r
+ {\r
+ label : editor.lang.scayt.moreSuggestions,\r
+ group : 'scayt_moresuggest',\r
+ order : 10,\r
+ getItems : function()\r
+ {\r
+ return moreSuggestions;\r
+ }\r
+ });\r
+ mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF;\r
}\r
}\r
-\r
- if ( moreSuggestionsUnableAdded )\r
- {\r
- // Register the More suggestions group;\r
- editor.addMenuItem( 'scayt_moresuggest',\r
+ else {\r
+ // "No suggestions" feature\r
+ editor.addMenuItem( 'scayt_nosuggest',\r
{\r
- label : lang.moreSuggestions,\r
- group : 'scayt_moresuggest',\r
- order : 10,\r
- getItems : function()\r
- {\r
- return moreSuggestions;\r
- }\r
+ label : editor.lang.scayt.noSuggestions ? editor.lang.scayt.noSuggestions : (editor.lang.spellCheck.noSuggestions ? editor.lang.spellCheck.noSuggestions : 'No suggestions'),\r
+ group : 'scayt_suggest',\r
+ order : 1\r
});\r
- mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF;\r
+ mainSuggestions[ 'scayt_nosuggest' ] = CKEDITOR.TRISTATE_OFF;\r
}\r
\r
if ( in_array( 'all', contextCommands ) || in_array( 'ignore', contextCommands) )\r
})();\r
\r
/**\r
- * If enabled (true), turns on SCAYT automatically after loading the editor.\r
+ * If enabled (set to <code>true</code>), turns on SCAYT automatically\r
+ * after loading the editor.\r
* @name CKEDITOR.config.scayt_autoStartup\r
* @type Boolean\r
- * @default false\r
+ * @default <code>false</code>\r
* @example\r
* config.scayt_autoStartup = true;\r
*/\r
\r
/**\r
* Defines the number of SCAYT suggestions to show in the main context menu.\r
- * The possible values are:\r
+ * Possible values are:\r
* <ul>\r
- * <li>0 (zero): All suggestions are displayed in the main context menu.</li>\r
- * <li>Positive number: The maximum number of suggestions to shown in context\r
- * menu. Other entries will be shown in "More Suggestions" sub-menu.</li>\r
- * <li>Negative number: No suggestions are shown in the main context menu. All\r
- * entries will be listed in the "Suggestions" sub-menu.</li>\r
+ * <li><code>0</code> (zero) – All suggestions are displayed in the main context menu.</li>\r
+ * <li>Positive number – The maximum number of suggestions to show in the context\r
+ * menu. Other entries will be shown in the "More Suggestions" sub-menu.</li>\r
+ * <li>Negative number – No suggestions are shown in the main context menu. All\r
+ * entries will be listed in the the "Suggestions" sub-menu.</li>\r
* </ul>\r
* @name CKEDITOR.config.scayt_maxSuggestions\r
* @type Number\r
- * @default 5\r
+ * @default <code>5</code>\r
* @example\r
* // Display only three suggestions in the main context menu.\r
* config.scayt_maxSuggestions = 3;\r
*/\r
\r
/**\r
- * Sets the customer ID for SCAYT. Required for migration from free version\r
- * with banner to paid version.\r
+ * Sets the customer ID for SCAYT. Required for migration from free,\r
+ * ad-supported version to paid, ad-free version.\r
* @name CKEDITOR.config.scayt_customerid\r
* @type String\r
- * @default ''\r
+ * @default <code>''</code>\r
* @example\r
* // Load SCAYT using my customer ID.\r
* config.scayt_customerid = 'your-encrypted-customer-id';\r
\r
/**\r
* Enables/disables the "More Suggestions" sub-menu in the context menu.\r
- * The possible values are "on" or "off".\r
+ * Possible values are <code>on</code> and <code>off</code>.\r
* @name CKEDITOR.config.scayt_moreSuggestions\r
* @type String\r
- * @default 'on'\r
+ * @default <code>'on'</code>\r
* @example\r
* // Disables the "More Suggestions" sub-menu.\r
* config.scayt_moreSuggestions = 'off';\r
\r
/**\r
* Customizes the display of SCAYT context menu commands ("Add Word", "Ignore"\r
- * and "Ignore All"). It must be a string with one or more of the following\r
- * words separated by a pipe ("|"):\r
+ * and "Ignore All"). This must be a string with one or more of the following\r
+ * words separated by a pipe character ("|"):\r
* <ul>\r
- * <li>"off": disables all options.</li>\r
- * <li>"all": enables all options.</li>\r
- * <li>"ignore": enables the "Ignore" option.</li>\r
- * <li>"ignoreall": enables the "Ignore All" option.</li>\r
- * <li>"add": enables the "Add Word" option.</li>\r
+ * <li><code>off</code> – disables all options.</li>\r
+ * <li><code>all</code> – enables all options.</li>\r
+ * <li><code>ignore</code> – enables the "Ignore" option.</li>\r
+ * <li><code>ignoreall</code> – enables the "Ignore All" option.</li>\r
+ * <li><code>add</code> – enables the "Add Word" option.</li>\r
* </ul>\r
* @name CKEDITOR.config.scayt_contextCommands\r
* @type String\r
- * @default 'all'\r
+ * @default <code>'all'</code>\r
* @example\r
* // Show only "Add Word" and "Ignore All" in the context menu.\r
* config.scayt_contextCommands = 'add|ignoreall';\r
*/\r
\r
/**\r
- * Sets the default spellchecking language for SCAYT.\r
+ * Sets the default spell checking language for SCAYT. Possible values are:\r
+ * <code>en_US</code>, <code>en_GB</code>, <code>pt_BR</code>, <code>da_DK</code>,\r
+ * <code>nl_NL</code>, <code>en_CA</code>, <code>fi_FI</code>, <code>fr_FR</code>,\r
+ * <code>fr_CA</code>, <code>de_DE</code>, <code>el_GR</code>, <code>it_IT</code>,\r
+ * <code>nb_NO</code>, <code>pt_PT</code>, <code>es_ES</code>, <code>sv_SE</code>.\r
* @name CKEDITOR.config.scayt_sLang\r
* @type String\r
- * @default 'en_US'\r
+ * @default <code>'en_US'</code>\r
* @example\r
* // Sets SCAYT to German.\r
* config.scayt_sLang = 'de_DE';\r
*/\r
\r
/**\r
- * Sets the visibility of the SCAYT tabs in the settings dialog and toolbar\r
- * button. The value must contain a "1" (enabled) or "0" (disabled) number for\r
- * each of the following entries, in this precise order, separated by a\r
- * comma (","): "Options", "Languages" and "Dictionary".\r
+ * Sets the visibility of particular tabs in the SCAYT dialog window and toolbar\r
+ * button. This setting must contain a <code>1</code> (enabled) or <code>0</code>\r
+ * (disabled) value for each of the following entries, in this precise order,\r
+ * separated by a comma (","): "Options", "Languages", and "Dictionary".\r
* @name CKEDITOR.config.scayt_uiTabs\r
* @type String\r
- * @default '1,1,1'\r
+ * @default <code>'1,1,1'</code>\r
* @example\r
- * // Hide the "Languages" tab.\r
+ * // Hides the "Languages" tab.\r
* config.scayt_uiTabs = '1,0,1';\r
*/\r
\r
\r
/**\r
- * Set the URL to SCAYT core. Required to switch to licensed version of SCAYT application.\r
- * Further details at http://wiki.spellchecker.net/doku.php?id=3rd:wysiwyg:fckeditor:wscckf3l .\r
+ * Sets the URL to SCAYT core. Required to switch to the licensed version of SCAYT application.\r
+ * Further details available at\r
+ * <a href="http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck">\r
+ * http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck</a>.\r
* @name CKEDITOR.config.scayt_srcUrl\r
* @type String\r
- * @default ''\r
+ * @default <code>''</code>\r
* @example\r
* config.scayt_srcUrl = "http://my-host/spellcheck/lf/scayt/scayt.js";\r
*/\r
\r
/**\r
- * Links SCAYT to custom dictionaries. It's a string containing dictionary ids\r
- * separared by commas (","). Available only for licensed version.\r
- * Further details at http://wiki.spellchecker.net/doku.php?id=custom_dictionary_support .\r
+ * Links SCAYT to custom dictionaries. This is a string containing dictionary IDs\r
+ * separared by commas (","). Available only for the licensed version.\r
+ * Further details at\r
+ * <a href="http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed">\r
+ * http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed</a>.\r
* @name CKEDITOR.config.scayt_customDictionaryIds\r
* @type String\r
- * @default ''\r
+ * @default <code>''</code>\r
* @example\r
* config.scayt_customDictionaryIds = '3021,3456,3478"';\r
*/\r
\r
/**\r
- * Makes it possible to activate a custom dictionary on SCAYT. The user\r
- * dictionary name must be used. Available only for licensed version.\r
+ * Makes it possible to activate a custom dictionary in SCAYT. The user\r
+ * dictionary name must be used. Available only for the licensed version.\r
* @name CKEDITOR.config.scayt_userDictionaryName\r
* @type String\r
- * @default ''\r
+ * @default <code>''</code>\r
* @example\r
* config.scayt_userDictionaryName = 'MyDictionary';\r
*/\r
\r
/**\r
- * Define order of placing of SCAYT context menu items by groups.\r
- * It must be a string with one or more of the following\r
- * words separated by a pipe ("|"):\r
+ * Defines the order SCAYT context menu items by groups.\r
+ * This must be a string with one or more of the following\r
+ * words separated by a pipe character ("|"):\r
* <ul>\r
- * <li>'suggest' - main suggestion word list,</li>\r
- * <li>'moresuggest' - more suggestions word list,</li>\r
- * <li>'control' - SCAYT commands, such as 'Ignore' and 'Add Word'</li>\r
+ * <li><code>suggest</code> – main suggestion word list,</li>\r
+ * <li><code>moresuggest</code> – more suggestions word list,</li>\r
+ * <li><code>control</code> – SCAYT commands, such as "Ignore" and "Add Word".</li>\r
* </ul>\r
*\r
* @name CKEDITOR.config.scayt_contextMenuItemsOrder\r
* @type String\r
- * @default 'suggest|moresuggest|control'\r
+ * @default <code>'suggest|moresuggest|control'</code>\r
* @example\r
* config.scayt_contextMenuItemsOrder = 'moresuggest|control|suggest';\r
*/\r