mode reminder for lazy peeps

This commit is contained in:
2026-07-15 22:04:20 +02:00
parent 8778dbf3da
commit afc776d948
10 changed files with 261 additions and 32 deletions

View File

@@ -327,7 +327,10 @@
"scroll_for_more": "Scrollen für mehr..."
},
"error": {
"label": "Fehler"
"label": "Fehler",
"post_not_visible": "Dieser Beitrag ist derzeit leider nicht sichtbar.",
"filter_hint": "Dein aktueller Filter ist auf {mode} gesetzt.",
"filter_hint_link": "Um diesen Inhalt zu sehen, ändere deinen Filter entsprechend."
},
"drop": {
"drop_anywhere": "Überall ablegen zum Hochladen"

View File

@@ -327,7 +327,10 @@
"scroll_for_more": "Scroll for more..."
},
"error": {
"label": "Error"
"label": "Error",
"post_not_visible": "Sorry, this post is currently not visible.",
"filter_hint": "Your current filter is set to {mode}.",
"filter_hint_link": "To view this content, change your filter accordingly."
},
"drop": {
"drop_anywhere": "Drop anywhere to upload"

View File

@@ -327,7 +327,10 @@
"scroll_for_more": "Scroll voor meer..."
},
"error": {
"label": "Fout"
"label": "Fout",
"post_not_visible": "Sorry, deze post is momenteel niet zichtbaar.",
"filter_hint": "Je huidige filter is ingesteld op {mode}.",
"filter_hint_link": "Om deze inhoud te bekijken, pas je filter aan."
},
"drop": {
"drop_anywhere": "Overal slepen om te uploaden"

View File

@@ -325,7 +325,10 @@
"scroll_for_more": "Scrollen für mehr..."
},
"error": {
"label": "Fehler"
"label": "Fehler",
"post_not_visible": "Bedauerlicher Weise ist dieser Pfosten derzeit nicht sichtbar.",
"filter_hint": "Ihr aktueller Filter ist auf {mode} eingestellt.",
"filter_hint_link": "Um diesen Inhalt zu betrachten, stellen Sie Ihren Filter entsprechend um."
},
"drop": {
"drop_anywhere": "Überall ablegen zum Aufladieren"

View File

@@ -1,6 +1,7 @@
import f0cklib from "../routeinc/f0cklib.mjs";
import url from "url";
import cfg from "../config.mjs";
import { createI18n } from "../i18n.mjs";
export default (router, tpl) => {
router.get(/\/ajax\/item\/(?<itemid>\d+)/, async (req, res) => {
@@ -57,9 +58,17 @@ export default (router, tpl) => {
const tAjaxFetch = Date.now();
if (!data.success) {
const reqMode = (query.mode !== undefined ? +query.mode : req.mode) ?? 0;
const modeLabels = { 0: 'SFW', 1: 'NSFW', 2: 'Untagged', 4: 'NSFL' };
const errorModeLabel = (req.session && reqMode !== 3) ? (modeLabels[reqMode] || null) : null;
const { t: tErr } = createI18n(req.session?.language || req.lang || 'en');
const errorHtml = tpl.render('error-partial', {
message: data.message || '404 - Not f0cked',
tmp: null
message: tErr('error.post_not_visible'),
tmp: null,
session: req.session ? { ...req.session } : false,
error_mode_label: errorModeLabel,
error_filter_hint: errorModeLabel ? tErr('error.filter_hint', { mode: `<strong>${errorModeLabel}</strong>` }) : null,
error_filter_hint_link: tErr('error.filter_hint_link')
}, req);
return res.reply({
headers: { 'Content-Type': 'application/json' },

View File

@@ -2,6 +2,7 @@ import cfg from "../config.mjs";
import db from "../sql.mjs";
import lib from "../lib.mjs";
import f0cklib from "../routeinc/f0cklib.mjs";
import { createI18n } from "../i18n.mjs";
const auth = async (req, res, next) => {
if (!req.session)
@@ -270,13 +271,21 @@ export default (router, tpl) => {
// Return 200 for filtered NSFW items (has item data) so Discord parses og:image
// Return 404 only for truly missing items
const statusCode = data.item ? 200 : 404;
const reqMode = req.mode ?? 0;
const modeLabels = { 0: 'SFW', 1: 'NSFW', 2: 'Untagged', 4: 'NSFL' };
const errorModeLabel = (req.session && reqMode !== 3) ? (modeLabels[reqMode] || null) : null;
const { t: tErr } = createI18n(req.session?.language || req.lang || 'en');
return res.reply({
code: statusCode,
body: tpl.render('error', {
message: data.message,
message: tErr('error.post_not_visible'),
item: data.item, // For OG meta tags on filtered NSFW items
domain: cfg.main.url.domain,
tmp: null
tmp: null,
session: req.session ? { ...req.session } : false,
error_mode_label: errorModeLabel,
error_filter_hint: errorModeLabel ? tErr('error.filter_hint', { mode: `<strong>${errorModeLabel}</strong>` }) : null,
error_filter_hint_link: tErr('error.filter_hint_link')
}, req)
});
}