HomePortal › Journals

Journals

Cross-journal discovery on the root public site's home screen (main/index.php, default view, no _action) — the directory of all active journals, filterable by primary language.

Page Status E2E Enhanced Legacy Ref Route Roles
Journal Directory Full Yes faceted-filters main/index.php / Public
Journal Directory — mainm/mainn Portal-style variant Full Yes pagination mainm/index.php default view / Public
Journal Directory — Filtered by Subject / Live AJAX Filter (mainm/mainn) Full Yes url-driven-state mainm/index.php?list=<subject_code> dispatch /list_<subject_code>.html Public
Journal Directory — Raw Email Export (mainm/mainn ?ls) Dropped mainm/index.php:218-240 /?ls Public — no auth/session gate; unreferenced by any template, .htaccess rewrite, or right.php sidebar link (grepped apps/legacy/js for GET['ls'] and ?ls — only hits are the two definitions themselves); reachable only via a hand-typed URL, and returns every journal's title/base URL/contact email with no status filter
Publishers Directory New Yes /en/publishers Public
Publisher Detail New /en/publishers/<code> Public
Publisher Sub-Organizations New /en/publishers/<code>/sub-organizations Public

Features

FeatureStatusE2EDescription
Visitor can browse a directory of all active journals, each card linking straight out to that journal's own site Full Yes Directory shows cover thumbnail (latest issue coversheet, logo, or locale fallback in legacy) and title per journal; there is no portal-hosted per-journal detail page — cards exit to the journal's own home.
Visitor can filter the journal directory by subject/category Full Yes Legacy single-subject pretty-URL filter becomes a multi-select facet; a single selected category also becomes the page heading.
Visitor can filter the journal directory by language Full Yes Language moves from an admin-configured layout grouping to a user-selectable facet.
Visitor can search journal titles with live results Full Yes Legacy transient AJAX partial becomes shareable, back-navigable URL state.
Visitor can filter journals by publisher name (legacy ju_pub free-text field with datalist of known publishers) Pending Legacy live filter (mainm/index.php:516-529, matching ow_note journal setting) has no publisher facet in the ported sidebar; not positively dropped — the inventory tooltip records it as a gap.
Visitor can sort the journal directory Full Yes Sorting is greatly expanded from legacy's fixed title ordering.
Visitor can page through the journal directory New Yes No legacy predecessor — legacy rendered the whole catalog unpaginated.
Visitor sees removable filter chips and fully URL-driven, shareable filter/search/sort state New Yes Filters, search, sort and page are all shareable and back/forward-navigable.
Visitor can filter journals by publication frequency and by indexing database, with per-facet result counts New Yes Two entirely new facet dimensions alongside subject and language.
Visitor on mobile gets dedicated filter and sort UIs New Yes Responsive filter drawer/sort controls for small screens.
Visitor sees skeleton loading states and explicit empty/error states in the directory New Yes Loading and no-results experiences are designed states rather than blank output.
Admin can group the directory into two language blocks (sep_by_lang) or switch to a thumbnail-less two-column text-link layout (no_thumb) Dropped Admin-configured layout toggles are superseded by user-driven faceting; no counterpart is planned.
Visitor can load a chromeless/embeddable subject-filtered journal list (?av / list_<code>_av.html) with header and footer suppressed Pending mainm-only embed variant (mainm/.htaccess:12, mainm/header.php:109, mainm/footer.php:2) has no port; inventory records it as a gap, not an explicit drop.
Anyone can dump every journal's title, base URL and contact email as a raw table via a hand-typed ?ls URL Dropped Deliberately abandoned data-leak-shaped debug export.
Visitor can browse a public publishers/organizations directory with node-type tabs, search, sort and pagination New Yes Promotes publishers from a free-text journal setting in legacy to a first-class browsable directory.
Visitor can view a publisher's profile page with breadcrumbed hero, about, research areas, quick stats and a sub-organizations preview New Includes a designed empty state; an Explore Journals CTA exists in code but is commented out (hidden for now).
Visitor can browse the full paginated list of a publisher's child organizations with search and sort New Drill-down complement to the detail page's capped preview.
Row split with sibling "Landing" module.
main/index.php's default view (no _action) renders one HTTP response containing three visually and functionally distinct panels: an optional admin-configured home-page-notes block, a cross-journal article-search box (with links to ?aut author search and ?adv advanced search — claimed by the Articles module), and the journal-catalog panel captured as the single row above. Per the design doc's row-identification method, a "distinct sub-view within an action" is a valid row even without its own query string, so the journal-catalog panel is broken out here rather than folded into Landing's "Portal Home" row — both rows share the same main/index.php legacy ref/route by design. Flagging for Phase C triage since it's one PHP response feeding two module rows.
No distinct "journal detail" screen found on the portal.
Each journal's thumbnail/title in the directory links straight out to that journal's own site (ju_base_url) — i.e. the Journal segment's home page, not a page hosted by the root portal itself. So "journal detail as seen from the root site" does not materialize as a separate legacy row; there is no portal-hosted preview/profile page for a single journal. (Correction: mainm/mainn are not an example of that per-journal destination — journal/home.html's independent trace found both hardcode journal_code = 0 and reproduce this same cross-journal catalog instead of a themed per-journal home; they're captured as their own rows above, not cited here.)
"Filtering" is an admin-configured display toggle, not a distinct route — true of main/index.php specifically.
Two site-wide settings alter the directory's layout without changing the URL: sep_by_lang groups journals into two blocks (Persian/Arabic vs. English/other) or lists them flat in one grid ordered by title, and no_thumb switches between the thumbnail-grid layout and a plain two-column text-link layout. Both render from the same main/index.php request, so they stay one row rather than being split further. (main/.htaccess does carry the same list_<subject_code>.html rewrite rule as mainm/mainn, but main/index.php never reads $_GET['list'], so the URL is inert there — it renders the identical unfiltered view.) The mainm/mainn Portal-style variant is different: it exposes a real, code-verified, route-distinct filter (pretty-URL subject filtering plus a live AJAX title/publisher search) — see the two rows above, which document that separately rather than folding it into this note's scope.
Correction: the mainm/mainn directory-listing screen is now documented on two module pages at once, not exactly once.
mainm/index.php is the literal DocumentRoot for the production ServerName journals.ekb.eg / ServerAlias journal.ekb.eg vhost (apps/legacy/apache-httpd/httpd-vhosts.conf:40-52) — the namesake-domain deployment of the whole system — and both it and its near-identical sibling mainn/index.php hardcode journal_code = 0, reproducing this exact cross-journal catalog rather than a per-journal home. This note previously claimed journal/home.html, journal/search.html, and journal/static-pages.html each traced these two directories independently and "explicitly excluded them from their own row sets... rather than claiming a row themselves," leaving this page's second row ("Journal Directory — mainm/mainn Portal-style variant") the sole owner. That is no longer accurate for journal/home.html: it now carries its own row, "Cross-Journal Directory (mainm/mainn default view)," Legacy Ref "mainm/index.php; mainn/index.php (default view, no _action; journal_code hardcoded to 0)," under a note that itself still (inaccurately) says "portal/journals.html and portal/landing.html both decline to claim it." journal/search.html and journal/static-pages.html still decline to claim a default-view row, and portal/landing.html's own note independently frames mainm/mainn's ?list= behavior as out of the Portal segment's scope, also declining. Net effect: the bare mainm/mainn default-view screen (this page's second row) is duplicated across portal/journals.html and journal/home.html, contradicting the Definition of Done's "exactly once, under exactly one module." The subject-filtered/AJAX-filtered variant (this page's third row) is not covered by journal/home.html's row — its Legacy Ref cites only the bare default view — and remains uniquely documented here. Flagging for Phase C / orchestrator-level reconciliation across portal/journals.html, journal/home.html, and portal/landing.html; per journal/home.html's own note, the underlying Portal-vs-Journal placement of mainm/mainn is an open tension for Phase C triage, so this single-page pass does not unilaterally delete either side's rows.
New pages (stage 2)
The three public publishers pages (directory, detail, sub-organizations) have no legacy predecessor — placed here on portal/journals.html per inventory-p2-spec. They are candidates for a future dedicated 'publishers' Portal module, which needs user consent (creating module files is out of scope this stage).