Home › Journal Admin › Account
Account
Journal site-configuration screens: menu structure, custom expression overrides, related links, and subscription management. All dispatched from manager.php (role 6 / System Admin — the journal admin's own entry point) into per-feature classes (class/journal.menu.class.php, class/custom.lables.class.php, class/link.class.php, class/subscription.class.php).
| Page | Status | E2E | Enhanced | Legacy Ref | Route | Roles |
|---|---|---|---|---|---|---|
| Customize Expressions | Pending | — | — | manager.php?_action=cstm_lb | /manager?_action=cstm_lb | Journal Admin (role 6) |
| Menu List | Pending | — | — | manager.php?_action=menu | /manager?_action=menu | Journal Admin (role 6) |
| Menu Add / Edit | Pending | — | — | request/manager.ajax.php?task=addMenu | /request/manager.ajax?task=addMenu&id=0 | Journal Admin (role 6); request/manager.ajax.php's own top gate (the only access check this screen actually goes through) accepts roles 4 and 16 too — see gating note |
| Related Links | Pending | — | — | manager.php?_action=link | /manager?_action=link | Journal Admin (role 6) |
| Subscription List | Pending | — | — | manager.php?_action=subscription | /manager?_action=subscription | Journal Admin (role 6) |
| Subscription Detail | Pending | — | — | manager.php?_action=subscription&subs=... | /manager?_action=subscription&subs=<subs_code> | Journal Admin (role 6) |
Features
| Feature | Status | E2E | Description |
|---|---|---|---|
| Admin can view the journal's navigation menu as a two-level tree (top-level items and submenus) showing title, target link, and enabled/disabled status | Pending | — | manager?_action=menu lists ju_menu rows ordered by menu_order; children are rendered nested under each parent (apps/legacy/js/class/journal.menu.class.php:240-257, view/journal.menu.view.php). |
| Journal gets a sensible default menu automatically on first visit to the menu manager | Pending | — | setDefaultMenu seeds the standard Home/Browse/Journal Info/Guide-for-Authors/Submit/Reviewers/Contact structure (a reduced set for the portal journal_code=0), skipping ids listed in the ignore_menu journal setting (journal.menu.class.php:55-238). |
| Admin can add or edit a menu item in a modal with bilingual titles, a target chosen from predefined system pages or the journal's static pages, an optional parent menu, and enabled/disabled status | Pending | — | The add/edit form (AJAX-loaded Bootstrap modal, request/manager.ajax.php task=addMenu/saveMenu) offers a link dropdown of system routes plus every ju_pages static page, and a parent selector limited to top-level menus (journal.menu.class.php:259-366, 369-440). |
| Admin can drag-to-reorder menu items and save the new order with one click | Pending | — | Sortable rows plus a Save button posting task=reOrderMenu, which rewrites menu_order sequentially (journal.menu.class.php:495-511, inc/js/manager.js reOrderMenu). |
| Admin can delete a menu item after confirmation, but deletion is refused while the item still has sub-menus | Pending | — | deleteMenu shows an error alert and aborts if children exist under the item (journal.menu.class.php:442-493). |
| Menu create, edit and delete actions are recorded in the contact action-history audit log | Pending | — | saveCnActionHistory is called with action types 57 (create), 58 (update), 59 (delete) carrying the menu title (journal.menu.class.php:427-438, 472-479). |
| Admin can browse the full catalog of UI expressions/labels harvested from the language files, paginated with a configurable page size | Pending | — | manager?_action=cstm_lb parses 15 language files, sorts alphabetically, and paginates at 25 rows by default with first/last navigation (apps/legacy/js/class/custom.lables.class.php:15-155). |
| Admin can keyword-search expressions, choosing whether to search the default texts or only the already-customized ones | Pending | — | Multi-word AND search over label values; search_fld=2 restricts the set to labels that have a per-journal override (custom.lables.class.php:55-113, view/custom.lables.view.php:15-20). |
| Admin can override any expression's wording for their journal and locale; clearing the override text reverts the label to the system default | Pending | — | saveCustomLables upserts ju_custom_lables per journal+locale and deletes the row when the submitted value is blank, showing a saved confirmation (custom.lables.class.php:157-233); the save is audit-logged (action type 60). |
| Admin can view the journal's related links list side-by-side with an inline add/edit form on the same page | Pending | — | manager?_action=link renders the form and the order-sorted ju_links list together — no separate add/edit URL (apps/legacy/js/class/link.class.php:31-87, apps/legacy/spec/admin/site-structure/related-links.md). |
| Admin can create or edit a related link with a bilingual title and a URL; the secondary-language title only appears for bilingual journals or the super-admin context | Pending | — | link_title_2 is conditional on ju_locales=2 or journal_code=0; the URL field is always LTR with an http://www.link.url placeholder (link.class.php:52-148, spec related-links.md Form Fields). |
| Related-link saves reject duplicate titles and auto-prefix the URL with http:// when no scheme is given | Pending | — | saveLink re-renders the form with a duplicate-title error, and prepends http:// unless the URL starts with http://, https:// or ftp:// (link.class.php:94-121). |
| Related-link form enforces client-side required validation on title and URL before submit | Pending | — | Browser-side trim-and-check with inline error and focus on the offending field; secondary title is not validated (spec related-links.md Client-Side Validation). |
| Admin can drag-to-reorder related links and save the order, which drives their public display order | Pending | — | task=reOrderLinks rewrites link_order sequentially; the list sorts by link_order with title fallback for un-ordered rows (link.class.php:31-45, 210-229). |
| Admin can delete a related link after a confirm dialog, and link create/edit/delete actions are audit-logged | Pending | — | deleteLink records action type 34 (32 create / 33 update on save) with the link title before removing the row (link.class.php:149-208). |
| Super-admin can manage a global related-links list (journal_code = 0) from the super-admin panel, hidden from the hardcoded report-only account | Pending | — | Super-admin dispatch forces journal_code=0 so all CRUD hits global rows; the menu entry is suppressed for report-only contact code 3 (spec related-links.md Access Control). |
| Admin can view the list of journal subscription requests with subscriber name, volume/issue, type and status, optionally filtered by status | Pending | — | manager?_action=subscription joins ju_subscription with ju_contacts and volume/issue titles and honors a sub_status filter parameter (apps/legacy/js/class/subscription.class.php:31-51). |
| Admin can open a subscription's detail view showing the subscriber's contact info, requested volume/issue, subscription type and payment note | Pending | — | getSubscriptionDetails adds email/phone/mobile, prefixes numeric volume/issue titles with Volume/Issue labels, and shows only the first segment of the payment note (subscription.class.php:58-94). |
| Admin can update a subscription's status (4-stage workflow) and internal note from the detail view | Pending | — | saveSubscriptionChanges updates subs_status/subs_note with modifier tracking and returns to the list (subscription.class.php:101-138, view/subscription.view.php:150-155). |
| Admin can optionally email the subscriber their order's new status and note when saving a subscription decision | Pending | — | A send_email checkbox triggers EmailManager::subscribeJournalMail with the order id, translated status and note (subscription.class.php:115-135, view/subscription.view.php:159). |
| Admin can delete a subscription request after a confirm dialog | Pending | — | deleteSubscription removes the ju_subscription row scoped to the journal and re-renders the list; unlike menus/links this is not audit-logged (subscription.class.php:145-156). |
"Related Journals" (
_action=relj) is not claimed here, despite the similar filename.The assignment's likely-anchor list named
rel.journal.view.php, but tracing it shows class/rel.journal.class.php's RelatedJournalManager actually manages cross-journal "Related Journal" cards stored in ju_ads (with ads_position = -1), not ju_links — a different table and a different feature from "Related Links" (ju_links, class/link.class.php, per apps/legacy/spec/admin/site-structure/related-links.md). ultraport/inventory/journal-admin/ads.html also declines to claim it (it shares ju_ads with Ads but is a separate class/action), leaving it an open flag rather than assigning it to Account.Scope is deliberately narrower than everything
manager.php dispatches.The Account module brief names exactly four site-configuration screens (menu, custom labels/expressions, related links, subscription).
manager.php's role-6 dashboard also serves many other journal-configuration actions with no clear home in the 6-module Journal Admin taxonomy — basic journal info/email/SMS settings, subjects, countries, sections, manuscript types, indexing, FAQ, glossary, static pages, review questions, checklist, registration-form setting, backup/restore, CRM billing/support, and reports/todo. Per inventory-design.md's "open flag" for manager.php, those remain unclaimed here and are expected to surface (if anywhere) under Publishing Workflow's manager module page, not Account.Menu Add/Edit is an AJAX modal, not a navigable URL.
Unlike Related Links (whose add/edit form is embedded inline with the list on the same
manager?_action=link page), the Menu add/edit form is only reachable via a POST to request/manager.ajax.php (task=addMenu) that fills a Bootstrap modal client-side (inc/js/manager.js's addMenu()); there is no GET URL that renders it directly. Counted as its own row because it is a materially different rendered screen from the Menu List, consistent with how Ads and News (siblings) split List from Add/Edit.Menu Add/Edit's real access gate is broader than "role 6".
Every other row on this page is dispatched from
manager.php's own switch, behind manager.php's top-of-file check requiring _role = 6 exactly (apps/legacy/js/manager.php:55-68). Menu Add/Edit has no such path — it exists only as the response of request/manager.ajax.php's addMenu/saveMenu tasks (apps/legacy/js/request/manager.ajax.php:180-189), gated solely by that file's own top check, which accepts _role IN (4, 6, 16) — Editor-in-Chief, System Admin, and Editorial Office respectively — with no per-journal filter (apps/legacy/js/request/manager.ajax.php:25-40). The Menu List row's inline reorder-save button (task=reOrderMenu, apps/legacy/js/request/manager.ajax.php:190-194) and Related Links' reorder-save button (task=reOrderLinks, apps/legacy/js/request/manager.ajax.php:105-109) pass through this same broader-gated endpoint, though the pages hosting those buttons still require role 6 to load in the first place, so this only changes Menu Add/Edit's own row. Both editor.php (line 413) and mng_assist.php (line 188) load inc/js/manager.js — the file defining addMenu()/saveMenu()/reOrderMenu() (apps/legacy/js/inc/js/manager.js:1157-1266) — but neither file's own _action switch has a menu case, and the only markup that ever calls addMenu() is view/journal.menu.view.php, which itself is only reachable from manager.php's menu action or this AJAX endpoint — so no rendered screen anywhere surfaces the Menu Add/Edit modal to roles 4 or 16; only the raw AJAX endpoint is technically reachable to those sessions. Mirrors the AJAX-gate note already recorded on journal-admin/news.html for the same shared request/manager.ajax.php file.Cross-page duplication (open flag, not resolved here).
Customize Expressions, Menu List, Related Links, and both Subscription rows above share their exact
manager.php?_action=... ref and underlying class with four rows independently kept on publishing-workflow/manager.html (its "Customize Expressions", "Menus", "Related Links", and "Journal Subscription — List/Detail" rows) — same dispatch-switch cases, traced independently. This module's brief gives cstm_lb/menu/link/subscription a clear, named home here, so Account is treated as the canonical listing; the Publishing Workflow copies are believed stale duplicates that should be trimmed (or at minimum cross-linked) in a later pass — not changed here since that's a different page. See also: Publishing Workflow › Manager.