Home › Super Admin › Journals
Journals
Journal CRUD for platform staff — create, list (with delay-status flagging), and update journals, plus preprint-office designation. Legacy entry: main/adm.php, dispatched into class/adm.class.php's JournalAdmin (admin-role session guard).
| Page | Status | E2E | Enhanced | Legacy Ref | Route | Roles |
|---|---|---|---|---|---|---|
| Create Journal | Full | Yes | validation | main/adm.php?_action=newj | /adm?_action=newj | Super Admin (also gated by system setting newj_add=1) |
| Update Journal | Full | Yes | stats-panel | main/adm.php?_action=editj | /adm?_action=editj&tcnf=... | Super Admin |
| List of Journals | Full | Yes | quick-view | main/adm.php | /adm | Super Admin |
| Manage Journals for Preprint Office | Dropped | — | — | main/adm.php?_action=preprint | /adm?_action=preprint | Super Admin (link only shown when system setting has_intgr_pub=1) |
| List of Users (Preprint Office) | Dropped | — | — | main/adm.php?_action=register | /adm?_action=register | Super Admin (link only shown when system setting has_intgr_pub=1) |
| Add / Edit User (Preprint Office) | Dropped | — | — | main/adm.php?_action=register&cn=0 | /adm?_action=register&cn=0 | Super Admin (link only shown when system setting has_intgr_pub=1) |
| Manage Roles (Preprint Office) | Dropped | — | — | main/adm.php?_action=roles | /adm?_action=roles | Super Admin (link only shown when system setting has_intgr_pub=1) |
Features
| Feature | Status | E2E | Description |
|---|---|---|---|
| Admin can browse the list of all hosted journals with title, ISSN, publisher, manager, status and latest-issue info | Full | Yes | Legacy showed every journal in one scrollable table; the port paginates server-side. |
| Admin can search journals by title, publisher or ISSN | Full | Yes | Keyword matches journal title, publisher note and both ISSNs, as in legacy. |
| Admin can filter journals by subject, language and enabled/disabled status, and sort the list | Full | Yes | Filters are URL-synced and combinable; sort (e.g. by modified date) had no legacy counterpart. |
| Each journal row shows a publication delay indicator (on-time / slightly delayed / significantly delayed) computed from its latest published issue | Full | — | Resolves the inventory's open 'gap to confirm' — the indicator is present; exact threshold-math parity with journal-delay-status.md not verified here. |
| Admin can open a quick-view drawer showing a journal's summary details and stats without leaving the list | New | Yes | Designed from scratch to avoid a full page navigation for read-only inspection. |
| Admin can enable/disable a journal directly from its list row | New | Yes | One-click toggle replaces navigating into the edit form to flip journal status. |
| Admin can impersonate (log in as) a journal's administrator from the list, with confirmation | Full | — | Legacy 3-minute encrypted URL token replaced by a server-action-generated impersonation payload behind a confirm dialog. |
| Admin can delete a journal and all journal-scoped data | New | Yes | Deliberate new capability; availability is environment-config gated. |
| Admin can export the journals list to Excel | Pending | — | Legacy ju_excel submit button on the list (adm.class.php:307-312,396) has no apps/web counterpart. |
| Admin can edit per-journal similarity-check quotas inline in the list and export a quota Excel | Pending | — | Legacy sc_quota mode of hostedJournalsList (adm.class.php:211,301-305,422-426,468-473) swaps list columns for quota inputs with save + qu_excel export; no counterpart found — may belong to a sibling module's scope. |
| Admin can export a journal's articles as XML from the row actions | New | — | Possible boundary overlap with Integrations' DOI XML feature — see flags. |
| Admin can create a new journal, which provisions the journal record, its admin contact with default roles, a locale-appropriate default article type, email templates, subject links and a collision-safe file folder | Full | Yes | Duplicate base-URL and abbreviation are rejected up front; folder-name collision suffixing preserved. |
| New journal administrator is emailed a welcome message with the journal URL and their login credentials | Pending | — | Legacy sent an HTML welcome email containing the plaintext password (create-journal.md, suppressible via not_send_email); no email send exists in the new createJournal flow — no recorded decision found, see flags. |
| Create Journal availability is controlled by the system-level newj_add setting | Pending | — | Legacy hides and hard-blocks _action=newj unless ju_journal_setting newj_add=1 (main/adm.php:143-156); no equivalent gate found in apps/web or apps/api (grep for newj_add empty). |
| Admin can edit a journal's general info (languages, base URL, frequency, ISSNs, abbreviation, emails) with URL normalization and duplicate-URL rejection | Full | Yes | Adds client-side Zod validation the legacy form lacked (legacy validated only URL format/duplication server-side). |
| Admin can edit a journal's abstract and keyword word-count limits | Full | Yes | Legacy performed no max>=min cross-validation on the admin path; port surfaces these as a dedicated tab. |
| Admin can manage a journal's subject classifications | Full | Yes | Subject choices come from global top-level subjects, as in legacy. |
| Admin can assign publisher organizations to a journal from the organization tree | New | Yes | Structured publisher-organization linkage replaces the legacy free-text publisher note. |
| Admin can toggle admin-only journal settings (disable registration, disable submission, editorial-board flag, journal status) with their side effects | Full | Yes | Side effects on the public journal site (registration/submission blocked) are e2e-verified. |
| Admin can upload or replace a journal's cover image | New | Yes | Cover image feeds the redesigned journal cards/list presentation. |
| Admin can view per-journal summary statistics on the edit screen | New | Yes | Same summary endpoint also powers the list quick-view drawer. |
| Admin can designate which journals belong to the preprint (integrated publishing) office | Dropped | — | Legacy main/adm.php?_action=preprint checklist writing the preprint_ju system setting. |
| Admin can list, add, edit and delete preprint-office users | Dropped | — | Legacy main/adm.php?_action=register user CRUD for the preprint office. |
| Admin can assign per-journal roles to preprint-office contacts | Dropped | — | Legacy main/adm.php?_action=roles AJAX checklist of roles per contact. |
"List of Journals" shares its URL with the sibling "Dashboard Overview" module.
main/adm.php's default response (no _action) renders two visually distinct <div class="main"> blocks in one HTTP reply: an admin-menu block ("مدیر سامانه") claimed by Dashboard Overview, and a "فهرست نشریات" (List of Journals) block driven by hostedJournalsList() — captured here per this module's explicit scope ("list journals, delay status"). Both rows legitimately share the same main/adm.php legacy ref/route; flagging for Phase C triage. This shared-block ambiguity is specific to main/adm.php, which has no separate _action=list case at all; mainm/adm.php and mainn/adm.php instead expose the journals list through their own explicit, unambiguous _action=list, separate from the admin-menu default (mainm/adm.php:279-281 for the case, :454 for the default menu's link to it with no inline table; mainn/adm.php:266-268 for the case, :440 for the default menu's link).Delay status is a column, not a separate screen.
hostedJournalsList() computes a three-level on-time/moderately-delayed/severely-delayed indicator (colored swatch) per journal from its latest published issue (see apps/legacy/spec/superadmin/journal-delay-status.md) and renders it inline in the List of Journals table — it does not have its own _action or route, so it is folded into the "List of Journals" row above rather than broken out.Update Journal's tabs stay one row.
Per
apps/legacy/spec/superadmin/update-journal.md, the Classic theme renders "Main Info" / "Other Info" / "Journal Settings" as tabs inside a single <form> submitted together (one "Save" button); the Modern theme loads/submits each section independently but through the same _action=editj view and _action=journal save handler. Neither theme exposes the tabs as separately navigable screens, so they are kept as one row rather than three.Action-name collisions are with two further Super Admin entry files, not the tenant-admin dispatch.
newj, editj, journal, preprint, roles, and register also exist as _action values in mainm/adm.php and mainn/adm.php — not the tenant-admin dispatch, but two further Super Admin entry files (Modern-theme UI variants of the same class/adm.class.php JournalAdmin dispatch, guarded by the identical $_SESSION['juAdmUser__'] session and hardcoding journal_code=0 throughout, same as main/adm.php — already used as this segment's primary source for the sibling Content Management, Integrations, Reports, and Subject Management modules). mainm/adm.php's DocumentRoot is mounted directly at the platform's named public domain (apache-httpd/httpd-vhosts.conf:40-45: journals.ekb.eg / journal.ekb.eg); main/adm.php is reached only via the separate j.ekb.eg vhost (lines 7-11). Legacy Refs above are qualified with main/adm.php as this module's chosen canonical source; the real tenant-admin (Journal Admin segment) dispatch is the unrelated manager.php / contacts.php, whose own action set has no overlap with these names.Preprint feature is unused in production.
Per
apps/legacy/spec/superadmin/preprint-journals.md, the preprint_ju setting this screen writes (and the has_intgr_pub flag that gates the screen's visibility) are "not used in production" — has_intgr_pub has no writer UI anywhere in the app and must be set by migration/install script.