]> git.immae.eu Git - perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git/blame - sources/plugins/liststyle/dialogs/liststyle.js
Add oembed
[perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git] / sources / plugins / liststyle / dialogs / liststyle.js
CommitLineData
3332bebe 1/**\r
317f8f8f 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\r
3332bebe
IB
3 * For licensing, see LICENSE.md or http://ckeditor.com/license\r
4 */\r
5\r
6( function() {\r
7 function getListElement( editor, listTag ) {\r
8 var range;\r
9 try {\r
10 range = editor.getSelection().getRanges()[ 0 ];\r
11 } catch ( e ) {\r
12 return null;\r
13 }\r
14\r
15 range.shrink( CKEDITOR.SHRINK_TEXT );\r
16 return editor.elementPath( range.getCommonAncestor() ).contains( listTag, 1 );\r
17 }\r
18\r
19 var listItem = function( node ) {\r
20 return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' );\r
21 };\r
22\r
23 var mapListStyle = {\r
24 'a': 'lower-alpha',\r
25 'A': 'upper-alpha',\r
26 'i': 'lower-roman',\r
27 'I': 'upper-roman',\r
28 '1': 'decimal',\r
29 'disc': 'disc',\r
30 'circle': 'circle',\r
31 'square': 'square'\r
32 };\r
33\r
34 function listStyle( editor, startupPage ) {\r
35 var lang = editor.lang.liststyle;\r
36 if ( startupPage == 'bulletedListStyle' ) {\r
37 return {\r
38 title: lang.bulletedTitle,\r
39 minWidth: 300,\r
40 minHeight: 50,\r
41 contents: [ {\r
42 id: 'info',\r
43 accessKey: 'I',\r
44 elements: [ {\r
45 type: 'select',\r
46 label: lang.type,\r
47 id: 'type',\r
48 align: 'center',\r
49 style: 'width:150px',\r
50 items: [\r
51 [ lang.notset, '' ],\r
52 [ lang.circle, 'circle' ],\r
53 [ lang.disc, 'disc' ],\r
54 [ lang.square, 'square' ]\r
55 ],\r
56 setup: function( element ) {\r
57 var value = element.getStyle( 'list-style-type' ) || mapListStyle[ element.getAttribute( 'type' ) ] || element.getAttribute( 'type' ) || '';\r
58\r
59 this.setValue( value );\r
60 },\r
61 commit: function( element ) {\r
62 var value = this.getValue();\r
63 if ( value )\r
64 element.setStyle( 'list-style-type', value );\r
65 else\r
66 element.removeStyle( 'list-style-type' );\r
67 }\r
68 } ]\r
69 } ],\r
70 onShow: function() {\r
71 var editor = this.getParentEditor(),\r
72 element = getListElement( editor, 'ul' );\r
73\r
74 element && this.setupContent( element );\r
75 },\r
76 onOk: function() {\r
77 var editor = this.getParentEditor(),\r
78 element = getListElement( editor, 'ul' );\r
79\r
80 element && this.commitContent( element );\r
81 }\r
82 };\r
83 } else if ( startupPage == 'numberedListStyle' ) {\r
84\r
85 var listStyleOptions = [\r
86 [ lang.notset, '' ],\r
87 [ lang.lowerRoman, 'lower-roman' ],\r
88 [ lang.upperRoman, 'upper-roman' ],\r
89 [ lang.lowerAlpha, 'lower-alpha' ],\r
90 [ lang.upperAlpha, 'upper-alpha' ],\r
91 [ lang.decimal, 'decimal' ]\r
92 ];\r
93\r
94 if ( !CKEDITOR.env.ie || CKEDITOR.env.version > 7 ) {\r
95 listStyleOptions.concat( [\r
96 [ lang.armenian, 'armenian' ],\r
97 [ lang.decimalLeadingZero, 'decimal-leading-zero' ],\r
98 [ lang.georgian, 'georgian' ],\r
99 [ lang.lowerGreek, 'lower-greek' ]\r
100 ] );\r
101 }\r
102\r
103 return {\r
104 title: lang.numberedTitle,\r
105 minWidth: 300,\r
106 minHeight: 50,\r
107 contents: [ {\r
108 id: 'info',\r
109 accessKey: 'I',\r
110 elements: [ {\r
111 type: 'hbox',\r
112 widths: [ '25%', '75%' ],\r
113 children: [ {\r
114 label: lang.start,\r
115 type: 'text',\r
116 id: 'start',\r
117 validate: CKEDITOR.dialog.validate.integer( lang.validateStartNumber ),\r
118 setup: function( element ) {\r
119 // List item start number dominates.\r
120 var value = element.getFirst( listItem ).getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;\r
121 value && this.setValue( value );\r
122 },\r
123 commit: function( element ) {\r
124 var firstItem = element.getFirst( listItem );\r
125 var oldStart = firstItem.getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;\r
126\r
127 // Force start number on list root.\r
128 element.getFirst( listItem ).removeAttribute( 'value' );\r
129 var val = parseInt( this.getValue(), 10 );\r
130 if ( isNaN( val ) )\r
131 element.removeAttribute( 'start' );\r
132 else\r
133 element.setAttribute( 'start', val );\r
134\r
135 // Update consequent list item numbering.\r
136 var nextItem = firstItem,\r
137 conseq = oldStart,\r
138 startNumber = isNaN( val ) ? 1 : val;\r
139 while ( ( nextItem = nextItem.getNext( listItem ) ) && conseq++ ) {\r
140 if ( nextItem.getAttribute( 'value' ) == conseq )\r
141 nextItem.setAttribute( 'value', startNumber + conseq - oldStart );\r
142 }\r
143 }\r
144 },\r
145 {\r
146 type: 'select',\r
147 label: lang.type,\r
148 id: 'type',\r
149 style: 'width: 100%;',\r
150 items: listStyleOptions,\r
151 setup: function( element ) {\r
152 var value = element.getStyle( 'list-style-type' ) || mapListStyle[ element.getAttribute( 'type' ) ] || element.getAttribute( 'type' ) || '';\r
153\r
154 this.setValue( value );\r
155 },\r
156 commit: function( element ) {\r
157 var value = this.getValue();\r
158 if ( value )\r
159 element.setStyle( 'list-style-type', value );\r
160 else\r
161 element.removeStyle( 'list-style-type' );\r
162 }\r
163 } ]\r
164 } ]\r
165 } ],\r
166 onShow: function() {\r
167 var editor = this.getParentEditor(),\r
168 element = getListElement( editor, 'ol' );\r
169\r
170 element && this.setupContent( element );\r
171 },\r
172 onOk: function() {\r
173 var editor = this.getParentEditor(),\r
174 element = getListElement( editor, 'ol' );\r
175\r
176 element && this.commitContent( element );\r
177 }\r
178 };\r
179 }\r
180 }\r
181\r
182 CKEDITOR.dialog.add( 'numberedListStyle', function( editor ) {\r
183 return listStyle( editor, 'numberedListStyle' );\r
184 } );\r
185\r
186 CKEDITOR.dialog.add( 'bulletedListStyle', function( editor ) {\r
187 return listStyle( editor, 'bulletedListStyle' );\r
188 } );\r
189} )();\r