From 3dcb595c5adbdb227f905df732974fea82658c86 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 11 Mar 2011 20:06:38 +0000 Subject: [PATCH] See Changelog. Monotone-Parent: c3ae9437f2d6f5684527ea0486ab6204b9ce62b2 Monotone-Revision: e3951f85165fbcdda1e4339ca3625cd4f4fbcf9f Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2011-03-11T20:06:38 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 10 ++++++++++ NEWS | 1 + UI/WebServerResources/HTMLElement.js | 11 +++++------ UI/WebServerResources/UIxMailEditor.js | 13 ++++++------- UI/WebServerResources/ckeditor/config.js | 2 +- UI/WebServerResources/generic.js | 10 ++++------ 6 files changed, 27 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d8378e87..f157a9ae4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2011-03-11 Francis Lachapelle + * UI/WebServerResources/HTMLElement.js (onContextMenu): hide the + menu on a mousedown, not a click. This fixes a problem on Webkit browsers. + + * UI/WebServerResources/generic.js: cleanup some event observers + related to contextual menus. + + * UI/WebServerResources/UIxMailEditor.js (initMailEditor): added + the SpellChecker button in the HTML editor toolbar, and disabled + the "check while typing" option (scayt). + * UI/WebServerResources/ContactsUI.js (initContacts): don't define the categories contextual menu if the contacts list doesn't exist. This fixes a problem when adding categories to a contact diff --git a/NEWS b/NEWS index 0202a242f..c08bb72a2 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ New Features Enhancements - updated Ukranian translation - updated Spanish translation +- "check while typing" is no longer enabled by default in HTML editor Bug Fixes - sogo-tool now works in multi-domain environments - various other mutli-domain fixes diff --git a/UI/WebServerResources/HTMLElement.js b/UI/WebServerResources/HTMLElement.js index aa136413a..a915d34de 100644 --- a/UI/WebServerResources/HTMLElement.js +++ b/UI/WebServerResources/HTMLElement.js @@ -139,7 +139,6 @@ Element.addMethods({ onContextMenu: function(element, event) { element = $(element); - Event.stop(event); if (document.currentPopupMenu) hideMenu(document.currentPopupMenu); @@ -160,13 +159,14 @@ Element.addMethods({ if (popup.prepareVisibility) isVisible = popup.prepareVisibility(); + Event.stop(event); + if (isVisible) { popup.setStyle( { top: menuTop + "px", left: menuLeft + "px", - visibility: "visible" } ); - + visibility: "visible" } ); document.currentPopupMenu = popup; - document.body.observe("click", onBodyClickMenuHandler); + $(document.body).on("mousedown", onBodyClickMenuHandler); } else log ("Warning: not showing the contextual menu " + element.id); @@ -175,8 +175,7 @@ Element.addMethods({ attachMenu: function(element, menuName) { element = $(element); element.sogoContextMenu = $(menuName); - element.observe("contextmenu", - element.onContextMenu.bindAsEventListener(element)); + element.on("contextmenu", element.onContextMenu); }, selectElement: function(element) { diff --git a/UI/WebServerResources/UIxMailEditor.js b/UI/WebServerResources/UIxMailEditor.js index 8f20fe266..8f95b50bf 100644 --- a/UI/WebServerResources/UIxMailEditor.js +++ b/UI/WebServerResources/UIxMailEditor.js @@ -240,7 +240,7 @@ function createAttachment(node, list) { var attachment = createElement("li", null, null, { node: node }, null, list); createElement("img", null, null, { src: ResourcesURL + "/attachment.gif" }, null, attachment); - attachment.observe("click", onRowClick); + attachment.on("click", onRowClick); var filename = node.value; var separator; @@ -362,16 +362,15 @@ function initMailEditor() { var list = $("attachments"); if (!list) return; - $(list).attachMenu("attachmentsMenu"); + list.attachMenu("attachmentsMenu"); var elements = $(list).childNodesWithTag("li"); for (var i = 0; i < elements.length; i++) - elements[i].observe("click", onRowClick); + elements[i].on("click", onRowClick); - var listContent = $("attachments").childNodesWithTag("li"); - if (listContent.length > 0) + if (elements.length > 0) $("attachmentsArea").setStyle({ display: "block" }); - var textarea = $("text"); + var textarea = $("text"); var textContent = textarea.getValue(); if (hasSignature()) { @@ -409,7 +408,7 @@ function initMailEditor() { 'BulletedList', '-', 'Link', 'Unlink', 'Image', 'JustifyLeft','JustifyCenter','JustifyRight', 'JustifyBlock','Font','FontSize','-','TextColor', - 'BGColor'] + 'BGColor','-','SpellChecker'] ], language : localeCode, scayt_sLang : localeCode diff --git a/UI/WebServerResources/ckeditor/config.js b/UI/WebServerResources/ckeditor/config.js index 14c2d0033..1fcd3e8d1 100644 --- a/UI/WebServerResources/ckeditor/config.js +++ b/UI/WebServerResources/ckeditor/config.js @@ -8,5 +8,5 @@ CKEDITOR.editorConfig = function( config ) config.uiColor = '#D4D0C8'; config.skin = 'kama'; config.removePlugins = "elementspath,maximize,resize"; - config.scayt_autoStartup = true; + config.scayt_autoStartup = false; }; diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 2e4e4df9e..b4dde435b 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -688,9 +688,8 @@ function getParentMenu(node) { } function onBodyClickMenuHandler(event) { + this.stopObserving(event.type); hideMenu(document.currentPopupMenu); - document.body.stopObserving("click", onBodyClickMenuHandler); - document.body.stopObserving("mouseup", onBodyClickMenuHandler); document.currentPopupMenu = null; if (event) @@ -1355,7 +1354,7 @@ function initMenu(menuDIV, callbacks) { var lis = $(uls[i]).childNodesWithTag("li"); for (var j = 0; j < lis.length; j++) { var node = $(lis[j]); - node.observe("mousedown", listRowMouseDownHandler, false); + node.on("mousedown", listRowMouseDownHandler); var callback; if (i > 0) callback = callbacks[i+j+1]; @@ -1368,13 +1367,12 @@ function initMenu(menuDIV, callbacks) { else { node.submenu = callback; node.addClassName("submenu"); - node.observe("mouseover", popupSubmenu); + node.on("mouseover", popupSubmenu); } } else { - node.observe("mouseup", onBodyClickMenuHandler); node.menuCallback = callback; - node.observe("click", onMenuClickHandler); + node.on("mousedown", onMenuClickHandler); } } else