mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 08:45:44 +00:00
97 lines
3.7 KiB
JavaScript
97 lines
3.7 KiB
JavaScript
/*
|
|
|--------------------------------------------------------------------------------------
|
|
| AVE.cms — модуль «Регистрационные удостоверения» (adminx)
|
|
|--------------------------------------------------------------------------------------
|
|
| Adminx.Registrations: сабмит формы, «бессрочно», удаление — единый Ajax/Toast/Confirm.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
|
|
if (typeof window.Adminx === 'undefined') { return; }
|
|
var Adminx = window.Adminx;
|
|
|
|
Adminx.Registrations = {
|
|
init: function () {
|
|
this.bindPerpetual();
|
|
this.bindForm();
|
|
this.bindDelete();
|
|
},
|
|
|
|
bindPerpetual: function () {
|
|
var toggle = document.querySelector('[data-reg-perpetual]');
|
|
var valid = document.querySelector('[data-reg-valid]');
|
|
if (!toggle || !valid) { return; }
|
|
var sync = function () { valid.disabled = toggle.checked; if (toggle.checked) { valid.value = ''; } };
|
|
toggle.addEventListener('change', sync);
|
|
sync();
|
|
},
|
|
|
|
bindForm: function () {
|
|
var form = document.querySelector('[data-reg-form]');
|
|
if (!form) { return; }
|
|
|
|
form.addEventListener('submit', function (event) {
|
|
event.preventDefault();
|
|
var submit = form.querySelector('[type="submit"]');
|
|
if (submit) { submit.disabled = true; }
|
|
|
|
Adminx.Ajax.post(form.getAttribute('data-action'), new FormData(form)).then(function (res) {
|
|
var body = res.data || {};
|
|
if (res.ok && body.success) {
|
|
Adminx.Toast.show(body.message || 'Сохранено', 'success');
|
|
var redirect = form.getAttribute('data-redirect') || (body.data && body.data.redirect);
|
|
if (redirect) {
|
|
window.setTimeout(function () { window.location.href = redirect; }, 350);
|
|
}
|
|
return;
|
|
}
|
|
|
|
Adminx.Toast.show(body.message || 'Не удалось сохранить', 'error');
|
|
}).catch(function () {
|
|
Adminx.Toast.show('Сервер недоступен. Повторите попытку.', 'error');
|
|
}).then(function () {
|
|
if (submit) { submit.disabled = false; }
|
|
});
|
|
});
|
|
},
|
|
|
|
bindDelete: function () {
|
|
document.addEventListener('click', function (event) {
|
|
var trigger = event.target.closest('[data-reg-delete]');
|
|
if (!trigger) { return; }
|
|
event.preventDefault();
|
|
|
|
var id = trigger.getAttribute('data-reg-delete');
|
|
Adminx.Confirm.open({
|
|
kind: 'error',
|
|
title: 'Удалить удостоверение?',
|
|
message: 'Запись будет удалена из реестра без возможности восстановления.',
|
|
confirmLabel: 'Удалить',
|
|
confirmClass: 'btn-danger',
|
|
onConfirm: function () {
|
|
Adminx.Ajax.post(Adminx.base() + '/registrations/' + id + '/delete', new FormData()).then(function (res) {
|
|
var body = res.data || {};
|
|
if (res.ok && body.success) {
|
|
var row = document.querySelector('tr[data-id="' + id + '"]');
|
|
if (row) { row.remove(); }
|
|
Adminx.Toast.show(body.message || 'Удалено', 'success');
|
|
return;
|
|
}
|
|
|
|
Adminx.Toast.show(body.message || 'Не удалось удалить', 'error');
|
|
}).catch(function () {
|
|
Adminx.Toast.show('Сервер недоступен. Повторите попытку.', 'error');
|
|
});
|
|
}
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', function () { Adminx.Registrations.init(); });
|
|
} else {
|
|
Adminx.Registrations.init();
|
|
}
|
|
})();
|