Home › Publishing Workflow › Reviewer
Reviewer
Legacy role: reviewer.php (ROLE_3). Manuscript-lifecycle role — the peer-review portal: accept/decline invitations, submit the manuscript evaluation form, and track pending/completed/declined assignments.
| Page | Status | Workflow | E2E | Enhanced | Legacy Ref | Route | Roles |
|---|---|---|---|---|---|---|---|
| Reviewer Dashboard | Pending | — | — | — | reviewer.php | /reviewer | Reviewer |
| Reviewers Guide | Pending | — | — | — | reviewer.php?_action=guide | /reviewer?_action=guide | Reviewer |
| New Reviewer Invitation | Pending | Review | — | — | reviewer.php?_action=new_invitee | /reviewer?_action=new_invitee | Reviewer |
| Agree/Decline to Review | Pending | Review | — | — | reviewer.php?_action=adgreeRev | /reviewer?_action=adgreeRev&_manu=...&accept_reject=1|2 | Reviewer (also pre-login, via emailed link) |
| Pending Assignments | Pending | Review | — | — | reviewer.php?_action=pending | /reviewer?_action=pending | Reviewer |
| Manuscript Evaluation Form | Pending | Review | — | — | reviewer.php?_action=pending | /reviewer?_action=pending&manu=<manu_code> | Reviewer |
| Completed Assignments | Pending | Review | — | — | reviewer.php?_action=completed | /reviewer?_action=completed | Reviewer |
| Declined Assignments | Pending | Review | — | — | reviewer.php?_action=decline | /reviewer?_action=decline | Reviewer |
| Closed Assignments | Pending | Review | — | — | reviewer.php?_action=closed | /reviewer?_action=closed | Reviewer |
| Submit Bank Account Information | Pending | — | — | — | reviewer.php?_action=account | /reviewer?_action=account | Reviewer |
| Get Review Certificate | Pending | — | — | — | reviewer.php?_action=cert | /reviewer?_action=cert&cert_year=...&search=1 | Reviewer |
| Get Review Certificate — Single Manuscript | Pending | — | — | — | reviewer.php?_action=cert&rv=... | /reviewer?_action=cert&rv=<manu_rev_code> | Reviewer |
| Reviewers (Public Directory) | Pending | — | — | — | reviewer.php?_action=info | /reviewer?_action=info | Public |
| Manuscript File Repair (Incident Tool) | Dropped | — | — | — | reviewer.php?_action=repair | /reviewer?_action=repair | Reviewer (unlinked from any menu) |
| Manuscript File Repair — Single-Manuscript Upload Form | Pending | — | — | — | reviewer.php?_action=repair&rvc=... | /reviewer?_action=repair&rvc=<manu_rev_code> | Reviewer (also pre-login, via emailed link) |
Features
| Feature | Status | E2E | Description |
|---|---|---|---|
| Reviewer sees a role dashboard summarizing their assignment queues (new invitations, pending, completed) with quick-menu navigation | Pending | — | Legacy reviewer.php default action counts open assignments (getRecords=1) and renders the ROLE_3 portal home; no reviewer route group exists under apps/web/app/[locale]/[tenant]/(protected). |
| Reviewer can read the journal's Reviewers Guide | Pending | — | Journal-configured guide content (getReviewersGuide, reviewer.php?_action=guide) rendered inside the reviewer portal. |
| Reviewer has an inbox of new review invitations, each openable in a preview modal showing title/abstract/keywords and the editor's note | Pending | — | reviewer.php?_action=new_invitee lists assignments with accept_reject IS NULL; previewManuscript modal honors the file_before_reviewer setting for exposing manuscript files pre-acceptance. |
| Reviewer can accept or decline a review invitation in-app, with the choice also offered inline inside the invitation preview modal | Pending | — | Both the adgreeRev screen and the preview-modal buttons write through the same acceptRejectManuscript() logic; apps/web only records agree/decline on the reviewer's behalf from the EIC panel (follow-up-agree-decline-mutation.ts), never reviewer-facing. |
| Reviewer can accept or decline directly from an emailed encrypted link, pre-login, which auto-authenticates them | Pending | — | reviewer.php?_ad=... decrypts the payload, blocks crawlers, can switch the site language embedded in the link, and auto-logs the reviewer in via loginReviewersA() before recording the choice. |
| Accepting an invitation automatically extends the review due date by the original assign-to-due interval (unless the journal disables extension) | Pending | — | acceptRejectManuscript recomputes review_due_date from today using the original interval; suppressed by the no_due_extend journal setting. |
| When a reviewer follows an invitation link after the review was locked/closed, they see a closed message and the editor is emailed that the reviewer did not respond | Pending | — | showRvCloseMessage sends the reviewer_not_respond email template via EmailManager as a side effect of hitting a locked assignment from the emailed link. |
| Reviewer can view their pending assignments list with due dates and open each manuscript's details | Pending | — | reviewer.php?_action=pending (accept_reject = 1, no recommendation yet); rows open the previewManuscript modal, optionally auto-opened via the &manu=<manu_code> deep link. |
| Reviewer fills a scored, journal-configurable evaluation questionnaire with per-answer autosave, completeness check, and a live review score | Pending | — | showEvaluationForm/saveEvaluationForm/checkQuCompleted/getReviewScore over ju_reviewer_questions (weighted questions filtered by reviewer type and manuscript type); each answer saves via AJAX (task=saveQU) and returns completion + score. |
| Reviewer can save draft comments for the editor and for the author before submitting the final recommendation | Pending | — | saveReviewrRecommend persists reviewer_note and note_for_author without setting a recommendation, so work is resumable until final submission. |
| Reviewer can upload one or more review files with the manuscript evaluation, and delete previously uploaded ones | Pending | — | uploadFile appends pipe-delimited files under Manuscript_Files_Path with an extension blacklist; deleteRevFile/getRevFiles manage the list — all blocked once the review is locked or the recommendation is submitted. |
| Reviewer submits a final recommendation, which locks their review, flags the manuscript as awaiting editor response, and emails the handling editor (with CC) | Pending | — | sendReviewrRecommend writes reviwer_recommendation (recommendation code 6 = decline-from-pending, recorded as accept_reject=2), sets manu_wait_for_response=1, and triggers the editor notification email. |
| When enough reviewers have completed (journal max_reviewers_complete or all resolved), the manuscript auto-advances to reviewed status and the editor is emailed; other still-pending reviewers can be emailed that their review is no longer required | Pending | — | checkForAllReviewersRecommendation sets manu_status=49, sends all_reviewed/all_declined to the editor, and — when the rv_ncl setting is on — sends all_reviewed_ncl to remaining reviewers. |
| Reviewer can view their completed assignments history | Pending | — | reviewer.php?_action=completed via completedAssignments(); rows link to the per-manuscript certificate. |
| Reviewer can view their declined assignments history | Pending | — | reviewer.php?_action=decline (completedAssignments with dc=1). |
| Reviewer can view their closed (locked/expired) assignments history | Pending | — | reviewer.php?_action=closed (completedAssignments with dc=2). |
| Reviewer can dismiss (hide) an assignment row from their lists | Pending | — | AJAX task deleteRevManu sets display_st=1 — a soft per-reviewer hide, not a data deletion. |
| Reviewer sees their anonymized position among the manuscript's reviewers ('your row in list') | Pending | — | getReviewerPrevNumber shows the reviewer which numbered row is theirs without exposing other reviewers' identities. |
| Reviewer can submit and update bank account information for review payment, with journal-configurable custom and required fields | Pending | — | reviewer.php?_action=account (bankAccountForm/saveBankAccount, bac_custom_fields/bac_fields_setting settings) — only shown when the journal enables reviewer payment (checkForBankAccount); stored as JSON on ju_contacts.account_info with legacy pipe-format migration. |
| Reviewer is warned on the Pending Assignments page when review payment is enabled but no bank account is on file | Pending | — | getAssignedManuscripts (pending branch) renders the REV_BANK_ACCOUNT_ALARM banner; the dashboard also runs checkForBankAccount. |
| Reviewer can generate an aggregate review certificate filtered by year, rendered from journal-templated content | Pending | — | reviewer.php?_action=cert&cert_year=...&search=1 (rvCertForm/rvCertResult) using the rev_cert_total journal template with a built-in default. |
| Reviewer can get a single-manuscript review certificate via a per-row icon on Completed Assignments | Pending | — | reviewer.php?_action=cert&rv=<manu_rev_code> (FUNCTION=rvCertManu) renders a distinct per-manuscript certificate, separate from the aggregate one. |
| Public visitors can view the journal's Reviewers directory page | Pending | — | reviewer.php?_action=info skips the role-3 auth check, is linked from the public menu (menu_rev), and renders the reviewers_note template whose {reviewersList} placeholder expands to a table of name/specialty/email/affiliation; apps/web's public routes have editorial-board and peer-review-process but no reviewers directory. |
| Reviewer can answer the reviewer note/questionnaire popup attached to manuscript rows | Pending | — | journal/rev_questions.php popup opened by inc/js/reviewer.js showRevNote(ID); a shared partial documented in full on the Editor-in-Chief inventory page, folded into the manuscript rows here. |
| Reviewer can re-upload lost manuscript files for a single assignment via the incident-recovery upload form, including from an emailed auto-login link | Pending | — | reviewer.php?_action=repair&rvc=<manu_rev_code> (repair.manu.files.class.php reparirRvManuFileForm(), rvc branch at repair.manu.files.class.php:451-455); genuinely linked via the base tool's per-row upload icon (repair.manu.files.class.php:560) and via ReparManuFiles::loginRvRepairLink() (repair.manu.files.class.php:796-821), so unported rather than dead. |
| Journal-wide manuscript file repair incident tool (mass-selection list plus TinyMCE email composer) | Dropped | — | One-off incident tooling, deliberately abandoned rather than awaiting a port. |
| Save review to Publons | Dropped | — | Legacy Publons integration is broken at source; the inventory does not even list it as a row. |
Agree/Decline to Review
is reachable two ways: in-app via
reviewer.php?_action=adgreeRev
(also auto-selected whenever a t or _ad query parameter is present), and pre-login via an
emailed encrypted link (reviewer.php?_ad=...) that auto-authenticates the reviewer through
loginReviewersA(). The same accept/decline choice is also offered inline inside the New Reviewer
Invitation row's preview modal (previewManuscript, review_st=new) — both paths write to
the same acceptRejectManuscript() logic, so this is one row, not two.Manuscript Evaluation Form
has no
?_action= of its own — it is the
previewManuscript/showEvaluationForm modal (loaded via
request/reviewer.ajax.php, task=showManusriptDetails) opened by clicking a row in
Pending Assignments. It is counted as its own row per the row-identification method's "distinct tab/sub-view
within an action" clause, since it renders a materially different screen (the scored evaluation form with file
upload) from the list it is launched from.Get Review Certificate — Single Manuscript
: the
rv=<manu_rev_code> query
parameter (FUNCTION=rvCertManu) renders a distinct single-manuscript certificate, reached only via
a per-row certificate icon link on Completed Assignments — separate from the aggregate, multi-manuscript
certificate produced by the base cert action's search form/result.Manuscript File Repair (Incident Tool)
— the base, no-
rvc screen — is not linked
from any menu or view in this module: tracing its SQL shows a hardcoded 2020-05-19..2021-03-12 date range, i.e.
it is a leftover, journal-wide incident tool built for a specific OVH data-center fire, reachable only by
typing the URL directly. Its sibling _action=pbl (save to Publons) is even more clearly dead:
reviewer.php calls $cnf->publonsReviewSave(), but no such method is defined
anywhere in the codebase — it would fatal-error if ever hit, so it is not listed as a row (renders nothing).Manuscript File Repair — Single-Manuscript Upload Form
(
&rvc=...,
reparirRvManuFileForm()) renders a materially different screen from its base sibling above — a
single-manuscript file-picker/re-upload form scoped to one reviewer/manuscript-reviewer pair, versus the base
tool's journal-wide mass-selection list plus TinyMCE email composer — so it is split out as its own row, the
same way Get Review Certificate — Single Manuscript is split from the base certificate row
above. Unlike its base sibling, it genuinely is linked: via a per-row upload icon rendered inside the base
tool's own mass-selection table (repair.manu.files.class.php:560,
href="reviewer?_action=repair&eic=1&rvc=..."), and via the emailed _ad-encrypted
auto-login link, which redirects straight to this URL through ReparManuFiles::loginRvRepairLink()
(repair.manu.files.class.php:796-821).Reviewers (Public Directory)
(
_action=info) is a public page — it skips the
role-3 auth check entirely and is linked from the journal's public navigation menu (menu_rev) as
"Reviewers". Every other row in this table requires the Reviewer role; this one does not.Reviewer's Note/Questionnaire popup
(
journal/rev_questions.php, opened by inc/js/reviewer.js's own showRevNote(ID) loading ./journal/rev_questions?_rv=1&revNote=...) folds into the manuscript rows above rather than getting its own row — same shared partial documented in full at Editor-in-Chief (route-file checklist gap, resolved 2026-07-02).