From 53dc30af4fb09dabdd342ccd5dee9f20eaac52b0 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 18 Apr 2014 14:29:45 +0200 Subject: Add option to enable app for specific groups --- settings/js/apps.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index 05db4c9a048..2093242032a 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -88,12 +88,35 @@ OC.Settings.Apps = OC.Settings.Apps || { } else { page.find(".warning").hide(); } + + $('#group_select > option').each(function (i, el) { + if (app.groups.length === 0 || app.groups.indexOf(el.value) >= 0) { + $(el).attr('selected', 'selected'); + } else { + $(el).attr('selected', null); + } + }); + page.find("div.multiselect").parent().remove(); + if (app.active) { + if (app.groups.length) { + $('#group_select').multiSelect(); + page.find("#groups_enable").attr('checked','checked'); + } else { + page.find("#groups_enable").attr('checked', null); + } + page.find("#groups_enable").show(); + page.find("label[for='groups_enable']").show(); + } else { + page.find("#groups_enable").hide(); + page.find("label[for='groups_enable']").hide(); + } }, - enableApp:function(appid, active, element) { + enableApp:function(appid, active, element, groups) { console.log('enableApp:', appid, active, element); + groups = groups || []; var appitem=$('#app-navigation ul li[data-id="'+appid+'"]'); element.val(t('settings','Please wait....')); - if(active) { + if(active && !groups.length) { $.post(OC.filePath('settings','ajax','disableapp.php'),{appid:appid},function(result) { if(!result || result.status !== 'success') { if (result.data && result.data.message) { @@ -108,14 +131,17 @@ OC.Settings.Apps = OC.Settings.Apps || { } else { appitem.data('active',false); + appitem.data('groups', ''); element.data('active',false); OC.Settings.Apps.removeNavigation(appid); appitem.removeClass('active'); element.val(t('settings','Enable')); + element.parent().find("#groups_enable").hide(); + element.parent().find("label[for='groups_enable']").hide(); } },'json'); } else { - $.post(OC.filePath('settings','ajax','enableapp.php'),{appid:appid},function(result) { + $.post(OC.filePath('settings','ajax','enableapp.php'),{appid: appid, groups: groups},function(result) { if(!result || result.status !== 'success') { if (result.data && result.data.message) { OC.Settings.Apps.showErrorMessage(result.data.message); @@ -132,6 +158,13 @@ OC.Settings.Apps = OC.Settings.Apps || { element.data('active',true); appitem.addClass('active'); element.val(t('settings','Disable')); + element.parent().find("#groups_enable").show(); + element.parent().find("label[for='groups_enable']").show(); + if (groups) { + appitem.data('groups', JSON.stringify(groups)); + } else { + appitem.data('groups', ''); + } } },'json') .fail(function() { @@ -244,6 +277,7 @@ OC.Settings.Apps = OC.Settings.Apps || { $(document).ready(function(){ $('#app-navigation ul li').each(function(index,li){ var app = OC.get('appData_'+$(li).data('id')); + app.groups= $(li).data('groups') || []; $(li).data('app',app); $(this).find('span.hidden').remove(); }); @@ -281,6 +315,15 @@ $(document).ready(function(){ } }); + $('#group_select').change(function() { + var element = $('#app-content input.enable'); + var groups = $(this).val(); + var appid = element.data('appid'); + if (appid) { + OC.Settings.Apps.enableApp(appid, false, element, groups); + } + }); + if(appid) { var item = $('#app-navigation ul li[data-id="'+appid+'"]'); if(item) { @@ -289,4 +332,16 @@ $(document).ready(function(){ $('#app-navigation').animate({scrollTop: $(item).offset().top-70}, 'slow','swing'); } } + + $("#groups_enable").change(function() { + if (this.checked) { + $("div.multiselect").parent().remove(); + $('#group_select').multiSelect(); + } else { + $('#group_select').hide().val(null); + $("div.multiselect").parent().remove(); + } + + $('#group_select').change(); + }); }); -- cgit v1.2.3 From 727277945670f339e91d0f6aef618b9cf43618d2 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 21 Apr 2014 13:00:29 +0200 Subject: Prevent js error --- settings/js/apps.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index 2093242032a..f0e40232ee0 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -277,7 +277,9 @@ OC.Settings.Apps = OC.Settings.Apps || { $(document).ready(function(){ $('#app-navigation ul li').each(function(index,li){ var app = OC.get('appData_'+$(li).data('id')); - app.groups= $(li).data('groups') || []; + if (app) { + app.groups= $(li).data('groups') || []; + } $(li).data('app',app); $(this).find('span.hidden').remove(); }); -- cgit v1.2.3 From 7e07ff6f4f0c4649a6d81925a05bd01eb816c4ba Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 28 Apr 2014 13:27:32 +0200 Subject: Disable enabling apps by groups for filesystem, authentication and loggin apps --- settings/js/apps.js | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index f0e40232ee0..a9478c043a2 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -89,26 +89,33 @@ OC.Settings.Apps = OC.Settings.Apps || { page.find(".warning").hide(); } - $('#group_select > option').each(function (i, el) { - if (app.groups.length === 0 || app.groups.indexOf(el.value) >= 0) { - $(el).attr('selected', 'selected'); - } else { - $(el).attr('selected', null); - } - }); page.find("div.multiselect").parent().remove(); - if (app.active) { - if (app.groups.length) { - $('#group_select').multiSelect(); - page.find("#groups_enable").attr('checked','checked'); - } else { - page.find("#groups_enable").attr('checked', null); - } - page.find("#groups_enable").show(); - page.find("label[for='groups_enable']").show(); - } else { + if(OC.Settings.Apps.isType(app, 'filesystem') || OC.Settings.Apps.isType(app, 'prelogin') || + OC.Settings.Apps.isType(app, 'authentication') || OC.Settings.Apps.isType(app, 'logging')) { page.find("#groups_enable").hide(); page.find("label[for='groups_enable']").hide(); + page.find("#groups_enable").attr('checked', null); + } else { + $('#group_select > option').each(function (i, el) { + if (app.groups.length === 0 || app.groups.indexOf(el.value) >= 0) { + $(el).attr('selected', 'selected'); + } else { + $(el).attr('selected', null); + } + }); + if (app.active) { + if (app.groups.length) { + $('#group_select').multiSelect(); + page.find("#groups_enable").attr('checked','checked'); + } else { + page.find("#groups_enable").attr('checked', null); + } + page.find("#groups_enable").show(); + page.find("label[for='groups_enable']").show(); + } else { + page.find("#groups_enable").hide(); + page.find("label[for='groups_enable']").hide(); + } } }, enableApp:function(appid, active, element, groups) { @@ -271,6 +278,9 @@ OC.Settings.Apps = OC.Settings.Apps || { showErrorMessage: function(message) { $('.appinfo .warning').show(); $('.appinfo .warning').text(message); + }, + isType: function(app, type){ + return app.types && app.types.indexOf(type) !== -1; } }; @@ -278,6 +288,7 @@ $(document).ready(function(){ $('#app-navigation ul li').each(function(index,li){ var app = OC.get('appData_'+$(li).data('id')); if (app) { + console.log(app); app.groups= $(li).data('groups') || []; } $(li).data('app',app); -- cgit v1.2.3 From e3567242b254140129fc0f0ef057e5b38beed721 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 28 Apr 2014 14:12:13 +0200 Subject: Remove debug statements --- settings/js/apps.js | 3 --- 1 file changed, 3 deletions(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index a9478c043a2..d77d0708863 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -119,7 +119,6 @@ OC.Settings.Apps = OC.Settings.Apps || { } }, enableApp:function(appid, active, element, groups) { - console.log('enableApp:', appid, active, element); groups = groups || []; var appitem=$('#app-navigation ul li[data-id="'+appid+'"]'); element.val(t('settings','Please wait....')); @@ -185,7 +184,6 @@ OC.Settings.Apps = OC.Settings.Apps || { } }, updateApp:function(appid, element) { - console.log('updateApp:', appid, element); element.val(t('settings','Updating....')); $.post(OC.filePath('settings','ajax','updateapp.php'),{appid:appid},function(result) { if(!result || result.status !== 'success') { @@ -288,7 +286,6 @@ $(document).ready(function(){ $('#app-navigation ul li').each(function(index,li){ var app = OC.get('appData_'+$(li).data('id')); if (app) { - console.log(app); app.groups= $(li).data('groups') || []; } $(li).data('app',app); -- cgit v1.2.3 From 953e194245a519eebce0e36cd8ac27a59e8657bd Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 6 May 2014 12:41:06 +0200 Subject: Dont show group settings for login, filesystem, etc apps after enabling them --- settings/js/apps.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index d77d0708863..eec5532d5ab 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -144,6 +144,8 @@ OC.Settings.Apps = OC.Settings.Apps || { element.val(t('settings','Enable')); element.parent().find("#groups_enable").hide(); element.parent().find("label[for='groups_enable']").hide(); + var app = OC.get('appData_' + appid); + app.active = false; } },'json'); } else { @@ -164,12 +166,20 @@ OC.Settings.Apps = OC.Settings.Apps || { element.data('active',true); appitem.addClass('active'); element.val(t('settings','Disable')); - element.parent().find("#groups_enable").show(); - element.parent().find("label[for='groups_enable']").show(); - if (groups) { - appitem.data('groups', JSON.stringify(groups)); + var app = OC.get('appData_' + appid); + app.active = true; + if (OC.Settings.Apps.isType(app, 'filesystem') || OC.Settings.Apps.isType(app, 'prelogin') || + OC.Settings.Apps.isType(app, 'authentication') || OC.Settings.Apps.isType(app, 'logging')) { + element.parent().find("#groups_enable").hide(); + element.parent().find("label[for='groups_enable']").hide(); } else { - appitem.data('groups', ''); + element.parent().find("#groups_enable").show(); + element.parent().find("label[for='groups_enable']").show(); + if (groups) { + appitem.data('groups', JSON.stringify(groups)); + } else { + appitem.data('groups', ''); + } } } },'json') -- cgit v1.2.3 From 0f82b8efb318e30a97bf7033776cc7d330d73d1d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 8 May 2014 11:18:41 +0200 Subject: Preserve changed groups when switching between apps --- settings/js/apps.js | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index eec5532d5ab..f50914157a6 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -341,6 +341,11 @@ $(document).ready(function(){ var appid = element.data('appid'); if (appid) { OC.Settings.Apps.enableApp(appid, false, element, groups); + var li = $('[data-id="'+appid+'"'); + var app = OC.get('appData_' + $(li).data('id')); + app.groups = groups; + li.data('groups', groups); + li.attr('data-groups', JSON.stringify(groups)); } }); -- cgit v1.2.3 From 49f1e4a81172805ca9f084d82fce40286671ce8a Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 8 May 2014 18:07:06 +0200 Subject: Fix syntax error --- settings/js/apps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index f50914157a6..b1c28498266 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -341,7 +341,7 @@ $(document).ready(function(){ var appid = element.data('appid'); if (appid) { OC.Settings.Apps.enableApp(appid, false, element, groups); - var li = $('[data-id="'+appid+'"'); + var li = $('[data-id="'+appid+'"]'); var app = OC.get('appData_' + $(li).data('id')); app.groups = groups; li.data('groups', groups); -- cgit v1.2.3