mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 08:45:44 +00:00
53 lines
2.1 KiB
JavaScript
53 lines
2.1 KiB
JavaScript
(function (window, document) {
|
|
'use strict';
|
|
|
|
var Adminx = window.Adminx = window.Adminx || {};
|
|
|
|
function init() {
|
|
var root = document.querySelector('[data-field-sets-root]');
|
|
if (!root) { return; }
|
|
var base = root.getAttribute('data-base') || Adminx.base();
|
|
|
|
root.addEventListener('click', function (event) {
|
|
var mode = event.target.closest('[data-field-set-mode]');
|
|
if (mode) {
|
|
var segmented = mode.closest('.segmented');
|
|
segmented.querySelectorAll('[data-field-set-mode]').forEach(function (button) {
|
|
button.setAttribute('aria-pressed', button === mode ? 'true' : 'false');
|
|
});
|
|
return;
|
|
}
|
|
|
|
var apply = event.target.closest('[data-field-set-apply]');
|
|
if (!apply) { return; }
|
|
var card = apply.closest('[data-field-set]');
|
|
var rubric = card.querySelector('[data-field-set-rubric]').value;
|
|
var selectedMode = card.querySelector('[data-field-set-mode][aria-pressed="true"]');
|
|
if (!rubric) {
|
|
Adminx.Toast.show('Выберите рубрику', 'warning');
|
|
return;
|
|
}
|
|
|
|
apply.disabled = true;
|
|
var data = new FormData();
|
|
data.append('_csrf', Adminx.csrf());
|
|
data.append('mode', selectedMode ? selectedMode.getAttribute('data-field-set-mode') : 'copy');
|
|
fetch(base + '/rubrics/' + rubric + '/field-sets/' + encodeURIComponent(card.getAttribute('data-field-set')) + '/apply', {
|
|
method: 'POST',
|
|
body: data,
|
|
credentials: 'same-origin',
|
|
headers: { 'Accept': 'application/json' }
|
|
})
|
|
.then(function (response) { return response.json(); })
|
|
.then(function (json) {
|
|
if (!json.ok) { throw new Error(json.message || 'Не удалось добавить набор'); }
|
|
Adminx.Toast.show(json.message || 'Набор добавлен', 'success');
|
|
})
|
|
.catch(function (error) { Adminx.Toast.show(error.message, 'error'); })
|
|
.finally(function () { apply.disabled = false; });
|
|
});
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', init);
|
|
})(window, document);
|