summaryrefslogtreecommitdiff
path: root/_source/plugins/forms/dialogs/hiddenfield.js
diff options
context:
space:
mode:
Diffstat (limited to '_source/plugins/forms/dialogs/hiddenfield.js')
-rw-r--r--_source/plugins/forms/dialogs/hiddenfield.js189
1 files changed, 98 insertions, 91 deletions
diff --git a/_source/plugins/forms/dialogs/hiddenfield.js b/_source/plugins/forms/dialogs/hiddenfield.js
index 21fa26f..3e31706 100644
--- a/_source/plugins/forms/dialogs/hiddenfield.js
+++ b/_source/plugins/forms/dialogs/hiddenfield.js
@@ -1,91 +1,98 @@
-/*
-Copyright (c) 2003-2010, 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,
- minWidth : 350,
- minHeight : 110,
- onShow : function()
- {
- delete this.hiddenField;
-
- var element = this.getParentEditor().getSelection().getSelectedElement();
- if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" )
- {
- this.hiddenField = element;
- this.setupContent( element );
- }
- },
- onOk : function()
- {
- var editor,
- element = this.hiddenField,
- isInsertMode = !element;
-
- if ( isInsertMode )
- {
- editor = this.getParentEditor();
- element = editor.document.createElement( 'input' );
- element.setAttribute( 'type', 'hidden' );
- }
-
- if ( isInsertMode )
- editor.insertElement( element );
- this.commitContent( element );
- },
- contents : [
- {
- id : 'info',
- label : editor.lang.hidden.title,
- title : editor.lang.hidden.title,
- elements : [
- {
- id : '_cke_saved_name',
- type : 'text',
- label : editor.lang.hidden.name,
- 'default' : '',
- accessKey : 'N',
- setup : function( element )
- {
- this.setValue(
- element.getAttribute( '_cke_saved_name' ) ||
- element.getAttribute( 'name' ) ||
- '' );
- },
- commit : function( element )
- {
- if ( this.getValue() )
- element.setAttribute( '_cke_saved_name', this.getValue() );
- else
- {
- element.removeAttribute( '_cke_saved_name' );
- element.removeAttribute( 'name' );
- }
- }
- },
- {
- id : 'value',
- type : 'text',
- label : editor.lang.hidden.value,
- 'default' : '',
- accessKey : 'V',
- setup : function( element )
- {
- this.setValue( element.getAttribute( 'value' ) || '' );
- },
- commit : function( element )
- {
- if ( this.getValue() )
- element.setAttribute( 'value', this.getValue() );
- else
- element.removeAttribute( 'value' );
- }
- }
- ]
- }
- ]
- };
-});
+/*
+Copyright (c) 2003-2010, 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 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 name = this.getValueOf( 'info', '_cke_saved_name' ),
+ value = this.getValueOf( 'info', 'value' ),
+ editor = this.getParentEditor(),
+ element = CKEDITOR.env.ie ? editor.document.createElement( '<input name="' + CKEDITOR.tools.htmlEncode( name ) + '">' ) : editor.document.createElement( 'input' );
+
+ element.setAttribute( 'type', 'hidden' );
+ this.commitContent( element );
+ var fakeElement = editor.createFakeElement( element, 'cke_hidden', 'hiddenfield' );
+ if ( !this.hiddenField )
+ editor.insertElement( fakeElement );
+ else
+ {
+ fakeElement.replace( this.hiddenField );
+ editor.getSelection().selectElement( fakeElement );
+ }
+ return true;
+ },
+ contents : [
+ {
+ id : 'info',
+ label : editor.lang.hidden.title,
+ title : editor.lang.hidden.title,
+ elements : [
+ {
+ id : '_cke_saved_name',
+ type : 'text',
+ label : editor.lang.hidden.name,
+ 'default' : '',
+ accessKey : 'N',
+ setup : function( element )
+ {
+ this.setValue(
+ element.getAttribute( '_cke_saved_name' ) ||
+ element.getAttribute( 'name' ) ||
+ '' );
+ },
+ commit : function( element )
+ {
+ if ( this.getValue() )
+ element.setAttribute( 'name', this.getValue() );
+ else
+ {
+ element.removeAttribute( 'name' );
+ }
+ }
+ },
+ {
+ id : 'value',
+ type : 'text',
+ label : editor.lang.hidden.value,
+ 'default' : '',
+ accessKey : 'V',
+ setup : function( element )
+ {
+ this.setValue( element.getAttribute( 'value' ) || '' );
+ },
+ commit : function( element )
+ {
+ if ( this.getValue() )
+ element.setAttribute( 'value', this.getValue() );
+ else
+ element.removeAttribute( 'value' );
+ }
+ }
+ ]
+ }
+ ]
+ };
+});