      1 /*
      2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
      3 For licensing, see LICENSE.html or http://ckeditor.com/license
      4 */
      5 CKEDITOR.dialog.add( 'button', function( editor )
      6 {
      7 	return {
      8 		title : editor.lang.button.title,
      9 		minWidth : 350,
     10 		minHeight : 150,
     11 		onShow : function()
     12 		{
     13 			delete this.button;
     14 			var element = this.getParentEditor().getSelection().getSelectedElement();
     15 			if ( element && element.getName() == "input" )
     16 			{
     17 				var type = element.getAttribute( 'type' );
     18 				if ( type == "button" || type == "reset" || type == "submit" )
     19 				{
     20 					this.button = element;
     21 					this.setupContent( element );
     22 				}
     23 			}
     24 		},
     25 		onOk : function()
     26 		{
     27 			var editor,
     28 				element = this.button,
     29 				isInsertMode = !element;
     30
     31 			if ( isInsertMode )
     32 			{
     33 				editor = this.getParentEditor();
     34 				element = editor.document.createElement( 'input' );
     35 			}
     36
     37 			if ( isInsertMode )
     38 				editor.insertElement( element );
     39 			this.commitContent( { element : element } );
     40 		},
     41 		contents : [
     42 			{
     43 				id : 'info',
     44 				label : editor.lang.button.title,
     45 				title : editor.lang.button.title,
     46 				elements : [
     47 					{
     48 						id : '_cke_saved_name',
     49 						type : 'text',
     50 						label : editor.lang.common.name,
     51 						'default' : '',
     52 						setup : function( element )
     53 						{
     54 							this.setValue(
     55 									element.getAttribute( '_cke_saved_name' ) ||
     56 									element.getAttribute( 'name' ) ||
     57 									'' );
     58 						},
     59 						commit : function( data )
     60 						{
     61 							var element = data.element;
     62
     63 							if ( this.getValue() )
     64 								element.setAttribute( '_cke_saved_name', this.getValue() );
     65 							else
     66 							{
     67 								element.removeAttribute( '_cke_saved_name' );
     68 								element.removeAttribute( 'name' );
     69 							}
     70 						}
     71 					},
     72 					{
     73 						id : 'value',
     74 						type : 'text',
     75 						label : editor.lang.button.text,
     76 						accessKey : 'V',
     77 						'default' : '',
     78 						setup : function( element )
     79 						{
     80 							this.setValue( element.getAttribute( 'value' ) || '' );
     81 						},
     82 						commit : function( data )
     83 						{
     84 							var element = data.element;
     85
     86 							if ( this.getValue() )
     87 								element.setAttribute( 'value', this.getValue() );
     88 							else
     89 								element.removeAttribute( 'value' );
     90 						}
     91 					},
     92 					{
     93 						id : 'type',
     94 						type : 'select',
     95 						label : editor.lang.button.type,
     96 						'default' : 'button',
     97 						accessKey : 'T',
     98 						items :
     99 						[
    100 							[ editor.lang.button.typeBtn, 'button' ],
    101 							[ editor.lang.button.typeSbm, 'submit' ],
    102 							[ editor.lang.button.typeRst, 'reset' ]
    103 						],
    104 						setup : function( element )
    105 						{
    106 							this.setValue( element.getAttribute( 'type' ) || '' );
    107 						},
    108 						commit : function( data )
    109 						{
    110 							var element = data.element;
    111
    112 							if ( CKEDITOR.env.ie )
    113 							{
    114 								var elementType = element.getAttribute( 'type' );
    115 								var currentType = this.getValue();
    116
    117 								if ( currentType != elementType )
    118 								{
    119 									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="' + currentType +
    120 										'"></input>', editor.document );
    121 									element.copyAttributes( replace, { type : 1 } );
    122 									replace.replace( element );
    123 									editor.getSelection().selectElement( replace );
    124 									data.element = replace;
    125 								}
    126 							}
    127 							else
    128 								element.setAttribute( 'type', this.getValue() );
    129 						}
    130 					}
    131 				]
    132 			}
    133 		]
    134 	};
    135 });
    136