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