Initial commit
This commit is contained in:
6
static/datetimes.js
Normal file
6
static/datetimes.js
Normal file
@@ -0,0 +1,6 @@
|
||||
var z = document.querySelectorAll(".dt")
|
||||
var off = new Date().getTimezoneOffset()
|
||||
for(var i = 0, m = z.length; i < m; i++) {
|
||||
var t = z[i].innerText.match(/\d+/g)
|
||||
z[i].innerText = new Date(Date.UTC(+t[0], +t[1] - 1, +t[2], +t[3], +t[4], +t[5])).toLocaleString()
|
||||
}
|
||||
BIN
static/favicon.png
Normal file
BIN
static/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/logo.png
Normal file
BIN
static/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
213
static/style.css
Normal file
213
static/style.css
Normal file
@@ -0,0 +1,213 @@
|
||||
html, body {
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.tagbox {
|
||||
cursor: text;
|
||||
border: 1px solid gray;
|
||||
text-align: left;
|
||||
user-select: contain;
|
||||
padding: 0.4em;
|
||||
border-radius: 3px;
|
||||
}
|
||||
div.tagbox::after {
|
||||
content: "penis";
|
||||
visibility: hidden;
|
||||
}
|
||||
div.tag {
|
||||
display: inline-block;
|
||||
border: 1px solid blue;
|
||||
padding: 0.1em;
|
||||
margin: 0.1em;
|
||||
}
|
||||
div.tag.selected {
|
||||
border-width: 2px;
|
||||
}
|
||||
div.tag::before {
|
||||
font-weight: lighter;
|
||||
text-shadow: 0px 2px 3px gray;
|
||||
padding-left: 0.1em;
|
||||
padding-right: 0.1em;
|
||||
border-right: 1px solid black;
|
||||
margin-right: 0.1em;
|
||||
}
|
||||
div.tagbox span {
|
||||
border: 0;
|
||||
outline: none;
|
||||
}
|
||||
div.tagbox > p {
|
||||
position: absolute;
|
||||
left: 0.5em;
|
||||
top: 0;
|
||||
transform: translateY(-50%);
|
||||
color: #C0C0C0;
|
||||
}
|
||||
|
||||
div.autocomplete {
|
||||
text-align: left;
|
||||
border: 1px solid gray;
|
||||
background-color: white;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
a.searchitem > div {
|
||||
position: relative;
|
||||
border: 1px solid #808080;
|
||||
max-width: 12.5em;
|
||||
display: inline-block;
|
||||
padding: 0.5em;
|
||||
vertical-align: middle;
|
||||
margin: 0.5em 0 0.5em 0;
|
||||
}
|
||||
a.searchitem img {
|
||||
width: 100%;
|
||||
}
|
||||
a.searchitem {
|
||||
text-decoration-line: none;
|
||||
color: black;
|
||||
}
|
||||
a.searchitem p {
|
||||
width: 100%;
|
||||
margin: 0.3em 0 0.3em 0;
|
||||
}
|
||||
|
||||
button {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6, p, li, span, td, label, div {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
td {
|
||||
border: 1px solid black;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
header {
|
||||
position: absolute;
|
||||
top: 1em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
main {
|
||||
margin-top: 10%;
|
||||
margin-left: 10%;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0.2em 0 0.2em 0;
|
||||
}
|
||||
|
||||
input, input:hover {
|
||||
outline: none;
|
||||
}
|
||||
input[type='text'], input[type='number'] {
|
||||
padding: 0.4em;
|
||||
border: 1px solid gray;
|
||||
border-radius: 3px;
|
||||
font-size: 1em;
|
||||
}
|
||||
input::placeholder {
|
||||
color: #C0C0C0;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
ul.over18 {
|
||||
margin: 1em 0 1em 0;
|
||||
list-style-type: none;
|
||||
padding: 0 0.4em 0 0.4em;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
ul.over18 label {
|
||||
cursor: pointer;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
ul.over18 > li {
|
||||
width: 32%;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border: 1px solid gray;
|
||||
padding: 0.4em 0 0.4em 0;
|
||||
}
|
||||
ul.over18 > li:nth-child(1) {
|
||||
border-top-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
ul.over18 > li:nth-child(3) {
|
||||
border-top-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
ul.over18 > li > * {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 50%;
|
||||
transform: translateY(50%);
|
||||
}
|
||||
ul.over18 input:checked + label {
|
||||
text-shadow: 0px 2px 3px gray;
|
||||
transform: translateY(60%);
|
||||
}
|
||||
ul.over18 input {
|
||||
opacity: 0.01;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
div.comments {
|
||||
width: 60%;
|
||||
}
|
||||
div.comments h5 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
div.comments p {
|
||||
margin: 0.2em 0 0.2em 0;
|
||||
}
|
||||
div.comments p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
textarea.uf {
|
||||
font-family: inherit;
|
||||
width: 100%;
|
||||
height: 8em;
|
||||
}
|
||||
|
||||
.reportlink {
|
||||
font-size: 0.5em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.report {
|
||||
width: 100%;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0 1em;
|
||||
}
|
||||
.report td {
|
||||
border: 0;
|
||||
border-top: 1px solid gray;
|
||||
border-bottom: 1px solid gray;
|
||||
}
|
||||
.report td:first-child {
|
||||
border-left: 1px solid gray;
|
||||
}
|
||||
.report td:last-child {
|
||||
border-right: 1px solid gray;
|
||||
background-color: #E0E0E0;
|
||||
}
|
||||
.report .content {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 2em;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
100
static/tagbox.js
Normal file
100
static/tagbox.js
Normal file
@@ -0,0 +1,100 @@
|
||||
var acTimer;
|
||||
|
||||
document.getElementById(document.querySelector("div.tagbox").getAttribute("data-formid")).addEventListener("submit", function(ev) {
|
||||
document.getElementById(document.querySelector("div.tagbox").getAttribute("data-formparaminputid")).value = Array.from(document.querySelectorAll("div.tagbox div.tag")).map(function(a) {return a.getAttribute("data-tagid")}).join(",")
|
||||
})
|
||||
|
||||
document.querySelector("div.tagbox").onclick = function(ev) {
|
||||
this.querySelector('span').focus()
|
||||
}
|
||||
|
||||
document.querySelector("div.tagbox span").onkeydown = function(ev) {
|
||||
if(ev.keyCode == 13) {
|
||||
ev.preventDefault()
|
||||
|
||||
if(document.querySelector("div.tagbox span").innerText.length) {
|
||||
var from = document.querySelector("div.autocomplete > div.tag.selected") || document.querySelectorAll("div.autocomplete > div.tag")[0]
|
||||
|
||||
if(!document.querySelector("div.tagbox div.tag[data-tagid='"+from.getAttribute("data-tagid")+"']")) {
|
||||
from.classList.remove("selected")
|
||||
|
||||
document.querySelector("div.tagbox span").innerText = ""
|
||||
document.querySelector("div.tagbox").insertBefore(from, document.querySelector("div.tagbox span"))
|
||||
document.querySelector("div.tagbox").insertBefore(document.createTextNode("\n"), document.querySelector("div.tagbox span"))
|
||||
|
||||
var ac = document.querySelector(".autocomplete")
|
||||
ac.style.visibility = "hidden"
|
||||
}
|
||||
} else {
|
||||
document.getElementById(document.querySelector("div.tagbox").getAttribute("data-formid")).querySelector("input[type='submit']").click()
|
||||
}
|
||||
} 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")
|
||||
} 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
|
||||
} else {
|
||||
var asdf = document.querySelectorAll("div.autocomplete > div.tag")
|
||||
sel = asdf[asdf.length - 1]
|
||||
}
|
||||
if(sel) sel.classList.toggle("selected")
|
||||
} else if(ev.keyCode == 8 && !document.querySelector("div.tagbox span").innerText.length) {
|
||||
ev.preventDefault()
|
||||
|
||||
var asdf = document.querySelectorAll("div.tagbox div.tag")
|
||||
if(asdf.length > 0) {
|
||||
asdf = asdf[asdf.length - 1]
|
||||
if(asdf) asdf.parentNode.removeChild(asdf)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelector("div.tagbox span").oninput = function(ev) {
|
||||
if(document.querySelector("div.tagbox span").innerText.length) {
|
||||
document.querySelector("div.tagbox > p").style.visibility = "hidden"
|
||||
|
||||
if(acTimer) {
|
||||
clearTimeout(acTimer)
|
||||
}
|
||||
acTimer = setTimeout(function() {
|
||||
var ajax = new XMLHttpRequest()
|
||||
ajax.open("GET", "/autocomp?q=" + encodeURIComponent(document.querySelector("div.tagbox span").innerText) + (document.querySelector("div.tagbox").getAttribute("data-over18") == "true" ? "&a=" : ""), true)
|
||||
ajax.onreadystatechange = function() {
|
||||
if(ajax.readyState == 4 && ajax.status == 200) {
|
||||
var ac = document.querySelector(".autocomplete")
|
||||
ac.style.visibility = ""
|
||||
while(ac.firstChild) ac.removeChild(ac.firstChild)
|
||||
if(ajax.responseText == "") {
|
||||
ac.innerText = "No such tags found"
|
||||
} else ajax.responseText.split("\n").slice(0, -1).forEach(function(line) {
|
||||
var newtag = document.createElement("div")
|
||||
newtag.classList.toggle("tag")
|
||||
newtag.classList.toggle("tc" + line.split(",")[2])
|
||||
newtag.setAttribute("data-tagid", line.split(",")[0])
|
||||
newtag.innerText = line.split(",")[1]
|
||||
ac.insertBefore(newtag, null)
|
||||
})
|
||||
}
|
||||
}
|
||||
ajax.send()
|
||||
}, 250)
|
||||
} else {
|
||||
if(!document.querySelectorAll(".tagbox > div.tag").length) document.querySelector("div.tagbox > p").style.color = ""
|
||||
|
||||
document.querySelector(".autocomplete").style.visibility = "hidden"
|
||||
|
||||
clearTimeout(acTimer)
|
||||
acTimer = undefined
|
||||
}
|
||||
}
|
||||
1
static/tagcats.css
Normal file
1
static/tagcats.css
Normal file
@@ -0,0 +1 @@
|
||||
div.tag.tc0::before{content:"G";}div.tag.tc0:hover::before{content:"Gamemode";}div.tag.tc0{border-color:#d7168a;background-color:#ffacff;}div.tag.tc1::before{content:"T";}div.tag.tc1:hover::before{content:"Theme";}div.tag.tc1{border-color:#64f647;background-color:#faffdd;}div.tag.tc2::before{content:"S";}div.tag.tc2:hover::before{content:"Strategy";}div.tag.tc2{border-color:#c87930;background-color:#ffffc6;}div.tag.tc3::before{content:"M";}div.tag.tc3:hover::before{content:"Meta";}div.tag.tc3{border-color:#cc6690;background-color:#fffcff;}div.tag.tc4::before{content:"";}div.tag.tc4:hover::before{content:"";}div.tag.tc4{border-color:#e961b8;background-color:#fff7ff;}div.tag.tc5::before{content:"";}div.tag.tc5:hover::before{content:"";}div.tag.tc5{border-color:#3292b9;background-color:#c8ffff;}div.tag.tc6::before{content:"";}div.tag.tc6:hover::before{content:"";}div.tag.tc6{border-color:#55d128;background-color:#ebffbe;}div.tag.tc7::before{content:"";}div.tag.tc7:hover::before{content:"";}div.tag.tc7{border-color:#c4aab1;background-color:#ffffff;}div.tag.tc8::before{content:"";}div.tag.tc8:hover::before{content:"";}div.tag.tc8{border-color:#471c3e;background-color:#ddb2d4;}div.tag.tc9::before{content:"";}div.tag.tc9:hover::before{content:"";}div.tag.tc9{border-color:#8dd0f9;background-color:#ffffff;}div.tag.tc10::before{content:"";}div.tag.tc10:hover::before{content:"";}div.tag.tc10{border-color:#7a36b1;background-color:#ffccff;}div.tag.tc11::before{content:"";}div.tag.tc11:hover::before{content:"";}div.tag.tc11{border-color:#a0fdaf;background-color:#ffffff;}div.tag.tc12::before{content:"";}div.tag.tc12:hover::before{content:"";}div.tag.tc12{border-color:#5d6283;background-color:#f3f8ff;}div.tag.tc13::before{content:"";}div.tag.tc13:hover::before{content:"";}div.tag.tc13{border-color:#836e3d;background-color:#ffffd3;}div.tag.tc14::before{content:"";}div.tag.tc14:hover::before{content:"";}div.tag.tc14{border-color:#f3c553;background-color:#ffffe9;}div.tag.tc15::before{content:"";}div.tag.tc15:hover::before{content:"";}div.tag.tc15{border-color:#ea8bc2;background-color:#ffffff;}div.tag.tc16::before{content:"";}div.tag.tc16:hover::before{content:"";}div.tag.tc16{border-color:#a2be00;background-color:#ffff96;}div.tag.tc17::before{content:"";}div.tag.tc17:hover::before{content:"";}div.tag.tc17{border-color:#b7a0c5;background-color:#ffffff;}div.tag.tc18::before{content:"";}div.tag.tc18:hover::before{content:"";}div.tag.tc18{border-color:#244010;background-color:#bad6a6;}div.tag.tc19::before{content:"";}div.tag.tc19:hover::before{content:"";}div.tag.tc19{border-color:#9b624f;background-color:#fff8e5;}div.tag.tc20::before{content:"";}div.tag.tc20:hover::before{content:"";}div.tag.tc20{border-color:#042c46;background-color:#9ac2dc;}div.tag.tc21::before{content:"";}div.tag.tc21:hover::before{content:"";}div.tag.tc21{border-color:#3e2dd3;background-color:#d4c3ff;}div.tag.tc22::before{content:"";}div.tag.tc22:hover::before{content:"";}div.tag.tc22{border-color:#23219b;background-color:#b9b7ff;}div.tag.tc23::before{content:"";}div.tag.tc23:hover::before{content:"";}div.tag.tc23{border-color:#cdde87;background-color:#ffffff;}div.tag.tc24::before{content:"";}div.tag.tc24:hover::before{content:"";}div.tag.tc24{border-color:#281c1e;background-color:#beb2b4;}div.tag.tc25::before{content:"";}div.tag.tc25:hover::before{content:"";}div.tag.tc25{border-color:#66a44a;background-color:#fcffe0;}div.tag.tc26::before{content:"";}div.tag.tc26:hover::before{content:"";}div.tag.tc26{border-color:#2139f2;background-color:#b7cfff;}div.tag.tc27::before{content:"";}div.tag.tc27:hover::before{content:"";}div.tag.tc27{border-color:#1bdae4;background-color:#b1ffff;}div.tag.tc28::before{content:"";}div.tag.tc28:hover::before{content:"";}div.tag.tc28{border-color:#ffb984;background-color:#ffffff;}div.tag.tc29::before{content:"";}div.tag.tc29:hover::before{content:"";}div.tag.tc29{border-color:#37dfaf;background-color:#cdffff;}div.tag.tc30::before{content:"";}div.tag.tc30:hover::before{content:"";}div.tag.tc30{border-color:#834f89;background-color:#ffe5ff;}div.tag.tc31::before{content:"";}div.tag.tc31:hover::before{content:"";}div.tag.tc31{border-color:#d6d00f;background-color:#ffffa5;}
|
||||
Reference in New Issue
Block a user