From e2ab530ee37c6bcb363c64c33f983ee13d1b8d4f Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 23 Mar 2021 11:38:25 +0100 Subject: [PATCH] Adjust scopes menu based on conditions Now not all fields have the "v2-private" option in place. Fix dropdown issue when a scope was stored that is not listed after disabling the lookup server. Whenever the lookup server upload is disabled, the scope menu is now displayed where it makes sense to allow switching between the two private scopes. Signed-off-by: Vincent Petry --- apps/settings/js/federationscopemenu.js | 23 +++++-------------- apps/settings/js/federationsettingsview.js | 17 ++++++++++++-- apps/settings/js/settings/personalInfo.js | 6 +++-- .../settings/personal/personal.info.php | 16 +++---------- 4 files changed, 28 insertions(+), 34 deletions(-) diff --git a/apps/settings/js/federationscopemenu.js b/apps/settings/js/federationscopemenu.js index 1c854a7ee5..b94e1686a4 100644 --- a/apps/settings/js/federationscopemenu.js +++ b/apps/settings/js/federationscopemenu.js @@ -57,7 +57,7 @@ } ]; - if (options.excludedScopes) { + if (options.excludedScopes && options.excludedScopes.length) { this._scopes = this._scopes.filter(function(scopeEntry) { return options.excludedScopes.indexOf(scopeEntry.name) === -1; }) @@ -117,22 +117,11 @@ var currentlyActiveValue = $('#'+context.target.closest('form').id).find('input[type="hidden"]')[0].value; for(var i in this._scopes) { - this._scopes[i].active = false; - } - - switch (currentlyActiveValue) { - case 'v2-private': - this._scopes[0].active = true; - break; - case 'private': - this._scopes[1].active = true; - break; - case 'contacts': - this._scopes[2].active = true; - break; - case 'public': - this._scopes[3].active = true; - break; + if (this._scopes[i].name === currentlyActiveValue) { + this._scopes[i].active = true; + } else { + this._scopes[i].active = false; + } } this.render(); diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js index 293989baa0..759bf85c3e 100644 --- a/apps/settings/js/federationsettingsview.js +++ b/apps/settings/js/federationsettingsview.js @@ -10,6 +10,13 @@ (function(_, $, OC) { 'use strict'; + /** + * Construct a new FederationScopeMenu instance + * @constructs FederationScopeMenu + * @memberof OC.Settings + * @param {object} options + * @param {bool} [options.lookupServerUploadEnabled=false] whether uploading to the lookup server is enabled + */ var FederationSettingsView = OC.Backbone.View.extend({ _inputFields: undefined, @@ -24,6 +31,7 @@ } else { this._config = new OC.Settings.UserSettings(); } + this.showFederationScopes = !!options.showFederationScopes; this._inputFields = [ 'displayname', @@ -71,10 +79,15 @@ _.each(this._inputFields, function(field) { var $icon = self.$('#' + field + 'form h3 > .federation-menu'); - var excludedScopes = null + var excludedScopes = [] if (fieldsWithV2Private.indexOf(field) === -1) { - excludedScopes = ['v2-private'] + excludedScopes.push('v2-private'); + } + + if (!self.showFederationScopes) { + excludedScopes.push('contacts'); + excludedScopes.push('public'); } var scopeMenu = new OC.Settings.FederationScopeMenu({ diff --git a/apps/settings/js/settings/personalInfo.js b/apps/settings/js/settings/personalInfo.js index a6055fd7a9..e71f484012 100644 --- a/apps/settings/js/settings/personalInfo.js +++ b/apps/settings/js/settings/personalInfo.js @@ -199,10 +199,12 @@ window.addEventListener('DOMContentLoaded', function () { }); + var settingsEl = $('#personal-settings') var userSettings = new OC.Settings.UserSettings(); var federationSettingsView = new OC.Settings.FederationSettingsView({ - el: '#personal-settings', - config: userSettings + el: settingsEl, + config: userSettings, + showFederationScopes: !!settingsEl.data('lookup-server-upload-enabled'), }); userSettings.on("sync", function() { diff --git a/apps/settings/templates/settings/personal/personal.info.php b/apps/settings/templates/settings/personal/personal.info.php index 84198b3c0c..60db8c8533 100644 --- a/apps/settings/templates/settings/personal/personal.info.php +++ b/apps/settings/templates/settings/personal/personal.info.php @@ -34,8 +34,8 @@ script('settings', [ ]); ?> -
-
+
+

@@ -68,9 +68,7 @@ script('settings', [

- -
@@ -125,7 +123,7 @@ script('settings', [ - +
@@ -198,9 +196,7 @@ script('settings', [ autocomplete="on" autocapitalize="none" autocorrect="off" /> - -
@@ -223,9 +219,7 @@ script('settings', [ autocomplete="on" autocapitalize="none" autocorrect="off" /> - -
@@ -279,9 +273,7 @@ script('settings', [ /> - -
@@ -335,9 +327,7 @@ script('settings', [ /> - -