+++ /dev/null
-/**\r
- * editor_plugin_src.js\r
- *\r
- * Copyright 2009, Moxiecode Systems AB\r
- * Released under LGPL License.\r
- *\r
- * License: http://tinymce.moxiecode.com/license\r
- * Contributing: http://tinymce.moxiecode.com/contributing\r
- */\r
-\r
-(function() {\r
- var each = tinymce.each;\r
-\r
- tinymce.create('tinymce.plugins.AdvListPlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- function buildFormats(str) {\r
- var formats = [];\r
-\r
- each(str.split(/,/), function(type) {\r
- formats.push({\r
- title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),\r
- styles : {\r
- listStyleType : type == 'default' ? '' : type\r
- }\r
- });\r
- });\r
-\r
- return formats;\r
- };\r
-\r
- // Setup number formats from config or default\r
- t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");\r
- t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");\r
- },\r
-\r
- createControl: function(name, cm) {\r
- var t = this, btn, format;\r
-\r
- if (name == 'numlist' || name == 'bullist') {\r
- // Default to first item if it's a default item\r
- if (t[name][0].title == 'advlist.def')\r
- format = t[name][0];\r
-\r
- function hasFormat(node, format) {\r
- var state = true;\r
-\r
- each(format.styles, function(value, name) {\r
- // Format doesn't match\r
- if (t.editor.dom.getStyle(node, name) != value) {\r
- state = false;\r
- return false;\r
- }\r
- });\r
-\r
- return state;\r
- };\r
-\r
- function applyListFormat() {\r
- var list, ed = t.editor, dom = ed.dom, sel = ed.selection;\r
-\r
- // Check for existing list element\r
- list = dom.getParent(sel.getNode(), 'ol,ul');\r
-\r
- // Switch/add list type if needed\r
- if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))\r
- ed.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');\r
-\r
- // Append styles to new list element\r
- if (format) {\r
- list = dom.getParent(sel.getNode(), 'ol,ul');\r
-\r
- if (list) {\r
- dom.setStyles(list, format.styles);\r
- list.removeAttribute('_mce_style');\r
- }\r
- }\r
- };\r
-\r
- btn = cm.createSplitButton(name, {\r
- title : 'advanced.' + name + '_desc',\r
- 'class' : 'mce_' + name,\r
- onclick : function() {\r
- applyListFormat();\r
- }\r
- });\r
-\r
- btn.onRenderMenu.add(function(btn, menu) {\r
- menu.onShowMenu.add(function() {\r
- var dom = t.editor.dom, list = dom.getParent(t.editor.selection.getNode(), 'ol,ul'), fmtList;\r
-\r
- if (list || format) {\r
- fmtList = t[name];\r
-\r
- // Unselect existing items\r
- each(menu.items, function(item) {\r
- var state = true;\r
-\r
- item.setSelected(0);\r
-\r
- if (list && !item.isDisabled()) {\r
- each(fmtList, function(fmt) {\r
- if (fmt.id == item.id) {\r
- if (!hasFormat(list, fmt)) {\r
- state = false;\r
- return false;\r
- }\r
- }\r
- });\r
-\r
- if (state)\r
- item.setSelected(1);\r
- }\r
- });\r
-\r
- // Select the current format\r
- if (!list)\r
- menu.items[format.id].setSelected(1);\r
- }\r
- });\r
-\r
- menu.add({id : t.editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
-\r
- each(t[name], function(item) {\r
- item.id = t.editor.dom.uniqueId();\r
-\r
- menu.add({id : item.id, title : item.title, onclick : function() {\r
- format = item;\r
- applyListFormat();\r
- }});\r
- });\r
- });\r
-\r
- return btn;\r
- }\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Advanced lists',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);\r
-})();
\ No newline at end of file