From 2e623dd2713aa71daf8d94ac972e0384c9a2e02c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 3 Nov 2021 16:01:32 -0400 Subject: [PATCH] feat: #9967, allow dropdowns in navigation --- .../language/en-GB/admin/settings/navigation.json | 4 +++- public/src/app.js | 9 ++++++--- src/controllers/admin/settings.js | 3 +++ src/views/admin/settings/navigation.tpl | 13 +++++++++++++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/public/language/en-GB/admin/settings/navigation.json b/public/language/en-GB/admin/settings/navigation.json index 13dd01aae7..7baca85096 100644 --- a/public/language/en-GB/admin/settings/navigation.json +++ b/public/language/en-GB/admin/settings/navigation.json @@ -11,6 +11,8 @@ "properties": "Properties:", "groups": "Groups:", "open-new-window": "Open in a new window", + "dropdown": "Dropdown", + "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a href="https://myforum.com">Link 1</a></li>", "btn.delete": "Delete", "btn.disable": "Disable", @@ -20,4 +22,4 @@ "custom-route": "Custom Route", "core": "core", "plugin": "plugin" -} \ No newline at end of file +} diff --git a/public/src/app.js b/public/src/app.js index 1cf4471fb5..e6f3e95e1c 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -284,9 +284,12 @@ app.cacheBuster = null; $('#main-nav li') .removeClass('active') .find('a') - .filter(function (i, x) { - return window.location.hostname === x.hostname && (window.location.pathname === x.pathname || - window.location.pathname.startsWith(x.pathname + '/')); + .filter(function (i, a) { + return $(a).attr('href') !== '#' && window.location.hostname === a.hostname && + ( + window.location.pathname === a.pathname || + window.location.pathname.startsWith(a.pathname + '/') + ); }) .parent() .addClass('active'); diff --git a/src/controllers/admin/settings.js b/src/controllers/admin/settings.js index 41166e6d1c..d4abecd479 100644 --- a/src/controllers/admin/settings.js +++ b/src/controllers/admin/settings.js @@ -1,5 +1,7 @@ 'use strict'; +const validator = require('validator'); + const meta = require('../../meta'); const emailer = require('../../emailer'); const notifications = require('../../notifications'); @@ -72,6 +74,7 @@ settingsController.navigation = async function (req, res) { enabled.selected = index === 0; enabled.title = translator.escape(enabled.title); enabled.text = translator.escape(enabled.text); + enabled.dropdownContent = translator.escape(validator.escape(String(enabled.dropdownContent || ''))); enabled.groups = admin.groups.map(group => ({ displayName: group.displayName, selected: enabled.groups.includes(group.name), diff --git a/src/views/admin/settings/navigation.tpl b/src/views/admin/settings/navigation.tpl index 86cff2d1e1..cd406b90ab 100644 --- a/src/views/admin/settings/navigation.tpl +++ b/src/views/admin/settings/navigation.tpl @@ -89,6 +89,19 @@ +
+ +
+
+

+ [[admin/settings/navigation:dropdown-placeholder]] +

+ +
+