From 4ee296051b51a3d31fa6cbb66488c9de8f720625 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 7 Nov 2013 17:11:14 +0100 Subject: [PATCH] LDAP Wizard: introduce configuration status indicator, fixes #5741 --- apps/user_ldap/css/settings.css | 16 +++- apps/user_ldap/js/settings.js | 90 ++++++++++++++----- .../templates/part.wizardcontrols.php | 2 + 3 files changed, 86 insertions(+), 22 deletions(-) diff --git a/apps/user_ldap/css/settings.css b/apps/user_ldap/css/settings.css index be03419c2d..127ce817ac 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 dcaeb70b57..4ae85dc0e0 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 db99145d51..3a060e9804 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