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; const appearanceController = module.exports;
appearanceController.get = function (req, res) { appearanceController.themes = function (req, res) {
const term = req.params.term ? req.params.term : 'themes'; res.render(`admin/appearance/themes`, {});
};
res.render(`admin/appearance/${term}`, {});
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; const settingsController = module.exports;
settingsController.get = async function (req, res) { settingsController.general = async (req, res) => {
const term = req.params.term || 'general'; const routes = await helpers.getHomePageRoutes(req.uid);
const payload = { const postSharing = await social.getPostSharing();
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(); const languageData = await languages.list();
languageData.forEach((language) => { languageData.forEach((language) => {
language.selected = language.code === meta.config.defaultLang; 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) => { res.render('admin/settings/general', {
const emails = await emailer.getTemplates(meta.config); title: `[[admin/menu:settings/general]]`,
routes,
res.render('admin/settings/email', { postSharing,
title: '[[admin/menu:settings/email]]', languages: languageData,
emails: emails, autoDetectLang: meta.config.autoDetectLang,
sendable: emails.filter(e => !e.path.includes('_plaintext') && !e.path.includes('partials')).map(tpl => tpl.path),
services: emailer.listServices(),
});
};
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,
}); });
}; };
@@ -107,6 +63,83 @@ settingsController.navigation = async function (req, res) {
res.render('admin/settings/navigation', admin); 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) => { settingsController.api = async (req, res) => {
const page = parseInt(req.query.page, 10) || 1; const page = parseInt(req.query.page, 10) || 1;
const resultsPerPage = 50; const resultsPerPage = 50;
@@ -123,3 +156,27 @@ settingsController.api = async (req, res) => {
pagination: pagination.create(page, pageCount, req.query), 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,
});
};

View File

@@ -32,15 +32,27 @@ module.exports = function (app, name, middleware, controllers) {
helpers.setupAdminPageRoute(app, `/${name}/manage/uploads`, middlewares, controllers.admin.uploads.get); helpers.setupAdminPageRoute(app, `/${name}/manage/uploads`, middlewares, controllers.admin.uploads.get);
helpers.setupAdminPageRoute(app, `/${name}/manage/digest`, middlewares, controllers.admin.digest.get); helpers.setupAdminPageRoute(app, `/${name}/manage/digest`, middlewares, controllers.admin.digest.get);
helpers.setupAdminPageRoute(app, `/${name}/settings/email`, middlewares, controllers.admin.settings.email); helpers.setupAdminPageRoute(app, `/${name}/settings/general`, middlewares, controllers.admin.settings.general);
helpers.setupAdminPageRoute(app, `/${name}/settings/user`, middlewares, controllers.admin.settings.user);
helpers.setupAdminPageRoute(app, `/${name}/settings/post`, middlewares, controllers.admin.settings.post);
helpers.setupAdminPageRoute(app, `/${name}/settings/advanced`, middlewares, controllers.admin.settings.advanced);
helpers.setupAdminPageRoute(app, `/${name}/settings/navigation`, middlewares, controllers.admin.settings.navigation); helpers.setupAdminPageRoute(app, `/${name}/settings/navigation`, middlewares, controllers.admin.settings.navigation);
helpers.setupAdminPageRoute(app, `/${name}/settings/user`, middlewares, controllers.admin.settings.user);
helpers.setupAdminPageRoute(app, `/${name}/settings/reputation`, middlewares, controllers.admin.settings.reputation);
helpers.setupAdminPageRoute(app, `/${name}/settings/group`, middlewares, controllers.admin.settings.group);
helpers.setupAdminPageRoute(app, `/${name}/settings/tags`, middlewares, controllers.admin.settings.tags);
helpers.setupAdminPageRoute(app, `/${name}/settings/post`, middlewares, controllers.admin.settings.post);
helpers.setupAdminPageRoute(app, `/${name}/settings/uploads`, middlewares, controllers.admin.settings.uploads);
helpers.setupAdminPageRoute(app, `/${name}/settings/email`, middlewares, controllers.admin.settings.email);
helpers.setupAdminPageRoute(app, `/${name}/settings/chat`, middlewares, controllers.admin.settings.chat);
helpers.setupAdminPageRoute(app, `/${name}/settings/pagination`, middlewares, controllers.admin.settings.pagination);
helpers.setupAdminPageRoute(app, `/${name}/settings/notifications`, middlewares, controllers.admin.settings.notifications);
helpers.setupAdminPageRoute(app, `/${name}/settings/api`, middlewares, controllers.admin.settings.api); helpers.setupAdminPageRoute(app, `/${name}/settings/api`, middlewares, controllers.admin.settings.api);
helpers.setupAdminPageRoute(app, `/${name}/settings/:term?`, middlewares, controllers.admin.settings.get); helpers.setupAdminPageRoute(app, `/${name}/settings/cookies`, middlewares, controllers.admin.settings.cookies);
helpers.setupAdminPageRoute(app, `/${name}/settings/web-crawler`, middlewares, controllers.admin.settings.webCrawler);
helpers.setupAdminPageRoute(app, `/${name}/settings/advanced`, middlewares, controllers.admin.settings.advanced);
helpers.setupAdminPageRoute(app, `/${name}/appearance/themes`, middlewares, controllers.admin.appearance.themes);
helpers.setupAdminPageRoute(app, `/${name}/appearance/skins`, middlewares, controllers.admin.appearance.skins);
helpers.setupAdminPageRoute(app, `/${name}/appearance/customise`, middlewares, controllers.admin.appearance.customise);
helpers.setupAdminPageRoute(app, `/${name}/appearance/:term?`, middlewares, controllers.admin.appearance.get);
helpers.setupAdminPageRoute(app, `/${name}/extend/plugins`, middlewares, controllers.admin.plugins.get); helpers.setupAdminPageRoute(app, `/${name}/extend/plugins`, middlewares, controllers.admin.plugins.get);
helpers.setupAdminPageRoute(app, `/${name}/extend/widgets`, middlewares, controllers.admin.extend.widgets.get); helpers.setupAdminPageRoute(app, `/${name}/extend/widgets`, middlewares, controllers.admin.extend.widgets.get);