mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 03:27:01 +02:00
Acp redesign (#11639)
* acp sidebar
* gap in nav
* remove shadow
* label fixes
* color fixes
* feat: settings page wip
* feat: scroll spy 👓
move social into general, store social in meta.config like other settings
write upgrade script
* remove social
* rermove openapi routes
* cleanup, highlight selected nav item
* more cleanup
* advanced margin top
* derp
* match design
* bring back version alert
fix homepage js, since it moved to general settings
* remove unused tpls
these moved to general settings
* remove more css
* offcanvas for mobile
fix search
* add timeout
* add new props
* manage categories
* small fixes
* category-edit
* feat category page fixes
* add title to settings pages
add user settings page
* small fixes
* some more settings pages
* fix: plugin page titles
* more settings pages
* more padding
* more pages, add acp paginator.tpl
so it doesn't change when active theme changes
* remove placeholder
* dashboard table
* fix: openapi
* fix: controller tests
* use fonts from core
* some small fixes
* fix rep page
* refactor: fix name of upgrade script
* create category modal
group edit
* group/groups pages
* admins mods
* privs
* uploads
* missing margin
* more acp pages
* more pages
* plugins/rewards/widgets
* wrap rewards
* fix widgets
* fix widget clone button
* fix group acp edit link
* update search dropdown
* remove display block from tbody
* use less css
* remove some derp links
* remove striped tables
* remove p tags from lang files
* update email settings
* Update api.tpl
* move tag-whitelist
This commit is contained in:
committed by
GitHub
parent
6d4ab1d0c1
commit
c3afe44686
@@ -60,8 +60,9 @@ categoriesController.getAll = async function (req, res) {
|
||||
}
|
||||
|
||||
const fields = [
|
||||
'cid', 'name', 'icon', 'parentCid', 'disabled', 'link', 'order',
|
||||
'color', 'bgColor', 'backgroundImage', 'imageClass', 'subCategoriesPerPage',
|
||||
'cid', 'name', 'icon', 'parentCid', 'disabled', 'link',
|
||||
'order', 'color', 'bgColor', 'backgroundImage', 'imageClass',
|
||||
'subCategoriesPerPage', 'description',
|
||||
];
|
||||
const categoriesData = await categories.getCategoriesFields(cids, fields);
|
||||
const result = await plugins.hooks.fire('filter:admin.categories.get', { categories: categoriesData, fields: fields });
|
||||
@@ -101,6 +102,7 @@ categoriesController.getAll = async function (req, res) {
|
||||
breadcrumbs: crumbs,
|
||||
pagination: pagination.create(page, pageCount, req.query),
|
||||
categoriesPerPage: meta.config.categoriesPerPage,
|
||||
selectCategoryLabel: '[[admin/manage/categories:jump-to]]',
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -18,13 +18,27 @@ const settingsController = module.exports;
|
||||
|
||||
settingsController.get = async function (req, res) {
|
||||
const term = req.params.term || 'general';
|
||||
res.render(`admin/settings/${term}`);
|
||||
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(),
|
||||
@@ -38,6 +52,7 @@ settingsController.user = async (req, res) => {
|
||||
label: `[[notifications:${type}]]`,
|
||||
}));
|
||||
res.render('admin/settings/user', {
|
||||
title: '[[admin/menu:settings/user]]',
|
||||
notificationSettings: notificationSettings,
|
||||
});
|
||||
};
|
||||
@@ -45,6 +60,7 @@ settingsController.user = async (req, res) => {
|
||||
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,
|
||||
});
|
||||
};
|
||||
@@ -52,22 +68,11 @@ settingsController.post = async (req, res) => {
|
||||
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,
|
||||
});
|
||||
};
|
||||
|
||||
settingsController.languages = async function (req, res) {
|
||||
const languageData = await languages.list();
|
||||
languageData.forEach((language) => {
|
||||
language.selected = language.code === meta.config.defaultLang;
|
||||
});
|
||||
|
||||
res.render('admin/settings/languages', {
|
||||
languages: languageData,
|
||||
autoDetectLang: meta.config.autoDetectLang,
|
||||
});
|
||||
};
|
||||
|
||||
settingsController.navigation = async function (req, res) {
|
||||
const [admin, allGroups] = await Promise.all([
|
||||
navigationAdmin.getAdmin(),
|
||||
@@ -94,23 +99,14 @@ settingsController.navigation = async function (req, res) {
|
||||
});
|
||||
|
||||
admin.navigation = admin.enabled.slice();
|
||||
|
||||
admin.title = '[[admin/menu:settings/navigation]]';
|
||||
res.render('admin/settings/navigation', admin);
|
||||
};
|
||||
|
||||
settingsController.homepage = async function (req, res) {
|
||||
const routes = await helpers.getHomePageRoutes(req.uid);
|
||||
res.render('admin/settings/homepage', { routes: routes });
|
||||
};
|
||||
|
||||
settingsController.social = async function (req, res) {
|
||||
const posts = await social.getPostSharing();
|
||||
res.render('admin/settings/social', {
|
||||
posts: posts,
|
||||
});
|
||||
};
|
||||
|
||||
settingsController.api = async (req, res) => {
|
||||
const tokens = await api.utils.tokens.list();
|
||||
res.render('admin/settings/api', { tokens });
|
||||
res.render('admin/settings/api', {
|
||||
title: '[[admin/menu:settings/api]]',
|
||||
tokens,
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user