X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Fforms%2Fdialogs%2Fhiddenfield.js;h=4d823b111fc210e1183768061c69f1dbb193ef5d;hb=f8fc585c18d287eb325c575596d183122486b641;hp=21fa26f632ac3903daae34ad651d559a2452c94d;hpb=941b0a9ba4e673e292510d80a5a86806994b8ea6;p=ckeditor.git diff --git a/_source/plugins/forms/dialogs/hiddenfield.js b/_source/plugins/forms/dialogs/hiddenfield.js index 21fa26f..4d823b1 100644 --- a/_source/plugins/forms/dialogs/hiddenfield.js +++ b/_source/plugins/forms/dialogs/hiddenfield.js @@ -6,35 +6,43 @@ CKEDITOR.dialog.add( 'hiddenfield', function( editor ) { return { title : editor.lang.hidden.title, + hiddenField : null, minWidth : 350, minHeight : 110, onShow : function() { delete this.hiddenField; - var element = this.getParentEditor().getSelection().getSelectedElement(); - if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" ) + var editor = this.getParentEditor(), + selection = editor.getSelection(), + element = selection.getSelectedElement(); + + if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' ) { this.hiddenField = element; + element = editor.restoreRealElement( this.hiddenField ); this.setupContent( element ); + selection.selectElement( this.hiddenField ); } }, onOk : function() { - var editor, - element = this.hiddenField, - isInsertMode = !element; + var name = this.getValueOf( 'info', '_cke_saved_name' ), + value = this.getValueOf( 'info', 'value' ), + editor = this.getParentEditor(), + element = CKEDITOR.env.ie ? editor.document.createElement( '' ) : editor.document.createElement( 'input' ); - if ( isInsertMode ) + element.setAttribute( 'type', 'hidden' ); + this.commitContent( element ); + var fakeElement = editor.createFakeElement( element, 'cke_hidden', 'hiddenfield' ); + if ( !this.hiddenField ) + editor.insertElement( fakeElement ); + else { - editor = this.getParentEditor(); - element = editor.document.createElement( 'input' ); - element.setAttribute( 'type', 'hidden' ); + fakeElement.replace( this.hiddenField ); + editor.getSelection().selectElement( fakeElement ); } - - if ( isInsertMode ) - editor.insertElement( element ); - this.commitContent( element ); + return true; }, contents : [ { @@ -58,10 +66,9 @@ CKEDITOR.dialog.add( 'hiddenfield', function( editor ) commit : function( element ) { if ( this.getValue() ) - element.setAttribute( '_cke_saved_name', this.getValue() ); + element.setAttribute( 'name', this.getValue() ); else { - element.removeAttribute( '_cke_saved_name' ); element.removeAttribute( 'name' ); } }