diff --git a/apps/user_ldap/css/settings.css b/apps/user_ldap/css/settings.css
index be03419c2de..127ce817ac1 100644
--- a/apps/user_ldap/css/settings.css
+++ b/apps/user_ldap/css/settings.css
@@ -108,4 +108,18 @@ select[multiple=multiple] + button {
padding-top: 6px !important;
min-width: 40%;
max-width: 40%;
-}
\ No newline at end of file
+}
+
+.ldap_config_state_indicator_sign {
+ display: inline-block;
+ height: 16px;
+ width: 16px;
+ vertical-align: text-bottom;
+}
+.ldap_config_state_indicator_sign.success {
+ background: #37ce02;
+ border-radius: 8px;
+}
+.ldap_config_state_indicator_sign.error {
+ background: #ce3702;
+}
diff --git a/apps/user_ldap/js/settings.js b/apps/user_ldap/js/settings.js
index dcaeb70b57f..4ae85dc0e01 100644
--- a/apps/user_ldap/js/settings.js
+++ b/apps/user_ldap/js/settings.js
@@ -103,6 +103,20 @@ var LdapConfiguration = {
);
},
+ testConfiguration: function(onSuccess, onError) {
+ $.post(
+ OC.filePath('user_ldap','ajax','testConfiguration.php'),
+ $('#ldap').serialize(),
+ function (result) {
+ if (result.status === 'success') {
+ onSuccess(result);
+ } else {
+ onError(result);
+ }
+ }
+ );
+ },
+
clearMappings: function(mappingSubject) {
$.post(
OC.filePath('user_ldap','ajax','clearMappings.php'),
@@ -187,6 +201,7 @@ var LdapWizard = {
user = $('#ldap_dn').val();
pass = $('#ldap_agent_password').val();
+ //FIXME: determine base dn with anonymous access
if(host && port && user && pass) {
param = 'action=guessBaseDN'+
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
@@ -205,7 +220,7 @@ var LdapWizard = {
function (result) {
LdapWizard.hideSpinner('#ldap_base');
LdapWizard.showInfoBox('Please specify a Base DN');
- $('#ldap_base').prop('disabled', false);
+ LdapWizard.showInfoBox('Could not determine Base DN');
}
);
}
@@ -234,7 +249,7 @@ var LdapWizard = {
function (result) {
LdapWizard.hideSpinner('#ldap_port');
$('#ldap_port').prop('disabled', false);
- LdapWizard.showInfoBox('Please specify the Port');
+ LdapWizard.showInfoBox('Please specify the port');
}
);
}
@@ -428,14 +443,16 @@ var LdapWizard = {
functionalityCheck: function() {
//criterias to enable the connection:
- // - host, port, user filter, login filter
+ // - host, port, basedn, user filter, login filter
host = $('#ldap_host').val();
port = $('#ldap_port').val();
- userfilter = $('#ldap_dn').val();
- loginfilter = $('#ldap_agent_password').val();
+ base = $('#ldap_base').val();
+ userfilter = $('#ldap_userlist_filter').val();
+ loginfilter = $('#ldap_login_filter').val();
//FIXME: activates a manually deactivated configuration.
- if(host && port && userfilter && loginfilter) {
+ if(host && port && base && userfilter && loginfilter) {
+ LdapWizard.updateStatusIndicator(true);
if($('#ldap_configuration_active').is(':checked')) {
return;
}
@@ -446,6 +463,7 @@ var LdapWizard = {
$('#ldap_configuration_active').prop('checked', false);
LdapWizard.save($('#ldap_configuration_active')[0]);
}
+ LdapWizard.updateStatusIndicator(false);
}
},
@@ -463,6 +481,7 @@ var LdapWizard = {
init: function() {
LdapWizard.basicStatusCheck();
+ LdapWizard.functionalityCheck();
},
initGroupFilter: function() {
@@ -543,6 +562,7 @@ var LdapWizard = {
if($('#ldapSettings').tabs('option', 'active') == 0) {
LdapWizard.basicStatusCheck();
+ LdapWizard.functionalityCheck();
}
},
@@ -643,6 +663,35 @@ var LdapWizard = {
'#ldap_userfilter_groups',
'userFilterGroupSelectState'
);
+ },
+
+ updateStatusIndicator: function(isComplete) {
+ if(isComplete) {
+ LdapConfiguration.testConfiguration(
+ //onSuccess
+ function(result) {
+ $('.ldap_config_state_indicator').text(t('user_ldap',
+ 'Configuration OK'
+ ));
+ $('.ldap_config_state_indicator_sign').removeClass('error');
+ $('.ldap_config_state_indicator_sign').addClass('success');
+ },
+ //onError
+ function(result) {
+ $('.ldap_config_state_indicator').text(t('user_ldap',
+ 'Configuration incorrect'
+ ));
+ $('.ldap_config_state_indicator_sign').addClass('error');
+ $('.ldap_config_state_indicator_sign').removeClass('success');
+ }
+ );
+ } else {
+ $('.ldap_config_state_indicator').text(t('user_ldap',
+ 'Configuration incomplete'
+ ));
+ $('.ldap_config_state_indicator_sign').removeClass('error');
+ $('.ldap_config_state_indicator_sign').removeClass('success');
+ }
}
};
@@ -681,21 +730,20 @@ $(document).ready(function() {
});
$('.ldap_action_test_connection').click(function(event){
event.preventDefault();
- $.post(
- OC.filePath('user_ldap','ajax','testConfiguration.php'),
- $('#ldap').serialize(),
- function (result) {
- if (result.status === 'success') {
- OC.dialogs.alert(
- result.message,
- t('user_ldap', 'Connection test succeeded')
- );
- } else {
- OC.dialogs.alert(
- result.message,
- t('user_ldap', 'Connection test failed')
- );
- }
+ LdapConfiguration.testConfiguration(
+ //onSuccess
+ function(result) {
+ OC.dialogs.alert(
+ result.message,
+ t('user_ldap', 'Connection test succeeded')
+ );
+ },
+ //onError
+ function(result) {
+ OC.dialogs.alert(
+ result.message,
+ t('user_ldap', 'Connection test failed')
+ );
}
);
});
diff --git a/apps/user_ldap/templates/part.wizardcontrols.php b/apps/user_ldap/templates/part.wizardcontrols.php
index db99145d514..3a060e9804c 100644
--- a/apps/user_ldap/templates/part.wizardcontrols.php
+++ b/apps/user_ldap/templates/part.wizardcontrols.php
@@ -12,4 +12,6 @@
style="height:1.75ex" />
t('Help'));?>
+
+
\ No newline at end of file