diff --git a/apps/user_ldap/js/wizard/view.js b/apps/user_ldap/js/wizard/view.js index 7743c277d61..7dedfab75f0 100644 --- a/apps/user_ldap/js/wizard/view.js +++ b/apps/user_ldap/js/wizard/view.js @@ -167,6 +167,26 @@ OCA = OCA || {}; view.considerFunctionalityCheck(param); }, + /** + * Base DN test results will arrive here + * + * @param {WizardTabElementary} view + * @param {FeaturePayload} payload + */ + onDetectionTestCompleted: function(view, payload) { + if(payload.feature === 'TestBaseDN') { + if(payload.data.status === 'success') { + var objectsFound = parseInt(payload.data.changes.ldap_test_base, 10); + if(objectsFound > 0) { + view._updateStatusIndicator(view.STATUS_SUCCESS); + return; + } + } + view._updateStatusIndicator(view.STATUS_ERROR); + OC.Notification.showTemporary(t('user_ldap', 'The Base DN appears to be wrong')); + } + }, + /** * updates the status indicator based on the configuration test result * @@ -176,7 +196,7 @@ OCA = OCA || {}; */ onTestCompleted: function(view, result) { if(result.isSuccess) { - view._updateStatusIndicator(view.STATUS_SUCCESS); + view.configModel.requestWizard('ldap_test_base'); } else { view._updateStatusIndicator(view.STATUS_ERROR); } @@ -272,6 +292,7 @@ OCA = OCA || {}; this.configModel.on('setRequested', this.onSetRequested, this); this.configModel.on('setCompleted', this.onSetRequestDone, this); this.configModel.on('configurationTested', this.onTestCompleted, this); + this.configModel.on('receivedLdapFeature', this.onDetectionTestCompleted, this); }, /** diff --git a/apps/user_ldap/js/wizard/wizardTabElementary.js b/apps/user_ldap/js/wizard/wizardTabElementary.js index 75664275a9c..7c1a550c097 100644 --- a/apps/user_ldap/js/wizard/wizardTabElementary.js +++ b/apps/user_ldap/js/wizard/wizardTabElementary.js @@ -17,6 +17,8 @@ OCA = OCA || {}; /** @property {number} */ _configChooserNextServerNumber: 1, + baseDNTestTriggered: false, + /** * initializes the instance. Always call it after initialization. * @@ -198,8 +200,8 @@ OCA = OCA || {}; * @param {Object} configuration */ onConfigSwitch: function(view, configuration) { + this.baseDNTestTriggered = false; view.disableElement(view.managedItems.ldap_port.$relatedElements); - view.onConfigLoaded(view, configuration); }, @@ -261,7 +263,8 @@ OCA = OCA || {}; * @param {FeaturePayload} payload */ onTestResultReceived: function(view, payload) { - if(payload.feature === 'TestBaseDN') { + if(view.baseDNTestTriggered && payload.feature === 'TestBaseDN') { + view.enableElement(view.managedItems.ldap_base.$testButton); var message; if(payload.data.status === 'success') { var objectsFound = parseInt(payload.data.changes.ldap_test_base, 10); @@ -310,7 +313,9 @@ OCA = OCA || {}; */ onBaseDNTestButtonClick: function(event) { event.preventDefault(); + this.baseDNTestTriggered = true; this.configModel.requestWizard('ldap_test_base'); + this.disableElement(this.managedItems.ldap_base.$testButton); }, /**