From a87273cea06894ed44570f4172920579a87e5d9a Mon Sep 17 00:00:00 2001 From: Flummi Date: Wed, 29 Dec 2021 05:48:04 +0100 Subject: [PATCH] misc --- public/s/css/f0ck.css | 50 +++++++++++++++++++++++++------------ public/s/img/ava/nixc.png | Bin 0 -> 6627 bytes public/s/js/admin.js | 14 ++--------- public/s/js/f0ck.js | 2 +- src/inc/lib.mjs | 19 +++++++++++--- src/inc/routes/index.mjs | 2 +- views/admin/log.html | 4 +-- views/admin/search.html | 4 +-- views/admin/sessions.html | 4 +-- views/error.html | 2 +- views/item.html | 4 +-- views/snippets/navbar.html | 2 +- 12 files changed, 63 insertions(+), 44 deletions(-) create mode 100644 public/s/img/ava/nixc.png diff --git a/public/s/css/f0ck.css b/public/s/css/f0ck.css index 2fbd6e2..9dc72c3 100644 --- a/public/s/css/f0ck.css +++ b/public/s/css/f0ck.css @@ -35,7 +35,7 @@ html[theme='f0ck'] { --posts-meta-bg: #000000b8; --badge-sfw: #68a728; --badge-nsfw: #a72828; - --badge-tag: #6c6c6c; + --badge-tag: #090909; --scrollbar-color: #2b2b2b; --scroller-bg: #424242; } @@ -68,7 +68,7 @@ html[theme='p1nk'] { --badge-bg: #171717; --badge-sfw: #68a728; --badge-nsfw: #a72828; - --badge-tag: #6c6c6c; + --badge-tag: #090909; --metadata-bg: #0d0d0d; --posts-meta-bg: #000000b8; --scrollbar-color: #2b2b2b; @@ -100,12 +100,12 @@ html[theme='orange'] { --pagination-anchor-box-shadow: inset 0 0 0 1px rgba(255,255,255,.04),inset 0 1px rgba(255,255,255,.04),inset 0 -1px rgba(0,0,0,.15),0 1px 1px rgba(0,0,0,.1); --pagination-background-hover: #333; --pagination-border-color: rgba(0,0,0,.8) rgba(0,0,0,.65) rgba(0,0,0,.5); - --metadata-bg: #0d0d0d; + --metadata-bg: #2b2b2b; + --badge-bg: #151515; --posts-meta-bg: #000000b8; - --badge-bg: #171717; + --badge-tag: #090909; --badge-sfw: #68a728; --badge-nsfw: #a72828; - --badge-tag: #6c6c6c; --scrollbar-color: #2b2b2b; --scroller-bg: #424242; } @@ -141,7 +141,7 @@ html[theme='amoled'] { --posts-meta-bg: #000000b8; --badge-sfw: #68a728; --badge-nsfw: #a72828; - --badge-tag: #6c6c6c; + --badge-tag: #1a1a1a; --scrollbar-color: #1d1c1c; --scroller-bg: #424242; } @@ -177,7 +177,7 @@ html[theme="paper"] { --posts-meta-bg: #000000db; --badge-sfw: #68a728; --badge-nsfw: #a72828; - --badge-tag: #6c6c6c; + --badge-tag: #9f9a9a; --scrollbar-color: #6c6c6c; --scroller-bg: #424242; } @@ -288,7 +288,7 @@ html[theme="atmos"] { --posts-meta-bg: #000000b8; --badge-sfw: #68a728; --badge-nsfw: #a72828; - --badge-tag: #6c6c6c; + --badge-tag: #090909; --scrollbar-color: #2b2b2b; } @@ -388,6 +388,7 @@ html[theme="iced"] { @font-face { font-family: 'VCR'; src: url('/s/vcr.ttf') format('truetype'); + /* https://www.dafont.com/vcr-osd-mono.font */ } html { @@ -632,6 +633,15 @@ span.placeholder { display: block; } +.dropdown:hover .nav-link { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + transition: .2s ease; +} +.dropdown:hover .nav-link > img.avatar { + border-bottom-left-radius: 0; +} + .navbar-nav .dropdown-menu { float: none; } @@ -1027,6 +1037,12 @@ span#tags:empty { text-shadow: inherit !important; background-color: #252525; } +.badge-german { + background: linear-gradient(180deg, black 33.33%, red 33.33%, red 66.66%, yellow 66.66%) !important; +} +.badge-russia { + background: linear-gradient(180deg, white 33.33%, blue 33.33%, blue 66.66%, red 66.66%) !important; +} .about { padding: 10px; @@ -1266,7 +1282,7 @@ div#posts > a > p:before { content: ""; position: absolute; right: 0; - bottom: 0; + bottom: -1px; height: 10px; width: 10px; } @@ -1277,25 +1293,27 @@ div#posts > a[data-mode="nsfw"] > p:before { background-color: #a72828; } div#posts > a[data-mode="null"] > p:before { - background-color: #dcd512; + background-color: #dcd512; /* untagged */ } div#footbar { width: 100%; - /* background-color: var(--nav-bg); */ text-align: center; - /* color: #f00; */ margin-top: -30px; - transition: .5s ease-in-out; + transition: .2s ease-in-out; user-select: none; } /* avatar */ img.avatar { - height: 24px; + height: auto; + position: relative; width: 24px; - border-radius: 25px; - margin-top: 1px; + margin: 0; + left: -6px; + top: 0px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; } /* log */ diff --git a/public/s/img/ava/nixc.png b/public/s/img/ava/nixc.png new file mode 100644 index 0000000000000000000000000000000000000000..35201fd902f1ed65f9e2927261fdea278c222559 GIT binary patch literal 6627 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 VPx#S^MqCg8#)fwdKIl8e{SR%0&%*!! literal 0 HcmV?d00001 diff --git a/public/s/js/admin.js b/public/s/js/admin.js index 5c409cf..46b5635 100644 --- a/public/s/js/admin.js +++ b/public/s/js/admin.js @@ -86,21 +86,11 @@ const flash = ({ type, msg }) => { a.innerHTML = tag.tag; const span = document.createElement("span"); - span.classList.add("badge", "badge-light", "mr-2"); + span.classList.add("badge", "mr-2"); span.setAttribute('tooltip', tag.user); span.dataset.tagid = tag.id; - if(tag.tag == "sfw") { - span.classList.remove("badge-light"); - span.classList.add("badge-success"); - } - if(tag.tag == "nsfw") { - span.classList.remove("badge-light"); - span.classList.add("badge-danger"); - } - if(tag.tag.startsWith(">")) { - span.classList.add("badge-greentext"); - } + tag.badge.split(" ").forEach(b => span.classList.add(b)); const delbutton = document.createElement("a"); delbutton.innerHTML = " ×"; diff --git a/public/s/js/f0ck.js b/public/s/js/f0ck.js index 4887dba..2af902c 100644 --- a/public/s/js/f0ck.js +++ b/public/s/js/f0ck.js @@ -80,7 +80,7 @@ if(elem = document.querySelector(".pagination > .prev:not(.disabled)")) { if(tts < scroll_treshold) { document.querySelector("nav.navbar").style.boxShadow = "0px 2px 0px var(--accent)"; - document.querySelector("nav.navbar").style.transition = ".5s ease-in-out"; + document.querySelector("nav.navbar").style.transition = ".2s ease-in-out"; tts++; } else diff --git a/src/inc/lib.mjs b/src/inc/lib.mjs index 52f1af5..59f5888 100644 --- a/src/inc/lib.mjs +++ b/src/inc/lib.mjs @@ -68,8 +68,7 @@ export default new class { parseTag(tag) { if(!tag) return null; - return tag - .replace(/%20/g, " "); + return decodeURI(tag); } // async funcs @@ -103,8 +102,20 @@ export default new class { .leftJoin("tags", "tags.id", "tags_assign.tag_id") .leftJoin("user", "user.id", "tags_assign.user_id") .where("tags_assign.item_id", itemid); - for(let t = 0; t < tags.length; t++) - tags[t].tag = tags[t].tag.replace(/[\u00A0-\u9999<>\&]/g, i => '&#'+i.charCodeAt(0)+';'); + for(let t = 0; t < tags.length; t++) { + if(tags[t].tag.startsWith(">")) + tags[t].badge = "badge-greentext badge-light"; + else if(/[а-яА-ЯЁё]/.test(tags[t].tag) || tags[t].tag.match(/russia/)) + tags[t].badge = "badge-russia badge-light"; + else if(tags[t].tag.match(/german/)) + tags[t].badge = "badge-german badge-light"; + else if(tags[t].tag === "sfw") + tags[t].badge = "badge-success"; + else if(tags[t].tag === "nsfw") + tags[t].badge = "badge-danger"; + else + tags[t].badge = "badge-light"; + } return tags; }; diff --git a/src/inc/routes/index.mjs b/src/inc/routes/index.mjs index cedf807..f6ae5da 100644 --- a/src/inc/routes/index.mjs +++ b/src/inc/routes/index.mjs @@ -13,7 +13,7 @@ const auth = async (req, res, next) => { export default (router, tpl) => { router.get(/^\/?(?:tag\/(?.+?))?(?:user\/(?.+?))?(?:\/(?image|audio|video))?(?:\/p\/(?\d+))?(?:\/(?\d+))?$/, async (req, res) => { - const user = req.params.user ?? null; + const user = req.params.user ? decodeURI(req.params.user) : null; const tag = lib.parseTag(req.params.tag ?? null); const mime = (req.params.mime ?? ""); const smime = allowedMimes.includes(mime) ? mime + "/%" : mime === "" ? "%" : "%"; diff --git a/views/admin/log.html b/views/admin/log.html index 06fa0b4..f8066fa 100644 --- a/views/admin/log.html +++ b/views/admin/log.html @@ -1,4 +1,4 @@ -@include(main/header_admin) +@include(snippets/header_admin) @if(log)

last {{ log.length }} entries:

@@ -13,4 +13,4 @@ })(); @endif -@include(main/footer) +@include(snippets/footer) diff --git a/views/admin/search.html b/views/admin/search.html index 666a27b..d20bf6b 100644 --- a/views/admin/search.html +++ b/views/admin/search.html @@ -1,4 +1,4 @@ -@include(main/header_admin) +@include(snippets/header_admin)
@@ -24,4 +24,4 @@ @endeach @endif -@include(main/footer) \ No newline at end of file +@include(snippets/footer) \ No newline at end of file diff --git a/views/admin/sessions.html b/views/admin/sessions.html index 377844b..bb19cab 100644 --- a/views/admin/sessions.html +++ b/views/admin/sessions.html @@ -1,4 +1,4 @@ -@include(main/header_admin) +@include(snippets/header_admin) @@ -21,4 +21,4 @@ @endeach
ID
-@include(main/footer) \ No newline at end of file +@include(snippets/footer) \ No newline at end of file diff --git a/views/error.html b/views/error.html index ae74baf..24485e7 100644 --- a/views/error.html +++ b/views/error.html @@ -1,3 +1,3 @@ @include(snippets/header) -

{{ message }}

+

{{ message }}

@include(snippets/footer) diff --git a/views/item.html b/views/item.html index a73e793..5509ca6 100644 --- a/views/item.html +++ b/views/item.html @@ -61,8 +61,8 @@ @if(typeof item.tags !== "undefined") @each(item.tags as tag) - - {{ tag.tag }}@if(session) ×@endif + + {!! tag.tag !!}@if(session) ×@endif @endeach @endif diff --git a/views/snippets/navbar.html b/views/snippets/navbar.html index a2470b3..6000f64 100644 --- a/views/snippets/navbar.html +++ b/views/snippets/navbar.html @@ -5,7 +5,7 @@