Skip to content

Commit d421644

Browse files
committed
Fix API placement, Admin Owner menu boundaries, and route path validation - PR_26169_023-api-menu-path-cleanup
1 parent 5b34deb commit d421644

51 files changed

Lines changed: 4181 additions & 8094 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

admin/analytics.html

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,12 @@
1313
<main>
1414
<section class="page-title"><div class="container"><div class="kicker">Admin</div><h1>Analytics</h1><p class="lede">A planning page for platform health, product metrics and reporting surfaces.</p></div></section>
1515
<section class="section"><div class="container account-panel">
16-
<aside class="side-menu" aria-label="Admin pages">
17-
<a class="active" aria-current="page" href="/admin/analytics.html">Analytics</a>
18-
<a href="/admin/branding.html">Branding</a>
19-
<a href="/admin/controls.html">Controls</a>
20-
<a href="/admin/environments.html">Environments</a>
21-
<a href="/admin/game-migration.html">Game Migration</a>
22-
<a href="/admin/moderation.html">Moderation</a>
23-
<a href="/admin/platform-settings.html">Platform Settings</a>
24-
<a href="/admin/ratings.html">Ratings</a>
25-
<a href="/admin/roles.html">Roles</a>
26-
<a href="/admin/site-settings.html">Site Settings</a>
27-
<a href="/admin/themes.html">Themes</a>
28-
<a href="/admin/tool-votes.html">Tool Votes</a>
29-
<a href="/admin/users.html">Users</a>
16+
<aside class="side-menu" aria-label="Admin operational pages" data-admin-tool-menu>
17+
<p class="status" data-admin-nav-loading>Loading Admin tools.</p>
3018
</aside><div class="card"><div class="card-body"><div class="kicker">Status = Planning</div><div class="grid cols-3"><article class="callout"><h2>Purpose</h2><p>Plan analytics placement without adding tracking or dashboards.</p></article><article class="callout"><h2>Future Scope</h2><p>Review platform health, creator activity and publishing outcomes.</p></article><article class="callout"><h2>Planned Sections</h2><ul><li>Platform health</li><li>Creator activity</li><li>Publishing metrics</li></ul></article></div></div></div></div></section>
3119
</main>
3220
<div data-partial="footer"></div>
3321
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
22+
<script type="module" src="../assets/theme-v2/js/admin-owner-navigation.js"></script>
3423
</body>
3524
</html>

admin/controls.html

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,8 @@ <h1 class="controls-title">Controls.</h1>
3030
</section>
3131
<section class="section">
3232
<div class="container account-panel">
33-
<aside class="side-menu" aria-label="Admin pages">
34-
<a href="/admin/analytics.html">Analytics</a>
35-
<a href="/admin/branding.html">Branding</a>
36-
<a class="active" aria-current="page" href="/admin/controls.html">Controls</a>
37-
<a href="/admin/environments.html">Environments</a>
38-
<a href="/admin/game-migration.html">Game Migration</a>
39-
<a href="/admin/moderation.html">Moderation</a>
40-
<a href="/admin/platform-settings.html">Platform Settings</a>
41-
<a href="/admin/ratings.html">Ratings</a>
42-
<a href="/admin/roles.html">Roles</a>
43-
<a href="/admin/site-settings.html">Site Settings</a>
44-
<a href="/admin/themes.html">Themes</a>
45-
<a href="/admin/tool-votes.html">Tool Votes</a>
46-
<a href="/admin/users.html">Users</a>
33+
<aside class="side-menu" aria-label="Admin operational pages" data-admin-tool-menu>
34+
<p class="status" data-admin-nav-loading>Loading Admin tools.</p>
4735
</aside>
4836
<div class="admin-page-stack">
4937
<section class="section">
@@ -175,6 +163,7 @@ <h3>Selects</h3>
175163
<div data-partial="footer"></div>
176164
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
177165
<script src="../assets/theme-v2/js/account-controls.js" defer></script>
166+
<script type="module" src="../assets/theme-v2/js/admin-owner-navigation.js"></script>
178167
</body>
179168

180169
</html>

admin/moderation.html

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,12 @@
1313
<main>
1414
<section class="page-title"><div class="container"><div class="kicker">Admin</div><h1>Moderation</h1><p class="lede">A planning page for community safety, reports and moderation workflow areas.</p></div></section>
1515
<section class="section"><div class="container account-panel">
16-
<aside class="side-menu" aria-label="Admin pages">
17-
<a href="/admin/analytics.html">Analytics</a>
18-
<a href="/admin/branding.html">Branding</a>
19-
<a href="/admin/controls.html">Controls</a>
20-
<a href="/admin/environments.html">Environments</a>
21-
<a href="/admin/game-migration.html">Game Migration</a>
22-
<a class="active" aria-current="page" href="/admin/moderation.html">Moderation</a>
23-
<a href="/admin/platform-settings.html">Platform Settings</a>
24-
<a href="/admin/ratings.html">Ratings</a>
25-
<a href="/admin/roles.html">Roles</a>
26-
<a href="/admin/site-settings.html">Site Settings</a>
27-
<a href="/admin/themes.html">Themes</a>
28-
<a href="/admin/tool-votes.html">Tool Votes</a>
29-
<a href="/admin/users.html">Users</a>
16+
<aside class="side-menu" aria-label="Admin operational pages" data-admin-tool-menu>
17+
<p class="status" data-admin-nav-loading>Loading Admin tools.</p>
3018
</aside><div class="card"><div class="card-body"><div class="kicker">Status = Planning</div><div class="grid cols-3"><article class="callout"><h2>Purpose</h2><p>Plan moderation placement without adding live moderation actions.</p></article><article class="callout"><h2>Future Scope</h2><p>Review flagged content, comments, games and marketplace listings.</p></article><article class="callout"><h2>Planned Sections</h2><ul><li>Report queues</li><li>Content review</li><li>Community safety</li></ul></article></div></div></div></div></section>
3119
</main>
3220
<div data-partial="footer"></div>
3321
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
22+
<script type="module" src="../assets/theme-v2/js/admin-owner-navigation.js"></script>
3423
</body>
3524
</html>

admin/ratings.html

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,8 @@ <h1>Rating quality checklist.</h1>
2323
</section>
2424
<section class="section">
2525
<div class="container account-panel">
26-
<aside class="side-menu" aria-label="Admin pages">
27-
<a href="/admin/analytics.html">Analytics</a>
28-
<a href="/admin/branding.html">Branding</a>
29-
<a href="/admin/controls.html">Controls</a>
30-
<a href="/admin/environments.html">Environments</a>
31-
<a href="/admin/game-migration.html">Game Migration</a>
32-
<a href="/admin/moderation.html">Moderation</a>
33-
<a href="/admin/platform-settings.html">Platform Settings</a>
34-
<a class="active" aria-current="page" href="/admin/ratings.html">Ratings</a>
35-
<a href="/admin/roles.html">Roles</a>
36-
<a href="/admin/site-settings.html">Site Settings</a>
37-
<a href="/admin/themes.html">Themes</a>
38-
<a href="/admin/tool-votes.html">Tool Votes</a>
39-
<a href="/admin/users.html">Users</a>
26+
<aside class="side-menu" aria-label="Admin operational pages" data-admin-tool-menu>
27+
<p class="status" data-admin-nav-loading>Loading Admin tools.</p>
4028
</aside>
4129
<div class="admin-page-stack">
4230
<section class="section">
@@ -154,6 +142,7 @@ <h2>Overall Rating Summary</h2>
154142
</main>
155143
<div data-partial="footer"></div>
156144
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
145+
<script type="module" src="../assets/theme-v2/js/admin-owner-navigation.js"></script>
157146
</body>
158147

159148
</html>

admin/roles.html

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,13 @@
1313
<main>
1414
<section class="page-title"><div class="container"><div class="kicker">Admin</div><h1>Roles</h1><p class="lede">A planning page for permissions, role labels and future team governance.</p></div></section>
1515
<section class="section"><div class="container account-panel">
16-
<aside class="side-menu" aria-label="Admin pages">
17-
<a href="/admin/analytics.html">Analytics</a>
18-
<a href="/admin/branding.html">Branding</a>
19-
<a href="/admin/controls.html">Controls</a>
20-
<a href="/admin/environments.html">Environments</a>
21-
<a href="/admin/game-migration.html">Game Migration</a>
22-
<a href="/admin/moderation.html">Moderation</a>
23-
<a href="/admin/platform-settings.html">Platform Settings</a>
24-
<a href="/admin/ratings.html">Ratings</a>
25-
<a class="active" aria-current="page" href="/admin/roles.html">Roles</a>
26-
<a href="/admin/site-settings.html">Site Settings</a>
27-
<a href="/admin/themes.html">Themes</a>
28-
<a href="/admin/tool-votes.html">Tool Votes</a>
29-
<a href="/admin/users.html">Users</a>
16+
<aside class="side-menu" aria-label="Admin operational pages" data-admin-tool-menu>
17+
<p class="status" data-admin-nav-loading>Loading Admin tools.</p>
3018
</aside><div class="card" data-admin-service-page="admin-roles"><div class="card-body content-stack"><div><div class="kicker">Account Service</div><h2>Role Catalog</h2></div><p class="status" role="status" data-admin-service-status>Loading account roles.</p><div class="content-stack" data-admin-service-content></div></div></div></div></section>
3119
</main>
3220
<div data-partial="footer"></div>
3321
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
3422
<script type="module" src="../assets/theme-v2/js/admin-service-page-data.js"></script>
23+
<script type="module" src="../assets/theme-v2/js/admin-owner-navigation.js"></script>
3524
</body>
3625
</html>

assets/theme-v2/js/account-achievements.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createServerRepositoryClient } from "../../../src/engine/api/server-api-client.js";
1+
import { createServerRepositoryClient } from "../../../src/api/server-api-client.js";
22
import { getSessionCurrent } from "../../../src/api/session-api-client.js";
33

44
const tabs = Array.from(document.querySelectorAll("[data-achievements-tab]"));

assets/theme-v2/js/admin-db-status-panel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { safeRequestServerApi } from "../../../src/engine/api/server-api-client.js";
1+
import { safeRequestServerApi } from "../../../src/api/server-api-client.js";
22

33
const fields = {
44
api: document.querySelector("[data-admin-db-status-api]"),

assets/theme-v2/js/admin-owner-navigation.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,23 @@ function itemHref(item) {
1414
return `/${item.path}`;
1515
}
1616

17+
function disabledLabel(item) {
18+
return item.planned ? `${item.label} (planned)` : item.label;
19+
}
20+
21+
function createDisabledItem(item) {
22+
const label = document.createElement("span");
23+
label.className = "btn btn--compact";
24+
label.dataset.menuItemDisabled = "";
25+
label.setAttribute("aria-disabled", "true");
26+
label.textContent = disabledLabel(item);
27+
return label;
28+
}
29+
1730
function createLink(item, activePath) {
31+
if (item.disabled) {
32+
return createDisabledItem(item);
33+
}
1834
const link = document.createElement("a");
1935
const href = itemHref(item);
2036
const itemPath = String(item.path || href).replace(/^\/+/, "");

assets/theme-v2/js/admin-service-page-data.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,14 @@ function renderAdminSiteSettings(root, snapshot) {
216216
content,
217217
"Site Settings Service Contract",
218218
"site_settings",
219-
"Editable branding and site identity settings are code/content-owned and deferred from this Admin surface.",
219+
"Editable branding and site identity settings are code/content-owned and deferred from this Owner surface.",
220220
"Use Admin Operations for operational planning. Keep Platform Settings focused on banner settings and future runtime toggles.",
221221
);
222222
}
223223

224224
const RENDERERS = Object.freeze({
225225
"admin-roles": renderAdminRoles,
226-
"admin-site-settings": renderAdminSiteSettings,
226+
"owner-site-settings": renderAdminSiteSettings,
227227
"admin-users": renderAdminUsers,
228228
});
229229

assets/theme-v2/js/gamefoundry-partials.js

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,10 @@
7373
roadmap: "company/roadmap.html",
7474
"release-notes": "company/release-notes.html",
7575
admin: "admin/platform-settings.html",
76-
owner: "admin/db-viewer.html",
76+
owner: "owner/memberships.html",
7777
"admin-operations": "admin/operations.html",
78-
"admin-site-settings": "admin/site-settings.html",
79-
"admin-branding": "admin/branding.html",
80-
"admin-themes": "admin/themes.html",
81-
"admin-design-system": "admin/design-system.html",
8278
"admin-controls": "admin/controls.html",
8379
"admin-db-viewer": "admin/db-viewer.html",
84-
"admin-grouping-colors": "admin/grouping-colors.html",
8580
"admin-platform-settings": "admin/platform-settings.html",
8681
"admin-ratings": "admin/ratings.html",
8782
"admin-users": "admin/users.html",
@@ -91,7 +86,12 @@
9186
"admin-moderation": "admin/moderation.html",
9287
"admin-analytics": "admin/analytics.html",
9388
"owner-ai-credits": "owner/ai-credits.html",
89+
"owner-branding": "owner/branding.html",
90+
"owner-design-system": "owner/design-system.html",
91+
"owner-grouping-colors": "owner/grouping-colors.html",
9492
"owner-memberships": "owner/memberships.html",
93+
"owner-site-settings": "owner/site-settings.html",
94+
"owner-themes": "owner/themes.html",
9595
"community-guidelines": "legal/community-guidelines.html",
9696
"cookies-policy": "legal/cookies-policy.html",
9797
"copyright-policy": "legal/copyright-policy.html",
@@ -106,10 +106,10 @@
106106
"account-profile": "account/profile.html",
107107
"account-security": "account/security.html",
108108
"account-user-controls": "account/user-controls.html",
109-
branding: "admin/branding.html",
109+
branding: "owner/branding.html",
110110
controls: "admin/controls.html",
111-
"design-system": "admin/design-system.html",
112-
"grouping-colors": "admin/grouping-colors.html",
111+
"design-system": "owner/design-system.html",
112+
"grouping-colors": "owner/grouping-colors.html",
113113
rating: "admin/ratings.html"
114114
};
115115

@@ -173,14 +173,16 @@
173173
return Array.isArray(items)
174174
? items.map(function (item) {
175175
return {
176+
disabled: item.disabled === true,
176177
href: typeof item.href === "string" ? item.href : "",
177178
label: typeof item.label === "string" ? item.label : "",
178179
localNotes: item.localNotes === true,
179180
path: typeof item.path === "string" ? item.path : "",
181+
planned: item.planned === true,
180182
route: typeof item.route === "string" ? item.route : ""
181183
};
182184
}).filter(function (item) {
183-
return item.label && (item.route || item.path || item.href);
185+
return item.label && (item.disabled || item.route || item.path || item.href);
184186
})
185187
: [];
186188
}
@@ -230,6 +232,13 @@
230232
}
231233

232234
function createMenuLink(item) {
235+
if (item.disabled) {
236+
const label = document.createElement("span");
237+
label.dataset.menuItemDisabled = "";
238+
label.setAttribute("aria-disabled", "true");
239+
label.textContent = item.planned ? item.label + " (planned)" : item.label;
240+
return label;
241+
}
233242
const link = document.createElement("a");
234243
link.dataset.navLink = "";
235244
if (item.route) {

0 commit comments

Comments
 (0)