includes/clientside/tinymce/plugins/advlink/editor_plugin_src.js
changeset 335 67bd3121a12e
parent 1 fe660c52c48f
child 395 fa4c5ecb7c9a
--- a/includes/clientside/tinymce/plugins/advlink/editor_plugin_src.js	Wed Dec 26 00:37:26 2007 -0500
+++ b/includes/clientside/tinymce/plugins/advlink/editor_plugin_src.js	Thu Dec 27 22:09:33 2007 -0500
@@ -1,88 +1,58 @@
 /**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ * $Id: editor_plugin_src.js 482 2007-12-10 16:51:29Z spocke $
  *
  * @author Moxiecode
  * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
  */
 
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('advlink');
+(function() {
+	tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
+		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://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink');
-	},
+			// Register commands
+			ed.addCommand('mceAdvLink', function() {
+				var se = ed.selection;
 
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "link":
-				return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink');
-		}
-
-		return "";
-	},
+				// No selection and not in link
+				if (se.isCollapsed() && se.getNode().nodeName != 'A')
+					return;
 
-	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();
-
-				if (tinyMCE.selectedElement)
-					anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);
-
-				if (anySelection || (focusElm != null && focusElm.nodeName == "A")) {
-					var template = new Array();
+				ed.windowManager.open({
+					file : url + '/link.htm',
+					width : 480 + ed.getLang('advlink.delta_width', 0),
+					height : 400 + ed.getLang('advlink.delta_height', 0),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
 
-					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);
+			// Register buttons
+			ed.addButton('link', {
+				title : 'advlink.link_desc',
+				cmd : 'mceAdvLink'
+			});
 
-					tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
-				}
+			ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
 
-				return true;
-		}
-
-		return false;
-	},
+			ed.onNodeChange.add(function(ed, cm, n, co) {
+				cm.setDisabled('link', co && n.nodeName != 'A');
+				cm.setActive('link', n.nodeName == 'A');
+			});
+		},
 
-	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));
+		getInfo : function() {
+			return {
+				longname : 'Advanced link',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
 
-		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('advlink', tinymce.plugins.AdvancedLinkPlugin);
+})();
\ No newline at end of file