]> source.dussan.org Git - nextcloud-server.git/commitdiff
user and group counts are only upated on demand in experienced mode
authorArthur Schiwon <blizzz@owncloud.com>
Wed, 8 Oct 2014 11:06:18 +0000 (13:06 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Wed, 8 Oct 2014 11:06:18 +0000 (13:06 +0200)
apps/user_ldap/css/settings.css
apps/user_ldap/js/experiencedAdmin.js
apps/user_ldap/js/ldapFilter.js
apps/user_ldap/js/settings.js
apps/user_ldap/templates/part.wizard-groupfilter.php
apps/user_ldap/templates/part.wizard-userfilter.php

index 48a8626ea9aedca8c031424b7d15fbe817f88a6b..0dfcf47425688bc2ac0d07d59a4eda878666afbb 100644 (file)
        margin: 5px;
 }
 
+.ldap_count {
+       line-height: 45px;
+}
+
 .ldapSettingControls {
        margin-top: 3px;
 }
index 96b4bcad6c971a77239cad84afdbe334d47a6c1f..4b30ed44d007ac0aba0b8c852b69566ea5059449 100644 (file)
  */
 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');
 };
index cd03ff9b5bf8822bf2d6a0976f7f6519de852d13..2d3ca8b3691720e6087a6e4b995752a4c06356a1 100644 (file)
@@ -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();
+       }
+};
index cf7223d3fa028b67efaefa33f716c6bc144af6ed..9878a2e326e0b8c442a8fd51a8966b4e93ea51db 100644 (file)
@@ -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'));
        });
 });
index e460997b1bf6e92d0b578f67a3aff69b48727e60..1953d2eaa6e0836084a8b83a1407f44b89e7c136 100644 (file)
                        placeholder="<?php p($l->t('Raw LDAP filter'));?>"
                        title="<?php p($l->t('The filter specifies which LDAP groups shall have access to the %s instance.', $theme->getName()));?>"
                        />
+                       <button class="ldapGetEntryCount hidden" name="ldapGetEntryCount" type="button">
+                               <?php p($l->t('Test Filter'));?>
+                       </button>
                </p>
                <p>
                        <div class="ldapWizardInfo invisible">&nbsp;</div>
                </p>
-               <p>
+               <p class="ldap_count">
                        <span id="ldap_group_count">0 <?php p($l->t('groups found'));?></span>
                </p>
                <?php print_unescaped($_['wizardControls']); ?>
        </div>
-</fieldset>
\ No newline at end of file
+</fieldset>
index eff9f89ce2cf1f33840f4a7c0b9905c1d0af36aa..99a6e75370b4a4443d9bedf0cb3315ca5e945b92 100644 (file)
                        placeholder="<?php p($l->t('Raw LDAP filter'));?>"
                        title="<?php p($l->t('The filter specifies which LDAP users shall have access to the %s instance.', $theme->getName()));?>"
                        />
+                       <button class="ldapGetEntryCount hidden" name="ldapGetEntryCount" type="button">
+                               <?php p($l->t('Test Filter'));?>
+                       </button>
                </p>
                <p>
                        <div class="ldapWizardInfo invisible">&nbsp;</div>
                </p>
-               <p>
+               <p class="ldap_count">
                        <span id="ldap_user_count">0 <?php p($l->t('users found'));?></span>
                </p>
                <?php print_unescaped($_['wizardControls']); ?>
        </div>
-</fieldset>
\ No newline at end of file
+</fieldset>