admin site template

This commit is contained in:
Marcin Łojewski
2018-06-02 08:30:49 +02:00
parent c1cc89f456
commit 28f7da0c0d
4 changed files with 324 additions and 591 deletions

View File

@@ -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();
if ($(form_id).length > 0) {
// 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
});
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');
window.setTimeout(function () {
msg.slideUp();
}, 10000);
}, "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'
});
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();
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");
}
}, 'json');
return false;
});
// Attach event handler to the domain chooser
$('#sql_domain_chooser').change(function () {
user_sql.loadDomainSettings($('#sql_domain_chooser option:selected').val());
});
$('#set_gethome_mode').change(function () {
user_sql.setGethomeMode();
});
$('#set_enable_gethome').change(function () {
user_sql.setGethomeMode();
});
}
};
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);
}
};
/**
* 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]);
}
}).focus(function () {
if ($(this).attr("state") !== "open") {
$(this).autocomplete("search");
}
}
else {
$('#sql_error_message').html(data.data.message);
$('#sql_error_message').show();
}
user_sql.setGethomeMode();
}, 'json'
);
});
};
$("#user_sql-db_connection_verify").click(function (event) {
return click(event, "/apps/user_sql/settings/db/verify");
});
$("#user_sql-clear_cache").click(function (event) {
return click(event, "/apps/user_sql/settings/cache/clear");
});
$("#user_sql-save").click(function (event) {
return click(event, "/apps/user_sql/settings/properties");
});
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"
);
}
};
// 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();
}
});
});