HomeSuper 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

FeatureStatusE2EDescription
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.