]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/TinyMCE/js/plugins/advlist/editor_plugin_src.js
Documentation + filename uniqueness in File class
[quix0rs-gnu-social.git] / plugins / TinyMCE / js / plugins / advlist / editor_plugin_src.js
1 /**\r
2  * editor_plugin_src.js\r
3  *\r
4  * Copyright 2009, Moxiecode Systems AB\r
5  * Released under LGPL License.\r
6  *\r
7  * License: http://tinymce.moxiecode.com/license\r
8  * Contributing: http://tinymce.moxiecode.com/contributing\r
9  */\r
10 \r
11 (function() {\r
12         var each = tinymce.each;\r
13 \r
14         tinymce.create('tinymce.plugins.AdvListPlugin', {\r
15                 init : function(ed, url) {\r
16                         var t = this;\r
17 \r
18                         t.editor = ed;\r
19 \r
20                         function buildFormats(str) {\r
21                                 var formats = [];\r
22 \r
23                                 each(str.split(/,/), function(type) {\r
24                                         formats.push({\r
25                                                 title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),\r
26                                                 styles : {\r
27                                                         listStyleType : type == 'default' ? '' : type\r
28                                                 }\r
29                                         });\r
30                                 });\r
31 \r
32                                 return formats;\r
33                         };\r
34 \r
35                         // Setup number formats from config or default\r
36                         t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");\r
37                         t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");\r
38 \r
39                         if (tinymce.isIE && /MSIE [2-7]/.test(navigator.userAgent))\r
40                                 t.isIE7 = true;\r
41                 },\r
42 \r
43                 createControl: function(name, cm) {\r
44                         var t = this, btn, format;\r
45 \r
46                         if (name == 'numlist' || name == 'bullist') {\r
47                                 // Default to first item if it's a default item\r
48                                 if (t[name][0].title == 'advlist.def')\r
49                                         format = t[name][0];\r
50 \r
51                                 function hasFormat(node, format) {\r
52                                         var state = true;\r
53 \r
54                                         each(format.styles, function(value, name) {\r
55                                                 // Format doesn't match\r
56                                                 if (t.editor.dom.getStyle(node, name) != value) {\r
57                                                         state = false;\r
58                                                         return false;\r
59                                                 }\r
60                                         });\r
61 \r
62                                         return state;\r
63                                 };\r
64 \r
65                                 function applyListFormat() {\r
66                                         var list, ed = t.editor, dom = ed.dom, sel = ed.selection;\r
67 \r
68                                         // Check for existing list element\r
69                                         list = dom.getParent(sel.getNode(), 'ol,ul');\r
70 \r
71                                         // Switch/add list type if needed\r
72                                         if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))\r
73                                                 ed.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');\r
74 \r
75                                         // Append styles to new list element\r
76                                         if (format) {\r
77                                                 list = dom.getParent(sel.getNode(), 'ol,ul');\r
78                                                 if (list) {\r
79                                                         dom.setStyles(list, format.styles);\r
80                                                         list.removeAttribute('data-mce-style');\r
81                                                 }\r
82                                         }\r
83                                         ed.focus();\r
84                                 };\r
85 \r
86                                 btn = cm.createSplitButton(name, {\r
87                                         title : 'advanced.' + name + '_desc',\r
88                                         'class' : 'mce_' + name,\r
89                                         onclick : function() {\r
90                                                 applyListFormat();\r
91                                         }\r
92                                 });\r
93 \r
94                                 btn.onRenderMenu.add(function(btn, menu) {\r
95                                         menu.onShowMenu.add(function() {\r
96                                                 var dom = t.editor.dom, list = dom.getParent(t.editor.selection.getNode(), 'ol,ul'), fmtList;\r
97 \r
98                                                 if (list || format) {\r
99                                                         fmtList = t[name];\r
100 \r
101                                                         // Unselect existing items\r
102                                                         each(menu.items, function(item) {\r
103                                                                 var state = true;\r
104 \r
105                                                                 item.setSelected(0);\r
106 \r
107                                                                 if (list && !item.isDisabled()) {\r
108                                                                         each(fmtList, function(fmt) {\r
109                                                                                 if (fmt.id == item.id) {\r
110                                                                                         if (!hasFormat(list, fmt)) {\r
111                                                                                                 state = false;\r
112                                                                                                 return false;\r
113                                                                                         }\r
114                                                                                 }\r
115                                                                         });\r
116 \r
117                                                                         if (state)\r
118                                                                                 item.setSelected(1);\r
119                                                                 }\r
120                                                         });\r
121 \r
122                                                         // Select the current format\r
123                                                         if (!list)\r
124                                                                 menu.items[format.id].setSelected(1);\r
125                                                 }\r
126                                         });\r
127 \r
128                                         menu.add({id : t.editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle', titleItem: true}).setDisabled(1);\r
129 \r
130                                         each(t[name], function(item) {\r
131                                                 // IE<8 doesn't support lower-greek, skip it\r
132                                                 if (t.isIE7 && item.styles.listStyleType == 'lower-greek')\r
133                                                         return;\r
134 \r
135                                                 item.id = t.editor.dom.uniqueId();\r
136 \r
137                                                 menu.add({id : item.id, title : item.title, onclick : function() {\r
138                                                         format = item;\r
139                                                         applyListFormat();\r
140                                                 }});\r
141                                         });\r
142                                 });\r
143 \r
144                                 return btn;\r
145                         }\r
146                 },\r
147 \r
148                 getInfo : function() {\r
149                         return {\r
150                                 longname : 'Advanced lists',\r
151                                 author : 'Moxiecode Systems AB',\r
152                                 authorurl : 'http://tinymce.moxiecode.com',\r
153                                 infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',\r
154                                 version : tinymce.majorVersion + "." + tinymce.minorVersion\r
155                         };\r
156                 }\r
157         });\r
158 \r
159         // Register plugin\r
160         tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);\r
161 })();