From e4c31bb977dbf93b0481071dfe3f15ad33f94740 Mon Sep 17 00:00:00 2001 From: Nick Bernd Espig Date: Thu, 19 Dec 2019 13:37:32 +0100 Subject: [PATCH 1/8] Prepare dropdown.js dropdown.js copied from Products.CMFPlone-4.3.19 --- .gitattributes | 1 + build.js | 11 +++ docs/HISTORY.txt | 2 +- ftw/subsite/browser/resources/dropdown.js | 88 +++++++++++++++++++ ftw/subsite/browser/resources/main.js | 1 + .../browser/resources/subsite-compiled.js | 1 + package.json | 5 +- 7 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 build.js create mode 100644 ftw/subsite/browser/resources/dropdown.js create mode 100644 ftw/subsite/browser/resources/main.js create mode 100644 ftw/subsite/browser/resources/subsite-compiled.js diff --git a/.gitattributes b/.gitattributes index 4b64cd0..bce10f8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *-compiled.css -diff linguist-vendored +*-compiled.js -diff linguist-vendored diff --git a/build.js b/build.js new file mode 100644 index 0000000..98e4480 --- /dev/null +++ b/build.js @@ -0,0 +1,11 @@ +({ + baseUrl: "./ftw/subsite/browser/resources", + paths: { + jquery: "empty:", + }, + name: "main", + out: "./ftw/subsite/browser/resources/subsite-compiled.js", + // Uncomment the line below for JS development + // optimize: "none", +}) + diff --git a/docs/HISTORY.txt b/docs/HISTORY.txt index aeff9d1..1ac5676 100644 --- a/docs/HISTORY.txt +++ b/docs/HISTORY.txt @@ -4,7 +4,7 @@ Changelog 2.7.5 (unreleased) ------------------ -- Nothing changed yet. +- Fix plone 4 / 5 language selector [Nachtalb] 2.7.4 (2020-01-09) diff --git a/ftw/subsite/browser/resources/dropdown.js b/ftw/subsite/browser/resources/dropdown.js new file mode 100644 index 0000000..2dc2c4f --- /dev/null +++ b/ftw/subsite/browser/resources/dropdown.js @@ -0,0 +1,88 @@ +/* + * This is the code for the dropdown menus. It uses the following markup: + * + *
+ *
+ * + * A Title + *
+ *
+ * + *
+ *
+ * + * When the menu is toggled, then the dl with the class actionMenu will get an + * additional class which switches between 'activated' and 'deactivated'. + * You can use this to style it accordingly, for example: + * + * .actionMenu.activated { + * display: block; + * } + * + * .actionMenu.deactivated { + * display: none; + * } + * + * When you click somewhere else than the menu, then all open menus will be + * deactivated. When you move your mouse over the a-tag of another menu, then + * that one will be activated and all others deactivated. When you click on a + * link inside the actionMenuContent element, then the menu will be closed and + * the link followed. + * + */ + +/* + * Provides globals: + * actionMenuDocumentMouseDown, actionMenuMouseOver, document, hideAllMenus, + * initializeMenus, jQuery, toggleMenuHandler +*/ + +function hideAllMenus() { + jQuery('dl.actionMenu').removeClass('activated').addClass('deactivated'); +} + +function toggleMenuHandler(event) { + // swap between activated and deactivated + jQuery(this).parents('.actionMenu:first') + .toggleClass('deactivated') + .toggleClass('activated'); + return false; +} + +function actionMenuDocumentMouseDown(event) { + if (jQuery(event.target).parents('.actionMenu:first').length) { + // target is part of the menu, so just return and do the default + return true; + } + + hideAllMenus(); +} + +function actionMenuMouseOver(event) { + var menu_id = jQuery(this).parents('.actionMenu:first').attr('id'), + switch_menu; + if (!menu_id) {return true;} + + switch_menu = jQuery('dl.actionMenu.activated').length > 0; + jQuery('dl.actionMenu').removeClass('activated').addClass('deactivated'); + if (switch_menu) { + jQuery('#' + menu_id).removeClass('deactivated').addClass('activated'); + } +} + +function initializeMenus() { + jQuery(document).mousedown(actionMenuDocumentMouseDown); + + hideAllMenus(); + + // add toggle function to header links + jQuery('dl.actionMenu dt.actionMenuHeader a') + .click(toggleMenuHandler) + .mouseover(actionMenuMouseOver); + + // add hide function to all links in the dropdown, so the dropdown closes + // when any link is clicked + jQuery('dl.actionMenu > dd.actionMenuContent').click(hideAllMenus); +} + +jQuery(initializeMenus); diff --git a/ftw/subsite/browser/resources/main.js b/ftw/subsite/browser/resources/main.js new file mode 100644 index 0000000..59bf594 --- /dev/null +++ b/ftw/subsite/browser/resources/main.js @@ -0,0 +1 @@ +require(['dropdown'], function (dropdown) {}); diff --git a/ftw/subsite/browser/resources/subsite-compiled.js b/ftw/subsite/browser/resources/subsite-compiled.js new file mode 100644 index 0000000..0650329 --- /dev/null +++ b/ftw/subsite/browser/resources/subsite-compiled.js @@ -0,0 +1 @@ +function hideAllMenus(){jQuery("dl.actionMenu").removeClass("activated").addClass("deactivated")}function toggleMenuHandler(e){return jQuery(this).parents(".actionMenu:first").toggleClass("deactivated").toggleClass("activated"),!1}function actionMenuDocumentMouseDown(e){if(jQuery(e.target).parents(".actionMenu:first").length)return!0;hideAllMenus()}function actionMenuMouseOver(e){var n,t=jQuery(this).parents(".actionMenu:first").attr("id");if(!t)return!0;n=jQuery("dl.actionMenu.activated").length>0,jQuery("dl.actionMenu").removeClass("activated").addClass("deactivated"),n&&jQuery("#"+t).removeClass("deactivated").addClass("activated")}function initializeMenus(){jQuery(document).mousedown(actionMenuDocumentMouseDown),hideAllMenus(),jQuery("dl.actionMenu dt.actionMenuHeader a").click(toggleMenuHandler).mouseover(actionMenuMouseOver),jQuery("dl.actionMenu > dd.actionMenuContent").click(hideAllMenus)}jQuery(initializeMenus),define("dropdown",function(){}),require(["dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file diff --git a/package.json b/package.json index fb6c19c..f6c5c5f 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,9 @@ "requirejs": "^2.3.6" }, "scripts": { - "build": "r.js -o buildcss.js", + "build": "r.js -o build.js && r.js -o buildcss.js", + "build-js": "r.js -o build.js", "build-css": "r.js -o buildcss.js", - "watch": "chokidar \"./ftw/subsite/browser/resources/(*.js|*.css)\" -i \"**/*-compiled.css\" -c \"r.js -o buildcss.js;\"" + "watch": "chokidar \"./ftw/subsite/browser/resources/(*.js|*.css)\" -i \"**/*-compiled.(js|css)\" -c \"yarn build\"" } } From b8671f6eda1b2c7c4a22355badc1cbf7d46fdc04 Mon Sep 17 00:00:00 2001 From: Nick Bernd Espig Date: Thu, 19 Dec 2019 13:45:19 +0100 Subject: [PATCH 2/8] AMDify the dropdown js --- build.js | 1 + ftw/subsite/browser/resources/dropdown.js | 145 +++++++----------- ftw/subsite/browser/resources/main.js | 2 +- .../browser/resources/subsite-compiled.js | 2 +- 4 files changed, 61 insertions(+), 89 deletions(-) diff --git a/build.js b/build.js index 98e4480..165ee2a 100644 --- a/build.js +++ b/build.js @@ -2,6 +2,7 @@ baseUrl: "./ftw/subsite/browser/resources", paths: { jquery: "empty:", + subsite_dropdown: "dropdown", }, name: "main", out: "./ftw/subsite/browser/resources/subsite-compiled.js", diff --git a/ftw/subsite/browser/resources/dropdown.js b/ftw/subsite/browser/resources/dropdown.js index 2dc2c4f..b9fbd3a 100644 --- a/ftw/subsite/browser/resources/dropdown.js +++ b/ftw/subsite/browser/resources/dropdown.js @@ -1,88 +1,59 @@ -/* - * This is the code for the dropdown menus. It uses the following markup: - * - *
- *
- * - * A Title - *
- *
- * - *
- *
- * - * When the menu is toggled, then the dl with the class actionMenu will get an - * additional class which switches between 'activated' and 'deactivated'. - * You can use this to style it accordingly, for example: - * - * .actionMenu.activated { - * display: block; - * } - * - * .actionMenu.deactivated { - * display: none; - * } - * - * When you click somewhere else than the menu, then all open menus will be - * deactivated. When you move your mouse over the a-tag of another menu, then - * that one will be activated and all others deactivated. When you click on a - * link inside the actionMenuContent element, then the menu will be closed and - * the link followed. - * - */ - -/* - * Provides globals: - * actionMenuDocumentMouseDown, actionMenuMouseOver, document, hideAllMenus, - * initializeMenus, jQuery, toggleMenuHandler -*/ - -function hideAllMenus() { - jQuery('dl.actionMenu').removeClass('activated').addClass('deactivated'); -} - -function toggleMenuHandler(event) { - // swap between activated and deactivated - jQuery(this).parents('.actionMenu:first') - .toggleClass('deactivated') - .toggleClass('activated'); - return false; -} - -function actionMenuDocumentMouseDown(event) { - if (jQuery(event.target).parents('.actionMenu:first').length) { - // target is part of the menu, so just return and do the default - return true; +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. (Plone 5 with requirejs) + define(['jquery'], factory); + } else { + // Browser globals (Plone 4 without requirejs) + factory(root.jQuery); } - - hideAllMenus(); -} - -function actionMenuMouseOver(event) { - var menu_id = jQuery(this).parents('.actionMenu:first').attr('id'), - switch_menu; - if (!menu_id) {return true;} - - switch_menu = jQuery('dl.actionMenu.activated').length > 0; - jQuery('dl.actionMenu').removeClass('activated').addClass('deactivated'); - if (switch_menu) { - jQuery('#' + menu_id).removeClass('deactivated').addClass('activated'); - } -} - -function initializeMenus() { - jQuery(document).mousedown(actionMenuDocumentMouseDown); - - hideAllMenus(); - - // add toggle function to header links - jQuery('dl.actionMenu dt.actionMenuHeader a') - .click(toggleMenuHandler) - .mouseover(actionMenuMouseOver); - - // add hide function to all links in the dropdown, so the dropdown closes - // when any link is clicked - jQuery('dl.actionMenu > dd.actionMenuContent').click(hideAllMenus); -} - -jQuery(initializeMenus); +}(typeof self !== 'undefined' ? self : this, function ($) { + function hideAllMenus() { + $('dl.actionMenu').removeClass('activated').addClass('deactivated'); + } + + function toggleMenuHandler(event) { + // swap between activated and deactivated + $(this).parents('.actionMenu:first') + .toggleClass('deactivated') + .toggleClass('activated'); + return false; + } + + function actionMenuDocumentMouseDown(event) { + if ($(event.target).parents('.actionMenu:first').length) { + // target is part of the menu, so just return and do the default + return true; + } + + hideAllMenus(); + } + + function actionMenuMouseOver(event) { + var menu_id = $(this).parents('.actionMenu:first').attr('id'), + switch_menu; + if (!menu_id) {return true;} + + switch_menu = $('dl.actionMenu.activated').length > 0; + $('dl.actionMenu').removeClass('activated').addClass('deactivated'); + if (switch_menu) { + $('#' + menu_id).removeClass('deactivated').addClass('activated'); + } + } + + function initializeMenus() { + $(document).mousedown(actionMenuDocumentMouseDown); + + hideAllMenus(); + + // add toggle function to header links + $('dl.actionMenu dt.actionMenuHeader a') + .click(toggleMenuHandler) + .mouseover(actionMenuMouseOver); + + // add hide function to all links in the dropdown, so the dropdown closes + // when any link is clicked + $('dl.actionMenu > dd.actionMenuContent').click(hideAllMenus); + } + + $(initializeMenus); +})); diff --git a/ftw/subsite/browser/resources/main.js b/ftw/subsite/browser/resources/main.js index 59bf594..e936d35 100644 --- a/ftw/subsite/browser/resources/main.js +++ b/ftw/subsite/browser/resources/main.js @@ -1 +1 @@ -require(['dropdown'], function (dropdown) {}); +require(['subsite_dropdown'], function (dropdown) {}); diff --git a/ftw/subsite/browser/resources/subsite-compiled.js b/ftw/subsite/browser/resources/subsite-compiled.js index 0650329..dd12a40 100644 --- a/ftw/subsite/browser/resources/subsite-compiled.js +++ b/ftw/subsite/browser/resources/subsite-compiled.js @@ -1 +1 @@ -function hideAllMenus(){jQuery("dl.actionMenu").removeClass("activated").addClass("deactivated")}function toggleMenuHandler(e){return jQuery(this).parents(".actionMenu:first").toggleClass("deactivated").toggleClass("activated"),!1}function actionMenuDocumentMouseDown(e){if(jQuery(e.target).parents(".actionMenu:first").length)return!0;hideAllMenus()}function actionMenuMouseOver(e){var n,t=jQuery(this).parents(".actionMenu:first").attr("id");if(!t)return!0;n=jQuery("dl.actionMenu.activated").length>0,jQuery("dl.actionMenu").removeClass("activated").addClass("deactivated"),n&&jQuery("#"+t).removeClass("deactivated").addClass("activated")}function initializeMenus(){jQuery(document).mousedown(actionMenuDocumentMouseDown),hideAllMenus(),jQuery("dl.actionMenu dt.actionMenuHeader a").click(toggleMenuHandler).mouseover(actionMenuMouseOver),jQuery("dl.actionMenu > dd.actionMenuContent").click(hideAllMenus)}jQuery(initializeMenus),define("dropdown",function(){}),require(["dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file +!function(e,t){"function"==typeof define&&define.amd?define("subsite_dropdown",["jquery"],t):t(e.jQuery)}("undefined"!=typeof self?self:this,function(e,t){function n(){e("dl.actionMenu").removeClass("activated").addClass("deactivated")}function a(t){return e(this).parents(".actionMenu:first").toggleClass("deactivated").toggleClass("activated"),!1}function i(t){if(e(t.target).parents(".actionMenu:first").length)return!0;n()}function d(t){var n,a=e(this).parents(".actionMenu:first").attr("id");if(!a)return!0;n=e("dl.actionMenu.activated").length>0,e("dl.actionMenu").removeClass("activated").addClass("deactivated"),n&&e("#"+a).removeClass("deactivated").addClass("activated")}function o(){e(document).mousedown(i),n(),e("dl.actionMenu dt.actionMenuHeader a").click(a).mouseover(d),e("dl.actionMenu > dd.actionMenuContent").click(n)}e(o)}),require(["subsite_dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file From c14dac3be57e857bc063a0d564052bdd409b0bbb Mon Sep 17 00:00:00 2001 From: Nick Bernd Espig Date: Thu, 19 Dec 2019 13:54:42 +0100 Subject: [PATCH 3/8] Simplyfie JS for subsite use --- ftw/subsite/browser/resources/dropdown.js | 46 +++++-------------- .../browser/resources/subsite-compiled.js | 2 +- 2 files changed, 13 insertions(+), 35 deletions(-) diff --git a/ftw/subsite/browser/resources/dropdown.js b/ftw/subsite/browser/resources/dropdown.js index b9fbd3a..1677f2a 100644 --- a/ftw/subsite/browser/resources/dropdown.js +++ b/ftw/subsite/browser/resources/dropdown.js @@ -7,52 +7,30 @@ factory(root.jQuery); } }(typeof self !== 'undefined' ? self : this, function ($) { - function hideAllMenus() { - $('dl.actionMenu').removeClass('activated').addClass('deactivated'); + function hide() { + $('#portal-languageselector').removeClass('activated').addClass('deactivated'); } - function toggleMenuHandler(event) { - // swap between activated and deactivated - $(this).parents('.actionMenu:first') + function toggle() { + $('#portal-languageselector') .toggleClass('deactivated') .toggleClass('activated'); return false; } - function actionMenuDocumentMouseDown(event) { - if ($(event.target).parents('.actionMenu:first').length) { - // target is part of the menu, so just return and do the default - return true; - } - - hideAllMenus(); - } - - function actionMenuMouseOver(event) { - var menu_id = $(this).parents('.actionMenu:first').attr('id'), - switch_menu; - if (!menu_id) {return true;} - - switch_menu = $('dl.actionMenu.activated').length > 0; - $('dl.actionMenu').removeClass('activated').addClass('deactivated'); - if (switch_menu) { - $('#' + menu_id).removeClass('deactivated').addClass('activated'); + function hideOnOutsideClick(event) { + if ($(event.target).parents('#portal-languageselector').length === 0) { + hide(); } } - function initializeMenus() { - $(document).mousedown(actionMenuDocumentMouseDown); - - hideAllMenus(); + function initializeMenu() { + hide(); - // add toggle function to header links - $('dl.actionMenu dt.actionMenuHeader a') - .click(toggleMenuHandler) - .mouseover(actionMenuMouseOver); + $(document).on('mousedown', hideOnOutsideClick); - // add hide function to all links in the dropdown, so the dropdown closes - // when any link is clicked - $('dl.actionMenu > dd.actionMenuContent').click(hideAllMenus); + $('#portal-languageselector .actionMenuHeader a').on('click', toggle) + $('#portal-languageselector .actionMenuContent').on('click', hide); } $(initializeMenus); diff --git a/ftw/subsite/browser/resources/subsite-compiled.js b/ftw/subsite/browser/resources/subsite-compiled.js index dd12a40..b43f97e 100644 --- a/ftw/subsite/browser/resources/subsite-compiled.js +++ b/ftw/subsite/browser/resources/subsite-compiled.js @@ -1 +1 @@ -!function(e,t){"function"==typeof define&&define.amd?define("subsite_dropdown",["jquery"],t):t(e.jQuery)}("undefined"!=typeof self?self:this,function(e,t){function n(){e("dl.actionMenu").removeClass("activated").addClass("deactivated")}function a(t){return e(this).parents(".actionMenu:first").toggleClass("deactivated").toggleClass("activated"),!1}function i(t){if(e(t.target).parents(".actionMenu:first").length)return!0;n()}function d(t){var n,a=e(this).parents(".actionMenu:first").attr("id");if(!a)return!0;n=e("dl.actionMenu.activated").length>0,e("dl.actionMenu").removeClass("activated").addClass("deactivated"),n&&e("#"+a).removeClass("deactivated").addClass("activated")}function o(){e(document).mousedown(i),n(),e("dl.actionMenu dt.actionMenuHeader a").click(a).mouseover(d),e("dl.actionMenu > dd.actionMenuContent").click(n)}e(o)}),require(["subsite_dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file +!function(e,n){"function"==typeof define&&define.amd?define("subsite_dropdown",["jquery"],n):n(e.jQuery)}("undefined"!=typeof self?self:this,function(e,n){function t(){e("#portal-languageselector").removeClass("activated").addClass("deactivated")}function o(){return e("#portal-languageselector").toggleClass("deactivated").toggleClass("activated"),!1}function a(n){0===e(n.target).parents("#portal-languageselector").length&&t()}function i(){t(),e(document).on("mousedown",a),e("#portal-languageselector .actionMenuHeader a").on("click",o),e("#portal-languageselector .actionMenuContent").on("click",t)}e(i)}),require(["subsite_dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file From a13a67877f7fee7f9b6e6afbed25074d89dda92f Mon Sep 17 00:00:00 2001 From: Nick Bernd Espig Date: Thu, 19 Dec 2019 14:10:55 +0100 Subject: [PATCH 4/8] Install subsite dropdown js --- ftw/subsite/__init__.py | 5 ++++- ftw/subsite/profiles/default/jsregistry.xml | 12 ++++++++++++ ftw/subsite/profiles/default_plone5/registry.xml | 1 + ftw/subsite/profiles/uninstall/jsregistry.xml | 9 +++++++++ .../__init__.py | 0 .../jsregistry.xml | 12 ++++++++++++ .../registry.xml | 16 ++++++++++++++++ .../upgrade.py | 13 +++++++++++++ 8 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 ftw/subsite/profiles/default/jsregistry.xml create mode 100644 ftw/subsite/profiles/uninstall/jsregistry.xml create mode 100644 ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/__init__.py create mode 100644 ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/jsregistry.xml create mode 100644 ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/registry.xml create mode 100644 ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/upgrade.py diff --git a/ftw/subsite/__init__.py b/ftw/subsite/__init__.py index b56c064..a507108 100644 --- a/ftw/subsite/__init__.py +++ b/ftw/subsite/__init__.py @@ -1,9 +1,12 @@ -from ftw.subsite import config from Products.Archetypes import atapi from Products.CMFCore import utils as cutils +from Products.CMFPlone.utils import getFSVersionTuple +from ftw.subsite import config from zope.i18nmessageid import MessageFactory +IS_PLONE_5 = getFSVersionTuple() > (5, ) + _ = MessageFactory('ftw.subsite') diff --git a/ftw/subsite/profiles/default/jsregistry.xml b/ftw/subsite/profiles/default/jsregistry.xml new file mode 100644 index 0000000..ab74030 --- /dev/null +++ b/ftw/subsite/profiles/default/jsregistry.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/ftw/subsite/profiles/default_plone5/registry.xml b/ftw/subsite/profiles/default_plone5/registry.xml index e0e9ca7..7c050b6 100644 --- a/ftw/subsite/profiles/default_plone5/registry.xml +++ b/ftw/subsite/profiles/default_plone5/registry.xml @@ -34,6 +34,7 @@ jquery False ++resource++ftw.subsite-resources/subsite-compiled.css + ++resource++ftw.subsite-resources/subsite-compiled.js default 2019-12-07 15:25:00 default diff --git a/ftw/subsite/profiles/uninstall/jsregistry.xml b/ftw/subsite/profiles/uninstall/jsregistry.xml new file mode 100644 index 0000000..c6860ae --- /dev/null +++ b/ftw/subsite/profiles/uninstall/jsregistry.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/__init__.py b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/jsregistry.xml b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/jsregistry.xml new file mode 100644 index 0000000..ab74030 --- /dev/null +++ b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/jsregistry.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/registry.xml b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/registry.xml new file mode 100644 index 0000000..460c46a --- /dev/null +++ b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/registry.xml @@ -0,0 +1,16 @@ + + + + + True + plone + jquery + False + ++resource++ftw.subsite-resources/subsite-compiled.css + ++resource++ftw.subsite-resources/subsite-compiled.js + default + 2019-12-07 15:25:00 + default + + + diff --git a/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/upgrade.py b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/upgrade.py new file mode 100644 index 0000000..ff57164 --- /dev/null +++ b/ftw/subsite/upgrades/20191219135547_fix_languageselector_dropdown/upgrade.py @@ -0,0 +1,13 @@ +from ftw.subsite import IS_PLONE_5 +from ftw.upgrade import UpgradeStep + + +class FixLanguageselectorDropdown(UpgradeStep): + """Fix languageselector dropdown. + """ + + def __call__(self): + if IS_PLONE_5: + self.install_upgrade_profile(['plone.app.registry']) + else: + self.install_upgrade_profile(['jsregistry']) From 864a1da3dc7665cfd5e14a13cff22f66fbcf46ad Mon Sep 17 00:00:00 2001 From: Nick Bernd Espig Date: Thu, 19 Dec 2019 15:01:09 +0100 Subject: [PATCH 5/8] Remove obsolete IS_PLONE_5 expression --- ftw/subsite/browser/contact.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ftw/subsite/browser/contact.py b/ftw/subsite/browser/contact.py index ae62fac..34e3050 100644 --- a/ftw/subsite/browser/contact.py +++ b/ftw/subsite/browser/contact.py @@ -3,6 +3,7 @@ from email.header import Header from email.mime.text import MIMEText from ftw.subsite import _ +from ftw.subsite import IS_PLONE_5 from plone.app.layout.navigation.root import getNavigationRoot from plone.dexterity.utils import safe_utf8 from z3c.form import form, field, button @@ -13,13 +14,9 @@ from zope.i18n import translate from zope.interface import Interface from zope.interface import Invalid -import pkg_resources import re -IS_PLONE_5 = pkg_resources.get_distribution('Products.CMFPlone').version >= '5' - - class IContactForm(Interface): """Interface for z3c.form""" sender = schema.TextLine(title=_(u"Sender_Name", default=u"Name"), From af4f9a14bfe646d8487943af5fb5e79881624714 Mon Sep 17 00:00:00 2001 From: Nick Bernd Espig Date: Thu, 19 Dec 2019 15:03:46 +0100 Subject: [PATCH 6/8] Reindent --- ftw/subsite/browser/resources/dropdown.js | 38 +++++++++++------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/ftw/subsite/browser/resources/dropdown.js b/ftw/subsite/browser/resources/dropdown.js index 1677f2a..b52f588 100644 --- a/ftw/subsite/browser/resources/dropdown.js +++ b/ftw/subsite/browser/resources/dropdown.js @@ -1,36 +1,36 @@ (function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. (Plone 5 with requirejs) - define(['jquery'], factory); - } else { - // Browser globals (Plone 4 without requirejs) - factory(root.jQuery); - } + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. (Plone 5 with requirejs) + define(['jquery'], factory); + } else { + // Browser globals (Plone 4 without requirejs) + factory(root.jQuery); + } }(typeof self !== 'undefined' ? self : this, function ($) { function hide() { - $('#portal-languageselector').removeClass('activated').addClass('deactivated'); + $('#portal-languageselector').removeClass('activated').addClass('deactivated'); } function toggle() { - $('#portal-languageselector') - .toggleClass('deactivated') - .toggleClass('activated'); - return false; + $('#portal-languageselector') + .toggleClass('deactivated') + .toggleClass('activated'); + return false; } function hideOnOutsideClick(event) { - if ($(event.target).parents('#portal-languageselector').length === 0) { - hide(); - } + if ($(event.target).parents('#portal-languageselector').length === 0) { + hide(); + } } function initializeMenu() { - hide(); + hide(); - $(document).on('mousedown', hideOnOutsideClick); + $(document).on('mousedown', hideOnOutsideClick); - $('#portal-languageselector .actionMenuHeader a').on('click', toggle) - $('#portal-languageselector .actionMenuContent').on('click', hide); + $('#portal-languageselector .actionMenuHeader a').on('click', toggle) + $('#portal-languageselector .actionMenuContent').on('click', hide); } $(initializeMenus); From 152b2d343502038583f6024768a51fade387662b Mon Sep 17 00:00:00 2001 From: Tina Gerber Date: Thu, 9 Jan 2020 17:53:00 +0100 Subject: [PATCH 7/8] Fix typo. --- ftw/subsite/browser/resources/dropdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ftw/subsite/browser/resources/dropdown.js b/ftw/subsite/browser/resources/dropdown.js index b52f588..9bcd47f 100644 --- a/ftw/subsite/browser/resources/dropdown.js +++ b/ftw/subsite/browser/resources/dropdown.js @@ -33,5 +33,5 @@ $('#portal-languageselector .actionMenuContent').on('click', hide); } - $(initializeMenus); + $(initializeMenu); })); From 624e31d7827bb5b4458115c6b24e0a52add5f487 Mon Sep 17 00:00:00 2001 From: Tina Gerber Date: Thu, 9 Jan 2020 17:53:15 +0100 Subject: [PATCH 8/8] Dropdown works now with multiple language-selectors. --- ftw/subsite/browser/resources/dropdown.js | 6 ++---- ftw/subsite/browser/resources/subsite-compiled.js | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ftw/subsite/browser/resources/dropdown.js b/ftw/subsite/browser/resources/dropdown.js index 9bcd47f..5073eef 100644 --- a/ftw/subsite/browser/resources/dropdown.js +++ b/ftw/subsite/browser/resources/dropdown.js @@ -8,13 +8,11 @@ } }(typeof self !== 'undefined' ? self : this, function ($) { function hide() { - $('#portal-languageselector').removeClass('activated').addClass('deactivated'); + $('[id="portal-languageselector"]').removeClass('activated').addClass('deactivated'); } function toggle() { - $('#portal-languageselector') - .toggleClass('deactivated') - .toggleClass('activated'); + $(this).parents('#portal-languageselector').toggleClass('activated').toggleClass('deactivated'); return false; } diff --git a/ftw/subsite/browser/resources/subsite-compiled.js b/ftw/subsite/browser/resources/subsite-compiled.js index b43f97e..8d0d88d 100644 --- a/ftw/subsite/browser/resources/subsite-compiled.js +++ b/ftw/subsite/browser/resources/subsite-compiled.js @@ -1 +1 @@ -!function(e,n){"function"==typeof define&&define.amd?define("subsite_dropdown",["jquery"],n):n(e.jQuery)}("undefined"!=typeof self?self:this,function(e,n){function t(){e("#portal-languageselector").removeClass("activated").addClass("deactivated")}function o(){return e("#portal-languageselector").toggleClass("deactivated").toggleClass("activated"),!1}function a(n){0===e(n.target).parents("#portal-languageselector").length&&t()}function i(){t(),e(document).on("mousedown",a),e("#portal-languageselector .actionMenuHeader a").on("click",o),e("#portal-languageselector .actionMenuContent").on("click",t)}e(i)}),require(["subsite_dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file +!function(e,n){"function"==typeof define&&define.amd?define("subsite_dropdown",["jquery"],n):n(e.jQuery)}("undefined"!=typeof self?self:this,function(e){function n(){e('[id="portal-languageselector"]').removeClass("activated").addClass("deactivated")}function t(){return e(this).parents("#portal-languageselector").toggleClass("activated").toggleClass("deactivated"),!1}function a(t){0===e(t.target).parents("#portal-languageselector").length&&n()}function o(){n(),e(document).on("mousedown",a),e("#portal-languageselector .actionMenuHeader a").on("click",t),e("#portal-languageselector .actionMenuContent").on("click",n)}e(o)}),require(["subsite_dropdown"],function(e){}),define("main",function(){}); \ No newline at end of file