summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2014-10-08 13:06:18 +0200
committerArthur Schiwon <blizzz@owncloud.com>2014-10-08 13:06:18 +0200
commit7ba787e649de83da03ea1809d54d74fedc31a9ea (patch)
tree0f457c33be488081f4c2ad11f4ae9cead7f83164 /apps
parentb6fc7f5599a08ab047e10775b4071514c7cd170d (diff)
downloadnextcloud-server-7ba787e649de83da03ea1809d54d74fedc31a9ea.tar.gz
nextcloud-server-7ba787e649de83da03ea1809d54d74fedc31a9ea.zip
user and group counts are only upated on demand in experienced mode
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/css/settings.css4
-rw-r--r--apps/user_ldap/js/experiencedAdmin.js46
-rw-r--r--apps/user_ldap/js/ldapFilter.js15
-rw-r--r--apps/user_ldap/js/settings.js34
-rw-r--r--apps/user_ldap/templates/part.wizard-groupfilter.php7
-rw-r--r--apps/user_ldap/templates/part.wizard-userfilter.php7
6 files changed, 98 insertions, 15 deletions
diff --git a/apps/user_ldap/css/settings.css b/apps/user_ldap/css/settings.css
index 48a8626ea9a..0dfcf474256 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 96b4bcad6c9..4b30ed44d00 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 cd03ff9b5bf..2d3ca8b3691 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 cf7223d3fa0..9878a2e326e 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 e460997b1bf..1953d2eaa6e 100644
--- a/apps/user_ldap/templates/part.wizard-groupfilter.php
+++ b/apps/user_ldap/templates/part.wizard-groupfilter.php
@@ -30,13 +30,16 @@
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>
diff --git a/apps/user_ldap/templates/part.wizard-userfilter.php b/apps/user_ldap/templates/part.wizard-userfilter.php
index eff9f89ce2c..99a6e75370b 100644
--- a/apps/user_ldap/templates/part.wizard-userfilter.php
+++ b/apps/user_ldap/templates/part.wizard-userfilter.php
@@ -30,13 +30,16 @@
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>