diff options
author | Marcin Łojewski <marcin.lojewski@mlojewski.me> | 2018-06-02 09:30:49 +0300 |
---|---|---|
committer | Marcin Łojewski <marcin.lojewski@mlojewski.me> | 2018-06-10 10:40:18 +0300 |
commit | 28f7da0c0d45a76091b3331ef18fd1c3597522f0 (patch) | |
tree | e2120b8bce3cb606025f6205a50187e3ad12abdf /js | |
parent | c1cc89f456231ecb853fc7d3a4d47ec6dcaa41f0 (diff) |
admin site template
Diffstat (limited to 'js')
-rw-r--r-- | js/settings.js | 365 |
1 files changed, 71 insertions, 294 deletions
diff --git a/js/settings.js b/js/settings.js index 4b63b53..0098601 100644 --- a/js/settings.js +++ b/js/settings.js @@ -1,321 +1,98 @@ -// settings.js of user_sql +var user_sql = user_sql || {}; +var form_id = "#user_sql"; -// declare namespace -var user_sql = user_sql || - {}; - -/** - * init admin settings view - */ user_sql.adminSettingsUI = function () { + var app_id = "user_sql"; - if ($('#sqlDiv').length > 0) { - // enable tabs on settings page - $('#sqlDiv').tabs(); - - // Attach auto-completion to all column fields - $('#col_username, #col_password, #col_displayname, #col_active, #col_email, #col_gethome').autocomplete({ - source: function (request, response) { - var post = $('#sqlForm').serializeArray(); - var domain = $('#sql_domain_chooser option:selected').val(); - - post.push({ - name: 'function', - value: 'getColumnAutocomplete' - }); - - post.push({ - name: 'domain', - value: domain - }); - - post.push({ - name: 'request', - value: request.term - }); - - // Ajax foobar - $.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, response, 'json'); - }, - minLength: 0, - open: function () { - $(this).attr('state', 'open'); - }, - close: function () { - $(this).attr('state', 'closed'); - } - }).focus(function () { - if ($(this).attr('state') != 'open') { - $(this).autocomplete("search"); - } - }); - - // Attach auto-completion to all group column fields - $('#col_group_name, #col_group_username').autocomplete({ - source: function (request, response) { - var post = $('#sqlForm').serializeArray(); - var domain = $('#sql_domain_chooser option:selected').val(); - - post.push({ - name: 'groupTable', - value: 'true' - }); - - post.push({ - name: 'function', - value: 'getColumnAutocomplete' - }); - - post.push({ - name: 'domain', - value: domain - }); + if ($(form_id).length > 0) { - post.push({ - name: 'request', - value: request.term - }); - - // Ajax foobar - $.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, response, 'json'); - }, - minLength: 0, - open: function () { - $(this).attr('state', 'open'); - }, - close: function () { - $(this).attr('state', 'closed'); - } - }).focus(function () { - if ($(this).attr('state') != 'open') { - $(this).autocomplete("search"); - } - }); - - // Attach auto-completion to all table fields - $('#sql_table, #sql_group_table').autocomplete({ - source: function (request, response) { - var post = $('#sqlForm').serializeArray(); - var domain = $('#sql_domain_chooser option:selected').val(); - - post.push({ - name: 'function', - value: 'getTableAutocomplete' - }); - - post.push({ - name: 'domain', - value: domain - }); - - post.push({ - name: 'request', - value: request.term - }); - - // Ajax foobar - $.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, response, 'json'); - }, - minLength: 0, - open: function () { - $(this).attr('state', 'open'); - }, - close: function () { - $(this).attr('state', 'closed'); - } - }).focus(function () { - if ($(this).attr('state') != 'open') { - $(this).autocomplete("search"); - } - }); - - // Verify the SQL database settings - $('#sqlVerify').click(function (event) { + var click = function (event, path) { event.preventDefault(); - var post = $('#sqlForm').serializeArray(); - var domain = $('#sql_domain_chooser option:selected').val(); + var post = $(form_id).serializeArray(); + var msg = $("#user_sql-msg"); + var msg_body = $("#user_sql-msg-body"); - post.push({ - name: 'function', - value: 'verifySettings' - }); + msg_body.html(t(app_id, "Waiting...")); + msg.addClass("waiting"); + msg.slideDown(); - post.push({ - name: 'domain', - value: domain - }); + $.post(OC.generateUrl(path), post, function (data) { + msg_body.html(data.data.message); + msg.removeClass("error"); + msg.removeClass("success"); + msg.removeClass("waiting"); - $('#sql_verify_message').show(); - $('#sql_success_message').hide(); - $('#sql_error_message').hide(); - $('#sql_update_message').hide(); - // Ajax foobar - $.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, function (data) { - $('#sql_verify_message').hide(); - if (data.status == 'success') { - $('#sql_success_message').html(data.data.message); - $('#sql_success_message').show(); - window.setTimeout(function () { - $('#sql_success_message').hide(); - }, 10000); + if (data.status === "success") { + msg.addClass("success"); } else { - $('#sql_error_message').html(data.data.message); - $('#sql_error_message').show(); + msg.addClass("error"); } - }, 'json'); - return false; - }); - - // Save the settings for a domain - $('#sqlSubmit').click(function (event) { - event.preventDefault(); - - var post = $('#sqlForm').serializeArray(); - var domain = $('#sql_domain_chooser option:selected').val(); - post.push({ - name: 'function', - value: 'saveSettings' - }); + window.setTimeout(function () { + msg.slideUp(); + }, 10000); + }, "json"); - post.push({ - name: 'domain', - value: domain - }); - - $('#sql_update_message').show(); - $('#sql_success_message').hide(); - $('#sql_verify_message').hide(); - $('#sql_error_message').hide(); - // Ajax foobar - $.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, function (data) { - $('#sql_update_message').hide(); - if (data.status == 'success') { - $('#sql_success_message').html(data.data.message); - $('#sql_success_message').show(); - window.setTimeout(function () { - $('#sql_success_message').hide(); - }, 10000); - } else { - $('#sql_error_message').html(data.data.message); - $('#sql_error_message').show(); - } - }, 'json'); return false; - }); + }; + + var autocomplete = function (ids, path) { + $(ids).autocomplete({ + source: function (request, response) { + var post = $(form_id).serializeArray(); + $.post(OC.generateUrl(path), post, response, "json"); + }, + minLength: 0, + open: function () { + $(this).attr("state", "open"); + }, + close: function () { + $(this).attr("state", "closed"); + } + }).focus(function () { + if ($(this).attr("state") !== "open") { + $(this).autocomplete("search"); + } + }); + }; - // Attach event handler to the domain chooser - $('#sql_domain_chooser').change(function () { - user_sql.loadDomainSettings($('#sql_domain_chooser option:selected').val()); + $("#user_sql-db_connection_verify").click(function (event) { + return click(event, "/apps/user_sql/settings/db/verify"); }); - $('#set_gethome_mode').change(function () { - user_sql.setGethomeMode(); + $("#user_sql-clear_cache").click(function (event) { + return click(event, "/apps/user_sql/settings/cache/clear"); }); - $('#set_enable_gethome').change(function () { - user_sql.setGethomeMode(); + $("#user_sql-save").click(function (event) { + return click(event, "/apps/user_sql/settings/properties"); }); - } -}; -user_sql.setGethomeMode = function () { - var enabled = $('#set_enable_gethome').prop('checked'); - if (enabled) { - $('#set_gethome_mode').prop('disabled', false); - var val = $('#set_gethome_mode option:selected').val(); - if (val === 'query') { - $('#set_gethome').prop('disabled', true); - $('#col_gethome').prop('disabled', false); - } - else if (val === 'static') { - $('#set_gethome').prop('disabled', false); - $('#col_gethome').prop('disabled', true); - } - else { - $('#set_gethome').prop('disabled', true); - $('#col_gethome').prop('disabled', true); - } - } - else { - $('#set_gethome_mode').prop('disabled', true); - $('#set_gethome').prop('disabled', true); - $('#col_gethome').prop('disabled', true); + autocomplete( + "#db-table-user, #db-table-user_group, #db-table-group", + "/apps/user_sql/settings/autocomplete/table" + ); + + autocomplete( + "#db-table-user-column-uid, #db-table-user-column-email, #db-table-user-column-home, #db-table-user-column-password, #db-table-user-column-name, #db-table-user-column-avatar", + "/apps/user_sql/settings/autocomplete/table/user" + ); + + autocomplete( + "#db-table-user_group-column-uid, #db-table-user_group-column-gid", + "/apps/user_sql/settings/autocomplete/table/user_group" + ); + + autocomplete( + "#db-table-group-column-admin, #db-table-group-column-name, #db-table-group-column-gid", + "/apps/user_sql/settings/autocomplete/table/group" + ); } }; -/** - * Load the settings for the selected domain - * @param string domain The domain to load - */ -user_sql.loadDomainSettings = function (domain) { - $('#sql_success_message').hide(); - $('#sql_error_message').hide(); - $('#sql_verify_message').hide(); - $('#sql_loading_message').show(); - var post = [ - { - name: 'appname', - value: 'user_sql' - }, - { - name: 'function', - value: 'loadSettingsForDomain' - }, - { - name: 'domain', - value: domain - } - ]; - $.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, function (data) { - $('#sql_loading_message').hide(); - if (data.status == 'success') { - for (key in data.settings) { - if (key == 'set_strip_domain') { - if (data.settings[key] == 'true') - $('#' + key).prop('checked', true); - else - $('#' + key).prop('checked', false); - } - else if (key == 'set_allow_pwchange') { - if (data.settings[key] == 'true') - $('#' + key).prop('checked', true); - else - $('#' + key).prop('checked', false); - } - else if (key == 'set_active_invert') { - if (data.settings[key] == 'true') - $('#' + key).prop('checked', true); - else - $('#' + key).prop('checked', false); - } - else if (key == 'set_enable_gethome') { - if (data.settings[key] == 'true') - $('#' + key).prop('checked', true); - else - $('#' + key).prop('checked', false); - } - else { - $('#' + key).val(data.settings[key]); - } - } - } - else { - $('#sql_error_message').html(data.data.message); - $('#sql_error_message').show(); - } - user_sql.setGethomeMode(); - }, 'json' - ); -}; - -// Run our JS if the SQL settings are present $(document).ready(function () { - if ($('#sqlDiv')) { + if ($(form_id)) { user_sql.adminSettingsUI(); - user_sql.loadDomainSettings($('#sql_domain_chooser option:selected').val()); - user_sql.setGethomeMode(); } -}); - +});
\ No newline at end of file |