83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
/**
|
|
* Users widget. Sets up dropdowns, modals, etc for a table of deleted users.
|
|
*/
|
|
|
|
/**
|
|
* Link delete user action buttons, for example in a table or on a specific users's page.
|
|
* @param {module:jQuery} el jQuery wrapped element to target.
|
|
* @param {{delete_redirect: string}} options Options used to modify behaviour of button actions.
|
|
*/
|
|
function bindDeletedUsersButtons(el, options) {
|
|
if (!options) options = {};
|
|
|
|
/**
|
|
* Buttons that launch a modal dialog
|
|
*/
|
|
|
|
// Permenetly delete user button
|
|
el.find('.js-user-permanentDelete').click(function(e) {
|
|
e.preventDefault();
|
|
|
|
$("body").ufModal({
|
|
sourceUrl: site.uri.public + "/modals/users/confirm-permanent-delete",
|
|
ajaxParams: {
|
|
user_name: $(this).data('user_name')
|
|
},
|
|
msgTarget: $("#alerts-page")
|
|
});
|
|
|
|
$("body").on('renderSuccess.ufModal', function() {
|
|
var modal = $(this).ufModal('getModal');
|
|
var form = modal.find('.js-form');
|
|
|
|
form.ufForm()
|
|
.on("submitSuccess.ufForm", function() {
|
|
// Navigate or reload page on success
|
|
if (options.delete_redirect) window.location.href = options.delete_redirect;
|
|
else window.location.reload();
|
|
});
|
|
});
|
|
});
|
|
|
|
// Restore user button
|
|
el.find('.js-user-restore').click(function(e) {
|
|
e.preventDefault();
|
|
|
|
var data = {};
|
|
data[site.csrf.keys.name] = site.csrf.name;
|
|
data[site.csrf.keys.value] = site.csrf.value;
|
|
|
|
var url = site.uri.public + '/api/users/u/' + $(this).data('user_name') + '/restore';
|
|
var debugAjax = (typeof site !== "undefined") && site.debug.ajax;
|
|
|
|
return $.ajax({
|
|
type: "POST",
|
|
url: url,
|
|
data: data,
|
|
dataType: debugAjax ? 'html' : 'json',
|
|
}).fail(function(jqXHR) {
|
|
// Error messages
|
|
if (debugAjax && jqXHR.responseText) {
|
|
document.write(jqXHR.responseText);
|
|
document.close();
|
|
} else {
|
|
console.log("Error (" + jqXHR.status + "): " + jqXHR.responseText);
|
|
|
|
// Display errors on failure
|
|
// TODO: ufAlerts widget should have a 'destroy' method
|
|
if (!$("#alerts-page").data('ufAlerts')) {
|
|
$("#alerts-page").ufAlerts();
|
|
} else {
|
|
$("#alerts-page").ufAlerts('clear');
|
|
}
|
|
|
|
$("#alerts-page").ufAlerts('fetch').ufAlerts('render');
|
|
}
|
|
|
|
return jqXHR;
|
|
}).done(function(response) {
|
|
window.location.reload();
|
|
});
|
|
});
|
|
}
|