35 lines
1.3 KiB
JavaScript
Executable file
35 lines
1.3 KiB
JavaScript
Executable file
// Click "Reply" under a message and your next message quotes it. Works with replies.php.
|
|
(function () {
|
|
var box = document.getElementById('chat');
|
|
var input = box && box.querySelector('[name="chat_text"]');
|
|
if (!input) return;
|
|
var form = input.form;
|
|
|
|
var hidden = document.createElement('input');
|
|
hidden.type = 'hidden';
|
|
hidden.name = 'chat_reply';
|
|
var bar = document.createElement('div');
|
|
bar.className = 'small text-body-secondary mb-2';
|
|
bar.hidden = true;
|
|
form.prepend(hidden, bar);
|
|
|
|
function clear() { hidden.value = ''; bar.hidden = true; }
|
|
|
|
box.addEventListener('click', function (e) {
|
|
var b = e.target.closest('.chat-reply, .chat-reply-cancel');
|
|
if (!b) return;
|
|
if (b.classList.contains('chat-reply-cancel')) return clear();
|
|
hidden.value = b.dataset.id;
|
|
bar.textContent = '↩ Replying to ' + b.dataset.name + ': ' + b.dataset.text + ' ';
|
|
var x = document.createElement('button');
|
|
x.type = 'button';
|
|
x.className = 'btn btn-sm btn-link p-0 chat-reply-cancel';
|
|
x.textContent = '✕ Cancel';
|
|
bar.appendChild(x);
|
|
bar.hidden = false;
|
|
input.focus();
|
|
});
|
|
|
|
// Clear after the page script has read the form (it runs after this handler).
|
|
form.addEventListener('submit', function () { setTimeout(clear, 0); });
|
|
})();
|