]> git.immae.eu Git - perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git/blame - sources/plugins/dialogadvtab/plugin.js
Upgrade to 4.5.7 and add some plugin
[perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git] / sources / plugins / dialogadvtab / plugin.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
5\r
6( function() {\r
7\r
8 function setupAdvParams( element ) {\r
9 var attrName = this.att;\r
10\r
11 var value = element && element.hasAttribute( attrName ) && element.getAttribute( attrName ) || '';\r
12\r
13 if ( value !== undefined )\r
14 this.setValue( value );\r
15 }\r
16\r
17 function commitAdvParams() {\r
18 // Dialogs may use different parameters in the commit list, so, by\r
19 // definition, we take the first CKEDITOR.dom.element available.\r
20 var element;\r
21\r
22 for ( var i = 0; i < arguments.length; i++ ) {\r
23 if ( arguments[ i ] instanceof CKEDITOR.dom.element ) {\r
24 element = arguments[ i ];\r
25 break;\r
26 }\r
27 }\r
28\r
29 if ( element ) {\r
30 var attrName = this.att,\r
31 value = this.getValue();\r
32\r
33 if ( value )\r
34 element.setAttribute( attrName, value );\r
35 else\r
36 element.removeAttribute( attrName, value );\r
37 }\r
38 }\r
39\r
40 var defaultTabConfig = { id: 1, dir: 1, classes: 1, styles: 1 };\r
41\r
42 CKEDITOR.plugins.add( 'dialogadvtab', {\r
43 requires: 'dialog',\r
44\r
45 // Returns allowed content rule for the content created by this plugin.\r
46 allowedContent: function( tabConfig ) {\r
47 if ( !tabConfig )\r
48 tabConfig = defaultTabConfig;\r
49\r
50 var allowedAttrs = [];\r
51 if ( tabConfig.id )\r
52 allowedAttrs.push( 'id' );\r
53 if ( tabConfig.dir )\r
54 allowedAttrs.push( 'dir' );\r
55\r
56 var allowed = '';\r
57\r
58 if ( allowedAttrs.length )\r
59 allowed += '[' + allowedAttrs.join( ',' ) + ']';\r
60\r
61 if ( tabConfig.classes )\r
62 allowed += '(*)';\r
63 if ( tabConfig.styles )\r
64 allowed += '{*}';\r
65\r
66 return allowed;\r
67 },\r
68\r
69 // @param tabConfig\r
70 // id, dir, classes, styles\r
71 createAdvancedTab: function( editor, tabConfig, element ) {\r
72 if ( !tabConfig )\r
73 tabConfig = defaultTabConfig;\r
74\r
75 var lang = editor.lang.common;\r
76\r
77 var result = {\r
78 id: 'advanced',\r
79 label: lang.advancedTab,\r
80 title: lang.advancedTab,\r
81 elements: [ {\r
82 type: 'vbox',\r
83 padding: 1,\r
84 children: []\r
85 } ]\r
86 };\r
87\r
88 var contents = [];\r
89\r
90 if ( tabConfig.id || tabConfig.dir ) {\r
91 if ( tabConfig.id ) {\r
92 contents.push( {\r
93 id: 'advId',\r
94 att: 'id',\r
95 type: 'text',\r
96 requiredContent: element ? element + '[id]' : null,\r
97 label: lang.id,\r
98 setup: setupAdvParams,\r
99 commit: commitAdvParams\r
100 } );\r
101 }\r
102\r
103 if ( tabConfig.dir ) {\r
104 contents.push( {\r
105 id: 'advLangDir',\r
106 att: 'dir',\r
107 type: 'select',\r
108 requiredContent: element ? element + '[dir]' : null,\r
109 label: lang.langDir,\r
110 'default': '',\r
111 style: 'width:100%',\r
112 items: [\r
113 [ lang.notSet, '' ],\r
114 [ lang.langDirLTR, 'ltr' ],\r
115 [ lang.langDirRTL, 'rtl' ]\r
116 ],\r
117 setup: setupAdvParams,\r
118 commit: commitAdvParams\r
119 } );\r
120 }\r
121\r
122 result.elements[ 0 ].children.push( {\r
123 type: 'hbox',\r
124 widths: [ '50%', '50%' ],\r
125 children: [].concat( contents )\r
126 } );\r
127 }\r
128\r
129 if ( tabConfig.styles || tabConfig.classes ) {\r
130 contents = [];\r
131\r
132 if ( tabConfig.styles ) {\r
133 contents.push( {\r
134 id: 'advStyles',\r
135 att: 'style',\r
136 type: 'text',\r
137 requiredContent: element ? element + '{cke-xyz}' : null,\r
138 label: lang.styles,\r
139 'default': '',\r
140\r
141 validate: CKEDITOR.dialog.validate.inlineStyle( lang.invalidInlineStyle ),\r
142 onChange: function() {},\r
143\r
144 getStyle: function( name, defaultValue ) {\r
145 var match = this.getValue().match( new RegExp( '(?:^|;)\\s*' + name + '\\s*:\\s*([^;]*)', 'i' ) );\r
146 return match ? match[ 1 ] : defaultValue;\r
147 },\r
148\r
149 updateStyle: function( name, value ) {\r
150 var styles = this.getValue();\r
151\r
152 var tmp = editor.document.createElement( 'span' );\r
153 tmp.setAttribute( 'style', styles );\r
154 tmp.setStyle( name, value );\r
155 styles = CKEDITOR.tools.normalizeCssText( tmp.getAttribute( 'style' ) );\r
156\r
157 this.setValue( styles, 1 );\r
158 },\r
159\r
160 setup: setupAdvParams,\r
161\r
162 commit: commitAdvParams\r
163\r
164 } );\r
165 }\r
166\r
167 if ( tabConfig.classes ) {\r
168 contents.push( {\r
169 type: 'hbox',\r
170 widths: [ '45%', '55%' ],\r
171 children: [ {\r
172 id: 'advCSSClasses',\r
173 att: 'class',\r
174 type: 'text',\r
175 requiredContent: element ? element + '(cke-xyz)' : null,\r
176 label: lang.cssClasses,\r
177 'default': '',\r
178 setup: setupAdvParams,\r
179 commit: commitAdvParams\r
180\r
181 } ]\r
182 } );\r
183 }\r
184\r
185 result.elements[ 0 ].children.push( {\r
186 type: 'hbox',\r
187 widths: [ '50%', '50%' ],\r
188 children: [].concat( contents )\r
189 } );\r
190 }\r
191\r
192 return result;\r
193 }\r
194 } );\r
195\r
196} )();\r