Ticket #4814: #4814_3.patch
| File #4814_3.patch, 54.1 KB (added by , 16 years ago) |
|---|
-
plugin.js
4 4 */ 5 5 6 6 /** 7 * @fileOverview Spell Check As You Type (SCAYT).8 * Button name : Scayt.9 */7 * @fileOverview Spell Check As You Type (SCAYT). 8 * Button name : Scayt. 9 */ 10 10 11 11 (function() 12 12 { 13 var commandName = 'scaytcheck', 14 openPage = ''; 13 var commandName = 'scaytcheck', 14 openPage = ''; 15 // Checks if a value exists in an array 16 function in_array(needle, haystack) 17 { 18 var found = false, key; 19 for (key in haystack) 20 { 21 if ((haystack[key] === needle) || ( haystack[key] == needle)) 22 { 23 found = true; 24 break; 25 } 26 } 27 return found; 28 } 29 30 var onEngineLoad = function() 31 { 32 var editor = this; 15 33 16 var onEngineLoad = function() 17 { 18 var editor = this; 34 var createInstance = function() // Create new instance every time Document is created. 35 { 36 // Initialise Scayt instance. 37 var oParams = {}; 38 oParams.srcNodeRef = editor.document.getWindow().$.frameElement; // Get the iframe. 39 // syntax : AppName.AppVersion@AppRevision 40 oParams.assocApp = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision; 41 oParams.customerid = editor.config.scayt_customerid || ""; 42 oParams.customDictionaryIds = editor.config.scayt_customDictionaryIds; 43 oParams.userDictionaryName = editor.config.scayt_userDictionaryName; 44 oParams.sLang = editor.config.scayt_sLang || "en_US"; 45 46 if ( CKEDITOR._scaytParams ) 47 { 48 for ( var k in CKEDITOR._scaytParams ) 49 { 50 oParams[ k ] = CKEDITOR._scaytParams[ k ]; 51 } 52 } 19 53 20 var createInstance = function() // Create new instance every time Document is created. 21 { 22 // Initialise Scayt instance. 23 var oParams = {}; 24 oParams.srcNodeRef = editor.document.getWindow().$.frameElement; // Get the iframe. 25 // syntax : AppName.AppVersion@AppRevision 26 oParams.assocApp = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision; 54 var scayt_control = new window.scayt( oParams ); 27 55 28 oParams.customerid = editor.config.scayt_customerid || "1:11111111111111111111111111111111111111"; 29 oParams.customDictionaryName = editor.config.scayt_customDictionaryName; 30 oParams.userDictionaryName = editor.config.scayt_userDictionaryName; 31 oParams.defLang = editor.scayt_defLang; 56 // Copy config. 57 var lastInstance = plugin.instances[ editor.name ]; 58 if ( lastInstance ) 59 { 60 scayt_control.sLang = lastInstance.sLang; 61 scayt_control.option( lastInstance.option() ); 62 scayt_control.paused = lastInstance.paused; 63 } 32 64 33 if ( CKEDITOR._scaytParams ) 34 { 35 for ( var k in CKEDITOR._scaytParams ) 36 { 37 oParams[ k ] = CKEDITOR._scaytParams[ k ]; 38 } 39 } 65 plugin.instances[ editor.name ] = scayt_control; 66 67 //window.scayt.uiTags 68 var menuGroup = 'scaytButton'; 69 var uiTabs = window.scayt.uiTags; 70 var fTabs = []; 71 72 for (var i = 0,l=4; i<l; i++) 73 fTabs.push( uiTabs[i] && plugin.uiTabs[i] ); 74 75 plugin.uiTabs = fTabs; 76 77 try { 78 scayt_control.setDisabled( scayt_control.paused === false ); 79 } catch (e) {} 80 editor.fire( 'showScaytState' ); 81 }; 40 82 41 var scayt_control = new window.scayt( oParams ); 83 editor.on( 'contentDom', createInstance ); 84 editor.on( 'contentDomUnload', function() 85 { 86 // Remove scripts. 87 var scripts = CKEDITOR.document.getElementsByTag( 'script' ), 88 scaytIdRegex = /^dojoIoScript(\d+)$/i, 89 scaytSrcRegex = /^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i; 42 90 43 // Copy config. 44 var lastInstance = plugin.instances[ editor.name ]; 45 if ( lastInstance ) 46 { 47 scayt_control.sLang = lastInstance.sLang; 48 scayt_control.option( lastInstance.option() ); 49 scayt_control.paused = lastInstance.paused; 50 } 91 for ( var i=0; i < scripts.count(); i++ ) 92 { 93 var script = scripts.getItem( i ), 94 id = script.getId(), 95 src = script.getAttribute( 'src' ); 51 96 52 plugin.instances[ editor.name ] = scayt_control; 97 if ( id && src && id.match( scaytIdRegex ) && src.match( scaytSrcRegex )) 98 script.remove(); 99 } 100 }); 53 101 54 try { 55 scayt_control.setDisabled( scayt_control.paused === false ); // I really don't know why it causes JS error in IE 56 } catch (e) {} 57 editor.fire( 'showScaytState' ); 58 }; 102 editor.on( 'beforeCommandExec', function( ev ) // Disable SCAYT before Source command execution. 103 { 104 if ( (ev.data.name == 'source' || ev.data.name == 'newpage') && editor.mode == 'wysiwyg' ) 105 { 106 var scayt_instanse = plugin.getScayt( editor ); 107 if ( scayt_instanse ) 108 { 109 scayt_instanse.paused = !scayt_instanse.disabled; 110 scayt_instanse.destroy(); 111 delete plugin.instances[ editor.name ]; 112 } 113 } 114 }); 115 59 116 60 editor.on( 'contentDom', createInstance ); 61 editor.on( 'contentDomUnload', function() 62 { 63 // Remove scripts. 64 var scripts = CKEDITOR.document.getElementsByTag( 'script' ), 65 scaytIdRegex = /^dojoIoScript(\d+)$/i, 66 scaytSrcRegex = /^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i; 117 editor.on( 'destroy', function() 118 { 119 plugin.getScayt( editor ).destroy(); 120 }); 121 // Listen to data manipulation to reflect scayt markup. 122 editor.on( 'afterSetData', function() 123 { 124 if ( plugin.isScaytEnabled( editor ) ) 125 plugin.getScayt( editor ).refresh(); 126 }); 67 127 68 for ( var i=0; i < scripts.count(); i++ ) 69 { 70 var script = scripts.getItem( i ), 71 id = script.getId(), 72 src = script.getAttribute( 'src' ); 128 // Reload spell-checking for current word after insertion completed. 129 editor.on( 'insertElement', function() 130 { 131 var scayt_instance = plugin.getScayt( editor ); 132 if ( plugin.isScaytEnabled( editor ) ) 133 { 134 // Unlock the selection before reload, SCAYT will take 135 // care selection update. 136 if ( CKEDITOR.env.ie ) 137 editor.getSelection().unlock( true ); 73 138 74 if ( id && src && id.match( scaytIdRegex ) && src.match( scaytSrcRegex )) 75 script.remove(); 76 } 77 }); 139 // Swallow any SCAYT engine errors. 140 try{ 141 scayt_instance.refresh(); 142 }catch( er ) 143 {} 144 } 145 }, this, null, 50 ); 78 146 79 editor.on( 'beforeCommandExec', function( ev ) // Disable SCAYT before Source command execution. 80 { 81 if ( (ev.data.name == 'source' || ev.data.name == 'newpage') && editor.mode == 'wysiwyg' ) 82 { 83 var scayt_instanse = plugin.getScayt( editor ); 84 if ( scayt_instanse ) 85 { 86 scayt_instanse.paused = !scayt_instanse.disabled; 87 scayt_instanse.destroy(); 88 delete plugin.instances[ editor.name ]; 89 } 90 } 91 }); 147 editor.on( 'insertHtml', function() 148 { 149 150 var scayt_instance = plugin.getScayt( editor ); 151 if ( plugin.isScaytEnabled( editor ) ) 152 { 153 // Unlock the selection before reload, SCAYT will take 154 // care selection update. 155 if ( CKEDITOR.env.ie ) 156 editor.getSelection().unlock( true ); 92 157 93 // Listen to data manipulation to reflect scayt markup. 94 editor.on( 'afterSetData', function() 95 { 96 if ( plugin.isScaytEnabled( editor ) ) 97 plugin.getScayt( editor ).refresh(); 98 }); 158 // Swallow any SCAYT engine errors. 159 try{ 160 scayt_instance.refresh(); 161 }catch( er ) 162 {} 163 } 164 }, this, null, 50 ); 99 165 100 // Reload spell-checking for current word after insertion completed.101 editor.on( 'insertElement', function()102 {103 var scayt_instance = plugin.getScayt( editor );104 if ( plugin.isScaytEnabled( editor ) )105 {106 // Unlock the selection before reload, SCAYT will take107 // care selection update.108 if ( CKEDITOR.env.ie )109 editor.getSelection().unlock( true );110 166 111 // Swallow any SCAYT engine errors.112 try{113 scayt_instance.refresh();114 }catch( er )115 {}116 }117 }, this, null, 50 );118 167 119 editor.on( 'scaytDialog', function( ev ) // Communication with dialog.120 {121 ev.data.djConfig = window.djConfig;122 ev.data.scayt_control = plugin.getScayt( editor );123 ev.data.tab = openPage;124 ev.data.scayt = window.scayt;125 });168 editor.on( 'scaytDialog', function( ev ) // Communication with dialog. 169 { 170 ev.data.djConfig = window.djConfig; 171 ev.data.scayt_control = plugin.getScayt( editor ); 172 ev.data.tab = openPage; 173 ev.data.scayt = window.scayt; 174 }); 126 175 127 var dataProcessor = editor.dataProcessor,128 htmlFilter = dataProcessor && dataProcessor.htmlFilter;129 if ( htmlFilter )130 {131 htmlFilter.addRules(132 {133 elements :134 {135 span : function( element )136 {137 if ( element.attributes.scayt_word && element.attributes.scaytid )138 {139 delete element.name; // Write children, but don't write this node.140 return element;141 }142 }143 }144 }145 );146 }176 var dataProcessor = editor.dataProcessor, 177 htmlFilter = dataProcessor && dataProcessor.htmlFilter; 178 if ( htmlFilter ) 179 { 180 htmlFilter.addRules( 181 { 182 elements : 183 { 184 span : function( element ) 185 { 186 if ( element.attributes.scayt_word && element.attributes.scaytid ) 187 { 188 delete element.name; // Write children, but don't write this node. 189 return element; 190 } 191 } 192 } 193 } 194 ); 195 } 147 196 148 if ( editor.document )149 createInstance();150 };197 if ( editor.document ) 198 createInstance(); 199 }; 151 200 152 CKEDITOR.plugins.scayt =153 {154 engineLoaded : false,155 instances : {},156 getScayt : function( editor )157 {158 return this.instances[ editor.name ];159 },160 isScaytReady : function( editor )161 {162 return this.engineLoaded === true &&163 'undefined' !== typeof window.scayt && this.getScayt( editor );164 },165 isScaytEnabled : function( editor )166 {167 var scayt_instanse = this.getScayt( editor );168 return ( scayt_instanse ) ? scayt_instanse.disabled === false : false;169 },170 loadEngine : function( editor )171 {172 if ( this.engineLoaded === true )173 return onEngineLoad.apply( editor ); // Add new instance.174 else if ( this.engineLoaded == -1 ) // We are waiting.175 return CKEDITOR.on( 'scaytReady', function(){ onEngineLoad.apply( editor );} ); // Use function(){} to avoid rejection as duplicate.201 CKEDITOR.plugins.scayt = 202 { 203 engineLoaded : false, 204 instances : {}, 205 getScayt : function( editor ) 206 { 207 return this.instances[ editor.name ]; 208 }, 209 isScaytReady : function( editor ) 210 { 211 return this.engineLoaded === true && 212 'undefined' !== typeof window.scayt && this.getScayt( editor ); 213 }, 214 isScaytEnabled : function( editor ) 215 { 216 var scayt_instanse = this.getScayt( editor ); 217 return ( scayt_instanse ) ? scayt_instanse.disabled === false : false; 218 }, 219 loadEngine : function( editor ) 220 { 221 if ( this.engineLoaded === true ) 222 return onEngineLoad.apply( editor ); // Add new instance. 223 else if ( this.engineLoaded == -1 ) // We are waiting. 224 return CKEDITOR.on( 'scaytReady', function(){ onEngineLoad.apply( editor );} ); // Use function(){} to avoid rejection as duplicate. 176 225 177 CKEDITOR.on( 'scaytReady', onEngineLoad, editor );178 CKEDITOR.on( 'scaytReady', function()179 {180 this.engineLoaded = true;181 },182 this,183 null,184 0 );// First to run.226 CKEDITOR.on( 'scaytReady', onEngineLoad, editor ); 227 CKEDITOR.on( 'scaytReady', function() 228 { 229 this.engineLoaded = true; 230 }, 231 this, 232 null, 233 0 );// First to run. 185 234 186 this.engineLoaded = -1; // Loading in progress.235 this.engineLoaded = -1; // Loading in progress. 187 236 188 // compose scayt url189 var protocol = document.location.protocol;190 // Default to 'http' for unknown.191 protocol = protocol.search( /https?:/) != -1? protocol : 'http:';192 var baseUrl = "svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js";237 // compose scayt url 238 var protocol = document.location.protocol; 239 // Default to 'http' for unknown. 240 protocol = protocol.search( /https?:/) != -1? protocol : 'http:'; 241 var baseUrl = "svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js"; 193 242 194 var scaytUrl = editor.config.scayt_srcUrl || ( protocol + "//" + baseUrl );195 var scaytConfigBaseUrl = plugin.parseUrl( scaytUrl ).path + "/";243 var scaytUrl = editor.config.scayt_srcUrl || ( protocol + "//" + baseUrl ); 244 var scaytConfigBaseUrl = plugin.parseUrl( scaytUrl ).path + "/"; 196 245 197 CKEDITOR._djScaytConfig =198 {199 baseUrl: scaytConfigBaseUrl,200 addOnLoad:201 [202 function()203 {204 CKEDITOR.fireOnce( "scaytReady" );205 }206 ],207 isDebug: false208 };209 // Append javascript code.210 CKEDITOR.document.getHead().append(211 CKEDITOR.document.createElement( 'script',212 {213 attributes :214 {215 type : 'text/javascript',216 src : scaytUrl217 }218 })219 );246 CKEDITOR._djScaytConfig = 247 { 248 baseUrl: scaytConfigBaseUrl, 249 addOnLoad: 250 [ 251 function() 252 { 253 CKEDITOR.fireOnce( "scaytReady" ); 254 } 255 ], 256 isDebug: false 257 }; 258 // Append javascript code. 259 CKEDITOR.document.getHead().append( 260 CKEDITOR.document.createElement( 'script', 261 { 262 attributes : 263 { 264 type : 'text/javascript', 265 src : scaytUrl 266 } 267 }) 268 ); 220 269 221 return null;222 },223 parseUrl : function ( data )224 {225 var match;226 if ( data.match && ( match = data.match(/(.*)[\/\\](.*?\.\w+)$/) ) )227 return { path: match[1], file: match[2] };228 else229 return data;230 }231 };270 return null; 271 }, 272 parseUrl : function ( data ) 273 { 274 var match; 275 if ( data.match && ( match = data.match(/(.*)[\/\\](.*?\.\w+)$/) ) ) 276 return { path: match[1], file: match[2] }; 277 else 278 return data; 279 } 280 }; 232 281 233 var plugin = CKEDITOR.plugins.scayt;282 var plugin = CKEDITOR.plugins.scayt; 234 283 235 // Context menu constructing.236 var addButtonCommand = function( editor, buttonName, buttonLabel, commandName, command, menugroup, menuOrder )237 {238 editor.addCommand( commandName, command );284 // Context menu constructing. 285 var addButtonCommand = function( editor, buttonName, buttonLabel, commandName, command, menugroup, menuOrder ) 286 { 287 editor.addCommand( commandName, command ); 239 288 240 // If the "menu" plugin is loaded, register the menu item.241 editor.addMenuItem( commandName,242 {243 label : buttonLabel,244 command : commandName,245 group : menugroup,246 order : menuOrder247 });248 };289 // If the "menu" plugin is loaded, register the menu item. 290 editor.addMenuItem( commandName, 291 { 292 label : buttonLabel, 293 command : commandName, 294 group : menugroup, 295 order : menuOrder 296 }); 297 }; 249 298 250 var commandDefinition =251 {252 preserveState : true,253 editorFocus : false,299 var commandDefinition = 300 { 301 preserveState : true, 302 editorFocus : false, 254 303 255 exec: function( editor )256 {257 if ( plugin.isScaytReady( editor ) )258 {259 var isEnabled = plugin.isScaytEnabled( editor );304 exec: function( editor ) 305 { 306 if ( plugin.isScaytReady( editor ) ) 307 { 308 var isEnabled = plugin.isScaytEnabled( editor ); 260 309 261 this.setState( isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_ON );310 this.setState( isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_ON ); 262 311 263 var scayt_control = plugin.getScayt( editor );264 scayt_control.setDisabled( isEnabled );265 }266 else if ( !editor.config.scayt_autoStartup && plugin.engineLoaded >= 0 ) // Load first time267 {268 this.setState( CKEDITOR.TRISTATE_DISABLED );312 var scayt_control = plugin.getScayt( editor ); 313 scayt_control.setDisabled( isEnabled ); 314 } 315 else if ( !editor.config.scayt_autoStartup && plugin.engineLoaded >= 0 ) // Load first time 316 { 317 this.setState( CKEDITOR.TRISTATE_DISABLED ); 269 318 270 editor.on( 'showScaytState', function()271 {272 this.removeListener();273 this.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );274 },275 this);319 editor.on( 'showScaytState', function() 320 { 321 this.removeListener(); 322 this.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); 323 }, 324 this); 276 325 277 plugin.loadEngine( editor );278 }279 }280 };326 plugin.loadEngine( editor ); 327 } 328 } 329 }; 281 330 282 // Add scayt plugin.283 CKEDITOR.plugins.add( 'scayt',284 {285 requires : [ 'menubutton' ],331 // Add scayt plugin. 332 CKEDITOR.plugins.add( 'scayt', 333 { 334 requires : [ 'menubutton' ], 286 335 287 beforeInit : function( editor )288 {289 // Register own rbc menu group.290 editor.config.menu_groups = 'scayt_suggest,scayt_moresuggest,scayt_control,' + editor.config.menu_groups;291 },336 beforeInit : function( editor ) 337 { 338 // Register own rbc menu group. 339 editor.config.menu_groups = 'scayt_suggest,scayt_moresuggest,scayt_control,' + editor.config.menu_groups; 340 }, 292 341 293 init : function( editor )294 {295 var moreSuggestions = {};296 var mainSuggestions = {};342 init : function( editor ) 343 { 344 var moreSuggestions = {}; 345 var mainSuggestions = {}; 297 346 298 // Scayt command.299 var command = editor.addCommand( commandName, commandDefinition );347 // Scayt command. 348 var command = editor.addCommand( commandName, commandDefinition ); 300 349 301 // Add Options dialog. 302 CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/options.js' ) ); 350 // Add Options dialog. 351 CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/options.js' ) ); 352 // read ui tags 353 var confuiTabs = editor.config.scayt_uiTabs || "1,1,1"; 354 var uiTabs =[]; 355 // string tp array convert 356 confuiTabs = confuiTabs.split(","); 357 // check array length ! allwaays must be 3 filled with 1 or 0 358 for (var i=0,l=3; i<l; i++){ 359 var flag = parseInt(confuiTabs[i] || "1" ,10); 360 uiTabs.push( flag ); 361 } 362 363 364 var menuGroup = 'scaytButton'; 365 editor.addMenuGroup( menuGroup ); 366 // combine menu items to render 367 var uiMuneItems = {}; 368 369 // allways added 370 uiMuneItems.scaytToggle = 371 { 372 label : editor.lang.scayt.enable, 373 command : commandName, 374 group : menuGroup 375 }; 376 377 if (uiTabs[0] == 1) 378 uiMuneItems.scaytOptions = 379 { 380 label : editor.lang.scayt.options, 381 group : menuGroup, 382 onClick : function() 383 { 384 openPage = 'options'; 385 editor.openDialog( commandName ); 386 } 387 }; 303 388 304 var menuGroup = 'scaytButton'; 305 editor.addMenuGroup( menuGroup ); 306 editor.addMenuItems( 307 { 308 scaytToggle : 309 { 310 label : editor.lang.scayt.enable, 311 command : commandName, 312 group : menuGroup 313 }, 389 if (uiTabs[1] == 1) 390 uiMuneItems.scaytLangs = 391 { 392 label : editor.lang.scayt.langs, 393 group : menuGroup, 394 onClick : function() 395 { 396 openPage = 'langs'; 397 editor.openDialog( commandName ); 398 } 399 }; 400 if (uiTabs[2] == 1) 401 uiMuneItems.scaytDict = 402 { 403 label : editor.lang.scayt.dictionariesTab, 404 group : menuGroup, 405 onClick : function() 406 { 407 openPage = 'dictionaries'; 408 editor.openDialog( commandName ); 409 } 410 }; 411 // allways added 412 uiMuneItems.scaytAbout = 413 { 414 label : editor.lang.scayt.about, 415 group : menuGroup, 416 onClick : function() 417 { 418 openPage = 'about'; 419 editor.openDialog( commandName ); 420 } 421 } 422 ; 423 424 uiTabs[3] = 1; // about us tab is allways on 425 plugin.uiTabs = uiTabs; 426 427 editor.addMenuItems( uiMuneItems ); 314 428 315 scaytOptions : 316 { 317 label : editor.lang.scayt.options, 318 group : menuGroup, 319 onClick : function() 320 { 321 openPage = 'options'; 322 editor.openDialog( commandName ); 323 } 324 }, 429 editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON, 430 { 431 label : editor.lang.scayt.title, 432 title : editor.lang.scayt.title, 433 className : 'cke_button_scayt', 434 onRender: function() 435 { 436 command.on( 'state', function() 437 { 438 this.setState( command.state ); 439 }, 440 this); 441 442 }, 443 onMenu : function() 444 { 445 var isEnabled = plugin.isScaytEnabled( editor ); 446 447 editor.getMenuItem( 'scaytToggle' ).label = editor.lang.scayt[ isEnabled ? 'disable' : 'enable' ]; 448 449 return { 450 scaytToggle : CKEDITOR.TRISTATE_OFF, 451 scaytOptions : isEnabled && plugin.uiTabs[0] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, 452 scaytLangs : isEnabled && plugin.uiTabs[1] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, 453 scaytDict : isEnabled && plugin.uiTabs[2] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, 454 scaytAbout : isEnabled && plugin.uiTabs[3] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED 455 }; 456 } 457 }); 325 458 326 scaytLangs : 327 { 328 label : editor.lang.scayt.langs, 329 group : menuGroup, 330 onClick : function() 331 { 332 openPage = 'langs'; 333 editor.openDialog( commandName ); 334 } 335 }, 459 // If the "contextmenu" plugin is loaded, register the listeners. 460 if ( editor.contextMenu && editor.addMenuItems ) 461 { 462 editor.contextMenu.addListener( function( element ) 463 { 464 465 if ( !( plugin.isScaytEnabled( editor ) && element ) ) 466 return null; 336 467 337 scaytAbout : 338 { 339 label : editor.lang.scayt.about, 340 group : menuGroup, 341 onClick : function() 342 { 343 openPage = 'about'; 344 editor.openDialog( commandName ); 345 } 346 } 347 }); 468 var scayt_control = plugin.getScayt( editor ), 469 word = scayt_control.getWord( element.$ ); 348 470 349 editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON, 350 { 351 label : editor.lang.scayt.title, 352 title : editor.lang.scayt.title, 353 className : 'cke_button_scayt', 354 onRender: function() 355 { 356 command.on( 'state', function() 357 { 358 this.setState( command.state ); 359 }, 360 this); 361 }, 362 onMenu : function() 363 { 364 var isEnabled = plugin.isScaytEnabled( editor ); 471 if ( !word ) 472 return null; 365 473 366 editor.getMenuItem( 'scaytToggle' ).label = editor.lang.scayt[ isEnabled ? 'disable' : 'enable' ]; 474 var sLang = scayt_control.getLang(), 475 _r = {}, 476 items_suggestion = window.scayt.getSuggestion( word, sLang ); 477 if (!items_suggestion || !items_suggestion.length ) 478 return null; 479 // Remove unused commands and menuitems 367 480 368 return { 369 scaytToggle : CKEDITOR.TRISTATE_OFF, 370 scaytOptions : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, 371 scaytLangs : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, 372 scaytAbout : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED 373 }; 374 } 375 }); 481 for ( i in moreSuggestions ) 482 { 483 delete editor._.menuItems[ i ]; 484 delete editor._.commands[ i ]; 485 } 486 for ( i in mainSuggestions ) 487 { 488 delete editor._.menuItems[ i ]; 489 delete editor._.commands[ i ]; 490 } 491 moreSuggestions = {}; // Reset items. 492 mainSuggestions = {}; 376 493 377 // If the "contextmenu" plugin is loaded, register the listeners. 378 if ( editor.contextMenu && editor.addMenuItems ) 379 { 380 editor.contextMenu.addListener( function( element ) 381 { 382 if ( !( plugin.isScaytEnabled( editor ) && element ) ) 383 return null;494 var moreSuggestionsUnable = editor.config.scayt_moreSuggestions || "on"; 495 var moreSuggestionsUnableAdded = false; 496 var maxSuggestions = ( editor.config.scayt_maxSuggestions <= 0) 497 ? items_suggestion.length 498 : editor.config.scayt_maxSuggestions; 499 var contextCommands = editor.config.scayt_contextCommands || "all"; 500 contextCommands = contextCommands.split("|"); 384 501 385 var scayt_control = plugin.getScayt( editor ), 386 word = scayt_control.getWord( element.$ ); 502 for ( var i = 0, l = items_suggestion.length; i < l; i += 1 ) 503 { 504 var commandName = 'scayt_suggestion_' + items_suggestion[i].replace( ' ', '_' ); 505 var exec = ( function( el, s ) 506 { 507 return { 508 exec: function() 509 { 510 scayt_control.replace(el, s); 511 } 512 }; 513 })( element.$, items_suggestion[i] ); 387 514 388 if ( !word ) 389 return null; 515 if ( i < maxSuggestions ) 516 { 517 addButtonCommand( editor, 'button_' + commandName, items_suggestion[i], 518 commandName, exec, 'scayt_suggest', i + 1 ); 519 _r[ commandName ] = CKEDITOR.TRISTATE_OFF; 520 mainSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF; 521 } 522 else if ( moreSuggestionsUnable == "on" ) 523 { 390 524 391 var sLang = scayt_control.getLang(), 392 _r = {}, 393 items_suggestion = window.scayt.getSuggestion( word, sLang ); 394 if (!items_suggestion || !items_suggestion.length ) 395 return null; 396 // Remove unused commands and menuitems 397 for ( i in moreSuggestions ) 398 { 399 delete editor._.menuItems[ i ]; 400 delete editor._.commands[ i ]; 401 } 402 for ( i in mainSuggestions ) 403 { 404 delete editor._.menuItems[ i ]; 405 delete editor._.commands[ i ]; 406 } 407 moreSuggestions = {}; // Reset items. 408 mainSuggestions = {}; 525 addButtonCommand( editor, 'button_' + commandName, items_suggestion[i], 526 commandName, exec, 'scayt_moresuggest', i + 1 ); 527 moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF; 528 moreSuggestionsUnableAdded = true; 409 529 410 var moreSuggestionsUnable = false;411 530 412 for ( var i = 0, l = items_suggestion.length; i < l; i += 1 )413 {414 var commandName = 'scayt_suggestion_' + items_suggestion[i].replace( ' ', '_' );415 var exec = ( function( el, s )416 {417 return {418 exec: function()419 {420 scayt_control.replace(el, s);421 }422 };423 })( element.$, items_suggestion[i] );424 531 425 if ( i < editor.config.scayt_maxSuggestions )426 {427 addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],428 commandName, exec, 'scayt_suggest', i + 1 );429 _r[ commandName ] = CKEDITOR.TRISTATE_OFF;430 mainSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;431 }432 else433 {434 addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],435 commandName, exec, 'scayt_moresuggest', i + 1 );436 moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;437 moreSuggestionsUnable = true;438 }439 }440 if ( moreSuggestionsUnable )441 // Rgister the More suggestions group;442 editor.addMenuItem( 'scayt_moresuggest',443 {444 label : editor.lang.scayt.moreSuggestions,445 group : 'scayt_moresuggest',446 order : 10,447 getItems : function()448 {449 return moreSuggestions;450 }451 });452 532 533 } 534 } 453 535 454 var ignore_command = 455 { 456 exec: function() 457 { 458 scayt_control.ignore( element.$ ); 459 } 460 }; 461 var ignore_all_command = 462 { 463 exec: function() 464 { 465 scayt_control.ignoreAll( element.$ ); 466 } 467 }; 468 var addword_command = 469 { 470 exec: function() 471 { 472 window.scayt.addWordToUserDictionary( element.$ ); 473 } 474 }; 536 if ( moreSuggestionsUnableAdded ){ 537 // Rgister the More suggestions group; 538 editor.addMenuItem( 'scayt_moresuggest', 539 { 540 label : editor.lang.scayt.moreSuggestions, 541 group : 'scayt_moresuggest', 542 order : 10, 543 getItems : function() 544 { 545 return moreSuggestions; 546 } 547 }); 548 mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF; 549 550 } 551 475 552 476 addButtonCommand( editor, 'ignore', editor.lang.scayt.ignore, 477 'scayt_ignore', ignore_command, 'scayt_control', 1); 478 addButtonCommand( editor, 'ignore_all', editor.lang.scayt.ignoreAll, 479 'scayt_ignore_all', ignore_all_command, 'scayt_control', 2); 480 addButtonCommand( editor, 'add_word', editor.lang.scayt.addWord, 481 'scayt_add_word', addword_command, 'scayt_control', 3); 553 554 if ( in_array( "all",contextCommands ) || in_array("ignore",contextCommands) ) 555 { 556 var ignore_command = { 557 exec: function(){ 558 scayt_control.ignore(element.$); 559 } 560 }; 561 addButtonCommand(editor, 'ignore', editor.lang.scayt.ignore, 'scayt_ignore', ignore_command, 'scayt_control', 1); 562 mainSuggestions['scayt_ignore'] = CKEDITOR.TRISTATE_OFF; 563 } 564 565 if ( in_array( "all",contextCommands ) || in_array("ignoreall",contextCommands) ) 566 { 567 var ignore_all_command = { 568 exec: function(){ 569 scayt_control.ignoreAll(element.$); 570 } 571 }; 572 addButtonCommand(editor, 'ignore_all', editor.lang.scayt.ignoreAll, 'scayt_ignore_all', ignore_all_command, 'scayt_control', 2); 573 mainSuggestions['scayt_ignore_all'] = CKEDITOR.TRISTATE_OFF; 574 } 575 576 if ( in_array( "all",contextCommands ) || in_array("add",contextCommands) ) 577 { 578 var addword_command = { 579 exec: function(){ 580 window.scayt.addWordToUserDictionary(element.$); 581 } 582 }; 583 addButtonCommand(editor, 'add_word', editor.lang.scayt.addWord, 'scayt_add_word', addword_command, 'scayt_control', 3); 584 mainSuggestions['scayt_add_word'] = CKEDITOR.TRISTATE_OFF; 585 } 482 586 483 mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF; 484 mainSuggestions[ 'scayt_ignore' ] = CKEDITOR.TRISTATE_OFF; 485 mainSuggestions[ 'scayt_ignore_all' ] = CKEDITOR.TRISTATE_OFF; 486 mainSuggestions[ 'scayt_add_word' ] = CKEDITOR.TRISTATE_OFF; 587 if ( scayt_control.fireOnContextMenu ) 588 scayt_control.fireOnContextMenu( editor ); 589 590 return mainSuggestions; 591 }); 592 } 487 593 488 if ( scayt_control.fireOnContextMenu ) 489 scayt_control.fireOnContextMenu( editor ); 594 // Start plugin 595 if ( editor.config.scayt_autoStartup ) 596 { 597 var showInitialState = function() 598 { 599 editor.removeListener( 'showScaytState', showInitialState ); 600 command.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); 601 }; 602 editor.on( 'showScaytState', showInitialState ); 490 603 491 return mainSuggestions; 492 }); 493 } 494 495 // Start plugin 496 if ( editor.config.scayt_autoStartup ) 497 { 498 var showInitialState = function() 499 { 500 editor.removeListener( 'showScaytState', showInitialState ); 501 command.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); 502 }; 503 editor.on( 'showScaytState', showInitialState ); 504 505 plugin.loadEngine( editor ); 506 } 507 } 508 }); 604 plugin.loadEngine( editor ); 605 } 606 } 607 }); 509 608 })(); 510 511 CKEDITOR.config.scayt_maxSuggestions = 5; 512 CKEDITOR.config.scayt_autoStartup = false; 609 CKEDITOR.config.scayt_maxSuggestions = CKEDITOR.config.scayt_maxSuggestions || 5; 610 CKEDITOR.config.scayt_autoStartup = (typeof CKEDITOR.config.scayt_autoStartup !== 'undefined') ? CKEDITOR.config.scayt_autoStartup : false; -
dialogs/options.js
70 70 { 71 71 type : 'html', 72 72 style: '', 73 id : 'dic ',74 html : '<div class="inner_dictionary" style="text-align:left; white-space:normal; ">' +73 id : 'dictionaries', 74 html : '<div class="inner_dictionary" style="text-align:left; white-space:normal; width:340px; overflow: hidden;">' + 75 75 ' <div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' + 76 76 ' <div style="margin:5px auto; width:80%;white-space:normal;"> ' + 77 77 ' <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+ … … 129 129 if ( firstLoad ) 130 130 { 131 131 dialog.data.scayt.getCaption( 'en', function( caps ) 132 {133 if ( stop++ > 0 ) // Once only134 return;135 captions = caps;136 init_with_captions.apply( dialog );137 reload.apply( dialog );138 firstLoad = false;139 });132 { 133 if ( stop++ > 0 ) // Once only 134 return; 135 captions = caps; 136 init_with_captions.apply( dialog ); 137 reload.apply( dialog ); 138 firstLoad = false; 139 }); 140 140 } 141 141 else 142 reload.apply( dialog ); 142 { 143 reload.apply( dialog ); 144 } 143 145 146 144 147 dialog.selectPage( dialog.data.tab ); 145 148 }, 146 149 onOk : function() 147 150 { 148 var scayt_control = this.data.scayt_control, 149 o = scayt_control.option(), 150 c = 0; 151 152 // Set up options if any was set. 153 for ( var i in this.options ) 154 { 155 if (o[i] != this.options[ i ] && c === 0 ) 156 { 157 scayt_control.option( this.options ); 158 c++; 159 } 160 } 161 151 var scayt_control = this.data.scayt_control; 152 scayt_control.option( this.options ); 162 153 // Setup languge if it was changed. 163 154 var csLang = this.chosed_lang; 164 if ( csLang && this.data.sLang != csLang ) 165 { 166 scayt_control.setLang( csLang ); 167 c++; 168 } 169 if ( c > 0 ) 170 scayt_control.refresh(); 171 }, 155 scayt_control.setLang( csLang ); 156 scayt_control.refresh(); 157 }, 172 158 contents : contents 173 };159 }; 174 160 175 161 var scayt_control = CKEDITOR.plugins.scayt.getScayt( editor ); 176 if ( scayt_control )177 {178 tags = scayt_control.uiTags;179 }180 162 181 for ( i in tags ) { 163 tags = CKEDITOR.plugins.scayt.uiTabs; 164 165 for ( i in tags ) 166 { 182 167 if ( tags[ i ] == 1 ) 183 168 contents[ contents.length ] = tags_contents[ i ]; 184 169 } 185 170 if ( tags[2] == 1 ) 186 171 userDicActive = true; 187 172 188 function onDicButtonClick() 189 { 190 var dic_name = doc.getById('dic_name').getValue(); 191 if ( !dic_name ) 192 { 193 dic_error_message(" Dictionary name should not be empty. "); 194 return false; 195 } 196 //apply handler 197 window.dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] ); 198 199 return true; 200 } 173 201 174 var init_with_captions = function() 202 175 { 203 176 var dialog = this, … … 219 192 220 193 221 194 // Fill options and dictionary labels. 222 for ( i in labels ) 223 { 224 var label = 'label_' + labels[ i ], 225 labelElement = doc.getById( label ); 226 227 if ( 'undefined' != typeof labelElement 228 && 'undefined' != typeof captions[ label ] 229 && 'undefined' != typeof dialog.options[labels[ i ]] ) 195 if (tags[0] == 1) 196 { 197 for ( i in labels ) 230 198 { 231 labelElement.setHtml( captions[ label ] ); 232 var labelParent = labelElement.getParent(); 233 labelParent.$.style.display = "block"; 234 } 235 } 199 var label = 'label_' + labels[ i ], 200 labelElement = doc.getById( label ); 236 201 202 if ( 'undefined' != typeof labelElement 203 && 'undefined' != typeof captions[ label ] 204 && 'undefined' != typeof dialog.options[labels[ i ]] ) 205 { 206 labelElement.setHtml( captions[ label ] ); 207 var labelParent = labelElement.getParent(); 208 labelParent.$.style.display = "block"; 209 } 210 } 211 } 212 213 237 214 var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+ 238 215 '<p>' + captions[ 'version' ] + dialog.data.scayt.version.toString() + '</p>' + 239 216 '<p>' + captions[ 'about_throwt_copy' ] + '</p>'; … … 257 234 ' value="' + option + '" name="scayt_lang" />' ); 258 235 259 236 radio.on( 'click', function() 260 {261 this.$.checked = true;262 dialog.chosed_lang = option;263 });237 { 238 this.$.checked = true; 239 dialog.chosed_lang = option; 240 }); 264 241 265 242 div.append( radio ); 266 243 div.append( label ); … … 273 250 }; 274 251 275 252 var langList = []; 276 for ( i in lang_list.rtl ) 277 langList[ langList.length ] = createOption( i, lang_list.ltr ); 278 279 for ( i in lang_list.ltr ) 280 langList[ langList.length ] = createOption( i, lang_list.ltr ); 281 282 langList.sort( function( lang1, lang2 ) 253 if (tags[1] ==1 ) 254 { 255 for ( i in lang_list.rtl ) 256 langList[ langList.length ] = createOption( i, lang_list.ltr ); 257 258 for ( i in lang_list.ltr ) 259 langList[ langList.length ] = createOption( i, lang_list.ltr ); 260 261 langList.sort( function( lang1, lang2 ) 262 { 263 return ( lang2.lang > lang1.lang ) ? -1 : 1 ; 264 }); 265 266 var fieldL = doc.getById( 'scayt_lcol' ), 267 fieldR = doc.getById( 'scayt_rcol' ); 268 for ( i=0; i < langList.length; i++ ) 283 269 { 284 return ( lang2.lang > lang1.lang ) ? -1 : 1 ; 285 }); 286 287 var fieldL = doc.getById( 'scayt_lcol' ), 288 fieldR = doc.getById( 'scayt_rcol' ); 289 for ( i=0; i < langList.length; i++ ) 290 { 291 var field = ( i < langList.length / 2 ) ? fieldL : fieldR; 292 field.append( langList[ i ].radio ); 270 var field = ( i < langList.length / 2 ) ? fieldL : fieldR; 271 field.append( langList[ i ].radio ); 272 } 293 273 } 274 294 275 295 276 // user dictionary handlers 296 277 var dic = {}; 297 278 dic.dic_create = function( el, dic_name , dic_buttons ) 298 {299 // comma separated button's ids include repeats if exists300 var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];279 { 280 // comma separated button's ids include repeats if exists 281 var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; 301 282 302 var err_massage = captions["err_dic_create"]; 303 var suc_massage = captions["succ_dic_create"]; 304 //console.info("--plugin "); 283 var err_massage = captions["err_dic_create"]; 284 var suc_massage = captions["succ_dic_create"]; 305 285 306 window.scayt.createUserDictionary(dic_name, 307 function(arg) 308 { 309 //console.info( "dic_create callback called with args" , arg ); 310 hide_dic_buttons ( all_buttons ); 311 display_dic_buttons ( dic_buttons[1] ); 312 suc_massage = suc_massage.replace("%s" , arg.dname ); 313 dic_success_message (suc_massage); 314 }, 315 function(arg) 316 { 317 //console.info( "dic_create errorback called with args" , arg ) 318 err_massage = err_massage.replace("%s" ,arg.dname ); 319 dic_error_message ( err_massage + "( "+ (arg.message || "") +")"); 320 }); 286 window.scayt.createUserDictionary(dic_name, 287 function(arg) 288 { 289 hide_dic_buttons ( all_buttons ); 290 display_dic_buttons ( dic_buttons[1] ); 291 suc_massage = suc_massage.replace("%s" , arg.dname ); 292 dic_success_message (suc_massage); 293 }, 294 function(arg) 295 { 296 err_massage = err_massage.replace("%s" ,arg.dname ); 297 dic_error_message ( err_massage + "( "+ (arg.message || "") +")"); 298 }); 321 299 322 };300 }; 323 301 324 302 dic.dic_rename = function( el, dic_name ) 325 { 326 // 327 // try to rename dictionary 328 // @TODO: rename dict 329 //console.info ( captions["err_dic_rename"] ) 330 var err_massage = captions["err_dic_rename"] || ""; 331 var suc_massage = captions["succ_dic_rename"] || ""; 332 window.scayt.renameUserDictionary(dic_name, 333 function(arg) 334 { 335 //console.info( "dic_rename callback called with args" , arg ); 336 suc_massage = suc_massage.replace("%s" , arg.dname ); 337 set_dic_name( dic_name ); 338 dic_success_message ( suc_massage ); 339 }, 340 function(arg) 341 { 342 //console.info( "dic_rename errorback called with args" , arg ) 343 err_massage = err_massage.replace("%s" , arg.dname ); 344 set_dic_name( dic_name ); 345 dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" ); 346 }); 347 }; 303 { 304 // 305 // try to rename dictionary 306 var err_massage = captions["err_dic_rename"] || ""; 307 var suc_massage = captions["succ_dic_rename"] || ""; 308 window.scayt.renameUserDictionary(dic_name, 309 function(arg) 310 { 311 suc_massage = suc_massage.replace("%s" , arg.dname ); 312 set_dic_name( dic_name ); 313 dic_success_message ( suc_massage ); 314 }, 315 function(arg) 316 { 317 err_massage = err_massage.replace("%s" , arg.dname ); 318 set_dic_name( dic_name ); 319 dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" ); 320 }); 321 }; 348 322 349 323 dic.dic_delete = function ( el, dic_name , dic_buttons ) 350 {351 var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];352 var err_massage = captions["err_dic_delete"];353 var suc_massage = captions["succ_dic_delete"];324 { 325 var all_buttons = dic_buttons[0] + ',' + dic_buttons[1]; 326 var err_massage = captions["err_dic_delete"]; 327 var suc_massage = captions["succ_dic_delete"]; 354 328 355 // try to delete dictionary 356 // @TODO: delete dict 357 window.scayt.deleteUserDictionary( 358 function(arg) 359 { 360 //console.info( "dic_delete callback " , dic_name ,arg ); 361 suc_massage = suc_massage.replace("%s" , arg.dname ); 362 hide_dic_buttons ( all_buttons ); 363 display_dic_buttons ( dic_buttons[0] ); 364 set_dic_name( "" ); // empty input field 365 dic_success_message( suc_massage ); 366 }, 367 function(arg) 368 { 369 //console.info( " dic_delete errorback called with args" , arg ) 370 err_massage = err_massage.replace("%s" , arg.dname ); 371 dic_error_message(err_massage); 372 }); 373 }; 329 // try to delete dictionary 330 window.scayt.deleteUserDictionary( 331 function(arg) 332 { 333 suc_massage = suc_massage.replace("%s" , arg.dname ); 334 hide_dic_buttons ( all_buttons ); 335 display_dic_buttons ( dic_buttons[0] ); 336 set_dic_name( "" ); // empty input field 337 dic_success_message( suc_massage ); 338 }, 339 function(arg) 340 { 341 err_massage = err_massage.replace("%s" , arg.dname ); 342 dic_error_message(err_massage); 343 }); 344 }; 374 345 375 346 dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons ) 376 347 { … … 380 351 var suc_massage = captions["succ_dic_restore"]; 381 352 382 353 window.scayt.restoreUserDictionary(dic_name, 354 function(arg) 355 { 356 suc_massage = suc_massage.replace("%s" , arg.dname ); 357 hide_dic_buttons ( all_buttons ); 358 display_dic_buttons(dic_buttons[1]); 359 dic_success_message( suc_massage ); 360 }, 383 361 function(arg) 384 { 385 //console.info( "dic_restore callback called with args" , arg ); 386 suc_massage = suc_massage.replace("%s" , arg.dname ); 387 hide_dic_buttons ( all_buttons ); 388 display_dic_buttons(dic_buttons[1]); 389 dic_success_message( suc_massage ); 390 }, 391 function(arg) 392 { 393 //console.info( " dic_restore errorback called with args" , arg ) 394 err_massage = err_massage.replace("%s" , arg.dname ); 395 dic_error_message( err_massage ); 396 }); 362 { 363 err_massage = err_massage.replace("%s" , arg.dname ); 364 dic_error_message( err_massage ); 365 }); 397 366 }; 398 367 function onDicButtonClick( ev ) 368 { 369 var dic_name = doc.getById('dic_name').getValue(); 370 if ( !dic_name ) 371 { 372 dic_error_message(" Dictionary name should not be empty. "); 373 return false; 374 } 375 try{ 376 var el = id = ev.data.getTarget().getParent(); 377 var id = el.getId(); 378 dic[ id ].apply( null, [ el, dic_name, dic_buttons ] ); 379 }catch(err){ 380 dic_error_message(" Dictionary error. "); 381 } 382 383 return true; 384 } 399 385 // ** bind event listeners 400 386 var arr_buttons = ( dic_buttons[0] + ',' + dic_buttons[1] ).split( ',' ), 401 387 l; … … 416 402 for ( var i in dialog.options ) 417 403 { 418 404 var checkbox = doc.getById( i ); 405 419 406 if ( checkbox ) 420 407 { 421 408 checkbox.removeAttribute( 'checked' ); 409 checkbox.$.removeAttribute( 'checked' ); 410 411 var opt = dialog.data.scayt_control.option(); 412 422 413 if ( dialog.options[ i ] == 1 ) 423 414 checkbox.setAttribute( 'checked', 'checked' ); 424 415 … … 426 417 if ( firstLoad ) 427 418 { 428 419 checkbox.on( 'click', function() 429 {430 dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ;431 });420 { 421 dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ; 422 }); 432 423 } 433 424 } 434 425 } … … 458 449 }; 459 450 460 451 function dic_error_message ( m ) 461 {462 doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );463 }452 { 453 doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' ); 454 } 464 455 function dic_success_message ( m ) 465 {466 doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;467 }456 { 457 doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ; 458 } 468 459 function display_dic_buttons ( sIds ) 469 {460 { 470 461 471 sIds = String( sIds );472 var aIds = sIds.split(',');473 for ( var i=0, l = aIds.length; i < l ; i+=1)474 {475 doc.getById( aIds[i] ).$.style.display = "inline";476 }462 sIds = String( sIds ); 463 var aIds = sIds.split(','); 464 for ( var i=0, l = aIds.length; i < l ; i+=1) 465 { 466 doc.getById( aIds[i] ).$.style.display = "inline"; 467 } 477 468 478 }469 } 479 470 function hide_dic_buttons ( sIds ) 480 {481 sIds = String( sIds );482 var aIds = sIds.split(',');483 for ( var i = 0, l = aIds.length; i < l ; i += 1 )484 {485 doc.getById( aIds[i] ).$.style.display = "none";486 }487 }471 { 472 sIds = String( sIds ); 473 var aIds = sIds.split(','); 474 for ( var i = 0, l = aIds.length; i < l ; i += 1 ) 475 { 476 doc.getById( aIds[i] ).$.style.display = "none"; 477 } 478 } 488 479 function set_dic_name ( dic_name ) 489 {490 doc.getById('dic_name').$.value= dic_name;491 }480 { 481 doc.getById('dic_name').$.value= dic_name; 482 } 492 483 493 484 return dialogDefiniton; 494 485 });
