/** * 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(); }); }); }