JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
9074e5bb21d03050fabb7088891c8ea2f2ce9874
[ckeditor.git] / _source / plugins / forms / dialogs / form.js
1 /*\r
2 Copyright (c) 2003-2009, 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( 'form', function( editor )\r
6 {\r
7         var autoAttributes =\r
8         {\r
9                 action : 1,\r
10                 id : 1,\r
11                 method : 1,\r
12                 enctype : 1,\r
13                 target : 1\r
14         };\r
15 \r
16         return {\r
17                 title : editor.lang.form.title,\r
18                 minWidth : 350,\r
19                 minHeight : 200,\r
20                 onShow : function()\r
21                 {\r
22                         delete this.form;\r
23 \r
24                         var element = this.getParentEditor().getSelection().getStartElement();\r
25                         var form = element && element.getAscendant( 'form', true );\r
26                         if ( form )\r
27                         {\r
28                                 this.form = form;\r
29                                 this.setupContent( form );\r
30                         }\r
31                 },\r
32                 onOk : function()\r
33                 {\r
34                         var editor,\r
35                                 element = this.form,\r
36                                 isInsertMode = !element;\r
37 \r
38                         if ( isInsertMode )\r
39                         {\r
40                                 editor = this.getParentEditor();\r
41                                 element = editor.document.createElement( 'form' );\r
42                                 element.append( editor.document.createElement( 'br' ) );\r
43                         }\r
44 \r
45                         if ( isInsertMode )\r
46                                 editor.insertElement( element );\r
47                         this.commitContent( element );\r
48                 },\r
49                 onLoad : function()\r
50                 {\r
51                         function autoSetup( element )\r
52                         {\r
53                                 this.setValue( element.getAttribute( this.id ) || '' );\r
54                         }\r
55 \r
56                         function autoCommit( element )\r
57                         {\r
58                                 if ( this.getValue() )\r
59                                         element.setAttribute( this.id, this.getValue() );\r
60                                 else\r
61                                         element.removeAttribute( this.id );\r
62                         }\r
63 \r
64                         this.foreach( function( contentObj )\r
65                                 {\r
66                                         if ( autoAttributes[ contentObj.id ] )\r
67                                         {\r
68                                                 contentObj.setup = autoSetup;\r
69                                                 contentObj.commit = autoCommit;\r
70                                         }\r
71                                 } );\r
72                 },\r
73                 contents : [\r
74                         {\r
75                                 id : 'info',\r
76                                 label : editor.lang.form.title,\r
77                                 title : editor.lang.form.title,\r
78                                 elements : [\r
79                                         {\r
80                                                 id : 'txtName',\r
81                                                 type : 'text',\r
82                                                 label : editor.lang.common.name,\r
83                                                 'default' : '',\r
84                                                 accessKey : 'N',\r
85                                                 setup : function( element )\r
86                                                 {\r
87                                                         this.setValue( element.getAttribute( '_cke_saved_name' ) ||\r
88                                                                         element.getAttribute( 'name' ) ||\r
89                                                                         '' );\r
90                                                 },\r
91                                                 commit : function( element )\r
92                                                 {\r
93                                                         if ( this.getValue() )\r
94                                                                 element.setAttribute( '_cke_saved_name', this.getValue() );\r
95                                                         else\r
96                                                         {\r
97                                                                 element.removeAttribute( '_cke_saved_name' );\r
98                                                                 element.removeAttribute( 'name' );\r
99                                                         }\r
100                                                 }\r
101                                         },\r
102                                         {\r
103                                                 id : 'action',\r
104                                                 type : 'text',\r
105                                                 label : editor.lang.form.action,\r
106                                                 'default' : '',\r
107                                                 accessKey : 'A'\r
108                                         },\r
109                                         {\r
110                                                 type : 'hbox',\r
111                                                 widths : [ '45%', '55%' ],\r
112                                                 children :\r
113                                                 [\r
114                                                         {\r
115                                                                 id : 'id',\r
116                                                                 type : 'text',\r
117                                                                 label : editor.lang.common.id,\r
118                                                                 'default' : '',\r
119                                                                 accessKey : 'I'\r
120                                                         },\r
121                                                         {\r
122                                                                 id : 'enctype',\r
123                                                                 type : 'select',\r
124                                                                 label : editor.lang.form.encoding,\r
125                                                                 style : 'width:100%',\r
126                                                                 accessKey : 'E',\r
127                                                                 'default' : '',\r
128                                                                 items :\r
129                                                                 [\r
130                                                                         [ '' ],\r
131                                                                         [ 'text/plain' ],\r
132                                                                         [ 'multipart/form-data' ],\r
133                                                                         [ 'application/x-www-form-urlencoded' ]\r
134                                                                 ]\r
135                                                         }\r
136                                                 ]\r
137                                         },\r
138                                         {\r
139                                                 type : 'hbox',\r
140                                                 widths : [ '45%', '55%' ],\r
141                                                 children :\r
142                                                 [\r
143                                                         {\r
144                                                                 id : 'target',\r
145                                                                 type : 'select',\r
146                                                                 label : editor.lang.form.target,\r
147                                                                 style : 'width:100%',\r
148                                                                 accessKey : 'M',\r
149                                                                 'default' : '',\r
150                                                                 items :\r
151                                                                 [\r
152                                                                         [ editor.lang.form.targetNotSet, '' ],\r
153                                                                         [ editor.lang.form.targetNew, '_blank' ],\r
154                                                                         [ editor.lang.form.targetTop, '_top' ],\r
155                                                                         [ editor.lang.form.targetSelf, '_self' ],\r
156                                                                         [ editor.lang.form.targetParent, '_parent' ]\r
157                                                                 ]\r
158                                                         },\r
159                                                         {\r
160                                                                 id : 'method',\r
161                                                                 type : 'select',\r
162                                                                 label : editor.lang.form.method,\r
163                                                                 accessKey : 'M',\r
164                                                                 'default' : 'GET',\r
165                                                                 items :\r
166                                                                 [\r
167                                                                         [ 'GET', 'get' ],\r
168                                                                         [ 'POST', 'post' ]\r
169                                                                 ]\r
170                                                         }\r
171                                                 ]\r
172                                         }\r
173                                 ]\r
174                         }\r
175                 ]\r
176         };\r
177 });\r