diff --git a/apps/user_ldap/css/settings.css b/apps/user_ldap/css/settings.css index 48a8626ea9..0dfcf47425 100644 --- a/apps/user_ldap/css/settings.css +++ b/apps/user_ldap/css/settings.css @@ -82,6 +82,10 @@ margin: 5px; } +.ldap_count { + line-height: 45px; +} + .ldapSettingControls { margin-top: 3px; } diff --git a/apps/user_ldap/js/experiencedAdmin.js b/apps/user_ldap/js/experiencedAdmin.js index 96b4bcad6c..4b30ed44d0 100644 --- a/apps/user_ldap/js/experiencedAdmin.js +++ b/apps/user_ldap/js/experiencedAdmin.js @@ -13,7 +13,10 @@ */ function ExperiencedAdmin(wizard, initialState) { this.wizard = wizard; - this.isExperienced = false; + this.isExperienced = initialState; + if(this.isExperienced) { + this.hideEntryCounters(); + } } @@ -22,10 +25,13 @@ function ExperiencedAdmin(wizard, initialState) { * * @param {boolean} whether the admin is experienced or not */ -ExperiencedAdmin.prototype.toggle = function(isExperienced) { +ExperiencedAdmin.prototype.setExperienced = function(isExperienced) { this.isExperienced = isExperienced; if(this.isExperienced) { this.enableRawMode(); + this.hideEntryCounters(); + } else { + this.showEntryCounters(); } }; @@ -41,7 +47,7 @@ ExperiencedAdmin.prototype.isExperienced = function() { /** * switches all LDAP filters from Assisted to Raw mode. */ -ExperiencedAdmin.prototype.enableRawMode = function () { +ExperiencedAdmin.prototype.enableRawMode = function() { containers = { 'toggleRawGroupFilter': '#rawGroupFilterContainer', 'toggleRawLoginFilter': '#rawLoginFilterContainer', @@ -53,6 +59,40 @@ ExperiencedAdmin.prototype.enableRawMode = function () { this.wizard[method](); } }; - - +}; + +ExperiencedAdmin.prototype.updateUserTab = function(mode) { + this._updateTab(mode, $('#ldap_user_count')); +} + +ExperiencedAdmin.prototype.updateGroupTab = function(mode) { + this._updateTab(mode, $('#ldap_group_count')); +} + +ExperiencedAdmin.prototype._updateTab = function(mode, $countEl) { + if(mode === LdapWizard.filterModeAssisted) { + $countEl.removeClass('hidden'); + } else if(!this.isExperienced) { + $countEl.removeClass('hidden'); + } else { + $countEl.addClass('hidden'); + } +} + +/** + * hide user and group counters, they will be displayed on demand only + */ +ExperiencedAdmin.prototype.hideEntryCounters = function() { + $('#ldap_user_count').addClass('hidden'); + $('#ldap_group_count').addClass('hidden'); + $('.ldapGetEntryCount').removeClass('hidden'); +}; + +/** +* shows user and group counters, they will be displayed on demand only +*/ +ExperiencedAdmin.prototype.showEntryCounters = function() { + $('#ldap_user_count').removeClass('hidden'); + $('#ldap_group_count').removeClass('hidden'); + $('.ldapGetEntryCount').addClass('hidden'); }; diff --git a/apps/user_ldap/js/ldapFilter.js b/apps/user_ldap/js/ldapFilter.js index cd03ff9b5b..2d3ca8b369 100644 --- a/apps/user_ldap/js/ldapFilter.js +++ b/apps/user_ldap/js/ldapFilter.js @@ -113,6 +113,10 @@ LdapFilter.prototype.setMode = function(mode) { } } +LdapFilter.prototype.getMode = function() { + return this.mode; +} + LdapFilter.prototype.unlock = function() { this.locked = false; if(this.lazyRunCompose) { @@ -122,6 +126,7 @@ LdapFilter.prototype.unlock = function() { }; LdapFilter.prototype.findFeatures = function() { + //TODO: reset this.foundFeatures when any base DN changes if(!this.foundFeatures && !this.locked && this.mode === LdapWizard.filterModeAssisted) { this.foundFeatures = true; if(this.target === 'User') { @@ -139,4 +144,12 @@ LdapFilter.prototype.findFeatures = function() { LdapWizard.findObjectClasses(objcEl, this.target); LdapWizard.findAvailableGroups(avgrEl, this.target + "s"); } -} +}; + +LdapFilter.prototype.updateCount = function() { + if(this.target === 'User') { + LdapWizard.countUsers(); + } else if (this.target === 'Group') { + LdapWizard.countGroups(); + } +}; diff --git a/apps/user_ldap/js/settings.js b/apps/user_ldap/js/settings.js index cf7223d3fa..9878a2e326 100644 --- a/apps/user_ldap/js/settings.js +++ b/apps/user_ldap/js/settings.js @@ -317,27 +317,30 @@ var LdapWizard = { } }, - _countThings: function(method) { + _countThings: function(method, spinnerID) { param = 'action='+method+ '&ldap_serverconfig_chooser='+ encodeURIComponent($('#ldap_serverconfig_chooser').val()); + LdapWizard.showSpinner(spinnerID); LdapWizard.ajax(param, function(result) { LdapWizard.applyChanges(result); + LdapWizard.hideSpinner(spinnerID); }, function (result) { - // error handling + OC.Notification.show('Counting the entries failed with, ' + result.message); + LdapWizard.hideSpinner(spinnerID); } ); }, countGroups: function() { - LdapWizard._countThings('countGroups'); + LdapWizard._countThings('countGroups', '#ldap_group_count'); }, countUsers: function() { - LdapWizard._countThings('countUsers'); + LdapWizard._countThings('countUsers', '#ldap_user_count'); }, detectEmailAttribute: function() { @@ -531,6 +534,7 @@ var LdapWizard = { init: function() { LdapWizard.instantiateFilters(); + LdapWizard.admin.setExperienced($('#ldap_experienced_admin').is(':checked')); LdapWizard.basicStatusCheck(); LdapWizard.functionalityCheck(); LdapWizard.isConfigurationActiveControlLocked = false; @@ -574,6 +578,13 @@ var LdapWizard = { LdapWizard.userFilter = new LdapFilter('User', function(mode) { LdapWizard.userFilter.findFeatures(); }); + $('#rawUserFilterContainer .ldapGetEntryCount').click(function(event) { + event.preventDefault(); + $('#ldap_user_count').text(''); + LdapWizard.userFilter.updateCount(); + LdapWizard.detectEmailAttribute(); + $('#ldap_user_count').removeClass('hidden'); + }); delete LdapWizard.loginFilter; LdapWizard.loginFilter = new LdapFilter('Login', function(mode) { @@ -584,6 +595,13 @@ var LdapWizard = { LdapWizard.groupFilter = new LdapFilter('Group', function(mode) { LdapWizard.groupFilter.findFeatures(); }); + $('#rawGroupFilterContainer .ldapGetEntryCount').click(function(event) { + event.preventDefault(); + $('#ldap_group_count').text(''); + LdapWizard.groupFilter.updateCount(); + LdapWizard.detectGroupMemberAssoc(); + $('#ldap_group_count').removeClass('hidden'); + }); }, userFilterObjectClassesHasRun: false, @@ -638,10 +656,10 @@ var LdapWizard = { } } - if(triggerObj.id == 'ldap_userlist_filter') { + if(triggerObj.id == 'ldap_userlist_filter' && !LdapWizard.admin.isExperienced()) { LdapWizard.countUsers(); LdapWizard.detectEmailAttribute(); - } else if(triggerObj.id == 'ldap_group_filter') { + } else if(triggerObj.id == 'ldap_group_filter' && !LdapWizard.admin.isExperienced()) { LdapWizard.countGroups(); LdapWizard.detectGroupMemberAssoc(); } @@ -766,6 +784,7 @@ var LdapWizard = { 'groupFilterGroupSelectState', 'ldapGroupFilterMode' ); + LdapWizard.admin.updateGroupTab(LdapWizard.groupFilter.getMode()); }, toggleRawLoginFilter: function() { @@ -801,6 +820,7 @@ var LdapWizard = { 'userFilterGroupSelectState', 'ldapUserFilterMode' ); + LdapWizard.admin.updateUserTab(LdapWizard.userFilter.getMode()); }, updateStatusIndicator: function(isComplete) { @@ -956,6 +976,6 @@ $(document).ready(function() { expAdminCB = $('#ldap_experienced_admin'); LdapWizard.admin = new ExperiencedAdmin(LdapWizard, expAdminCB.is(':checked')); expAdminCB.change(function() { - LdapWizard.admin.toggle($(this).is(':checked')); + LdapWizard.admin.setExperienced($(this).is(':checked')); }); }); diff --git a/apps/user_ldap/templates/part.wizard-groupfilter.php b/apps/user_ldap/templates/part.wizard-groupfilter.php index e460997b1b..1953d2eaa6 100644 --- a/apps/user_ldap/templates/part.wizard-groupfilter.php +++ b/apps/user_ldap/templates/part.wizard-groupfilter.php @@ -30,13 +30,16 @@ placeholder="t('Raw LDAP filter'));?>" title="t('The filter specifies which LDAP groups shall have access to the %s instance.', $theme->getName()));?>" /> +

-

+

0 t('groups found'));?>

- \ No newline at end of file + diff --git a/apps/user_ldap/templates/part.wizard-userfilter.php b/apps/user_ldap/templates/part.wizard-userfilter.php index eff9f89ce2..99a6e75370 100644 --- a/apps/user_ldap/templates/part.wizard-userfilter.php +++ b/apps/user_ldap/templates/part.wizard-userfilter.php @@ -30,13 +30,16 @@ placeholder="t('Raw LDAP filter'));?>" title="t('The filter specifies which LDAP users shall have access to the %s instance.', $theme->getName()));?>" /> +

-

+

0 t('users found'));?>

- \ No newline at end of file +