HomePublishing 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

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