From b9519eaf8353b87da458a350a63ea596133a8bda Mon Sep 17 00:00:00 2001 From: Bo Simonsen Date: Thu, 11 Oct 2012 16:37:45 +0200 Subject: [PATCH 1/4] Using translations from the plone domain --- plone/formwidget/querystring/input.pt | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/plone/formwidget/querystring/input.pt b/plone/formwidget/querystring/input.pt index cda441e..58eeb01 100644 --- a/plone/formwidget/querystring/input.pt +++ b/plone/formwidget/querystring/input.pt @@ -1,7 +1,8 @@
+ tal:attributes="data-fieldname fieldName" + i18n:domain="plone">
-
Select…
+
+ + Select… +
From 2f29eb70abf3bbaf5c4e512d3494f4cf67ae22c1 Mon Sep 17 00:00:00 2001 From: Bo Simonsen Date: Thu, 11 Oct 2012 16:37:59 +0200 Subject: [PATCH 2/4] We can now hide the multiselectionwidget --- plone/formwidget/querystring/querywidget.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/plone/formwidget/querystring/querywidget.js b/plone/formwidget/querystring/querywidget.js index fbddfa5..630cfde 100644 --- a/plone/formwidget/querystring/querywidget.js +++ b/plone/formwidget/querystring/querywidget.js @@ -322,13 +322,20 @@ }); $('.multipleSelectionWidget dt').live('click', function () { - if ($(this).parent().children('dd').hasClass('hiddenStructure')) { - $(this).parent().children('dd').removeClass('hiddenStructure'); - } else { - $(this).parent().children('dd').addClass('hiddenStructure'); - } + $(this).parent().children('dd').toggle(); }); + /* Clicking outside a multipleSelectionWidget will close all open + multipleSelectionWidgets */ + + $(window).click(function(event){ + if ($(event.target).parents('.multipleSelectionWidget').length) { + return; + } + $('.multipleSelectionWidget dd').hide(); + }); + + $('.queryindex').live('change', function () { var fname = $(this).closest('.QueryWidget').attr('data-fieldname'); var index = $(this).find(':selected')[0].value; From 26aa3553aeec8697981b00b48d12717ad045b1ca Mon Sep 17 00:00:00 2001 From: Bo Simonsen Date: Thu, 25 Oct 2012 11:21:14 +0200 Subject: [PATCH 3/4] Refactored javascript code a bit so the window event listener is only effective when the widget is shown. --- CHANGES.txt | 7 +++++ plone/formwidget/querystring/querywidget.js | 31 +++++++++++++-------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7050129..630b9c7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -10,6 +10,13 @@ Changelog - Fixed conditional initialization of querywidget, see https://dev.plone.org/ticket/12529 [kroman0] +- The widget can now be hidden, when clicking on the + window or the widget. The event is only effective + when the widget is displayed. + [bosim] + +- Translations are now in Plone domain + [bosim] 1.0b2 (2012-03-19) ------------------ diff --git a/plone/formwidget/querystring/querywidget.js b/plone/formwidget/querystring/querywidget.js index 630cfde..de26667 100644 --- a/plone/formwidget/querystring/querywidget.js +++ b/plone/formwidget/querystring/querywidget.js @@ -223,6 +223,16 @@ $.get(query, {}, function (data) { $('.QueryWidget .previewresults').html(data); }); }; + /* Clicking outside a multipleSelectionWidget will close all open + multipleSelectionWidgets */ + $.querywidget.hideMultiSelectionWidgetEvent = function(event) { + if ($(event.target).parents('.multipleSelectionWidget').length) { + return; + } + $('.multipleSelectionWidget dd').hide(); + } + + // Enhance for javascript browsers $(document).ready(function () { @@ -274,6 +284,9 @@ $('#formfield-form-widgets-sort_on').hide(); $('#formfield-form-widgets-sort_reversed').hide(); + // Bind the event that listens on the window and hide the widget + $(window).bind('click', $.querywidget.hideMultiSelectionWidgetEvent); + }); // Init widget @@ -322,20 +335,16 @@ }); $('.multipleSelectionWidget dt').live('click', function () { - $(this).parent().children('dd').toggle(); - }); - - /* Clicking outside a multipleSelectionWidget will close all open - multipleSelectionWidgets */ - - $(window).click(function(event){ - if ($(event.target).parents('.multipleSelectionWidget').length) { - return; + var multiselectionwidget = $(this).parent().children('dd'); + if($(multiselectionwidget).is(':visible')) { + $(multiselectionwidget).hide(); + $(window).unbind('click', $.querywidget.hideMultiSelectionWidgetEvent); + } else { + $(multiselectionwidget).show(); + $(window).bind('click', $.querywidget.hideMultiSelectionWidgetEvent); } - $('.multipleSelectionWidget dd').hide(); }); - $('.queryindex').live('change', function () { var fname = $(this).closest('.QueryWidget').attr('data-fieldname'); var index = $(this).find(':selected')[0].value; From d16c2ce505ef816916060f366ac8f54eee03f49e Mon Sep 17 00:00:00 2001 From: Bo Simonsen Date: Fri, 26 Oct 2012 14:30:06 +0200 Subject: [PATCH 4/4] The widget is now hidden when the page loads. --- plone/formwidget/querystring/querywidget.css | 14 +++++++++++--- plone/formwidget/querystring/querywidget.js | 11 ++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/plone/formwidget/querystring/querywidget.css b/plone/formwidget/querystring/querywidget.css index 4563881..b60d73d 100644 --- a/plone/formwidget/querystring/querywidget.css +++ b/plone/formwidget/querystring/querywidget.css @@ -69,11 +69,8 @@ dl.multipleSelectionWidget, } .multipleSelectionWidget dd { width: 198px; - border-width: 1px; - border-style: solid; background: white; overflow:auto; - height:6.5em; } .multipleSelectionWidget label { display: block; @@ -98,3 +95,14 @@ dl.querywidget dd { .criteria { clear: both; } +.widgetPulldownMenu { + border-width: 1px; + border-style: solid; + height:6.5em; +} + +/* TODO: This should be fixed in public.css, so hiddenStructure will always + have the highest priority. */ +.multipleSelectionWidget .hiddenStructure { + display: none !important; +} \ No newline at end of file diff --git a/plone/formwidget/querystring/querywidget.js b/plone/formwidget/querystring/querywidget.js index de26667..d49f81b 100644 --- a/plone/formwidget/querystring/querywidget.js +++ b/plone/formwidget/querystring/querywidget.js @@ -229,7 +229,7 @@ if ($(event.target).parents('.multipleSelectionWidget').length) { return; } - $('.multipleSelectionWidget dd').hide(); + $('.multipleSelectionWidget dd').addClass('hiddenStructure'); } @@ -284,9 +284,6 @@ $('#formfield-form-widgets-sort_on').hide(); $('#formfield-form-widgets-sort_reversed').hide(); - // Bind the event that listens on the window and hide the widget - $(window).bind('click', $.querywidget.hideMultiSelectionWidgetEvent); - }); // Init widget @@ -336,11 +333,11 @@ $('.multipleSelectionWidget dt').live('click', function () { var multiselectionwidget = $(this).parent().children('dd'); - if($(multiselectionwidget).is(':visible')) { - $(multiselectionwidget).hide(); + if(!$(multiselectionwidget).hasClass('hiddenStructure')) { + $(multiselectionwidget).addClass('hiddenStructure'); $(window).unbind('click', $.querywidget.hideMultiSelectionWidgetEvent); } else { - $(multiselectionwidget).show(); + $(multiselectionwidget).removeClass('hiddenStructure'); $(window).bind('click', $.querywidget.hideMultiSelectionWidgetEvent); } });