Remove references
This commit is contained in:
@@ -1,97 +0,0 @@
|
|||||||
.wg-latest-strip {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
||||||
gap: 1rem;
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 0 1.35rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-card {
|
|
||||||
position: relative;
|
|
||||||
min-width: 0;
|
|
||||||
padding: 1rem 1.1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background:
|
|
||||||
linear-gradient(100deg, rgba(32, 19, 30, 0.96), rgba(13, 12, 17, 0.98)),
|
|
||||||
rgba(13, 12, 17, 0.98);
|
|
||||||
border: 1px solid rgba(194, 163, 90, 0.2);
|
|
||||||
border-radius: 6px;
|
|
||||||
box-shadow:
|
|
||||||
inset 0 1px 0 rgba(255, 244, 221, 0.04),
|
|
||||||
0 14px 30px rgba(0, 0, 0, 0.26);
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-card::before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
inset: 0 auto 0 0;
|
|
||||||
width: 3px;
|
|
||||||
background: rgba(194, 163, 90, 0.58);
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-card--patch::before {
|
|
||||||
background: rgba(143, 178, 119, 0.58);
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-kicker {
|
|
||||||
margin-bottom: 0.45rem;
|
|
||||||
color: #c2a35a;
|
|
||||||
font-family: var(--wg-font-display, Georgia, serif);
|
|
||||||
font-size: 0.82rem;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.08em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-title {
|
|
||||||
display: block;
|
|
||||||
color: var(--wg-text, #e6e0d6);
|
|
||||||
font-family: var(--wg-font-display, Georgia, serif);
|
|
||||||
font-size: 1.08rem;
|
|
||||||
font-weight: 600;
|
|
||||||
line-height: 1.25;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-title:hover,
|
|
||||||
.wg-latest-title:focus {
|
|
||||||
color: #fff4dd;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-meta {
|
|
||||||
min-height: 1.15rem;
|
|
||||||
margin-top: 0.35rem;
|
|
||||||
color: rgba(185, 178, 166, 0.78);
|
|
||||||
font-family: var(--wg-font-ui, system-ui, sans-serif);
|
|
||||||
font-size: 0.78rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-excerpt {
|
|
||||||
display: -webkit-box;
|
|
||||||
margin: 0.55rem 0 0;
|
|
||||||
overflow: hidden;
|
|
||||||
color: rgba(216, 208, 196, 0.84);
|
|
||||||
font-family: var(--wg-font-text, Georgia, serif);
|
|
||||||
font-size: 0.9rem;
|
|
||||||
line-height: 1.45;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-card.is-loading .wg-latest-title,
|
|
||||||
.wg-latest-card.is-empty .wg-latest-title {
|
|
||||||
color: rgba(185, 178, 166, 0.74);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767px) {
|
|
||||||
.wg-latest-strip {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
gap: 0.75rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-card {
|
|
||||||
padding: 0.9rem 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,190 +0,0 @@
|
|||||||
(() => {
|
|
||||||
const WESTGATE_LATEST_CONFIG = [
|
|
||||||
{
|
|
||||||
key: 'announcement',
|
|
||||||
cid: 1,
|
|
||||||
emptyTitle: 'No announcements yet',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'patch',
|
|
||||||
cid: 10,
|
|
||||||
emptyTitle: 'No patch notes yet',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const getRelativePath = () => {
|
|
||||||
return window.config && window.config.relative_path ? window.config.relative_path : '';
|
|
||||||
};
|
|
||||||
|
|
||||||
const unwrap = (payload) => {
|
|
||||||
return payload && payload.response ? payload.response : payload;
|
|
||||||
};
|
|
||||||
|
|
||||||
const textFromHtml = (html) => {
|
|
||||||
const el = document.createElement('div');
|
|
||||||
el.innerHTML = html || '';
|
|
||||||
|
|
||||||
const firstParagraph = Array.from(el.querySelectorAll('p'))
|
|
||||||
.map((p) => (p.textContent || '').replace(/\s+/g, ' ').trim())
|
|
||||||
.find(Boolean);
|
|
||||||
|
|
||||||
return (firstParagraph || el.textContent || '').replace(/\s+/g, ' ').trim();
|
|
||||||
};
|
|
||||||
|
|
||||||
const truncate = (text, limit = 240) => {
|
|
||||||
if (!text || text.length <= limit) {
|
|
||||||
return text || '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${text.slice(0, limit).replace(/\s+\S*$/, '')}...`;
|
|
||||||
};
|
|
||||||
|
|
||||||
const formatDate = (value) => {
|
|
||||||
const timestamp = Number(value);
|
|
||||||
if (!timestamp) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
const date = new Date(timestamp);
|
|
||||||
if (Number.isNaN(date.getTime())) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Intl.DateTimeFormat(undefined, {
|
|
||||||
month: 'short',
|
|
||||||
day: 'numeric',
|
|
||||||
}).format(date);
|
|
||||||
};
|
|
||||||
|
|
||||||
const getJSON = async (url) => {
|
|
||||||
const response = await fetch(url, {
|
|
||||||
credentials: 'same-origin',
|
|
||||||
headers: {
|
|
||||||
accept: 'application/json',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!response.ok) {
|
|
||||||
throw new Error(`Request failed: ${response.status}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return unwrap(await response.json());
|
|
||||||
};
|
|
||||||
|
|
||||||
const getTopicExcerpt = async (topic) => {
|
|
||||||
const relativePath = getRelativePath();
|
|
||||||
const topicPath = topic.slug || topic.tid;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const topicData = await getJSON(`${relativePath}/api/topic/${topicPath}?page=1&sort=oldest_to_newest`);
|
|
||||||
const firstPost = topicData.posts && topicData.posts[0];
|
|
||||||
const firstPostText = textFromHtml(firstPost && firstPost.content);
|
|
||||||
|
|
||||||
if (firstPostText) {
|
|
||||||
return truncate(firstPostText);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.warn('[Westgate latest widget original post excerpt]', error);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (topic.mainPost && topic.mainPost.content) {
|
|
||||||
const mainPostText = textFromHtml(topic.mainPost.content);
|
|
||||||
if (mainPostText) {
|
|
||||||
return truncate(mainPostText);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (topic.teaser && topic.teaser.content) {
|
|
||||||
return truncate(textFromHtml(topic.teaser.content));
|
|
||||||
}
|
|
||||||
|
|
||||||
return '';
|
|
||||||
};
|
|
||||||
|
|
||||||
const getLatestTopic = async (cid) => {
|
|
||||||
const relativePath = getRelativePath();
|
|
||||||
const category = await getJSON(`${relativePath}/api/v3/categories/${cid}/topics?sort=recently_created&after=0`);
|
|
||||||
const topic = category.topics && category.topics[0];
|
|
||||||
|
|
||||||
if (!topic) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
let excerpt = '';
|
|
||||||
|
|
||||||
try {
|
|
||||||
excerpt = await getTopicExcerpt(topic);
|
|
||||||
} catch (error) {
|
|
||||||
console.warn('[Westgate latest widget excerpt]', error);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
title: topic.titleRaw || topic.title || 'Untitled',
|
|
||||||
url: `${relativePath}/topic/${topic.slug || topic.tid}`,
|
|
||||||
author: topic.user && (topic.user.displayname || topic.user.username),
|
|
||||||
date: formatDate(topic.timestamp || topic.lastposttime),
|
|
||||||
excerpt,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const renderCard = async (root, source) => {
|
|
||||||
const card = root.querySelector(`[data-card="${source.key}"]`);
|
|
||||||
if (!card) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const title = card.querySelector('.wg-latest-title');
|
|
||||||
const meta = card.querySelector('.wg-latest-meta');
|
|
||||||
const excerpt = card.querySelector('.wg-latest-excerpt');
|
|
||||||
|
|
||||||
card.classList.add('is-loading');
|
|
||||||
card.classList.remove('is-empty');
|
|
||||||
title.textContent = 'Loading...';
|
|
||||||
title.removeAttribute('href');
|
|
||||||
meta.textContent = '';
|
|
||||||
excerpt.textContent = '';
|
|
||||||
|
|
||||||
try {
|
|
||||||
const topic = await getLatestTopic(source.cid);
|
|
||||||
|
|
||||||
if (!topic) {
|
|
||||||
card.classList.remove('is-loading');
|
|
||||||
card.classList.add('is-empty');
|
|
||||||
title.textContent = source.emptyTitle;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
title.textContent = topic.title;
|
|
||||||
title.href = topic.url;
|
|
||||||
meta.textContent = [topic.author, topic.date].filter(Boolean).join(' · ');
|
|
||||||
excerpt.textContent = topic.excerpt || '';
|
|
||||||
card.classList.remove('is-loading', 'is-empty');
|
|
||||||
} catch (error) {
|
|
||||||
console.warn('[Westgate latest widget]', error);
|
|
||||||
card.classList.remove('is-loading');
|
|
||||||
card.classList.add('is-empty');
|
|
||||||
title.textContent = source.emptyTitle;
|
|
||||||
meta.textContent = 'Unable to load right now';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const renderLatestStrip = () => {
|
|
||||||
const root = document.querySelector('[data-westgate-latest]');
|
|
||||||
|
|
||||||
if (!root || root.dataset.loaded === '1') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
root.dataset.loaded = '1';
|
|
||||||
WESTGATE_LATEST_CONFIG.forEach((source) => renderCard(root, source));
|
|
||||||
};
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', renderLatestStrip);
|
|
||||||
window.addEventListener('load', renderLatestStrip);
|
|
||||||
|
|
||||||
if (window.jQuery) {
|
|
||||||
window.jQuery(window).on('action:ajaxify.end', renderLatestStrip);
|
|
||||||
}
|
|
||||||
|
|
||||||
renderLatestStrip();
|
|
||||||
})();
|
|
||||||
File diff suppressed because it is too large
Load Diff
+32
-100
@@ -70,98 +70,6 @@ li[component="post"] .post-container:hover {
|
|||||||
0 12px 30px rgba(0, 0, 0, 0.3) !important;
|
0 12px 30px rgba(0, 0, 0, 0.3) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.westgate-powered-by {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 10px;
|
|
||||||
padding: 10px 0 14px;
|
|
||||||
color: var(--wg-text-muted);
|
|
||||||
font-family: var(--wg-font-ui);
|
|
||||||
font-size: 0.875rem;
|
|
||||||
letter-spacing: 0;
|
|
||||||
line-height: 1.2;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-pill {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 7px;
|
|
||||||
min-height: 32px;
|
|
||||||
padding: 6px 12px;
|
|
||||||
background: var(--wg-velvet-panel) !important;
|
|
||||||
border: 1px solid var(--wg-border) !important;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: var(--wg-velvet-shadow) !important;
|
|
||||||
color: var(--wg-text-muted);
|
|
||||||
line-height: 1;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: background 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease, color 0.18s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-pill:hover,
|
|
||||||
.westgate-powered-pill:focus {
|
|
||||||
background: var(--wg-velvet-panel-hover) !important;
|
|
||||||
border-color: rgba(194, 163, 90, 0.22) !important;
|
|
||||||
box-shadow:
|
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.035),
|
|
||||||
inset 0 0 38px rgba(120, 36, 84, 0.14),
|
|
||||||
0 12px 30px rgba(0, 0, 0, 0.3) !important;
|
|
||||||
color: #efe7da;
|
|
||||||
text-decoration: none;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-pill:focus-visible {
|
|
||||||
border-color: rgba(216, 194, 138, 0.38) !important;
|
|
||||||
box-shadow:
|
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.035),
|
|
||||||
inset 0 0 38px rgba(120, 36, 84, 0.14),
|
|
||||||
0 0 0 2px rgba(194, 163, 90, 0.18),
|
|
||||||
0 12px 30px rgba(0, 0, 0, 0.3) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-by .powered-label {
|
|
||||||
color: var(--wg-ledger-ink);
|
|
||||||
font-weight: 600;
|
|
||||||
opacity: 0.95;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-pill:hover .powered-label,
|
|
||||||
.westgate-powered-pill:focus .powered-label {
|
|
||||||
color: #efe7da;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-by .nodebb-logo,
|
|
||||||
.westgate-powered-by .ckeditor-logo {
|
|
||||||
display: block;
|
|
||||||
width: auto;
|
|
||||||
opacity: 0.95;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-by .nodebb-logo {
|
|
||||||
height: 14px;
|
|
||||||
transform: translateY(-1px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-by .ckeditor-logo {
|
|
||||||
height: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-pill:hover .nodebb-logo,
|
|
||||||
.westgate-powered-pill:focus .nodebb-logo,
|
|
||||||
.westgate-powered-pill:hover .ckeditor-logo,
|
|
||||||
.westgate-powered-pill:focus .ckeditor-logo {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.westgate-powered-by .ckeditor-logo path[fill="#1C2331"] {
|
|
||||||
fill: #f2edf7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wg-latest-strip {
|
.wg-latest-strip {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
@@ -285,7 +193,9 @@ li[component="category/topic"] h3[component="topic/header"] {
|
|||||||
font-family: var(--wg-font-display);
|
font-family: var(--wg-font-display);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.9), 0 0 10px rgba(104, 32, 76, 0.16);
|
text-shadow:
|
||||||
|
0 1px 0 rgba(0, 0, 0, 0.9),
|
||||||
|
0 0 10px rgba(104, 32, 76, 0.16);
|
||||||
}
|
}
|
||||||
|
|
||||||
p,
|
p,
|
||||||
@@ -346,8 +256,17 @@ samp,
|
|||||||
|
|
||||||
.user-icon {
|
.user-icon {
|
||||||
background-image:
|
background-image:
|
||||||
radial-gradient(circle at 34% 22%, rgba(255, 238, 190, 0.22), transparent 25%),
|
radial-gradient(
|
||||||
linear-gradient(145deg, rgba(111, 86, 45, 0.36), rgba(30, 29, 34, 0.28) 42%, rgba(44, 17, 34, 0.2)) !important;
|
circle at 34% 22%,
|
||||||
|
rgba(255, 238, 190, 0.22),
|
||||||
|
transparent 25%
|
||||||
|
),
|
||||||
|
linear-gradient(
|
||||||
|
145deg,
|
||||||
|
rgba(111, 86, 45, 0.36),
|
||||||
|
rgba(30, 29, 34, 0.28) 42%,
|
||||||
|
rgba(44, 17, 34, 0.2)
|
||||||
|
) !important;
|
||||||
text-shadow:
|
text-shadow:
|
||||||
0 1px 0 rgba(0, 0, 0, 0.78),
|
0 1px 0 rgba(0, 0, 0, 0.78),
|
||||||
0 -1px 0 rgba(255, 238, 190, 0.16),
|
0 -1px 0 rgba(255, 238, 190, 0.16),
|
||||||
@@ -413,7 +332,11 @@ li[component="category/topic"] .user-icon {
|
|||||||
.chats-list [component="chat/recent/room"],
|
.chats-list [component="chat/recent/room"],
|
||||||
[component="chat/public/room"] {
|
[component="chat/public/room"] {
|
||||||
background:
|
background:
|
||||||
linear-gradient(to bottom, rgba(255, 241, 196, 0.018), rgba(8, 7, 10, 0.08)),
|
linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(255, 241, 196, 0.018),
|
||||||
|
rgba(8, 7, 10, 0.08)
|
||||||
|
),
|
||||||
var(--wg-velvet-panel) !important;
|
var(--wg-velvet-panel) !important;
|
||||||
border: 1px solid rgba(194, 163, 90, 0.14) !important;
|
border: 1px solid rgba(194, 163, 90, 0.14) !important;
|
||||||
border-radius: 8px !important;
|
border-radius: 8px !important;
|
||||||
@@ -444,7 +367,11 @@ li[component="category/topic"] .user-icon {
|
|||||||
.chats-list .mark-read {
|
.chats-list .mark-read {
|
||||||
border-color: rgba(194, 163, 90, 0.18) !important;
|
border-color: rgba(194, 163, 90, 0.18) !important;
|
||||||
border-radius: 6px !important;
|
border-radius: 6px !important;
|
||||||
background: linear-gradient(to bottom, rgba(255, 244, 221, 0.018), rgba(0, 0, 0, 0.08)) !important;
|
background: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(255, 244, 221, 0.018),
|
||||||
|
rgba(0, 0, 0, 0.08)
|
||||||
|
) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notifications-dropdown .mark-read:hover,
|
.notifications-dropdown .mark-read:hover,
|
||||||
@@ -502,8 +429,11 @@ li[component="category/topic"] .user-icon {
|
|||||||
[component="chat/public/room/unread/count"],
|
[component="chat/public/room/unread/count"],
|
||||||
.chats-dropdown .badge.bg-light,
|
.chats-dropdown .badge.bg-light,
|
||||||
.chats-list .badge.bg-light {
|
.chats-list .badge.bg-light {
|
||||||
background:
|
background: linear-gradient(
|
||||||
linear-gradient(to bottom, rgba(216, 194, 138, 0.13), rgba(70, 45, 52, 0.28)) !important;
|
to bottom,
|
||||||
|
rgba(216, 194, 138, 0.13),
|
||||||
|
rgba(70, 45, 52, 0.28)
|
||||||
|
) !important;
|
||||||
border: 1px solid rgba(194, 163, 90, 0.28) !important;
|
border: 1px solid rgba(194, 163, 90, 0.28) !important;
|
||||||
color: var(--wg-ledger-ink) !important;
|
color: var(--wg-ledger-ink) !important;
|
||||||
}
|
}
|
||||||
@@ -512,7 +442,9 @@ li[component="category/topic"] .user-icon {
|
|||||||
color: var(--wg-text-muted) !important;
|
color: var(--wg-text-muted) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
[component="chat/user/list"] [data-uid].online [component="chat/user/list/username"] {
|
[component="chat/user/list"]
|
||||||
|
[data-uid].online
|
||||||
|
[component="chat/user/list/username"] {
|
||||||
color: var(--wg-text) !important;
|
color: var(--wg-text) !important;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user