Initial import

This commit is contained in:
Admin Nasledstvo
2026-05-01 20:52:04 +03:00
commit ac168868ee
10028 changed files with 2337954 additions and 0 deletions
@@ -0,0 +1,294 @@
function updateStatus(e) {
const url = window.location.search ? window.location.href + '&o=u' : window.location.href + '?o=u';
const postData = e.dataset;
postData.value = e.checked ? 1 : null;
const msgYes = e.dataset.yes;
const msgNo = e.dataset.no;
const blinkUpdate = one(`#blink_${e.dataset.id}`);
//const
if (blinkUpdate) {
if (e.checked) {
if(blinkUpdate.dataset.published) {
blinkUpdate.innerHTML = blinkUpdate.dataset.published;
}
blinkUpdate.classList.remove('blink-green')
} else {
if(blinkUpdate.dataset.unpublished) {
blinkUpdate.innerHTML = blinkUpdate.dataset.unpublished;
}
blinkUpdate.classList.add('blink-green')
}
}
request({
url: url,
post: postData,
done: data => {
if (data.successMsg) {
if (e.checked) {
flash.success(msgYes, true)
} else {
flash.success(msgNo, true)
}
}
}
})
}
function symbolInputProtect(e) {
e.value = e.value.replace(':', '');
e.value = e.value.replace('\'', '');
e.value = e.value.replace('\"', '');
}
function searchInCheckList(e) {
all('.check-list label').forEach(l => {
console.log(l.dataset.name);
if (l.dataset.name.indexOf(e.value) !== -1) {
l.style.display = 'block';
} else {
l.style.display = 'none';
}
});
}
function setSingleFileImage(e) {
const [defaultIcon, add, edit, remove] = [
appendElem('i', e.dataset.default, e.parentNode),
appendElem('i', 'la la-plus', e),
appendElem('i', 'la la-pencil', e),
appendElem('i', 'la la-remove', e),
];
let [canvas, img] = [null, null];
if (e.dataset.src) {
add.addClass('hidden');
defaultIcon.addClass('hidden');
img = addImg('appear', e.parentNode, e.dataset.src, 'prepend');
} else {
edit.addClass('hidden');
remove.addClass('hidden');
}
if (add) {
add.title = e.dataset.add;
add.addEventListener('click', function () {
chooseSingleFileImage(add, e.dataset.imageName, function (c) {
defaultIcon.addClass('hidden');
add.addClass('hidden');
edit.removeClass('hidden');
remove.removeClass('hidden');
canvas = c;
flash.warning(e.dataset.warning)
});
});
}
if (edit) {
edit.title = e.dataset.edit;
edit.addEventListener('click', function () {
chooseSingleFileImage(edit, e.dataset.imageName, function (c) {
defaultIcon.addClass('hidden');
add.addClass('hidden');
edit.removeClass('hidden');
remove.removeClass('hidden');
canvas = c;
flash.warning(e.dataset.warning)
});
});
}
if (remove) {
remove.title = e.dataset.remove;
remove.addEventListener('click', function () {
modal.confirm(e.dataset.removeMsg, function () {
if (canvas) {
canvas.remove();
}
if (img) {
img.remove();
}
defaultIcon.removeClass('hidden');
add.removeClass('hidden');
edit.addClass('hidden');
remove.addClass('hidden');
if (e.dataset.src !== '') {
//TODO SEARCH IMAGE AND DELETE IT
request({
url: '/remove-img/',
post: {
hash: e.dataset.src
},
done: r => {
console.log(r);
flash.success(e.dataset.removeReady);
}
})
} else {
flash.success(e.dataset.removeReady);
}
})
});
}
}
function chooseSingleFileImage(e, name, callback) {
const bufferContent = e.innerHTML;
const file = document.createElement('input');
file.type = 'file';
file.accept = 'image/jpeg, image/png';
file.click();
file.addEventListener('change', function () {
const img = document.createElement('img');
img.src = URL.createObjectURL(file.files[0]);
img.style.height = '100%';
img.style.width = 'auto';
const cropper = new Cropper(img, {
autoCrop: false,
aspectRatio: 1,
ready() {
this.cropper.crop();
},
});
modal.confirm(img,
() => {
e = e.parentNode.parentNode;
const canvas = cropper.getCroppedCanvas();
const img = e.querySelector('img');
if (img)
img.remove();
e.prepend(canvas);
canvas.toBlob(function (blob) {
bufferFiles[name] = new File([blob], name + '.png', {type: 'image/png'});
}, 'image/png');
callback(canvas);
},
() => {
},
{
width: '50%',
height: '70%'
}
);
});
}
function setHistoryButton(e) {
e.addEventListener('click', function () {
all('.history-box', box => {
if (e.hasClass('la-history')) {
const b = box.parentNode.querySelector('.historyButton');
b.switchClasses('la-remove', 'la-history');
}
box.remove();
});
if (e.hasClass('la-history')) {
e.switchClasses('la-history', 'la-remove');
const container = e.parentNode;
container.style.position = 'relative';
const historyBox = one('history-box', container);
request({
url: '/get-history/',
post: {
table: e.dataset.table,
id: e.dataset.id
},
done: data => {
data.forEach(row => {
one('history-row', historyBox).innerHTML = row;
});
historyBox.addClass('open');
}
})
} else {
e.switchClasses('la-remove', 'la-history');
}
})
}
function setPositionButton(e) {
e.addEventListener('click', function () {
all('.position-box', box => {
if (e.hasClass('la-stream')) {
const b = box.parentNode.querySelector('.positionButton');
b.switchClasses('la-remove', 'la-stream');
}
box.remove();
});
if (e.hasClass('la-stream')) {
e.switchClasses('la-stream', 'la-remove');
const container = e.parentNode;
container.style.position = 'relative';
const positionBox = one('position-box', container);
request({
url: '/get-article-positions/',
post: {
article_key: e.dataset.articleKey
},
done: data => {
data.forEach(groupRow => {
const row = one('position-row', positionBox);
var positions = '';
groupRow.positions.forEach((p, i) => {
const c = p.checked ? 'checked' : '';
const cfa = p.checked_fa ? 'class="busy" title="Позицията е заета"' : ''
positions += `<label onclick="updateArticlePosition(this)" ${cfa} style="margin-right: 5px"><input ${c} data-id="${p.id}" data-article-key="${e.dataset.articleKey}" type="checkbox"><span>${i + 1}</span></label>`;
});
row.innerHTML = `
<div class="group-row">
<div class="group-name">${groupRow.group}</div>
<div class="group-positions flex-wrap">
${positions}
</div>
</div>
`;
});
//console.log(data);
positionBox.addClass('open');
}
})
} else {
e.switchClasses('la-remove', 'la-stream');
}
})
}
function updateArticlePosition(e) {
e.removeClass('busy');
const check = e.querySelector('input');
request({
url: '/update-article-position/',
post: {
id: check.dataset.id,
article_key: check.dataset.articleKey,
checked: check.checked,
},
done: r => {
flash.success(r.message);
}
})
}
function saveAndBackToList(el) {
event.preventDefault();
const container = el.parentNode;
const back = btoa(container.querySelector('a').href);
history.pushState({}, null, window.location.href + `&back=${back}`);
container.querySelector('#save').click();
}
function updateLabelRequire(e, id) {
if (e.value !== '') {
one(`${id}`).addClass('require')
} else {
one(`${id}`).removeClass('require')
}
}