Tag creation for approved users

This commit is contained in:
mid
2024-07-18 22:53:44 +03:00
parent bccc0ef742
commit 61fd417013
8 changed files with 213 additions and 34 deletions

View File

@@ -147,7 +147,7 @@
</div>
<div style="display:inline-block;vertical-align:top;width:49%;">
<h2>Tags</h2>
<div style="position:relative;width:80%;" class="tagbox" data-formid="editform" data-formparaminputid="objtagsparam">
<div style="position:relative;width:80%;" class="tagbox" data-formid="editform" data-formparaminputid="objtagsparam" data-unknowntags="">
<p{% if tagcount > 0 then %} style="visibility:hidden;"{% end %}>Enter tags...</p>
{% for _, tag in pairs(tags) do %}
<div class="tag tc{{ tag.category }}" data-tagid="{{ tag.id }}">{{ Escapes.htmlescape(tag.name) }}</div>
@@ -175,15 +175,28 @@
</div>
</form>
<div id="newtagsform" class="hidden">
<p>There are unknown tags in your submission. Please assign them categories.</p>
<table>{% --[[
<select style="border: 0;"><option value="a">A</option><option value="b">B</option></select>
]] %}</table>
<button>Submit</button>
</div>
<script>
{% if BigGlobe.cfg.enable18plus then %}
function upd(over18) {
document.querySelector(".tagbox").setAttribute("data-over18", +over18 != -1)
}
var activeo18 = "-1"
var activeo18
if(window.localStorage.getItem("o18")) {
activeo18 = window.localStorage.getItem("o18")
}
if(!activeo18 || activeo18 == 1) {
activeo18 = 0; // Make "Show 18+", not "Only 18+"
}
upd(activeo18)
document.querySelector("ul.over18 input[type=\"radio\"][value=\"" + activeo18 + "\"]").checked = true
{% end %}
@@ -330,13 +343,92 @@
xhr.send(formData)
}
function fixnewtags(afterfunc) {
var newtagsform = document.querySelector("div#newtagsform")
var tbl = newtagsform.querySelector("table")
var newTags = document.querySelectorAll("div.tagbox div.tag.tcNew")
for(var i = 0; i < newTags.length; i++) {
var row = tbl.insertRow(-1)
var sel = document.createElement("select")
{% for tc = 1, #BigGlobe.cfg.tc do if BigGlobe.cfg.tc[tc].name ~= "" then %}
{
var opt = document.createElement("option")
opt.textContent = "{{ Escapes.htmlescape(BigGlobe.cfg.tc[tc].name) }}"
opt.value = {{ tc - 1 }}
sel.appendChild(opt)
}
{% end end %}
var adult = document.createElement("input")
adult.type = "checkbox"
adult.checked = false
adult.id = "boobietc" + i
var adultLbl = document.createElement("label")
adultLbl.htmlFor = adult.id
adultLbl.textContent = "18+"
row.insertCell(-1).appendChild(sel)
row.insertCell(-1).textContent = newTags[i].textContent
var c = row.insertCell(-1)
c.appendChild(adult)
c.appendChild(adultLbl)
}
newtagsform.classList.toggle("hidden")
var btn = newtagsform.querySelector("button")
btn.onclick = function() {
btn.toggleAttribute("disabled")
var xhr = new XMLHttpRequest()
xhr.open("POST", "/addtags", true)
var formData = new FormData()
formData.append("csrf", document.querySelector("[name='csrf']").value)
for(var i = 0; i < newTags.length; i++) {
formData.append("name[]", tbl.rows[i].cells[1].textContent)
formData.append("tc[]", tbl.rows[i].cells[0].querySelector("select").value)
formData.append("adult[]", tbl.rows[i].cells[2].querySelector("input").checked ? "1" : "0")
}
xhr.onreadystatechange = function() {
if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
var resp = xhr.responseText.split(",")
// Set data-tagids so they object may be updated with the new tags
for(var i = 0; i < newTags.length; i++) {
newTags[i].setAttribute("data-tagid", resp[i])
}
tagbox_updateformdata()
afterfunc()
}
}
xhr.send(formData);
}
}
document.getElementById("editform").addEventListener("submit", function(ev) {
ev.preventDefault()
files = Array.from(document.querySelectorAll("input[type='file']"))
files.pop() // don't count empty input
files.pop() // don't count empty input box
doremoves()
var newTags = document.querySelectorAll("div.tagbox div.tag.tcNew")
if(newTags.length != 0) {
fixnewtags(doremoves)
} else {
doremoves()
}
})
</script>
<script src="/static/tagbox.js"></script>
@@ -348,4 +440,4 @@
{% end %}
{% end %}
{# base.inc
{# base.inc