From 65fd303962d7744a5268db83a72fe66c7378565a Mon Sep 17 00:00:00 2001 From: Choom Date: Fri, 30 Dec 2022 04:33:10 -0300 Subject: Devolviendo previews --- static/js/weabotxt.js | 153 ++++++++++++++++++++++++++------------------------ 1 file changed, 79 insertions(+), 74 deletions(-) (limited to 'static/js') diff --git a/static/js/weabotxt.js b/static/js/weabotxt.js index 7bbddcb..734a5ae 100644 --- a/static/js/weabotxt.js +++ b/static/js/weabotxt.js @@ -9,54 +9,49 @@ function setTheme(styletitle) { localStorage.setItem(style_cookie, styletitle); } -/* IE/Opera fix, because they need to go learn a book on how to use indexOf with arrays */ -if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function(elt /*, from*/) { - var len = this.length; - var from = Number(arguments[1]) || 0; - from = from < 0 ? Math.ceil(from) : Math.floor(from); - if (from < 0) from += len; - for (; from < len; from++) { - if (from in this && this[from] === elt) return from; - } - return -1; - }; -} - function getPassword() { if (weabot.password) return weabot.password; + var pass = ""; - var char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_."; - for (var i=0; i<11; i++) { + var char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_.:;"; + for (var i=0; i<=8; i++) { pass += char[Math.floor(Math.random() * char.length)]; } weabot.password = pass; localStorage.setItem("weabot", JSON.stringify(weabot)); + return pass; } function saveInputs(e) { var e = e || window.event; var form = e.target || e.srcElement; + if (typeof form.fielda !== "undefined") weabot.name = form.fielda.value; - if (typeof form.fielda !== "undefined") weabot.email = form.fieldb.value; + if (typeof form.fieldb !== "undefined") weabot.email = form.fieldb.value; + localStorage.setItem("weabot", JSON.stringify(weabot)); } function setInputs(id) { - if (document.getElementById(id)) { - with (document.getElementById(id)) { - if (typeof fielda !== "undefined" && !fielda.value && weabot.name) - fielda.value = weabot.name; - if (typeof fielda !== "undefined" && !fieldb.value && weabot.email) - fieldb.value = weabot.email; - if (!password.value) password.value = getPassword(); - if (typeof preview !== "undefined") { - preview.id = id; - preview.addEventListener("click", previewPost); - } - addEventListener("submit", saveInputs); + with (document.getElementById(id)) { + if (typeof fielda !== "undefined" && weabot.name) { + fielda.value = weabot.name; } + if (typeof fielda !== "undefined" && weabot.email) { + fieldb.value = weabot.email; + } + if (!password.value) { + password.value = getPassword(); + } + if (typeof preview !== "undefined") { + preview.dataset.formid = id; + preview.addEventListener("click", previewPost); + } + if (typeof message !== "undefined" && document.body.clientWidth < 600) { + message.addEventListener("input", resizeTextbox); + } + addEventListener("submit", saveInputs); } } @@ -64,13 +59,7 @@ function setInputs(id) { function insert(text) { var textarea = document.forms.postform.message; if (textarea) { - if (textarea.createTextRange && textarea.caretPos) { - // IE - var caretPos = textarea.caretPos; - caretPos.text = - caretPos.text.charAt(caretPos.text.length - 1) == - " " ? text + " " : text; - } else if (textarea.setSelectionRange) { + if (textarea.setSelectionRange) { // Firefox var start = textarea.selectionStart; var end = textarea.selectionEnd; @@ -106,32 +95,51 @@ function postClick(num) { } function previewPost(e) { - var formid = e.target.id; - var thread = "0"; - if (formid.startsWith("postform")) thread = formid.substr(8); + var form = document.getElementById(e.target.dataset.formid); + var thread = e.target.dataset.formid.split('postform')[1]; + var board = form.board.value; + var preview = document.getElementById('preview' + thread); - var form = document.getElementById(formid); - var preview = document.getElementById("preview" + thread); - var main = document.getElementById("options"); + if (e.target.className == '') { // show preview + if (form.message.value.trim() == '') { + return; + } // empty post, nevermind - if (!form || !preview || !form.message.value) return; - if (main) main.style.display = ""; + e.target.className = 'active'; + preview.textContent = 'Cargando...'; - preview.removeAttribute("style"); - preview.innerText = "Cargando..."; + if (!thread) { // new thread + document.getElementById('tr_preview').removeAttribute('style'); + } else { + preview.removeAttribute('style'); + } + } else { // hide it + if (!thread) { // new thread + document.getElementById('tr_preview').style.display = 'none'; + } else { + preview.style.display = 'none'; + } - var text = "message=" + encodeURIComponent(form.message.value) + "&board=" + board; - if (thread) text += "&parentid=" + thread; + e.target.removeAttribute('class'); + preview.textContent = null; + return; + } + + var post = 'message=' + encodeURIComponent(form.message.value) + '&board=' + board + '&parentid=' + thread; var xmlhttp = get_xmlhttp(); - xmlhttp.open("POST", "/cgi/preview"); + xmlhttp.open('POST', '/cgi/preview'); xmlhttp.onreadystatechange = function() { - if (xmlhttp.readyState == 4) preview.innerHTML = xmlhttp.responseText; + if (xmlhttp.readyState == 4) { + preview.innerHTML = xmlhttp.responseText; + } }; - if (is_ie() || xmlhttp.setRequestHeader) - xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - xmlhttp.send(text); + if (xmlhttp.setRequestHeader) { + xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } + xmlhttp.send(post); } + function get_xmlhttp() { var xmlhttp; try { @@ -143,13 +151,11 @@ function get_xmlhttp() { xmlhttp = null; } } - if (!xmlhttp && typeof XMLHttpRequest != "undefined") + if (!xmlhttp && typeof XMLHttpRequest != "undefined") { xmlhttp = new XMLHttpRequest(); + } return xmlhttp; } -function is_ie() { - return document.all && !document.opera; -} function listSort(e) { e.preventDefault(); @@ -183,16 +189,6 @@ function listSort(e) { for (var j = 0; j < arr.length; j++) table.appendChild(arr[j]); } -function searchSubjects(e) { - var filter = this.value.toLowerCase(); - var nodes = document.getElementById("threads").getElementsByTagName("tr"); - for (var i = 1; i < nodes.length; i++) { - if (nodes[i].childNodes[3].textContent.toLowerCase().includes(filter)) - nodes[i].removeAttribute("style"); - else nodes[i].style.display = "none"; - } -} - function togglePost(e) { var post = e.parentElement; var pid = post.id.slice(1); @@ -212,10 +208,18 @@ function togglePost(e) { localStorage.setItem("hid-p-"+board, hid.join("!")); } +function resizeTextbox(e) { + var limit = 256; + e.target.style.height = ''; + e.target.style.height = Math.min((e.target.scrollHeight+2), limit) + 'px'; +} + document.addEventListener("DOMContentLoaded", function() { - if (localStorage.hasOwnProperty("weabot")) + if (localStorage.hasOwnProperty("weabot")) { weabot = JSON.parse(localStorage.getItem("weabot")); - else weabot = { name: null, email: null, password: null }; + } else { + weabot = { name: null, email: null, password: null }; + } board = document.body.dataset.brd; @@ -263,7 +267,9 @@ document.addEventListener("DOMContentLoaded", function() { var forms = document.getElementsByTagName("form"); for (var i = 0; i < forms.length; i++) { - if (forms[i].id.startsWith("postform")) setInputs(forms[i].id); + if (forms[i].id.startsWith("postform")) { + setInputs(forms[i].id); + } } var styleSelect = document.getElementById("styles"); @@ -277,7 +283,6 @@ document.addEventListener("DOMContentLoaded", function() { for (var i = 0; i < srt.length; i++) { srt[i].addEventListener("click", listSort); } - document.getElementById("l_sr").addEventListener("keyup", searchSubjects); } var hidp = localStorage.getItem("hid-p-"+board); @@ -292,11 +297,11 @@ document.addEventListener("DOMContentLoaded", function() { document.addEventListener("click", function(e) { var txt = e.target.textContent; - if (e.target.className == "num") { + /*if (e.target.className == "num") { e.preventDefault(); postClick(txt); return; - } + }*/ if (txt == "del") { e.preventDefault(); deletePost(e.target); @@ -311,4 +316,4 @@ document.addEventListener("dblclick", function(e) { window.getSelection().removeAllRanges(); return; } -}, false); \ No newline at end of file +}, false); -- cgit v1.2.1-18-gbd029