Index: openacs-4/packages/acs-templating/www/resources/tinymce/jscripts/tiny_mce/plugins/oacslink/editor_plugin_src.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/resources/tinymce/jscripts/tiny_mce/plugins/oacslink/editor_plugin_src.js,v diff -u -r1.1 -r1.2 --- openacs-4/packages/acs-templating/www/resources/tinymce/jscripts/tiny_mce/plugins/oacslink/editor_plugin_src.js 25 Jan 2008 21:44:08 -0000 1.1 +++ openacs-4/packages/acs-templating/www/resources/tinymce/jscripts/tiny_mce/plugins/oacslink/editor_plugin_src.js 8 May 2009 18:13:27 -0000 1.2 @@ -2,87 +2,57 @@ * $Id$ * * @author Moxiecode - * @copyright Copyright � 2004-2007, Moxiecode Systems AB, All rights reserved. + * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. */ -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('advlink'); +(function() { + tinymce.create('tinymce.plugins.OacsLinkPlugin', { + init : function(ed, url) { + this.editor = ed; -var TinyMCE_AdvancedLinkPlugin = { - getInfo : function() { - return { - longname : 'Advanced link', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advlink.html', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, + // Register commands + ed.addCommand('mceOacsLink', function() { + var se = ed.selection; - initInstance : function(inst) { - inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink'); - }, + // No selection and not in link + if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A')) + return; - getControlHTML : function(cn) { - switch (cn) { - case "link": - return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink'); - } + ed.windowManager.open({ + file : '/acs-templating/scripts/xinha/attach-file', + width : 480 + parseInt(ed.getLang('oacslink.delta_width', 0)), + height : 400 + parseInt(ed.getLang('oacslink.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + // Register buttons + ed.addButton('oacslink', { + title : 'oacslink.link_desc', + cmd : 'mceOacsLink', + image: ed.baseURI.path + '/plugins/oacslink/img/attach.png' + }); - return ""; - }, + ed.addShortcut('ctrl+k', 'oacslink.oacslink_desc', 'mceOacsLink'); - execCommand : function(editor_id, element, command, user_interface, value) { - switch (command) { - case "mceAdvLink": - var anySelection = false; - var inst = tinyMCE.getInstanceById(editor_id); - var focusElm = inst.getFocusElement(); - var selectedText = inst.selection.getSelectedText(); + ed.onNodeChange.add(function(ed, cm, n, co) { + cm.setDisabled('link', co && n.nodeName != 'A'); + cm.setActive('link', n.nodeName == 'A' && !n.name); + }); + }, - if (tinyMCE.selectedElement) - anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0); - - if (anySelection || (focusElm != null && focusElm.nodeName == "A")) { - var template = new Array(); - - template['file'] = '../../plugins/advlink/link.htm'; - template['width'] = 480; - template['height'] = 400; - - // Language specific width and height addons - template['width'] += tinyMCE.getLang('lang_advlink_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_advlink_delta_height', 0); - - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); - } - - return true; + getInfo : function() { + return { + longname : 'Oacs link', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/oacslink', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; } + }); - return false; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - if (node == null) - return; - - do { - if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") { - tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected'); - return true; - } - } while ((node = node.parentNode)); - - if (any_selection) { - tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal'); - return true; - } - - tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled'); - - return true; - } -}; - -tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin); + // Register plugin + tinymce.PluginManager.add('oacslink', tinymce.plugins.OacsLinkPlugin); +})(); \ No newline at end of file