Ticket #4056: 4056_2.patch
File 4056_2.patch, 5.4 KB (added by , 14 years ago) |
---|
-
_source/plugins/forms/dialogs/hiddenfield.js
6 6 { 7 7 return { 8 8 title : editor.lang.hidden.title, 9 hiddenField : null, 9 10 minWidth : 350, 10 11 minHeight : 110, 11 12 onShow : function() 12 13 { 13 14 delete this.hiddenField; 14 15 var element = this.getParentEditor().getSelection().getSelectedElement(); 16 if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" ) 15 var editor = this.getParentEditor(), 16 selection = editor.getSelection(), 17 element = selection.getSelectedElement(); 18 19 if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' ) 17 20 { 18 21 this.hiddenField = element; 19 this.setupContent( element ); 22 element = editor.restoreRealElement( this.hiddenField ); 23 24 this.setValueOf( 'info', '_cke_saved_name', element.getAttribute( 'name' ) || '' ); 25 this.setValueOf( 'info', 'value', element.getAttribute( 'value' ) || '' ); 26 27 selection.selectElement( this.hiddenField ); 20 28 } 29 21 30 }, 22 31 onOk : function() 23 32 { 24 var editor, 25 element = this.hiddenField, 26 isInsertMode = !element; 27 28 if ( isInsertMode ) 33 34 var name = this.getValueOf( 'info', '_cke_saved_name' ), 35 value = this.getValueOf( 'info', 'value' ), 36 editor = this.getParentEditor(), 37 element = CKEDITOR.env.ie ? 38 editor.document.createElement( '<input name="' + CKEDITOR.tools.htmlEncode( name ) + '">' ) : 39 editor.document.createElement( 'input' ); 40 41 element.setAttribute( 'name', name ); 42 element.setAttribute( 'value', value ); 43 element.setAttribute( 'type', 'hidden' ); 44 45 var fakeElement = editor.createFakeElement( element, 'cke_hidden', 'hiddenfield' ); 46 47 if ( !this.hiddenField ) 48 editor.insertElement( fakeElement ); 49 else 29 50 { 30 editor = this.getParentEditor(); 31 element = editor.document.createElement( 'input' ); 32 element.setAttribute( 'type', 'hidden' ); 51 fakeElement.replace( this.hiddenField ); 52 editor.getSelection().selectElement( fakeElement ); 33 53 } 34 35 if ( isInsertMode ) 36 editor.insertElement( element ); 37 this.commitContent( element ); 54 return true; 38 55 }, 39 56 contents : [ 40 57 { … … 47 64 type : 'text', 48 65 label : editor.lang.hidden.name, 49 66 'default' : '', 50 accessKey : 'N', 51 setup : function( element ) 52 { 53 this.setValue( 54 element.getAttribute( '_cke_saved_name' ) || 55 element.getAttribute( 'name' ) || 56 '' ); 57 }, 58 commit : function( element ) 59 { 60 if ( this.getValue() ) 61 element.setAttribute( '_cke_saved_name', this.getValue() ); 62 else 63 { 64 element.removeAttribute( '_cke_saved_name' ); 65 element.removeAttribute( 'name' ); 66 } 67 } 67 accessKey : 'N' 68 68 }, 69 69 { 70 70 id : 'value', 71 71 type : 'text', 72 72 label : editor.lang.hidden.value, 73 73 'default' : '', 74 accessKey : 'V', 75 setup : function( element ) 76 { 77 this.setValue( element.getAttribute( 'value' ) || '' ); 78 }, 79 commit : function( element ) 80 { 81 if ( this.getValue() ) 82 element.setAttribute( 'value', this.getValue() ); 83 else 84 element.removeAttribute( 'value' ); 85 } 74 accessKey : 'V' 86 75 } 87 76 ] 88 77 } -
_source/plugins/forms/plugin.js
19 19 'border: 1px dotted #FF0000;' + 20 20 'padding: 2px;' + 21 21 '}' ); 22 23 // Add the CSS styles for hiddenfield placeholders. 24 editor.addCss( 25 'img.cke_hidden' + 26 '{' + 27 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/hidden.gif' ) + ');' + 28 'background-position: center center;' + 29 'background-repeat: no-repeat;' + 30 'border: 1px solid #a9a9a9;' + 31 'width: 16px;' + 32 'height: 16px;' + 33 '}\n' ); 22 34 23 35 // All buttons use the same code to register. So, to avoid 24 36 // duplications, let's use this tool function. … … 165 177 166 178 afterInit : function( editor ) 167 179 { 180 var dataProcessor = editor.dataProcessor, 181 htmlFilter = dataProcessor && dataProcessor.htmlFilter, 182 dataFilter = dataProcessor && dataProcessor.dataFilter; 183 168 184 // Cleanup certain IE form elements default values. 169 185 if ( CKEDITOR.env.ie ) 170 186 { 171 var dataProcessor = editor.dataProcessor,172 htmlFilter = dataProcessor && dataProcessor.htmlFilter;173 174 187 htmlFilter && htmlFilter.addRules( 175 188 { 176 189 elements : … … 185 198 } 186 199 } ); 187 200 } 201 202 if ( dataFilter ) 203 { 204 dataFilter.addRules( 205 { 206 elements : 207 { 208 input : function( element ) 209 { 210 if ( element.attributes.type == 'hidden' ) { 211 return editor.createFakeParserElement( element, 'cke_hidden', 'hiddenfield' ); 212 } 213 } 214 } 215 } ); 216 } 217 188 218 }, 189 requires : [ 'image' ]219 requires : [ 'image', 'fakeobjects' ] 190 220 } ); 191 221 192 222 if ( CKEDITOR.env.ie )