Issues & Articles
Issue archive, current issue, articles-in-press, and article detail (with download buttons and citation tools) — front-controller index.php (root, mainm/, mainn/) dispatching into ArticleManager::articleList() / ::articleInfo() (class/article.class.php), rendered by the per-journal themes/*/front/pages/article_list.php (Current Issue,
Issue Archive, Articles in Press) and article_info.php (Article Detail Page)
templates.
| Page | Status | E2E | Enhanced | Legacy Ref | Route | Roles |
|---|---|---|---|---|---|---|
| Current Issue | Full | Yes | filters | index.php?_action=current | /?_action=current | Public |
| Issue Archive (Single Issue View) | Full | — | pagination | index.php?_action=article&vol={v}&issue={n} | /issue_{vol}_{issue}.html | Public |
| Articles in Press | Full | Yes | filters | index.php?_action=press&issue=-1 | /?_action=press&issue=-1 | Public |
| Article Detail Page | Full | — | related-articles | index.php?_action=articleInfo&article={code} | /article_{code}.html | Public (PDF full-text download may require sign-in if journal setting login_for_fulltext is enabled) |
| Recommend Article by Email | Pending | — | — | ju.email.php | /ju.email?... | Public |
| Articles (stub) | New | — | — | — | /en/<tenant>/articles | Public |
Features
| Feature | Status | E2E | Description |
|---|---|---|---|
| Reader can view the current issue's table of contents | Full | Yes | The latest published issue's articles are shown directly at /current-issue instead of via the legacy redirect to the issue permalink. |
| Reader can open any archived issue's table of contents via its volume/issue permalink | Full | — | Reached by permalink or from the Browse > By Issue tree; shows the same article-list view as Current Issue with volume/issue labels. |
| Volume-only URL redirects the reader to the latest issue in that volume | Pending | — | Legacy /volume_{vol}.html (vol without issue, apps/legacy/js/index.php:309-314) resolves the last issue of the volume and redirects to its permalink; no apps/web counterpart. |
| Reader can filter current-issue articles by subject and article-type facets | New | — | Desktop sidebar plus mobile bottom drawers; selected facets persist in the query string. |
| Reader can page through long issue TOCs | New | — | Issue and current-issue listings paginate at 10 per page with a capped page-number window. |
| Reader can zoom the issue cover image in a lightbox | New | — | The issue cover thumbnail opens a full-size dialog. |
| Reader can browse articles in press and filter by Accepted / Corrected Proof stage | Full | Yes | Legacy exposed the two stages only as raw &ac query variants; the port surfaces them as a faceted filter with counts. |
| Journal's in-press explanatory note is shown on the Articles in Press page | Full | — | The journal-configured note appears as an About card above the listing. |
| In-press listing visibility can be restricted to configured signed-in roles | Pending | — | Legacy in_press_for_users setting (class/article.class.php:158-180) hides the press list unless the signed-in contact holds one of the configured journal roles; no counterpart evidence in the ported page or getInPressArticles. |
| Per-article extra note flag on in-press rows (show_ar_note_press / ar_more_cnt) | Pending | — | Legacy attaches ar_more_cnt article-setting notes to in-press rows when show_ar_note_press is enabled (class/article.class.php:182-201); no apps/web counterpart. |
| Reader can view full article details (title, authors, abstract, issue metadata, DOI) | Full | — | The numeric-article-code detail page mirroring legacy ?_action=articleInfo&article={code}. |
| Reader can download the article's PDF full text | Full | — | Download button on the article detail page; size labelling is an enhancement over legacy. |
| PDF full-text download requires sign-in when the journal's login_for_fulltext setting is enabled | Pending | — | Legacy gates the full-text link on login_for_fulltext (apps/legacy/js/index.php, apps/legacy/js/mainn/index.php); the inventory tooltip flags that this gating is not obviously enforced on the ported detail page. |
| Reader can download an article's supplementary files | Full | — | Each supplementary file renders as a download link in the detail sidebar, matching legacy article_info.php's file list. |
| Reader can export an article's XML metadata | Full | — | Article-scoped XML export link on the detail page. |
| Reader can export a whole issue's XML metadata from the TOC heading | Pending | — | Legacy builds an issue-scoped ?_action=xml&issue={n} link into the article-list title (class/article.class.php:151); no counterpart on the ported issue/current-issue pages. |
| Reader can download the full-issue PDF from the issue TOC when the journal enables it | Pending | — | Legacy issue_full_pdf setting renders a jufile?issue_pdf= link on issue listings (class/article.class.php:211-221); no apps/web counterpart. |
| Reader sees a per-issue subject overview summary above the TOC when enabled | Pending | — | Legacy issue_sb_ovrv setting adds a subject summary block to issue listings (class/article.class.php:152-157); no apps/web counterpart. |
| Reader can cite the article via a citation dialog | Full | — | Structured cite dialog replacing legacy's inline citation block / ArticleCitation actions. |
| Reader can share an article to social platforms or copy its link | Full | — | A single share dialog replaces legacy's row of per-platform icons. |
| Reader sees who cited the article (cited-by list) | Full | — | Matches the legacy citations block on article_info.php. |
| Reader sees related-article recommendations on the detail page | New | — | A recommendation rail with a has-more indicator. |
| Article pages carry rich SEO and social metadata | New | — | Improves indexing and link previews for article pages. |
| Reader can print the article view | Pending | — | Legacy share_print action (printDiv in themes/theme1/front/pages/article_info.php:552); no print action in the ported detail page or ArticleShareDialog. |
| Reader can recommend an article to a colleague by email | Pending | — | Legacy ju.email.php modal (sender/receiver fields, CSRF token, image CAPTCHA, EmailManager::recommendArticleMail(), sender prefill for signed-in users); the ported share dialog covers sharing intent but does not send an email to a named recipient. |
| Reader can read and submit moderated comments on an article | Pending | — | Legacy save_comment POST branch of the articleInfo dispatch (index.php:330-335) with ArticleComments showActiveComments/editArticleComment and a journal comment_note (class/article.class.php:2343-2364); no apps/web counterpart. |
| Reader can read the article's full text inline as JATS/HTML when the journal enables it | Pending | — | Legacy showFulltextJats + jatsFulltext render inline full text with jats.js/jats.min.css (index.php:343-346, article_info.php:311-320); no JATS/full-text rendering found in the ported ArticleContent/ArticleDetail components. |
| Tenant-level /articles landing page | New | — | Reserves the URL; real listings live under current-issue / issues / subjects / authors / keyword-index. |
Recommend Article by Email added 2026-07-02 (route-file checklist gap).
A same-origin GET+POST screen (
ju.email.php), not a fragment of index.php's own dispatch — opened as a modal from the Article Detail Page's "Recommend" action, it is independently addressable and renders its own form (sender/receiver email, CSRF token, image CAPTCHA). Given its own row since — unlike the XML-export/PDF-download links noted below — it is a full page with a themed panel body, not an inline download link.Current Issue vs. Issue Archive:
both rows render the identical underlying
article-list view (
ArticleManager::articleList() plus the theme's
article_list object template) — the only difference is which issue code is
loaded and how the page is reached: Current Issue auto-resolves the latest published issue
(see spec/journal/latest-issue-calculation.md, "Canonical Latest Issue") and
redirects to its permalink, while Issue Archive is reached via a direct permalink or via the
Browse > By Issue tree (sibling journal/browse.html module, which owns the
volume/issue index but not the article-list screen it links to). Kept as two rows because
the legacy menu and specs (browse-current-issue.md,
browse-by-issue.md) both treat them as distinct entry points/features.Dispatch-dir gap (verified by tracing):
the shared default menu
(
class/journal.menu.class.php::setDefaultMenu()) and the theme templates (e.g.
themes/theme1/front/objects/archive_index.php) universally link to
?_action=current and ?_action=press. However, only the root
apps/legacy/js/index.php front controller has explicit
case 'current': / case 'press': branches in its dispatch switch —
mainm/index.php and mainn/index.php (the other two per-journal
front-controller variants named in this segment's dispatch) only branch on
_action=article/articleInfo in their own control flow, so those two
would fall through to the default search-form branch for these links. Legacy Ref above
points at the root controller as the verified reference implementation.XML metadata export (
?_action=xml&article=...) renders as a link on the
Article Detail Page. A second, issue-scoped form (?_action=xml&issue=...)
is built directly into the article-list title by
ArticleManager::articleList() (class/article.class.php, line 151)
and is rendered next to the issue heading on the Current Issue / Issue Archive screens
(echoed via $articleList->title in the shared theme templates, e.g.
themes/theme1/front/pages/article_list.php). The full-issue PDF download is a
link rendered inside the Issue rows. Both are download links, per this module's scope note
"(incl. download buttons, citation)" — not separate rows, since neither renders an HTML
screen of its own.New pages (stage 2):
the tenant-level /articles page is an un-implemented stub (renders only the tenant title, no listing). Placed under issues-articles for claim-exactly-once accounting; per this module's note it should not gain a substantive row without user consent — flag for Phase C to wire or remove.