DEV: Add report items and some work around sub-pages

This commit is contained in:
Martin Brennan
2025-02-13 16:50:41 +10:00
parent dd66a80ab0
commit 973027acd4
3 changed files with 164 additions and 41 deletions

View File

@@ -20,6 +20,7 @@ export default class AdminPaletteSearch extends Component {
@tracked showSettingType = true;
@tracked showThemeType = true;
@tracked showComponentType = true;
@tracked showReportType = true;
constructor() {
super(...arguments);
@@ -40,6 +41,9 @@ export default class AdminPaletteSearch extends Component {
if (this.showComponentType) {
types.push("component");
}
if (this.showReportType) {
types.push("report");
}
return types;
}
@@ -107,6 +111,13 @@ export default class AdminPaletteSearch extends Component {
{{on "click" (fn this.toggleTypeFilter "showComponentType")}}
/>
</span>
<span class="admin-palette-type-filter__report">
Reports
<DToggleSwitch
@state={{this.showReportType}}
{{on "click" (fn this.toggleTypeFilter "showReportType")}}
/>
</span>
</div>
{{/if}}
@@ -115,7 +126,9 @@ export default class AdminPaletteSearch extends Component {
<div class="admin-palette__search-result">
<a href={{result.url}}>
<div class="admin-palette__name">
{{icon result.icon}}
{{#if result.icon}}
{{icon result.icon}}
{{/if}}
<span class="admin-palette__name-label">{{result.label}}</span>
<span class="admin-palette__type-pill">{{result.type}}</span>
</div>

View File

@@ -17,6 +17,7 @@ export default class AdminPaletteDataSource extends Service {
settingMapItems = [];
themeMapItems = [];
componentMapItems = [];
reportMapItems = [];
settingPageMap = {
categories: {},
areas: {},
@@ -29,47 +30,10 @@ export default class AdminPaletteDataSource extends Service {
}
ADMIN_NAV_MAP.forEach((mapItem) => {
mapItem.links.forEach((link) => {
let url;
if (link.routeModels) {
url = this.router.urlFor(link.route, ...link.routeModels);
} else {
url = this.router.urlFor(link.route);
}
let parentLabel = this.addPageLink(mapItem, link);
const mapItemLabel =
mapItem.text || (mapItem.label ? i18n(mapItem.label) : "");
const label =
mapItemLabel +
(mapItemLabel ? " > " : "") +
(link.text || (link.label ? i18n(link.label) : ""));
if (link.settings_area) {
this.settingPageMap.areas[link.settings_area] = link.multi_tabbed
? `${url}/settings`
: url;
}
if (link.settings_category) {
this.settingPageMap.categories[link.settings_category] =
link.multi_tabbed ? `${url}/settings` : url;
}
this.pageMapItems.push({
label,
url,
keywords:
(link.keywords ? i18n(link.keywords).toLowerCase() : "") +
" " +
url +
" " +
label.toLowerCase(),
type: "page",
icon: link.icon,
description: link.description
? link.description.includes(" ")
? link.description
: i18n(link.description)
: "",
link.links?.forEach((subLink) => {
this.addPageLink(mapItem, subLink, parentLabel);
});
});
});
@@ -196,6 +160,24 @@ export default class AdminPaletteDataSource extends Service {
}
});
});
ajax("/admin/reports.json").then((result) => {
result.reports.forEach((report) => {
this.reportMapItems.push({
label: report.title,
description: report.description,
url: getURL(`/admin/reports/${report.type}`),
icon: "chart-bar",
keywords: (
report.title +
" " +
report.description +
" " +
report.type
).toLowerCase(),
type: "report",
});
});
});
this._mapCached = true;
}
@@ -217,4 +199,61 @@ export default class AdminPaletteDataSource extends Service {
return filteredResults;
}
addPageLink(mapItem, link, parentLabel = "") {
let url;
if (link.routeModels) {
url = this.router.urlFor(link.route, ...link.routeModels);
} else {
url = this.router.urlFor(link.route);
}
const mapItemLabel =
mapItem.text || (mapItem.label ? i18n(mapItem.label) : "");
const linkLabel = link.text || (link.label ? i18n(link.label) : "");
let label;
if (parentLabel) {
label =
mapItemLabel +
(mapItemLabel ? " > " : "") +
parentLabel +
" > " +
linkLabel;
} else {
label = mapItemLabel + (mapItemLabel ? " > " : "") + linkLabel;
}
if (link.settings_area) {
this.settingPageMap.areas[link.settings_area] = link.multi_tabbed
? `${url}/settings`
: url;
}
if (link.settings_category) {
this.settingPageMap.categories[link.settings_category] = link.multi_tabbed
? `${url}/settings`
: url;
}
this.pageMapItems.push({
label,
url,
keywords:
(link.keywords ? i18n(link.keywords).toLowerCase() : "") +
" " +
url +
" " +
label.toLowerCase(),
type: "page",
icon: link.icon,
description: link.description
? link.description.includes(" ")
? link.description
: i18n(link.description)
: "",
});
return linkLabel;
}
}

View File

@@ -52,6 +52,13 @@ export const ADMIN_NAV_MAP = [
icon: "box-archive",
settings_category: "backups",
multi_tabbed: true,
links: [
{
name: "admin_backups_logs",
route: "admin.backups.logs",
label: "admin.backups.menu.logs",
},
],
},
],
},
@@ -240,6 +247,48 @@ export const ADMIN_NAV_MAP = [
label: "admin.email_settings.sidebar_link.server_setup.title",
icon: "gear",
keywords: "admin.email_settings.sidebar_link.server_setup.keywords",
links: [
{
name: "admin_email_preview_summary",
route: "adminEmail.previewDigest",
label: "admin.email.preview_digest",
},
{
name: "admin_email_advanced_test",
route: "adminEmail.advancedTest",
label: "admin.email.advanced_test.title",
},
{
name: "admin_email_templates",
route: "adminEmailTemplates",
label: "admin.email.templates",
},
{
name: "admin_email_sent",
route: "adminEmail.sent",
label: "admin.email.sent",
},
{
name: "admin_email_skipped",
route: "adminEmail.advancedTest",
label: "admin.email.advanced_test",
},
{
name: "admin_email_bounced",
route: "adminEmail.bounced",
label: "admin.email.bounced",
},
{
name: "admin_email_received",
route: "adminEmail.received",
label: "admin.email.received",
},
{
name: "admin_email_rejected",
route: "adminEmail.rejected",
label: "admin.email.rejected",
},
],
},
{
name: "admin_appearance",
@@ -276,6 +325,28 @@ export const ADMIN_NAV_MAP = [
keywords: "admin.security.sidebar_link.staff_action_logs.keywords",
icon: "user-shield",
moderator: true,
links: [
{
name: "admin_logs_screened_emails",
route: "adminLogs.screenedEmails",
label: "admin.logs.screened_emails.title",
},
{
name: "admin_logs_screened_ip_addresses",
route: "adminLogs.screenedIpAddresses",
label: "admin.logs.screened_ips.title",
},
{
name: "admin_logs_screened_urls",
route: "adminLogs.screenedUrls",
label: "admin.logs.screened_urls.title",
},
{
name: "admin_logs_search_logs",
route: "adminSearchLogs",
label: "admin.logs.search_logs.title",
},
],
},
],
},