1 /*
  2 Copyright (c) 2003-2012, 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 });
178