From 6e0044b668b8eb99c7dfc5c47e6b8f9c9f23298c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Mon, 5 Mar 2018 16:16:43 +0100 Subject: [PATCH] Fixed sharing groups select and fixed search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- apps/workflowengine/js/admin.js | 7 +- .../js/usergroupmembershipplugin.js | 2 +- settings/js/settings.js | 121 +++++++++--------- 3 files changed, 63 insertions(+), 67 deletions(-) diff --git a/apps/workflowengine/js/admin.js b/apps/workflowengine/js/admin.js index d31add77ef..891e50c418 100644 --- a/apps/workflowengine/js/admin.js +++ b/apps/workflowengine/js/admin.js @@ -167,7 +167,7 @@ url: OC.generateUrl('settings/users/groups'), dataType: 'json', quietMillis: 100, - }).done(function(response) { + }).success(function(response) { // add admin groups $.each(response.data.adminGroups, function(id, group) { self.groups.push({ id: group.id, displayname: group.name }); @@ -177,8 +177,9 @@ self.groups.push({ id: group.id, displayname: group.name }); }); self.render(); - }).fail(function(response) { - console.error('Failure happened', response); + }).error(function(data) { + OC.Notification.error(t('workflowengine', 'Unable to retrieve the group list'), {type: 'error'}); + console.log(data); }); }, delete: function() { diff --git a/apps/workflowengine/js/usergroupmembershipplugin.js b/apps/workflowengine/js/usergroupmembershipplugin.js index c664481562..b89087bea0 100644 --- a/apps/workflowengine/js/usergroupmembershipplugin.js +++ b/apps/workflowengine/js/usergroupmembershipplugin.js @@ -42,7 +42,7 @@ $(element).css('width', '400px'); $(element).select2({ - data: groups, + data: { results: groups, text: 'displayname' }, initSelection: function (element, callback) { var groupId = element.val(); if (groupId && groups.length > 0) { diff --git a/settings/js/settings.js b/settings/js/settings.js index ad0ab758e9..dd4a3a4cc7 100644 --- a/settings/js/settings.js +++ b/settings/js/settings.js @@ -24,75 +24,70 @@ OC.Settings = _.extend(OC.Settings, { var self = this; options = options || {}; if ($elements.length > 0) { - // note: settings are saved through a "change" event registered - // on all input fields - $elements.select2(_.extend({ - placeholder: t('core', 'Groups'), - allowClear: true, - multiple: true, - toggleSelect: true, - separator: '|', - query: _.debounce(function(query) { - var queryData = {}; - if (self._cachedGroups && query.term === '') { - query.callback({results: self._cachedGroups}); - return; - } - if (query.term !== '') { - queryData = { - pattern: query.term, - filterGroups: 1 - }; - } - $.ajax({ - url: OC.generateUrl('/settings/users/groups'), - data: queryData, - dataType: 'json', - success: function(data) { - var results = []; + // Let's load the data and THEN init our select + $.ajax({ + url: OC.generateUrl('/settings/users/groups'), + dataType: 'json', + success: function(data) { + var results = []; - // add groups - if (!options.excludeAdmins) { - $.each(data.data.adminGroups, function(i, group) { - results.push({id:group.id, displayname:group.name}); + // add groups + if (!options.excludeAdmins) { + $.each(data.data.adminGroups, function(i, group) { + results.push({id:group.id, displayname:group.name}); + }); + } + $.each(data.data.groups, function(i, group) { + results.push({id:group.id, displayname:group.name}); + }); + }, + always: function() { + // note: settings are saved through a "change" event registered + // on all input fields + $elements.select2(_.extend({ + placeholder: t('core', 'Groups'), + allowClear: true, + multiple: true, + toggleSelect: true, + separator: '|', + data: { results: results, text: 'displayname' }, + initSelection: function(element, callback) { + var groups = $(element).val(); + var selection; + if (groups && results.length > 0) { + selection = _.map((groups || []).split('|').sort(), function(groupId) { + return { + id: groupId, + displayname: results.find(group =>group.id === groupId).displayname + }; + }); + } else if (groups) { + selection = _.map((groups || []).split('|').sort(), function(groupId) { + return { + id: groupId, + displayname: groupId + }; }); } - $.each(data.data.groups, function(i, group) { - results.push({id:group.id, displayname:group.name}); - }); - - if (query.term === '') { - // cache full list - self._cachedGroups = results; - } - query.callback({results: results}); + callback(selection); + }, + formatResult: function (element) { + return escapeHTML(element.displayname); + }, + formatSelection: function (element) { + return escapeHTML(element.displayname); + }, + escapeMarkup: function(m) { + // prevent double markup escape + return m; } - }); - }, 100, true), - id: function(element) { - return element.id; + }, extraOptions || {})); }, - initSelection: function(element, callback) { - var selection = _.map(($(element).val() || []).split('|').sort(), function(groupId) { - return { - id: groupId, - displayname: groupId + 'FIXME' // FIXME - }; - }); - callback(selection); - }, - formatResult: function (element) { - return escapeHTML(element.displayname); - }, - formatSelection: function (element) { - return escapeHTML(element.displayname); - }, - escapeMarkup: function(m) { - // prevent double markup escape - return m; + error : function(data) { + OC.Notification.show(t('settings', 'Unable to retrieve the group list'), {type: 'error'}); + console.log(data); } - }, extraOptions || {})); + }); } } }); -