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:
Barış Soner Uşaklı
2023-05-31 11:54:48 -04:00
committed by GitHub
parent 6d4ab1d0c1
commit c3afe44686
159 changed files with 4606 additions and 5154 deletions

View File

@@ -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]]',
});
};

View File

@@ -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,
});
};