X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Fforms%2Fdialogs%2Fhiddenfield.js;h=ce63239b6d836051348ea473885c99eb730f8dd3;hb=4e90e78dc97789709ee7404359a5517540c27553;hp=823e648447ca4ee3eaf1d6b4e48fa176b561dc10;hpb=ea7e3453c7b0f023b050aca6d9f83ab372860d91;p=ckeditor.git diff --git a/_source/plugins/forms/dialogs/hiddenfield.js b/_source/plugins/forms/dialogs/hiddenfield.js index 823e648..ce63239 100644 --- a/_source/plugins/forms/dialogs/hiddenfield.js +++ b/_source/plugins/forms/dialogs/hiddenfield.js @@ -1,40 +1,50 @@ /* -Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ 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.data( 'cke-real-element-type' ) && element.data( '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 && !( CKEDITOR.document.$.documentMode >= 8 ) ? + 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 : [ { @@ -51,17 +61,16 @@ CKEDITOR.dialog.add( 'hiddenfield', function( editor ) setup : function( element ) { this.setValue( - element.getAttribute( '_cke_saved_name' ) || + element.data( 'cke-saved-name' ) || element.getAttribute( 'name' ) || '' ); }, 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' ); } }