Merge branch 'master' into develop

This commit is contained in:
Barış Soner Uşaklı
2026-04-08 11:19:23 -04:00
6 changed files with 32 additions and 24 deletions

View File

@@ -6,6 +6,7 @@ const path = require('path');
const winston = require('winston');
const db = require('../database');
const file = require('../file');
const pubsub = require('../pubsub');
const Meta = require('./index');
const translator = require('../translator');
@@ -212,20 +213,17 @@ async function getLogoSize(data) {
if (!data['brand:logo']) {
return;
}
const x50Path = path.join(nconf.get('upload_path'), 'system', 'site-logo-x50.png');
let size;
try {
size = await image.size(path.join(nconf.get('upload_path'), 'system', 'site-logo-x50.png'));
} catch (err) {
if (err.code === 'ENOENT') {
// For whatever reason the x50 logo wasn't generated, gracefully error out
winston.warn('[logo] The email-safe logo doesn\'t seem to have been created, please re-upload your site logo.');
size = {
height: 0,
width: 0,
};
} else {
throw err;
}
if (await file.exists(x50Path)) {
size = await image.size(x50Path);
} else {
// For whatever reason the x50 logo wasn't generated, gracefully error out
winston.warn('[logo] The email-safe logo doesn\'t seem to have been created, please re-upload your site logo.');
size = {
height: 0,
width: 0,
};
}
data['brand:emailLogo'] = nconf.get('url') + path.join(nconf.get('upload_url'), 'system', 'site-logo-x50.png');
data['brand:emailLogo:height'] = size.height;

View File

@@ -21,6 +21,7 @@ Tags.parse = async (req, data, meta, link) => {
name: 'viewport',
// https://stackoverflow.com/a/77815388 for resizes-content
content: 'width=device-width, initial-scale=1.0, interactive-widget=resizes-content',
noEscape: true,
}, {
name: 'content-type',
content: 'text/html; charset=UTF-8',

View File

@@ -17,14 +17,23 @@ const controllers = {
const middleware = module.exports;
middleware.buildHeader = helpers.try(async (req, res, next) => {
res.locals.renderAdminHeader = true;
await doBuildHeader(req, res);
next();
});
middleware.buildHeaderAsync = async (req, res) => {
await doBuildHeader(req, res);
};
async function doBuildHeader(req, res) {
res.locals.renderHeaderType = 'admin';
res.locals.isAPI = false;
if (req.method === 'GET') {
await require('./index').applyCSRFasync(req, res);
}
await plugins.hooks.fire('filter:middleware.buildAdminHeader', { req: req, locals: res.locals });
res.locals.config = await controllers.admin.loadConfig(req);
next();
});
}
middleware.checkPrivileges = helpers.try(async (req, res, next) => {
// Kick out guests, obviously

View File

@@ -19,7 +19,7 @@ middleware.buildHeaderAsync = async (req, res) => {
};
async function doBuildHeader(req, res) {
res.locals.renderHeader = true;
res.locals.renderHeaderType = 'client';
res.locals.isAPI = false;
if (req.method === 'GET') {
await require('./index').applyCSRFasync(req, res);

View File

@@ -139,9 +139,9 @@ module.exports = function (middleware) {
}
async function loadHeaderFooterData(req, res, options) {
if (res.locals.renderHeader) {
if (res.locals.renderHeaderType === 'client') {
return await loadClientHeaderFooterData(req, res, options);
} else if (res.locals.renderAdminHeader) {
} else if (res.locals.renderHeaderType === 'admin') {
return await loadAdminHeaderFooterData(req, res, options);
}
return null;
@@ -382,13 +382,13 @@ module.exports = function (middleware) {
async function renderHeaderFooter(method, req, res, options, headerFooterData) {
let str = '';
if (res.locals.renderHeader) {
if (res.locals.renderHeaderType === 'client') {
if (method === 'renderHeader') {
str = await renderHeader(req, res, options, headerFooterData);
} else if (method === 'renderFooter') {
str = await renderFooter(req, res, options, headerFooterData);
}
} else if (res.locals.renderAdminHeader) {
} else if (res.locals.renderHeaderType === 'admin') {
if (method === 'renderHeader') {
str = await renderAdminHeader(req, res, options, headerFooterData);
} else if (method === 'renderFooter') {
@@ -400,7 +400,7 @@ module.exports = function (middleware) {
function getLang(req, res) {
let language = (res.locals.config && res.locals.config.userLang) || 'en-GB';
if (res.locals.renderAdminHeader) {
if (res.locals.renderHeaderType === 'admin') {
language = (res.locals.config && res.locals.config.acpLang) || 'en-GB';
}
return req.query.lang ? validator.escape(String(req.query.lang)) : language;

View File

@@ -144,7 +144,7 @@ module.exports = function (User) {
const uploadedImage = await image.uploadImage(filename, `profile/uid-${updateUid}`, {
uid: updateUid,
path: normalizedPath,
name: 'profileAvatar',
name: `profileAvatar${extension}`,
});
await User.updateProfile(callerUid, {