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 0000000..35201fd Binary files /dev/null and b/public/s/img/ava/nixc.png differ 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 @@