]> git.immae.eu Git - perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git/blame - sources/plugins/forms/dialogs/textfield.js
Upgrade to 4.5.7 and add some plugin
[perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git] / sources / plugins / forms / dialogs / textfield.js
CommitLineData
7adcb81e 1/**\r
3b35bd27 2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.\r
7adcb81e
IB
3 * For licensing, see LICENSE.md or http://ckeditor.com/license\r
4 */\r
5CKEDITOR.dialog.add( 'textfield', function( editor ) {\r
6\r
7 var acceptedTypes = { email: 1, password: 1, search: 1, tel: 1, text: 1, url: 1 };\r
8\r
9 function autoCommit( data ) {\r
10 var element = data.element;\r
11 var value = this.getValue();\r
12\r
13 value ? element.setAttribute( this.id, value ) : element.removeAttribute( this.id );\r
14 }\r
15\r
16 function autoSetup( element ) {\r
17 var value = element.hasAttribute( this.id ) && element.getAttribute( this.id );\r
18 this.setValue( value || '' );\r
19 }\r
20\r
21 return {\r
22 title: editor.lang.forms.textfield.title,\r
23 minWidth: 350,\r
24 minHeight: 150,\r
25 onShow: function() {\r
26 delete this.textField;\r
27\r
28 var element = this.getParentEditor().getSelection().getSelectedElement();\r
29 if ( element && element.getName() == 'input' && ( acceptedTypes[ element.getAttribute( 'type' ) ] || !element.getAttribute( 'type' ) ) ) {\r
30 this.textField = element;\r
31 this.setupContent( element );\r
32 }\r
33 },\r
34 onOk: function() {\r
35 var editor = this.getParentEditor(),\r
36 element = this.textField,\r
37 isInsertMode = !element;\r
38\r
39 if ( isInsertMode ) {\r
40 element = editor.document.createElement( 'input' );\r
41 element.setAttribute( 'type', 'text' );\r
42 }\r
43\r
44 var data = { element: element };\r
45\r
46 if ( isInsertMode )\r
47 editor.insertElement( data.element );\r
48\r
49 this.commitContent( data );\r
50\r
51 // Element might be replaced by commitment.\r
52 if ( !isInsertMode )\r
53 editor.getSelection().selectElement( data.element );\r
54 },\r
55 onLoad: function() {\r
56 this.foreach( function( contentObj ) {\r
57 if ( contentObj.getValue ) {\r
58 if ( !contentObj.setup )\r
59 contentObj.setup = autoSetup;\r
60 if ( !contentObj.commit )\r
61 contentObj.commit = autoCommit;\r
62 }\r
63 } );\r
64 },\r
65 contents: [ {\r
66 id: 'info',\r
67 label: editor.lang.forms.textfield.title,\r
68 title: editor.lang.forms.textfield.title,\r
69 elements: [ {\r
70 type: 'hbox',\r
71 widths: [ '50%', '50%' ],\r
72 children: [ {\r
73 id: '_cke_saved_name',\r
74 type: 'text',\r
75 label: editor.lang.forms.textfield.name,\r
76 'default': '',\r
77 accessKey: 'N',\r
78 setup: function( element ) {\r
79 this.setValue( element.data( 'cke-saved-name' ) || element.getAttribute( 'name' ) || '' );\r
80 },\r
81 commit: function( data ) {\r
82 var element = data.element;\r
83\r
84 if ( this.getValue() )\r
85 element.data( 'cke-saved-name', this.getValue() );\r
86 else {\r
87 element.data( 'cke-saved-name', false );\r
88 element.removeAttribute( 'name' );\r
89 }\r
90 }\r
91 },\r
92 {\r
93 id: 'value',\r
94 type: 'text',\r
95 label: editor.lang.forms.textfield.value,\r
96 'default': '',\r
97 accessKey: 'V',\r
98 commit: function( data ) {\r
99 if ( CKEDITOR.env.ie && !this.getValue() ) {\r
100 var element = data.element,\r
101 fresh = new CKEDITOR.dom.element( 'input', editor.document );\r
102 element.copyAttributes( fresh, { value: 1 } );\r
103 fresh.replace( element );\r
104 data.element = fresh;\r
105 } else {\r
106 autoCommit.call( this, data );\r
107 }\r
108 }\r
109 } ]\r
110 },\r
111 {\r
112 type: 'hbox',\r
113 widths: [ '50%', '50%' ],\r
114 children: [ {\r
115 id: 'size',\r
116 type: 'text',\r
117 label: editor.lang.forms.textfield.charWidth,\r
118 'default': '',\r
119 accessKey: 'C',\r
120 style: 'width:50px',\r
121 validate: CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed )\r
122 },\r
123 {\r
124 id: 'maxLength',\r
125 type: 'text',\r
126 label: editor.lang.forms.textfield.maxChars,\r
127 'default': '',\r
128 accessKey: 'M',\r
129 style: 'width:50px',\r
130 validate: CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed )\r
131 } ],\r
132 onLoad: function() {\r
133 // Repaint the style for IE7 (#6068)\r
134 if ( CKEDITOR.env.ie7Compat )\r
135 this.getElement().setStyle( 'zoom', '100%' );\r
136 }\r
137 },\r
138 {\r
139 id: 'type',\r
140 type: 'select',\r
141 label: editor.lang.forms.textfield.type,\r
142 'default': 'text',\r
143 accessKey: 'M',\r
144 items: [\r
145 [ editor.lang.forms.textfield.typeEmail, 'email' ],\r
146 [ editor.lang.forms.textfield.typePass, 'password' ],\r
147 [ editor.lang.forms.textfield.typeSearch, 'search' ],\r
148 [ editor.lang.forms.textfield.typeTel, 'tel' ],\r
149 [ editor.lang.forms.textfield.typeText, 'text' ],\r
150 [ editor.lang.forms.textfield.typeUrl, 'url' ]\r
151 ],\r
152 setup: function( element ) {\r
153 this.setValue( element.getAttribute( 'type' ) );\r
154 },\r
155 commit: function( data ) {\r
156 var element = data.element;\r
157\r
158 if ( CKEDITOR.env.ie ) {\r
159 var elementType = element.getAttribute( 'type' );\r
160 var myType = this.getValue();\r
161\r
162 if ( elementType != myType ) {\r
163 var replace = CKEDITOR.dom.element.createFromHtml( '<input type="' + myType + '"></input>', editor.document );\r
164 element.copyAttributes( replace, { type: 1 } );\r
165 replace.replace( element );\r
166 data.element = replace;\r
167 }\r
168 } else {\r
169 element.setAttribute( 'type', this.getValue() );\r
170 }\r
171 }\r
172 },\r
173 {\r
174 id: 'required',\r
175 type: 'checkbox',\r
176 label: editor.lang.forms.textfield.required,\r
177 'default': '',\r
178 accessKey: 'Q',\r
179 value: 'required',\r
180 setup: function( element ) {\r
181 this.setValue( element.getAttribute( 'required' ) );\r
182 },\r
183 commit: function( data ) {\r
184 var element = data.element;\r
185 if ( this.getValue() )\r
186 element.setAttribute( 'required', 'required' );\r
187 else\r
188 element.removeAttribute( 'required' );\r
189 }\r
190 } ]\r
191 } ]\r
192 };\r
193} );\r