From 0fbadebe13b13d6da470731df1f055df595c6a89 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Sun, 27 Feb 2011 08:30:34 -0500 Subject: [PATCH] Improve vcard import: map more fields, support photo urls, better UTF-16 charset detection --- program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js | 72 ++++++++++++++++++++++++++++++----- 1 files changed, 61 insertions(+), 11 deletions(-) diff --git a/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js index 6492641..13813a6 100644 --- a/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js +++ b/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -1,33 +1,78 @@ /** - * $Id: editor_plugin_src.js 755 2008-03-29 19:14:42Z spocke $ + * editor_plugin_src.js * - * @author Moxiecode - * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM; + /** + * This plugin a context menu to TinyMCE editor instances. + * + * @class tinymce.plugins.ContextMenu + */ tinymce.create('tinymce.plugins.ContextMenu', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @method init + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ init : function(ed) { - var t = this; + var t = this, lastRng; t.editor = ed; + + /** + * This event gets fired when the context menu is shown. + * + * @event onContextMenu + * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event. + * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed. + */ t.onContextMenu = new tinymce.util.Dispatcher(this); ed.onContextMenu.add(function(ed, e) { if (!e.ctrlKey) { + // Restore the last selection since it was removed + if (lastRng) + ed.selection.setRng(lastRng); + t._getMenu(ed).showMenu(e.clientX, e.clientY); - Event.add(document, 'click', hide); + Event.add(ed.getDoc(), 'click', function(e) { + hide(ed, e); + }); Event.cancel(e); } }); - function hide() { + ed.onRemove.add(function() { + if (t._menu) + t._menu.removeAll(); + }); + + function hide(ed, e) { + lastRng = null; + + // Since the contextmenu event moves + // the selection we need to store it away + if (e && e.button == 2) { + lastRng = ed.selection.getRng(); + return; + } + if (t._menu) { t._menu.removeAll(); t._menu.destroy(); - Event.remove(document, 'click', hide); + Event.remove(ed.getDoc(), 'click', hide); } }; @@ -35,6 +80,13 @@ ed.onKeyDown.add(hide); }, + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @method getInfo + * @return {Object} Name/value array containing information about the plugin. + */ getInfo : function() { return { longname : 'Contextmenu', @@ -57,10 +109,8 @@ p2 = DOM.getPos(ed.getContainer()); m = ed.controlManager.createDropMenu('contextmenu', { - offset_x : p1.x, - offset_y : p1.y, -/* vp_offset_x : p2.x, - vp_offset_y : p2.y,*/ + offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0), + offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0), constrain : 1 }); -- Gitblit v1.9.1