Merge pull request #13362 from owncloud/fix-11442
LDAP Wizared: update user or group count only, when the multiselect is closed
This commit is contained in:
commit
d75af7ddd2
|
@ -25,7 +25,7 @@ function ExperiencedAdmin(wizard, initialState) {
|
|||
/**
|
||||
* toggles whether the admin is an experienced one or not
|
||||
*
|
||||
* @param {boolean} whether the admin is experienced or not
|
||||
* @param {boolean} isExperienced whether the admin is experienced or not
|
||||
*/
|
||||
ExperiencedAdmin.prototype.setExperienced = function(isExperienced) {
|
||||
this._isExperienced = isExperienced;
|
||||
|
|
|
@ -19,6 +19,8 @@ function LdapFilter(target, determineModeCallback) {
|
|||
|
||||
LdapFilter.prototype.activate = function() {
|
||||
if(this.activated) {
|
||||
// might be necessary, if configuration changes happened.
|
||||
this.findFeatures();
|
||||
return;
|
||||
}
|
||||
this.activated = true;
|
||||
|
@ -69,14 +71,6 @@ LdapFilter.prototype.compose = function(updateCount) {
|
|||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* this function is triggered after attribute detectors have completed in
|
||||
* LdapWizard
|
||||
*/
|
||||
LdapFilter.prototype.afterDetectorsRan = function() {
|
||||
this.updateCount();
|
||||
};
|
||||
|
||||
/**
|
||||
* this function is triggered after LDAP filters have been composed successfully
|
||||
* @param {object} result returned by the ajax call
|
||||
|
@ -99,11 +93,15 @@ LdapFilter.prototype.determineMode = function() {
|
|||
function(result) {
|
||||
var property = 'ldap' + filter.target + 'FilterMode';
|
||||
filter.mode = parseInt(result.changes[property], 10);
|
||||
if(filter.mode === LdapWizard.filterModeRaw &&
|
||||
$('#raw'+filter.target+'FilterContainer').hasClass('invisible')) {
|
||||
var rawContainerIsInvisible =
|
||||
$('#raw'+filter.target+'FilterContainer').hasClass('invisible');
|
||||
if ( filter.mode === LdapWizard.filterModeRaw
|
||||
&& rawContainerIsInvisible
|
||||
) {
|
||||
LdapWizard['toggleRaw'+filter.target+'Filter']();
|
||||
} else if(filter.mode === LdapWizard.filterModeAssisted &&
|
||||
!$('#raw'+filter.target+'FilterContainer').hasClass('invisible')) {
|
||||
} else if ( filter.mode === LdapWizard.filterModeAssisted
|
||||
&& !rawContainerIsInvisible
|
||||
) {
|
||||
LdapWizard['toggleRaw'+filter.target+'Filter']();
|
||||
} else {
|
||||
console.log('LDAP Wizard determineMode: returned mode was »' +
|
||||
|
@ -142,8 +140,15 @@ LdapFilter.prototype.unlock = function() {
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* resets this.foundFeatures so that LDAP queries can be fired again to retrieve
|
||||
* objectClasses, groups, etc.
|
||||
*/
|
||||
LdapFilter.prototype.reAllowFeatureLookup = function () {
|
||||
this.foundFeatures = false;
|
||||
};
|
||||
|
||||
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;
|
||||
var objcEl, avgrEl;
|
||||
|
@ -167,7 +172,6 @@ LdapFilter.prototype.findFeatures = function() {
|
|||
/**
|
||||
* this function is triggered before user and group counts are executed
|
||||
* resolving the passed status variable will fire up counting
|
||||
* @param {object} status an instance of $.Deferred
|
||||
*/
|
||||
LdapFilter.prototype.beforeUpdateCount = function() {
|
||||
var status = $.Deferred();
|
||||
|
|
|
@ -149,6 +149,7 @@ var LdapWizard = {
|
|||
loginFilter: false,
|
||||
groupFilter: false,
|
||||
ajaxRequests: {},
|
||||
lastTestSuccessful: true,
|
||||
|
||||
ajax: function(param, fnOnSuccess, fnOnError, reqID) {
|
||||
if(!_.isUndefined(reqID)) {
|
||||
|
@ -207,7 +208,7 @@ var LdapWizard = {
|
|||
},
|
||||
|
||||
basicStatusCheck: function() {
|
||||
//criterias to continue from the first tab
|
||||
//criteria to continue from the first tab
|
||||
// - host, port, user filter, agent dn, password, base dn
|
||||
var host = $('#ldap_host').val();
|
||||
var port = $('#ldap_port').val();
|
||||
|
@ -224,7 +225,7 @@ var LdapWizard = {
|
|||
|
||||
|
||||
blacklistAdd: function(id) {
|
||||
obj = $('#'+id);
|
||||
var obj = $('#' + id);
|
||||
if(!(obj[0].hasOwnProperty('multiple') && obj[0]['multiple'] === true)) {
|
||||
//no need to blacklist multiselect
|
||||
LdapWizard.saveBlacklist[id] = true;
|
||||
|
@ -242,14 +243,14 @@ var LdapWizard = {
|
|||
},
|
||||
|
||||
checkBaseDN: function() {
|
||||
host = $('#ldap_host').val();
|
||||
port = $('#ldap_port').val();
|
||||
user = $('#ldap_dn').val();
|
||||
pass = $('#ldap_agent_password').val();
|
||||
var host = $('#ldap_host').val();
|
||||
var port = $('#ldap_port').val();
|
||||
var user = $('#ldap_dn').val();
|
||||
var pass = $('#ldap_agent_password').val();
|
||||
|
||||
//FIXME: determine base dn with anonymous access
|
||||
if(host && port && user && pass) {
|
||||
param = 'action=guessBaseDN'+
|
||||
var param = 'action=guessBaseDN'+
|
||||
'&ldap_serverconfig_chooser='+
|
||||
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
||||
|
||||
|
@ -276,11 +277,11 @@ var LdapWizard = {
|
|||
},
|
||||
|
||||
checkPort: function() {
|
||||
host = $('#ldap_host').val();
|
||||
port = $('#ldap_port').val();
|
||||
var host = $('#ldap_host').val();
|
||||
var port = $('#ldap_port').val();
|
||||
|
||||
if(host && !port) {
|
||||
param = 'action=guessPortAndTLS'+
|
||||
var param = 'action=guessPortAndTLS'+
|
||||
'&ldap_serverconfig_chooser='+
|
||||
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
||||
|
||||
|
@ -307,7 +308,7 @@ var LdapWizard = {
|
|||
},
|
||||
|
||||
controlBack: function() {
|
||||
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
||||
var curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
||||
if(curTabIndex == 0) {
|
||||
return;
|
||||
}
|
||||
|
@ -316,7 +317,7 @@ var LdapWizard = {
|
|||
},
|
||||
|
||||
controlContinue: function() {
|
||||
curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
||||
var curTabIndex = $('#ldapSettings').tabs('option', 'active');
|
||||
if(curTabIndex == 3) {
|
||||
return;
|
||||
}
|
||||
|
@ -529,7 +530,7 @@ var LdapWizard = {
|
|||
if(type !== 'User' && type !== 'Group') {
|
||||
return false;
|
||||
}
|
||||
param = 'action=determine'+encodeURIComponent(type)+'ObjectClasses'+
|
||||
var param = 'action=determine'+encodeURIComponent(type)+'ObjectClasses'+
|
||||
'&ldap_serverconfig_chooser='+
|
||||
encodeURIComponent($('#ldap_serverconfig_chooser').val());
|
||||
|
||||
|
@ -571,11 +572,11 @@ var LdapWizard = {
|
|||
functionalityCheck: function() {
|
||||
//criteria to enable the connection:
|
||||
// - host, port, basedn, user filter, login filter
|
||||
host = $('#ldap_host').val();
|
||||
port = $('#ldap_port').val();
|
||||
base = $('#ldap_base').val();
|
||||
userfilter = $('#ldap_userlist_filter').val();
|
||||
loginfilter = $('#ldap_login_filter').val();
|
||||
var host = $('#ldap_host').val();
|
||||
var port = $('#ldap_port').val();
|
||||
var base = $('#ldap_base').val();
|
||||
var userfilter = $('#ldap_userlist_filter').val();
|
||||
var loginfilter = $('#ldap_login_filter').val();
|
||||
|
||||
//FIXME: activates a manually deactivated configuration.
|
||||
if(host && port && base && userfilter && loginfilter) {
|
||||
|
@ -619,6 +620,7 @@ var LdapWizard = {
|
|||
LdapWizard.detectorsRunInXPMode = 0;
|
||||
LdapWizard.instantiateFilters();
|
||||
LdapWizard.admin.setExperienced($('#ldap_experienced_admin').is(':checked'));
|
||||
LdapWizard.lastTestSuccessful = true;
|
||||
LdapWizard.basicStatusCheck();
|
||||
LdapWizard.functionalityCheck();
|
||||
LdapWizard.isConfigurationActiveControlLocked = false;
|
||||
|
@ -760,7 +762,19 @@ var LdapWizard = {
|
|||
}
|
||||
},
|
||||
|
||||
processChanges: function(triggerObj) {
|
||||
/**
|
||||
* allows UserFilter, LoginFilter and GroupFilter to lookup objectClasses
|
||||
* and similar again. This should be called after essential changes, e.g.
|
||||
* Host or BaseDN changes, or positive functionality check
|
||||
*
|
||||
*/
|
||||
allowFilterFeatureSearch: function () {
|
||||
LdapWizard.userFilter.reAllowFeatureLookup();
|
||||
LdapWizard.loginFilter.reAllowFeatureLookup();
|
||||
LdapWizard.groupFilter.reAllowFeatureLookup();
|
||||
},
|
||||
|
||||
processChanges: function (triggerObj) {
|
||||
LdapWizard.hideInfoBox();
|
||||
|
||||
if(triggerObj.id === 'ldap_host'
|
||||
|
@ -771,6 +785,7 @@ var LdapWizard = {
|
|||
if($('#ldap_port').val()) {
|
||||
//if Port is already set, check BaseDN
|
||||
LdapWizard.checkBaseDN();
|
||||
LdapWizard.allowFilterFeatureSearch();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -804,15 +819,33 @@ var LdapWizard = {
|
|||
LdapWizard._save(inputObj, val);
|
||||
},
|
||||
|
||||
/**
|
||||
* updates user or group count on multiSelect close. Resets the event
|
||||
* function subsequently.
|
||||
*
|
||||
* @param {LdapFilter} filter
|
||||
* @param {Object} $multiSelectObj
|
||||
*/
|
||||
onMultiSelectClose: function(filter, $multiSelectObj) {
|
||||
filter.updateCount();
|
||||
$multiSelectObj.multiselect({close: function(){}});
|
||||
},
|
||||
|
||||
saveMultiSelect: function(originalObj, resultObj) {
|
||||
values = '';
|
||||
for(i = 0; i < resultObj.length; i++) {
|
||||
var values = '';
|
||||
for(var i = 0; i < resultObj.length; i++) {
|
||||
values = values + "\n" + resultObj[i].value;
|
||||
}
|
||||
LdapWizard._save($('#'+originalObj)[0], $.trim(values));
|
||||
var $multiSelectObj = $('#'+originalObj);
|
||||
var updateCount = !$multiSelectObj.multiselect("isOpen");
|
||||
var applyUpdateOnCloseToFilter;
|
||||
if(originalObj === 'ldap_userfilter_objectclass'
|
||||
|| originalObj === 'ldap_userfilter_groups') {
|
||||
LdapWizard.userFilter.compose(true);
|
||||
LdapWizard.userFilter.compose(updateCount);
|
||||
if(!updateCount) {
|
||||
applyUpdateOnCloseToFilter = LdapWizard.userFilter;
|
||||
}
|
||||
//when user filter is changed afterwards, login filter needs to
|
||||
//be adjusted, too
|
||||
if(!LdapWizard.loginFilter) {
|
||||
|
@ -823,7 +856,19 @@ var LdapWizard = {
|
|||
LdapWizard.loginFilter.compose();
|
||||
} else if(originalObj === 'ldap_groupfilter_objectclass'
|
||||
|| originalObj === 'ldap_groupfilter_groups') {
|
||||
LdapWizard.groupFilter.compose(true);
|
||||
LdapWizard.groupFilter.compose(updateCount);
|
||||
if(!updateCount) {
|
||||
applyUpdateOnCloseToFilter = LdapWizard.groupFilter;
|
||||
}
|
||||
}
|
||||
|
||||
if(applyUpdateOnCloseToFilter instanceof LdapFilter) {
|
||||
$multiSelectObj.multiselect({
|
||||
close: function () {
|
||||
LdapWizard.onMultiSelectClose(
|
||||
applyUpdateOnCloseToFilter, $multiSelectObj);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -1002,6 +1047,10 @@ var LdapWizard = {
|
|||
$('.ldap_config_state_indicator').addClass('ldap_grey');
|
||||
$('.ldap_config_state_indicator_sign').removeClass('error');
|
||||
$('.ldap_config_state_indicator_sign').addClass('success');
|
||||
if(!LdapWizard.lastTestSuccessful) {
|
||||
LdapWizard.lastTestSuccessful = true;
|
||||
LdapWizard.allowFilterFeatureSearch();
|
||||
}
|
||||
},
|
||||
//onError
|
||||
function(result) {
|
||||
|
@ -1011,6 +1060,7 @@ var LdapWizard = {
|
|||
$('.ldap_config_state_indicator').removeClass('ldap_grey');
|
||||
$('.ldap_config_state_indicator_sign').addClass('error');
|
||||
$('.ldap_config_state_indicator_sign').removeClass('success');
|
||||
LdapWizard.lastTestSuccessful = false;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue