Ticket #1376: 1376_3.patch
File 1376_3.patch, 13.2 KB (added by , 13 years ago) |
---|
-
_source/plugins/print/plugin.js
37 37 editor.document.$.execCommand( "Print" ); 38 38 }, 39 39 canUndo : false, 40 readOnly : 1, 40 41 modes : { wysiwyg : !( CKEDITOR.env.opera ) } // It is imposible to print the inner document in Opera. 41 42 }; -
_source/plugins/clipboard/plugin.js
293 293 // keyboard paste or execCommand ) (#4874). 294 294 CKEDITOR.env.ie && ( depressBeforeEvent = 1 ); 295 295 296 var retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; 296 var retval = CKEDITOR.TRISTATE_OFF; 297 try { retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; }catch( er ){} 298 297 299 depressBeforeEvent = 0; 298 300 return retval; 299 301 } -
_source/plugins/sourcearea/plugin.js
41 41 textarea.addClass( 'cke_source' ); 42 42 textarea.addClass( 'cke_enable_context_menu' ); 43 43 44 editor.readOnly && textarea.setAttribute( 'disabled', true ); 45 44 46 var styles = 45 47 { 46 48 // IE7 has overflow the <textarea> from wrapping table cell. … … 181 183 { 182 184 modes : { wysiwyg:1, source:1 }, 183 185 editorFocus : false, 184 186 readOnly : 1, 185 187 exec : function( editor ) 186 188 { 187 189 if ( editor.mode == 'wysiwyg' ) -
_source/plugins/enterkey/plugin.js
11 11 12 12 init : function( editor ) 13 13 { 14 var specialKeys = editor.specialKeys; 15 specialKeys[ 13 ] = enter; 16 specialKeys[ CKEDITOR.SHIFT + 13 ] = shiftEnter; 14 editor.addCommand( 'enter', { 15 modes : { wysiwyg:1 }, 16 editorFocus : false, 17 exec : enter 18 }); 19 20 editor.addCommand( 'shiftEnter', { 21 modes : { wysiwyg:1 }, 22 editorFocus : false, 23 exec : shiftEnter 24 }); 25 26 var keystrokes = editor.keystrokeHandler.keystrokes; 27 keystrokes[ 13 ] = 'enter'; 28 keystrokes[ CKEDITOR.SHIFT + 13 ] = 'shiftEnter'; 17 29 } 18 30 }); 19 31 -
_source/core/dom/range.js
1870 1870 return 0; 1871 1871 } 1872 1872 // Range enclosed entirely in an editable element. 1873 else if ( node.is( ' body' )1873 else if ( node.is( 'html' ) 1874 1874 || node.getAttribute( 'contentEditable' ) == 'true' 1875 1875 && ( node.contains( anotherEnd ) || node.equals( anotherEnd ) ) ) 1876 1876 { -
_source/plugins/toolbar/plugin.js
36 36 toolbarFocus : 37 37 { 38 38 modes : { wysiwyg : 1, source : 1 }, 39 readOnly : 1, 39 40 40 41 exec : function( editor ) 41 42 { -
_source/plugins/maximize/plugin.js
155 155 editor.addCommand( 'maximize', 156 156 { 157 157 modes : { wysiwyg : 1, source : 1 }, 158 readOnly : 1, 158 159 editorFocus : false, 159 160 exec : function() 160 161 { -
_source/plugins/selection/plugin.js
92 92 var selectAllCmd = 93 93 { 94 94 modes : { wysiwyg : 1, source : 1 }, 95 readOnly : 1, 95 96 exec : function( editor ) 96 97 { 97 98 switch ( editor.mode ) -
_source/plugins/showblocks/plugin.js
89 89 90 90 var commandDefinition = 91 91 { 92 readOnly : 1, 92 93 preserveState : true, 93 94 editorFocus : false, 94 95 -
_source/plugins/menu/plugin.js
97 97 { 98 98 var item = this.editor.getMenuItem( itemName ); 99 99 100 if ( item )100 if ( item && ( !item.command || this.editor.getCommand( item.command ).state ) ) 101 101 { 102 item.state = listenerItems[ itemName ];102 item.state = listenerItems[ itemName ]; 103 103 this.add( item ); 104 104 } 105 105 } -
_source/plugins/showborders/plugin.js
40 40 { 41 41 preserveState : true, 42 42 editorFocus : false, 43 readOnly: 1, 43 44 44 45 exec : function ( editor ) 45 46 { -
_source/plugins/editingblock/plugin.js
39 39 40 40 editor.on( 'uiReady', function() 41 41 { 42 editor.set Mode( editor.config.startupMode );42 editor.setReadOnly( editor.config.readOnly ) 43 43 }); 44 44 45 45 editor.on( 'afterSetData', function() … … 151 151 * // Switch to "source" view. 152 152 * CKEDITOR.instances.editor1.setMode( 'source' ); 153 153 */ 154 CKEDITOR.editor.prototype.setMode = function( mode )154 CKEDITOR.editor.prototype.setMode = function( mode, forceReload ) 155 155 { 156 156 this.fire( 'beforeSetMode', { newMode : mode } ); 157 157 … … 162 162 // Unload the previous mode. 163 163 if ( this.mode ) 164 164 { 165 if ( mode == this.mode )165 if ( !forceReload && mode == this.mode ) 166 166 return; 167 167 168 168 this.fire( 'beforeModeUnload' ); … … 202 202 if ( mode ) 203 203 mode.focus(); 204 204 }; 205 206 function resetCommandsState() 207 { 208 // Disable non-readonly (button) commands. 209 var command, 210 commands = this._.commands; 211 for ( var name in commands ) 212 { 213 command = commands[ name ]; 214 !command.readOnly && command.disable(); 215 } 216 217 // Deal with non-command-based toolbar items. 218 var i, j, toolbars = this.toolbox.toolbars; 219 for ( i = 0; i < toolbars.length; i++ ) 220 { 221 var toolbarItems = toolbars[ i ].items; 222 for ( j = 0; j < toolbarItems.length; j++ ) 223 { 224 // Combos and panel buttons. 225 var combo = toolbarItems[ j ].combo; 226 if ( combo ) 227 combo.setState( CKEDITOR.TRISTATE_DISABLED ); 228 229 var button = toolbarItems[ j ].button; 230 if ( button instanceof CKEDITOR.ui.panelButton ) 231 button.setState( CKEDITOR.TRISTATE_DISABLED ); 232 } 233 } 234 } 235 236 /** 237 * Turn the editor into read-only mode or restore it from read-only mode. 238 * @param isReadOnly {Boolean} Whether to turn on read-only. 239 * @since 3.6 240 * <strong>Note:</strong> current editing block will be reloaded. 241 */ 242 CKEDITOR.editor.prototype.setReadOnly = function( isReadOnly ) 243 { 244 this.readOnly = !!isReadOnly; 245 246 this.on( 'mode', function( evt ) 247 { 248 evt.removeListener(); 249 250 isReadOnly && resetCommandsState.call( this ); 251 this[ isReadOnly ? 'on' : 'removeListener' ]( 'selectionChange', resetCommandsState, this, null, Infinity ); 252 }); 253 254 // Reload current mode. 255 this.setMode( this.mode || this.config.startupMode, 1 ); 256 } 257 205 258 })(); 206 259 207 260 /** … … 233 286 CKEDITOR.config.editingBlock = true; 234 287 235 288 /** 289 * Whether to start the editor in read-only mode. 290 * @name CKEDITOR.config.readOnly 291 * @see CKEDITOR.editor.setReadOnly 292 * @type Boolean 293 * @default false 294 * @since 3.6 295 * @example 296 * config.readOnly = true; 297 */ 298 299 /** 236 300 * Fired when a CKEDITOR instance is created, fully initialized and ready for interaction. 237 301 * @name CKEDITOR#instanceReady 238 302 * @event -
_source/plugins/wysiwygarea/plugin.js
597 597 598 598 body.spellcheck = !editor.config.disableNativeSpellChecker; 599 599 600 var editable = !editor.readOnly; 601 600 602 if ( CKEDITOR.env.ie ) 601 603 { 602 604 // Don't display the focus border. … … 605 607 // Disable and re-enable the body to avoid IE from 606 608 // taking the editing focus at startup. (#141 / #523) 607 609 body.disabled = true; 608 body.contentEditable = true;610 body.contentEditable = editable; 609 611 body.removeAttribute( 'disabled' ); 610 612 } 611 613 else … … 617 619 // Prefer 'contentEditable' instead of 'designMode'. (#3593) 618 620 if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 619 621 || CKEDITOR.env.opera ) 620 domDocument.$.body.contentEditable = true;622 domDocument.$.body.contentEditable = editable; 621 623 else if ( CKEDITOR.env.webkit ) 622 domDocument.$.body.parentNode.contentEditable = true;624 domDocument.$.body.parentNode.contentEditable = editable; 623 625 else 624 domDocument.$.designMode = 'on';626 domDocument.$.designMode = editable? 'off' : 'on'; 625 627 }, 0 ); 626 628 } 627 629 628 CKEDITOR.env.gecko && CKEDITOR.tools.setTimeout( activateEditing, 0, null, editor );630 editable && CKEDITOR.env.gecko && CKEDITOR.tools.setTimeout( activateEditing, 0, null, editor ); 629 631 630 632 domWindow = editor.window = new CKEDITOR.dom.window( domWindow ); 631 633 domDocument = editor.document = new CKEDITOR.dom.document( domDocument ); 632 634 633 domDocument.on( 'dblclick', function( evt )635 editable && domDocument.on( 'dblclick', function( evt ) 634 636 { 635 637 var element = evt.data.getTarget(), 636 638 data = { element : element, dialog : '' }; … … 711 713 712 714 // IE standard compliant in editing frame doesn't focus the editor when 713 715 // clicking outside actual content, manually apply the focus. (#1659) 714 if ( CKEDITOR.env.ie715 && domDocument.$.compatMode == 'CSS1Compat'716 if ( editable && 717 CKEDITOR.env.ie && domDocument.$.compatMode == 'CSS1Compat' 716 718 || CKEDITOR.env.gecko 717 719 || CKEDITOR.env.opera ) 718 720 { … … 761 763 }); 762 764 763 765 var keystrokeHandler = editor.keystrokeHandler; 764 if ( keystrokeHandler ) 765 keystrokeHandler.attach( domDocument ); 766 // Prevent backspace from navigating off the page. 767 !editable && ( keystrokeHandler.blockedKeystrokes[ 8 ] = 1 ); 768 keystrokeHandler.attach( domDocument ); 766 769 767 770 if ( CKEDITOR.env.ie ) 768 771 { 769 772 domDocument.getDocumentElement().addClass( domDocument.$.compatMode ); 770 773 // Override keystrokes which should have deletion behavior 771 774 // on control types in IE . (#4047) 772 domDocument.on( 'keydown', function( evt )775 editable && domDocument.on( 'keydown', function( evt ) 773 776 { 774 777 var keyCode = evt.data.getKeystroke(); 775 778 -
_source/plugins/elementspath/plugin.js
15 15 toolbarFocus : 16 16 { 17 17 editorFocus : false, 18 readOnly : 1, 18 19 exec : function( editor ) 19 20 { 20 21 var idBase = editor._.elementsPath.idBase; -
_source/plugins/save/plugin.js
12 12 var saveCmd = 13 13 { 14 14 modes : { wysiwyg:1, source:1 }, 15 readOnly : 1, 15 16 16 17 exec : function( editor ) 17 18 { -
_source/plugins/a11yhelp/plugin.js
37 37 }); 38 38 }, 39 39 modes : { wysiwyg:1, source:1 }, 40 readOnly : 1, 40 41 canUndo : false 41 42 }); 42 43 -
_source/plugins/about/plugin.js
11 11 var command = editor.addCommand( 'about', new CKEDITOR.dialogCommand( 'about' ) ); 12 12 command.modes = { wysiwyg:1, source:1 }; 13 13 command.canUndo = false; 14 command.readOnly = 1; 14 15 15 16 editor.ui.addButton( 'About', 16 17 {