refactor: explicit settings/appearance routes

This commit is contained in:
Barış Soner Uşaklı
2024-12-09 19:07:46 -05:00
parent c25fd40ae5
commit bb0ff6d602
3 changed files with 141 additions and 66 deletions

View File

@@ -2,8 +2,14 @@
const appearanceController = module.exports;
appearanceController.get = function (req, res) {
const term = req.params.term ? req.params.term : 'themes';
res.render(`admin/appearance/${term}`, {});
appearanceController.themes = function (req, res) {
res.render(`admin/appearance/themes`, {});
};
appearanceController.skins = function (req, res) {
res.render(`admin/appearance/skins`, {});
};
appearanceController.customise = function (req, res) {
res.render(`admin/appearance/customise`, {});
};

View File

@@ -16,64 +16,20 @@ const translator = require('../../translator');
const settingsController = module.exports;
settingsController.get = async function (req, res) {
const term = req.params.term || 'general';
const payload = {
title: `[[admin/menu:settings/${term}]]`,
};
if (term === 'general') {
payload.routes = await helpers.getHomePageRoutes(req.uid);
payload.postSharing = await social.getPostSharing();
const languageData = await languages.list();
languageData.forEach((language) => {
language.selected = language.code === meta.config.defaultLang;
});
payload.languages = languageData;
payload.autoDetectLang = meta.config.autoDetectLang;
}
res.render(`admin/settings/${term}`, payload);
};
settingsController.email = async (req, res) => {
const emails = await emailer.getTemplates(meta.config);
res.render('admin/settings/email', {
title: '[[admin/menu:settings/email]]',
emails: emails,
sendable: emails.filter(e => !e.path.includes('_plaintext') && !e.path.includes('partials')).map(tpl => tpl.path),
services: emailer.listServices(),
settingsController.general = async (req, res) => {
const routes = await helpers.getHomePageRoutes(req.uid);
const postSharing = await social.getPostSharing();
const languageData = await languages.list();
languageData.forEach((language) => {
language.selected = language.code === meta.config.defaultLang;
});
};
settingsController.user = async (req, res) => {
const [notificationTypes, groupData] = await Promise.all([
notifications.getAllNotificationTypes(),
groups.getNonPrivilegeGroups('groups:createtime', 0, -1),
]);
const notificationSettings = notificationTypes.map(type => ({
name: type,
label: `[[notifications:${type.replace(/_/g, '-')}]]`,
}));
res.render('admin/settings/user', {
title: '[[admin/menu:settings/user]]',
notificationSettings: notificationSettings,
groupsExemptFromNewUserRestrictions: groupData,
});
};
settingsController.post = async (req, res) => {
const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1);
res.render('admin/settings/post', {
title: '[[admin/menu:settings/post]]',
groupsExemptFromPostQueue: groupData,
});
};
settingsController.advanced = async (req, res) => {
const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1);
res.render('admin/settings/advanced', {
title: '[[admin/menu:settings/advanced]]',
groupsExemptFromMaintenanceMode: groupData,
res.render('admin/settings/general', {
title: `[[admin/menu:settings/general]]`,
routes,
postSharing,
languages: languageData,
autoDetectLang: meta.config.autoDetectLang,
});
};
@@ -107,6 +63,83 @@ settingsController.navigation = async function (req, res) {
res.render('admin/settings/navigation', admin);
};
settingsController.user = async (req, res) => {
const [notificationTypes, groupData] = await Promise.all([
notifications.getAllNotificationTypes(),
groups.getNonPrivilegeGroups('groups:createtime', 0, -1),
]);
const notificationSettings = notificationTypes.map(type => ({
name: type,
label: `[[notifications:${type.replace(/_/g, '-')}]]`,
}));
res.render('admin/settings/user', {
title: '[[admin/menu:settings/user]]',
notificationSettings: notificationSettings,
groupsExemptFromNewUserRestrictions: groupData,
});
};
settingsController.reputation = async (req, res) => {
res.render(`admin/settings/reputation`, {
title: `[[admin/menu:settings/reputation]]`,
});
};
settingsController.group = async (req, res) => {
res.render(`admin/settings/group`, {
title: `[[admin/menu:settings/group]]`,
});
};
settingsController.tags = async (req, res) => {
res.render(`admin/settings/tags`, {
title: `[[admin/menu:settings/tags]]`,
});
};
settingsController.post = async (req, res) => {
const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1);
res.render('admin/settings/post', {
title: '[[admin/menu:settings/post]]',
groupsExemptFromPostQueue: groupData,
});
};
settingsController.uploads = async (req, res) => {
res.render(`admin/settings/uploads`, {
title: `[[admin/menu:settings/uploads]]`,
});
};
settingsController.email = async (req, res) => {
const emails = await emailer.getTemplates(meta.config);
res.render('admin/settings/email', {
title: '[[admin/menu:settings/email]]',
emails: emails,
sendable: emails.filter(e => !e.path.includes('_plaintext') && !e.path.includes('partials')).map(tpl => tpl.path),
services: emailer.listServices(),
});
};
settingsController.chat = async (req, res) => {
res.render(`admin/settings/chat`, {
title: `[[admin/menu:settings/chat]]`,
});
};
settingsController.pagination = async (req, res) => {
res.render(`admin/settings/pagination`, {
title: `[[admin/menu:settings/pagination]]`,
});
};
settingsController.notifications = async (req, res) => {
res.render(`admin/settings/notifications`, {
title: `[[admin/menu:settings/notifications]]`,
});
};
settingsController.api = async (req, res) => {
const page = parseInt(req.query.page, 10) || 1;
const resultsPerPage = 50;
@@ -123,3 +156,27 @@ settingsController.api = async (req, res) => {
pagination: pagination.create(page, pageCount, req.query),
});
};
settingsController.cookies = async (req, res) => {
res.render(`admin/settings/cookies`, {
title: `[[admin/menu:settings/cookies]]`,
});
};
settingsController.webCrawler = async (req, res) => {
res.render(`admin/settings/web-crawler`, {
title: `[[admin/menu:settings/web-crawler]]`,
});
};
settingsController.advanced = async (req, res) => {
const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1);
res.render('admin/settings/advanced', {
title: '[[admin/menu:settings/advanced]]',
groupsExemptFromMaintenanceMode: groupData,
});
};