JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.3
[ckeditor.git] / _source / plugins / forms / dialogs / hiddenfield.js
index 21fa26f..4d823b1 100644 (file)
@@ -6,35 +6,43 @@ CKEDITOR.dialog.add( 'hiddenfield', function( editor )
 {\r
        return {\r
                title : editor.lang.hidden.title,\r
+               hiddenField : null,\r
                minWidth : 350,\r
                minHeight : 110,\r
                onShow : function()\r
                {\r
                        delete this.hiddenField;\r
 \r
-                       var element = this.getParentEditor().getSelection().getSelectedElement();\r
-                       if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" )\r
+                       var editor = this.getParentEditor(),\r
+                               selection = editor.getSelection(),\r
+                               element = selection.getSelectedElement();\r
+\r
+                       if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )\r
                        {\r
                                this.hiddenField = element;\r
+                               element = editor.restoreRealElement( this.hiddenField );\r
                                this.setupContent( element );\r
+                               selection.selectElement( this.hiddenField );\r
                        }\r
                },\r
                onOk : function()\r
                {\r
-                       var editor,\r
-                               element = this.hiddenField,\r
-                               isInsertMode = !element;\r
+                       var name = this.getValueOf( 'info', '_cke_saved_name' ),\r
+                               value = this.getValueOf( 'info', 'value' ),\r
+                               editor = this.getParentEditor(),\r
+                               element = CKEDITOR.env.ie ? editor.document.createElement( '<input name="' + CKEDITOR.tools.htmlEncode( name ) + '">' ) : editor.document.createElement( 'input' );\r
 \r
-                       if ( isInsertMode )\r
+                       element.setAttribute( 'type', 'hidden' );\r
+                       this.commitContent( element );\r
+                       var fakeElement = editor.createFakeElement( element, 'cke_hidden', 'hiddenfield' );\r
+                       if ( !this.hiddenField )\r
+                               editor.insertElement( fakeElement );\r
+                       else\r
                        {\r
-                               editor = this.getParentEditor();\r
-                               element = editor.document.createElement( 'input' );\r
-                               element.setAttribute( 'type', 'hidden' );\r
+                               fakeElement.replace( this.hiddenField );\r
+                               editor.getSelection().selectElement( fakeElement );\r
                        }\r
-\r
-                       if ( isInsertMode )\r
-                               editor.insertElement( element );\r
-                       this.commitContent( element );\r
+                       return true;\r
                },\r
                contents : [\r
                        {\r
@@ -58,10 +66,9 @@ CKEDITOR.dialog.add( 'hiddenfield', function( editor )
                                                commit : function( element )\r
                                                {\r
                                                        if ( this.getValue() )\r
-                                                               element.setAttribute( '_cke_saved_name', this.getValue() );\r
+                                                               element.setAttribute( 'name', this.getValue() );\r
                                                        else\r
                                                        {\r
-                                                               element.removeAttribute( '_cke_saved_name' );\r
                                                                element.removeAttribute( 'name' );\r
                                                        }\r
                                                }\r