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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 pHZZU9vz$z#lXP8;OXk;vd$@?2>@+{&%*!! 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 @@