92 lines
2.8 KiB
JavaScript
92 lines
2.8 KiB
JavaScript
function newPage() {
|
|
var input = document.createElement('input');
|
|
input.type = 'text';
|
|
input.className = 'modal-input';
|
|
input.placeholder = 'New page name';
|
|
|
|
openModal({
|
|
title: 'New page',
|
|
body: input,
|
|
confirm: {
|
|
label: 'CREATE',
|
|
onConfirm: function () {
|
|
var name = input.value.trim();
|
|
if (!name) return;
|
|
window.location.href = window.location.pathname +
|
|
encodeURIComponent(name) + '/?edit';
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function movePage() {
|
|
var input = document.createElement('input');
|
|
input.type = 'text';
|
|
input.className = 'modal-input';
|
|
input.value = decodeURIComponent(window.location.pathname);
|
|
|
|
openModal({
|
|
title: 'Move page',
|
|
body: input,
|
|
confirm: {
|
|
label: 'MOVE',
|
|
onConfirm: function () {
|
|
var target = input.value.trim();
|
|
if (!target || !target.startsWith('/')) return;
|
|
var form = document.createElement('form');
|
|
form.method = 'POST';
|
|
form.action = window.location.pathname + '?move=' +
|
|
encodeURIComponent(target);
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function deletePage() {
|
|
var decodedPath = decodeURIComponent(window.location.pathname);
|
|
|
|
openModal({
|
|
title: 'Delete page',
|
|
body: 'Delete ' + decodedPath + ' and everything inside it?',
|
|
confirm: {
|
|
label: 'DELETE',
|
|
danger: true,
|
|
enterConfirms: false,
|
|
onConfirm: function () {
|
|
var form = document.createElement('form');
|
|
form.method = 'POST';
|
|
form.action = window.location.pathname + '?delete=1';
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
}
|
|
},
|
|
cancel: { autofocus: true },
|
|
swapButtons: true
|
|
});
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
var trigger = document.querySelector('[data-action="actions-drop"]');
|
|
if (!trigger) return;
|
|
var menu = trigger.parentElement.querySelector('.dropdown-menu');
|
|
if (!menu) return;
|
|
|
|
trigger.addEventListener('click', function (e) {
|
|
e.stopPropagation();
|
|
menu.classList.toggle('is-open');
|
|
});
|
|
menu.addEventListener('click', function () {
|
|
menu.classList.remove('is-open');
|
|
});
|
|
document.addEventListener('click', function (e) {
|
|
if (!trigger.contains(e.target) && !menu.contains(e.target)) {
|
|
menu.classList.remove('is-open');
|
|
}
|
|
});
|
|
document.addEventListener('keydown', function (e) {
|
|
if (e.key === 'Escape') menu.classList.remove('is-open');
|
|
});
|
|
});
|