]> source.dussan.org Git - nextcloud-server.git/commitdiff
LDAP Wizard: introduce configuration status indicator, fixes #5741
authorArthur Schiwon <blizzz@owncloud.com>
Thu, 7 Nov 2013 16:11:14 +0000 (17:11 +0100)
committerArthur Schiwon <blizzz@owncloud.com>
Wed, 13 Nov 2013 18:07:28 +0000 (19:07 +0100)
apps/user_ldap/css/settings.css
apps/user_ldap/js/settings.js
apps/user_ldap/templates/part.wizardcontrols.php

index be03419c2de8682763c87c92195e2c73dce34d01..127ce817ac1c0a4af8226f6c75536fbbc249111d 100644 (file)
@@ -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;
+}
index dcaeb70b57fbeea5781ff7fbf923910c994ce651..4ae85dc0e01bf850d202e8b67faa0ee52ba92784 100644 (file)
@@ -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')
+                               );
                        }
                );
        });
index db99145d51469b632dcfcd0f0e8c013a30922109..3a060e9804cedebf7c850a1c99d1ea4265abc3c9 100644 (file)
@@ -12,4 +12,6 @@
                        style="height:1.75ex" />
                <?php p($l->t('Help'));?>
        </a>
+       <br/>
+       <span class="ldap_config_state_indicator"></span> <span class="ldap_config_state_indicator_sign"></span>
 </div>
\ No newline at end of file