/*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
CKEDITOR.dialog.add( 'button', function( editor )\r
{\r
+ function commitAttributes( element )\r
+ {\r
+ var val = this.getValue();\r
+ if ( val )\r
+ {\r
+ element.attributes[ this.id ] = val;\r
+ if ( this.id == 'name' )\r
+ element.attributes[ 'data-cke-saved-name' ] = val;\r
+ }\r
+ else\r
+ {\r
+ delete element.attributes[ this.id ];\r
+ if ( this.id == 'name' )\r
+ delete element.attributes[ 'data-cke-saved-name' ];\r
+ }\r
+ }\r
+\r
return {\r
title : editor.lang.button.title,\r
minWidth : 350,\r
{\r
delete this.button;\r
var element = this.getParentEditor().getSelection().getSelectedElement();\r
- if ( element && element.getName() == "input" )\r
+ if ( element && element.is( 'input' ) )\r
{\r
var type = element.getAttribute( 'type' );\r
- if ( type == "button" || type == "reset" || type == "submit" )\r
+ if ( type in { button:1, reset:1, submit:1 } )\r
{\r
this.button = element;\r
this.setupContent( element );\r
},\r
onOk : function()\r
{\r
- var editor,\r
+ var editor = this.getParentEditor(),\r
element = this.button,\r
isInsertMode = !element;\r
\r
+ var fake = element ? CKEDITOR.htmlParser.fragment.fromHtml( element.getOuterHtml() ).children[ 0 ]\r
+ : new CKEDITOR.htmlParser.element( 'input' );\r
+ this.commitContent( fake );\r
+\r
+ var writer = new CKEDITOR.htmlParser.basicWriter();\r
+ fake.writeHtml( writer );\r
+ var newElement = CKEDITOR.dom.element.createFromHtml( writer.getHtml(), editor.document );\r
+\r
if ( isInsertMode )\r
+ editor.insertElement( newElement );\r
+ else\r
{\r
- editor = this.getParentEditor();\r
- element = editor.document.createElement( 'input' );\r
+ newElement.replace( element );\r
+ editor.getSelection().selectElement( newElement );\r
}\r
-\r
- if ( isInsertMode )\r
- editor.insertElement( element );\r
- this.commitContent( { element : element } );\r
},\r
contents : [\r
{\r
title : editor.lang.button.title,\r
elements : [\r
{\r
- id : '_cke_saved_name',\r
+ id : 'name',\r
type : 'text',\r
label : editor.lang.common.name,\r
'default' : '',\r
setup : function( element )\r
{\r
this.setValue(\r
- element.getAttribute( '_cke_saved_name' ) ||\r
+ element.data( 'cke-saved-name' ) ||\r
element.getAttribute( 'name' ) ||\r
'' );\r
},\r
- commit : function( data )\r
- {\r
- var element = data.element;\r
-\r
- if ( this.getValue() )\r
- element.setAttribute( '_cke_saved_name', this.getValue() );\r
- else\r
- {\r
- element.removeAttribute( '_cke_saved_name' );\r
- element.removeAttribute( 'name' );\r
- }\r
- }\r
+ commit : commitAttributes\r
},\r
{\r
id : 'value',\r
{\r
this.setValue( element.getAttribute( 'value' ) || '' );\r
},\r
- commit : function( data )\r
- {\r
- var element = data.element;\r
-\r
- if ( this.getValue() )\r
- element.setAttribute( 'value', this.getValue() );\r
- else\r
- element.removeAttribute( 'value' );\r
- }\r
+ commit : commitAttributes\r
},\r
{\r
id : 'type',\r
{\r
this.setValue( element.getAttribute( 'type' ) || '' );\r
},\r
- commit : function( data )\r
- {\r
- var element = data.element;\r
-\r
- if ( CKEDITOR.env.ie )\r
- {\r
- var elementType = element.getAttribute( 'type' );\r
- var currentType = this.getValue();\r
-\r
- if ( currentType != elementType )\r
- {\r
- var replace = CKEDITOR.dom.element.createFromHtml( '<input type="' + currentType +\r
- '"></input>', editor.document );\r
- element.copyAttributes( replace, { type : 1 } );\r
- replace.replace( element );\r
- editor.getSelection().selectElement( replace );\r
- data.element = replace;\r
- }\r
- }\r
- else\r
- element.setAttribute( 'type', this.getValue() );\r
- }\r
+ commit : commitAttributes\r
}\r
]\r
}\r