mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 05:37:35 +02:00
Merge branch 'master' into develop
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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, {
|
||||
|
||||
Reference in New Issue
Block a user