Changeset 495b019 in Klonkt for src/middleware
- Timestamp:
- 10/25/2026 09:52:01 AM (2 days ago)
- Children:
- b4aaadd
- Parents:
- 5d0d3f35
- git-author:
- Bart <bart@…> (10/14/2026 02:48:46 PM)
- git-committer:
- Bart <bart@…> (10/25/2026 09:52:01 AM)
- File:
-
- 1 edited
-
src/middleware/render.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/middleware/render.js
r5d0d3f35 r495b019 21 21 import { emojiHtml, emojiName, parseQuote } from '../services/NoteRender.js'; 22 22 import ActivityPubService from '../services/ActivityPubService.js'; 23 import ThemeService from '../services/ThemeService.js'; 23 24 import { imgProxyUrl } from '../services/ThumbnailService.js'; 24 25 import { audioEnabled as audioFeatureEnabled } from '../config/features.js'; … … 187 188 defaultLang: getSetting('default_lang'), 188 189 }); 190 191 // Lay-out (experimental/theme): wie de site beheert, mag met ?layout= een 192 // ander thema voorproeven; een bezoeker kiest niets. 193 const _canManageSite = !!(_u && (_role === 'god' || _role === 'admin' || userOwnsSite)); 194 const _isAdminPage = String(viewName || '').startsWith('pages/admin') 195 || String(data.bodyClass || '').split(/\s+/).includes('on-admin'); 196 const _preview = typeof req.query.layout === 'string' ? req.query.layout : null; 197 const _layout = ThemeService.resolveLayout(_site, { isAdminPage: _isAdminPage, canManage: _canManageSite, preview: _preview }); 198 const _siteLayout = _site && _site.layout ? ThemeService.getLayout(_site.layout) : null; 199 const _previewLayout = (_canManageSite && _preview) ? ThemeService.getLayout(_preview) : null; 200 const _layoutSheets = [...new Set([_siteLayout, _previewLayout].filter(Boolean) 201 .map((m) => ThemeService.layoutStylesheetUrl(m)))]; 189 202 190 203 // Common locals … … 252 265 appVersion: APP_VERSION, 253 266 bodyClass: data.bodyClass || 'on-home', 267 // De lay-out van deze pagina (experimental/theme). null = de gewone kop. 268 // Beheerpagina's altijd de gewone kop; ?layout= alleen voor wie de site 269 // beheert (zie ThemeService.resolveLayout). 270 layoutTheme: _layout ? { id: _layout.id, name: _layout.name } : null, 271 // De stylesheets die mee moeten: die van de site en, bij een voorproefje, 272 // die van het voorproefje. Ze staan er ook op een pagina die zelf geen 273 // lay-out draagt (beheer): hun regels gelden alleen onder data-layout, en 274 // wie vanuit het beheer naar de site navigeert heeft ze dan al. 275 layoutSheets: _layoutSheets, 254 276 // Welke module(s) deze pagina nodig heeft (shaer-bqr). De shell zet ze op 255 277 // body[data-js]; de bootstrap daar importeert ze uit /assets/js/mod/. … … 299 321 const _navJs = ('chrome ' + (locals.pageJs || '')).trim(); 300 322 const triggerJson = JSON.stringify({ 301 pcmsNav: { bodyClass: locals.bodyClass, accent: _navAccent, palette: _navPalette, js: _navJs },323 pcmsNav: { bodyClass: locals.bodyClass, accent: _navAccent, palette: _navPalette, js: _navJs, layout: locals.layoutTheme ? locals.layoutTheme.id : 'top' }, 302 324 pcmsPostSwap: data.post ? { 303 325 title: data.post.title,
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)