From d2836b92eb93dee9fd0c70c61de8e2e35c0841b0 Mon Sep 17 00:00:00 2001
From: mid <>
Date: Sun, 29 Sep 2024 16:30:33 +0300
Subject: [PATCH] Finish e-mail sending; clickable tags
---
smtpauth.lua | 12 ++++--------
static/tagbox.js | 38 ++++++++++++++++++++++----------------
2 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/smtpauth.lua b/smtpauth.lua
index d77983f..513f3c9 100644
--- a/smtpauth.lua
+++ b/smtpauth.lua
@@ -9,12 +9,12 @@ assert(Rand.ready())
local DB = require"db"
local function sendeml(raw)
- --[[local fn = "/tmp/ikibooru" .. DB.b256toreadable(Rand.bytes(16)) .. ".eml"
+ local fn = "/tmp/ikibooru" .. DB.b256toreadable(Rand.bytes(16)) .. ".eml"
local f = io.open(fn, "wb")
f:write(raw)
f:close()
- -- Send e-mail. Yes, this is crude.
+ -- Send e-mail. Yes, this is crude, but we have one thread.
io.popen("{ sendmail -t < " .. fn .. "; rm " .. fn .. "; } &", "r")]]
end
@@ -22,8 +22,6 @@ return {
sendauthinfo = function(user)
local url = BigGlobe.cfg.domain .."/verif?q=" .. Escapes.urlescape(DB.userauth(user))
--- print(url)
-
if BigGlobe.cfg.anarchy == "ANARCHY" then
return url
else
@@ -42,8 +40,6 @@ MIME-Version: 1.0
sendregisterinfo = function(user)
local url = BigGlobe.cfg.domain .."/reg?q=" .. Escapes.urlescape(DB.userregcode(user))
- print(url)
-
if BigGlobe.cfg.anarchy == "ANARCHY" then
return url
else
@@ -53,9 +49,9 @@ Content-Type: text/html; charset=UTF-8
MIME-Version: 1.0
-
You have either registered or been invited to register at %s. Click on the below link to complete your registration.
If you have no idea what this is, consider whether your e-mail account has been compromised.
Complete
]], user.email, BigGlobe.cfg.sitename, BigGlobe.cfg.sitename, url))
+You have either registered or been invited to register at %s. Click on the below link to complete your registration.
If you had not initiated a registration request, consider whether your e-mail account has been compromised.
Complete
]], user.email, BigGlobe.cfg.sitename, BigGlobe.cfg.sitename, url))
return true
end
end
-}
\ No newline at end of file
+}
diff --git a/static/tagbox.js b/static/tagbox.js
index 5b6db09..9339e0f 100644
--- a/static/tagbox.js
+++ b/static/tagbox.js
@@ -47,25 +47,22 @@ document.querySelector("div.tagbox span").onkeydown = function(ev) {
}
} else if(ev.keyCode == 40) {
ev.preventDefault()
- var sel = document.querySelector("div.autocomplete > div.tag.selected")
- if(sel) {
- sel.classList.toggle("selected")
- sel = sel.nextElementSibling
- } else {
- sel = document.querySelectorAll("div.autocomplete > div.tag")[0]
- }
- if(sel) sel.classList.toggle("selected")
+ var alltags = Array.from(document.querySelectorAll("div.autocomplete div.tag"))
+ var sel = alltags.findIndex(function(x) { return x.classList.contains("selected") })
+ if(sel != -1) alltags[sel].classList.toggle("selected")
+ sel = (sel + 1) % alltags.length
+ alltags[sel].classList.toggle("selected")
} else if(ev.keyCode == 38) {
ev.preventDefault()
- var sel = document.querySelector("div.autocomplete > div.tag.selected")
- if(sel) {
- sel.classList.toggle("selected")
- sel = sel.previousElementSibling
+ var alltags = Array.from(document.querySelectorAll("div.autocomplete div.tag"))
+ var sel = alltags.findIndex(function(x) { return x.classList.contains("selected") })
+ if(sel != -1) {
+ alltags[sel].classList.toggle("selected")
+ sel = (sel + alltags.length - 1) % alltags.length
} else {
- var asdf = document.querySelectorAll("div.autocomplete > div.tag")
- sel = asdf[asdf.length - 1]
+ sel = alltags.length - 1
}
- if(sel) sel.classList.toggle("selected")
+ alltags[sel].classList.toggle("selected")
} else if(ev.keyCode == 8 && !document.querySelector("div.tagbox span").innerText.length) {
ev.preventDefault()
@@ -96,7 +93,16 @@ document.querySelector("div.tagbox span").oninput = function(ev) {
ac.innerText = "No such tags found"
} else {
ajax.responseText.split("\n").slice(0, -1).forEach(function(line) {
- ac.insertBefore(createtag(line.split(",")[1], line.split(",")[2], line.split(",")[0]), null)
+ var tag = createtag(line.split(",")[1], line.split(",")[2], line.split(",")[0])
+ tag.onclick = function() {
+ var sel = document.querySelector("div.tag.selected")
+ if(sel) sel.classList.toggle("selected")
+ this.classList.toggle("selected")
+ var span = document.querySelector("div.tagbox span")
+ span.focus()
+ span.dispatchEvent(new KeyboardEvent('keydown', {bubbles: true, cancelable: true, keyCode: 13}))
+ }
+ ac.insertBefore(tag, null)
})
if(UnknownTagsMode) {