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