Changeset 317:1997218a39ba
- Timestamp:
- 05/25/11 17:50:34 (14 years ago)
- Branch:
- wysiwyg
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
admin/js/_post.js
r310 r317 86 86 // Init toolbars 87 87 $('#post_excerpt,#post_content').dctoolbarmanager({ 88 id: 'tinymce', 88 89 mode: $(formatField).val(), 89 90 context: 'post' … … 131 132 hide: $('#post_excerpt').val() == '' 132 133 }); 133 134 $('#post_content').dctoolbarmanager('draw');135 134 136 135 // Replace attachment remove links by a POST form submit -
admin/js/dcToolBarManager.js
r310 r317 3 3 init: function(options) { 4 4 var settings = { 5 mode: 'xhtml', 6 context: null 7 }; 5 id: null, 6 mode: null, 7 }; 8 $.extend(settings,options); 9 8 10 return this.each(function(){ 9 11 var _this = this; 10 if (options) {11 $.extend(settings,options);12 }13 12 $.each(settings, function(k,v) { 14 13 $.data(_this,k,v); 15 14 }); 16 dcToolBarManager._ load(settings.mode,this);15 dcToolBarManager._init(settings.mode,_this); 17 16 }); 18 17 … … 20 19 draw: function() { 21 20 return this.each(function(){ 21 if ($(this).data('toolbar') == null) { 22 throw 'Toolbar should be initialize before render it'; 23 } 22 24 dcToolBarManager._draw($(this).data('mode'),this); 23 25 }); … … 30 32 $.data(this,'mode',mode); 31 33 dcToolBarManager._destroy($(this).data('mode'),this); 32 dcToolBarManager._load(mode,this); 33 dcToolBarManager._draw(mode,this); 34 dcToolBarManager._init(mode,this); 34 35 } 35 36 }); … … 38 39 39 40 $.fn.dctoolbarmanager = function(method) { 40 if (methods[method]) { 41 return methods[method].apply(this,Array.prototype.slice.call(arguments,1)); 42 } else if (typeof method === 'object' || !method) { 43 return methods.init.apply(this,arguments); 44 } else { 45 $.error('Method ' + method + ' does not exist on jQuery.dctoolbar'); 46 } 41 //try { 42 if (methods[method]) { 43 return methods[method].apply(this,Array.prototype.slice.call(arguments,1)); 44 } else if (typeof method === 'object' || !method) { 45 return methods.init.apply(this,arguments); 46 } else { 47 throw 'Method ' + method + ' does not exist on jQuery.dctoolbarmanager'; 48 } 49 /*} catch (e) { 50 $.error('Error happend on jQuery.dctoolbarmanager: ' + e); 51 }*/ 47 52 }; 48 53 })(jQuery); … … 50 55 function dcToolBarManager() { 51 56 this.setToolBar = function(options) { 52 var settings = { 53 id: 'generic', 54 js_urls: [], 55 css_urls: [], 56 preinit: function() {}, 57 init: function() {}, 58 load: function() {}, 59 draw: function() {}, 60 destroy: function() {} 61 }; 62 63 $.extend(settings,options); 64 65 this.toolbars[settings.id] = { 66 id: settings.id, 67 js_urls: settings.js_urls, 68 css_urls: settings.css_urls, 69 preinit: settings.preinit, 70 init: settings.init, 71 load: settings.load, 72 draw: settings.draw, 73 destroy: settings.destroy, 74 loaded: false 75 }; 76 77 this.fn[settings.id] = new Array(); 78 79 this._init(settings.id); 57 try { 58 var toolbar = { 59 id: null, 60 mode: null, 61 js: [], 62 css: [], 63 onPreInit: function() {}, 64 onInit: function() {}, 65 onDraw: function() {}, 66 onDestroy: function() {} 67 }; 68 69 $.extend(toolbar,options); 70 71 if (toolbar.id == null || toolbar.id == '') { 72 throw 'Invalid toolbar id'; 73 } 74 75 if (toolbar.mode == null || toolbar.mode == '') { 76 throw 'Invalid toolbar mode'; 77 } 78 79 //var js = $.makeArray(toolbar.js); 80 if (!$.isArray(toolbar.js)) { 81 throw 'Invalid format for JS scripts'; 82 } 83 //var css = $.makeArray(toolbar.css); 84 if (!$.isArray(toolbar.css)) { 85 throw 'Invalid format for CSS scripts'; 86 } 87 88 // Add toolbar 89 this.toolbars[toolbar.mode] = { 90 id: toolbar.id, 91 js: toolbar.js, 92 css: toolbar.css, 93 loaded: false, 94 init: false 95 }; 96 97 // Add events 98 this.events[toolbar.mode] = { 99 onPreInit: [], 100 onInit: [], 101 onDraw: [], 102 onDestroy: [] 103 }; 104 this.bind('onPreInit',toolbar.mode,toolbar.onPreInit); 105 this.bind('onInit',toolbar.mode,toolbar.onInit); 106 this.bind('onDraw',toolbar.mode,toolbar.onDraw); 107 this.bind('onDestroy',toolbar.mode,toolbar.onDestroy); 108 109 // Pre-init toolbar 110 this._preInit(toolbar.mode); 111 } catch (e) { 112 $.error('Toolbar signature error: ' + e.message); 113 } 80 114 }; 81 }; 115 116 this.bind = function(event,mode,callback) { 117 if (!this.events.hasOwnProperty(mode)) { 118 throw 'No event available for toolbar [%s]'.replace('%s',id); 119 } 120 121 var events = this.events[mode]; 122 123 if (!events.hasOwnProperty(event)) { 124 throw 'Event [%1$s] does not exist for toolbar [%2$s]'.replace('%1$s',event).replace('%2$s',mode); 125 } 126 127 if (typeof(callback) === 'function') { 128 events[event].push(callback); 129 } 130 }, 131 132 this.call = function(event,mode) { 133 if (!this.events.hasOwnProperty(mode)) { 134 return; 135 } 136 137 var events = this.events[mode]; 138 139 if (!events.hasOwnProperty(event)) { 140 return; 141 } 142 143 var _arguments = arguments; 144 145 $.each(events[event],function(i,fn) { 146 fn.apply(this,Array.prototype.slice.call(_arguments,2)); 147 }); 148 } 149 } 82 150 83 151 dcToolBarManager.prototype = { 84 152 toolbars: {}, 85 fn: {}, 86 msg: { 87 toolbar_does_not_exists: 'Toolbar [%s] does not exists' 88 }, 89 90 _init: function(mode) { 91 try { 92 var _this = this; 93 var results = []; 94 95 var t = this.toolbars[mode]; 96 97 if (t.loaded) { 98 return; 99 } 100 101 var n = t.js_urls.length; 102 103 // Pre-initialization 104 t.preinit(); 105 106 // Loading JS scripts 107 $.each(t.js_urls, function(i,url) { 108 $('head').append($('<script>').attr({ 109 type: 'text/javascript', 110 src: url 111 })); 112 if(! --n) { 113 t.loaded = true; 114 t.init(); 115 } 116 }); 117 118 // Loading CSS scripts 119 $.each(t.css_urls, function(j,css) { 120 $('head').append($('<link/>').attr({ 121 rel: 'stylesheet', 122 type: 'text/css', 123 href: css 124 })); 125 }); 126 } catch (e) { 127 $.error('Error during toolbar [' + id + '] initialization: ' + e.message); 128 } 129 }, 130 131 _load: function(mode,elm) { 132 if (!this.toolbars[mode]) { 133 throw this.msg.toolbar_does_not_exists.replace('%s',mode); 134 } 135 var t = this.toolbars[mode]; 136 137 $.each(this.fn[mode],function(i,callback) { 138 callback(); 153 events: {}, 154 msg: {}, 155 156 _preInit: function(mode) { 157 if (!this.toolbars.hasOwnProperty(mode)) { 158 throw 'Toolbar [%s] does not exist'.replace('%s',mode); 159 } 160 161 this.call('onPreInit',mode); 162 163 var t = this.toolbars[mode]; 164 var n = t.js.length; 165 166 // Loading JS scripts 167 $.each(t.js, function(i,url) { 168 $.ajax({ 169 async: false, 170 url: url, 171 dataType: 'script' 172 }); 139 173 }); 140 t.load(elm); 174 175 // Loading CSS scripts 176 $.each(t.css, function(j,css) { 177 $('head').append($('<link/>').attr({ 178 rel: 'stylesheet', 179 type: 'text/css', 180 href: css 181 })); 182 }); 183 184 t.loaded = true; 185 }, 186 187 _init: function(mode,elm) { 188 if (!this.toolbars.hasOwnProperty(mode)) { 189 throw 'Toolbar [%s] does not exist'.replace('%s',mode); 190 } 191 192 var _this = this; 193 var t = this.toolbars[mode]; 194 195 var _this = this; 196 var t = this.toolbars[mode]; 197 198 if (t.loaded) { 199 if (!t.init) { 200 // Init toolbar 201 this.call('onInit',mode,elm); 202 t.init = true; 203 } 204 // Draw toolbar 205 this._draw(mode,elm); 206 return; 207 } 208 209 setTimeout(function() { _this._init.apply(_this,[mode,elm]); },1); 141 210 }, 142 211 143 212 _draw: function(mode,elm) { 144 var t = this.toolbars[mode]; 145 t.draw(elm); 213 if (!this.toolbars.hasOwnProperty(mode)) { 214 throw 'Toolbar [%s] does not exist'.replace('%s',mode); 215 } 216 217 var t = this.toolbars[mode]; 218 219 // Draw toolbar 220 this.call('onDraw',mode,elm); 146 221 }, 147 222 148 223 _destroy: function(mode,elm) { 149 var t = this.toolbars[mode]; 150 t.destroy(elm); 224 if (!this.toolbars.hasOwnProperty(mode)) { 225 throw 'Toolbar [%s] does not exist'.replace('%s',mode); 226 } 227 228 var t = this.toolbars[mode]; 229 230 // Destroy toolbar 231 this.call('onDestroy',mode,elm); 151 232 } 152 233 } -
inc/admin/lib.dc.page.php
r311 r317 550 550 { 551 551 $params_wiki = array( 552 ' init' => array(552 'onInit' => array( 553 553 "jsToolBar.prototype.dialog_url = 'popup.php';", 554 554 "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."';", … … 582 582 "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."';" 583 583 ), 584 ' load' => array(584 'onDraw' => array( 585 585 "$.data(elm,'toolbar',new jsToolBar(document.getElementById($(elm).attr('id'))));", 586 "$(elm).data('toolbar').context = $(elm).data('context');" 587 ), 588 'draw' => array( 586 "$(elm).data('toolbar').context = $(elm).data('context');", 589 587 "$(elm).data('toolbar').switchMode('wiki');" 590 588 ), 591 ' destroy' => array(589 'onDestroy' => array( 592 590 "$(elm).data('toolbar').remove();" 593 591 ) 594 592 ); 595 593 if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 596 $params_wiki[' init'][] = "jsToolBar.prototype.elements.img_select.disabled = true;";594 $params_wiki['onInit'][] = "jsToolBar.prototype.elements.img_select.disabled = true;"; 597 595 } 598 596 599 597 $params_xhtml = array( 600 'preinit' => array( 601 "if (!window.tinyMCE) {", 602 "window.tinyMCEPreInit = {base : 'js/tiny_mce', suffix : '', query : ''};", 603 "}" 598 'onPreInit' => array( 599 "window.tinyMCEPreInit = {base : 'js/tiny_mce', suffix : '', query : ''};" 604 600 ), 605 ' init' => array(606 "tiny MCE.dom.Event.domLoaded = true;",607 "tiny MCE.settings = {};",608 "tiny MCE.settings.mode = 'textareas';",609 "tiny MCE.settings.relative_urls = false;",610 "tiny MCE.settings.theme = '".html::escapeJS('advanced')."';",611 "tiny MCE.settings.plugins = '".html::escapeJS('fullscreen,paste,searchreplace')."'; ",612 "tiny MCE.settings.theme_advanced_buttons1 = '".html::escapeJS('justifyleft,justifycenter,justifyright,separator,bold,italic,underline,strikethrough,sub,sup,separator,blockquote,bullist,numlist,outdent,indent,separator,undo,redo,separator,visualaid,separator,fullscreen,separator,code')."';",613 "tiny MCE.settings.theme_advanced_buttons2 = '".html::escapeJS('formatselect,removeformat,cleanup,seperator,cut,copy,paste,pastetext,pasteword,search,replace')."';",614 "tiny MCE.settings.theme_advanced_buttons3 = '".html::escapeJS('link,unlink,hr,charmap')."';",615 "tiny MCE.settings.theme_advanced_toolbar_location = '".html::escapeJS('top')."';",616 "tiny MCE.settings.theme_advanced_toolbar_align = '".html::escapeJS('left')."';",617 "tiny MCE.settings.theme_advanced_statusbar_location = '".html::escapeJS('bottom')."';",618 "tiny MCE.settings.theme_advanced_resizing = true;",619 "tiny MCE.settings.theme_advanced_resize_horizontal = false;",620 "tiny MCE.settings.entity_encoding = '".html::escapeJS('raw')."';",621 "tiny MCE.settings.add_unload_trigger = false;",622 "tiny MCE.settings.remove_linebreaks = false;",623 "tiny MCE.settings.paste_auto_cleanup_on_paste = true;"601 'onInit' => array( 602 "tinymce.dom.Event.domLoaded = true;", 603 "tinymce.settings = {};", 604 "tinymce.settings.mode = 'textareas';", 605 "tinymce.settings.relative_urls = false;", 606 "tinymce.settings.theme = '".html::escapeJS('advanced')."';", 607 "tinymce.settings.plugins = '".html::escapeJS('fullscreen,paste,searchreplace')."'; ", 608 "tinymce.settings.theme_advanced_buttons1 = '".html::escapeJS('justifyleft,justifycenter,justifyright,separator,bold,italic,underline,strikethrough,sub,sup,separator,blockquote,bullist,numlist,outdent,indent,separator,undo,redo,separator,visualaid,separator,fullscreen,separator,code')."';", 609 "tinymce.settings.theme_advanced_buttons2 = '".html::escapeJS('formatselect,removeformat,cleanup,seperator,cut,copy,paste,pastetext,pasteword,search,replace')."';", 610 "tinymce.settings.theme_advanced_buttons3 = '".html::escapeJS('link,unlink,hr,charmap')."';", 611 "tinymce.settings.theme_advanced_toolbar_location = '".html::escapeJS('top')."';", 612 "tinymce.settings.theme_advanced_toolbar_align = '".html::escapeJS('left')."';", 613 "tinymce.settings.theme_advanced_statusbar_location = '".html::escapeJS('bottom')."';", 614 "tinymce.settings.theme_advanced_resizing = true;", 615 "tinymce.settings.theme_advanced_resize_horizontal = false;", 616 "tinymce.settings.entity_encoding = '".html::escapeJS('raw')."';", 617 "tinymce.settings.add_unload_trigger = false;", 618 "tinymce.settings.remove_linebreaks = false;", 619 "tinymce.settings.paste_auto_cleanup_on_paste = true;" 624 620 ), 625 'load' => array( 626 "$.data(elm,'toolbar',new tinyMCE.Editor($(elm).attr('id'),tinyMCE.settings));" 627 ), 628 'draw' => array( 621 'onDraw' => array( 622 "$.data(elm,'toolbar',new tinymce.Editor($(elm).attr('id'),tinyMCE.settings));", 629 623 "$(elm).data('toolbar').render();" 630 624 ), 631 ' destroy' => array(625 'onDestroy' => array( 632 626 "$(elm).data('toolbar').remove();" 633 627 ) … … 641 635 "dcToolBarManager.msg.toolbar_does_not_exists = '".html::escapeJS(__('Toolbar [%s] does not exists'))."';\n". 642 636 "dcToolBarManager.setToolBar({\n". 643 "id: ' xhtml',\n".644 " js_urls: ['js/tiny_mce/tiny_mce.js'],\n".645 " css_urls: [],\n".646 " preinit: function() {".implode(' ',$params_xhtml['preinit'])."},\n".647 " init: function() {".implode(' ',$params_xhtml['init'])."},\n".648 " load: function(elm) {".implode(' ',$params_xhtml['load'])."},\n".649 " draw: function(elm) {".implode(' ',$params_xhtml['draw'])."},\n".650 " destroy: function(elm) {".implode(' ',$params_xhtml['destroy'])."}\n".637 "id: 'tinymce',\n". 638 "mode: 'xhtml',\n". 639 "js: ['js/tiny_mce/tiny_mce.js'],\n". 640 "css: [],\n". 641 "onPreInit: function() {".implode(' ',$params_xhtml['onPreInit'])."},\n". 642 "onInit: function() {".implode(' ',$params_xhtml['onInit'])."},\n". 643 "onDraw: function(elm) {".implode(' ',$params_xhtml['onDraw'])."},\n". 644 "onDestroy: function(elm) {".implode(' ',$params_xhtml['onDestroy'])."}\n". 651 645 "});\n". 652 646 "dcToolBarManager.setToolBar({\n". 653 "id: ' wiki',\n".654 " js_urls: ['js/jsToolBar/jsToolBar.js','js/jsToolBar/jsToolBar.dotclear.js'],\n".655 " css_urls: ['style/jsToolBar/jsToolBar.css'],\n".656 " init: function() {".implode("\n",$params_wiki['init'])."},\n".657 " load: function(elm) {".implode(' ',$params_wiki['load'])."},\n".658 " draw: function(elm) {".implode(' ',$params_wiki['draw'])."},\n".659 " destroy: function(elm) {".implode(' ',$params_wiki['destroy'])."}\n".647 "id: 'jstoolbar',\n". 648 "mode: 'wiki',\n". 649 "js: ['js/jsToolBar/jsToolBar.js','js/jsToolBar/jsToolBar.dotclear.js'],\n". 650 "css: ['style/jsToolBar/jsToolBar.css'],\n". 651 "onInit: function() {".implode("\n",$params_wiki['onInit'])."},\n". 652 "onDraw: function(elm) {".implode(' ',$params_wiki['onDraw'])."},\n". 653 "onDestroy: function(elm) {".implode(' ',$params_wiki['onDestroy'])."}\n". 660 654 "});\n". 661 655 "\n//]]>\n". -
plugins/tags/_admin.php
r311 r317 122 122 "dotclear.msg.entry = '".html::escapeJS(__('entry'))."';\n". 123 123 "dotclear.msg.entries = '".html::escapeJS(__('entries'))."';\n". 124 "dcToolBarManager. fn.wiki.push(function() {\n".124 "dcToolBarManager.bind('onInit','wiki',function() {\n". 125 125 "jsToolBar.prototype.elements.tag.title = '".html::escapeJS(__('Tag'))."';\n". 126 126 "jsToolBar.prototype.elements.tag.url = '".html::escapeJS($tag_url)."';\n". 127 127 "});\n". 128 "dcToolBarManager. fn.xhtml.push(function() {\n".129 "tiny MCE.plugins.dcTagPlugin.title = '".html::escapeJS(__('Tag'))."';\n".130 "tiny MCE.plugins.dcTagPlugin.url = '".html::escapeJS($tag_url)."';\n".128 "dcToolBarManager.bind('onInit','xhtml',function() {\n". 129 "tinymce.plugins.dcTag.title = '".html::escapeJS(__('Tag'))."';\n". 130 "tinymce.plugins.dcTag.url = '".html::escapeJS($tag_url)."';\n". 131 131 "});\n". 132 132 "\n//]]>\n". -
plugins/tags/js/post.js
r311 r317 60 60 61 61 // Toolbar button for tags 62 dcToolBarManager. fn.wiki.push(function() {62 dcToolBarManager.bind('onInit','wiki',function() { 63 63 jsToolBar.prototype.elements.tagSpace = {type: 'space'}; 64 64 … … 104 104 }); 105 105 106 dcToolBarManager. fn.xhtml.push(function() {107 tinymce.create('tinymce.plugins.dcTag Plugin', {106 dcToolBarManager.bind('onInit','xhtml',function() { 107 tinymce.create('tinymce.plugins.dcTag', { 108 108 init : function(ed, url) { 109 109 this.editor = ed; 110 110 111 ed.addCommand(' mceDcTag', function() {111 ed.addCommand('dcTag', function() { 112 112 var se = ed.selection; 113 113 … … 115 115 return; 116 116 } 117 tinymce.execCommand("mceInsertLink", false, tinymce.plugins.dcTag Plugin.url+'/'+se.getContent(), {skip_undo : 1});117 tinymce.execCommand("mceInsertLink", false, tinymce.plugins.dcTag.url+'/'+se.getContent(), {skip_undo : 1}); 118 118 window.dc_tag_editor.addMeta(se.getContent()); 119 119 }); 120 120 121 121 ed.addButton('tag', { 122 title : tinymce.plugins.dcTag Plugin.title,123 cmd : ' mceDcTag',122 title : tinymce.plugins.dcTag.title, 123 cmd : 'dcTag', 124 124 image :'index.php?pf=tags/img/tag-add.png' 125 125 }); 126 126 127 ed.addShortcut('ctrl+ m', 'advlink.advlink_desc', 'mceDcTag');127 ed.addShortcut('ctrl+alt+t', 'advlink.advlink_desc', 'dcTag'); 128 128 129 129 ed.onNodeChange.add(function(ed, cm, n, co) { … … 138 138 author : 'Tomtom for dotclear', 139 139 authorurl : 'http://dotclear.org', 140 infourl : ' http://dotclear.org',140 infourl : '', 141 141 version : tinymce.majorVersion + "." + tinymce.minorVersion 142 142 }; … … 144 144 }); 145 145 146 tinymce.PluginManager.add('dcTag', tinymce.plugins.dcTag Plugin);146 tinymce.PluginManager.add('dcTag', tinymce.plugins.dcTag); 147 147 148 148 tinymce.settings.plugins += ",-dcTag";
Note: See TracChangeset
for help on using the changeset viewer.