HomePublishing Workflow › Production Manager

Production Manager

Legacy role: pm.php (ROLE_11). Manuscript-lifecycle role — orchestrates the post-acceptance production pipeline (language editing, page design, galley proof) between Editor-in-Chief and Publisher for journals that delegate production to a Production Manager.

Page Status Workflow E2E Enhanced Legacy Ref Route Roles
Production Manager Dashboard Pending pm.php /pm Production Manager
New Manuscripts Pending Production pm.php?_action=new /pm?_action=new Production Manager
Returned to Editor-in-Chief Pending Production pm.php?_action=returned /pm?_action=returned Production Manager
Manuscripts Sent to Language Editor Pending Production pm.php?_action=tech_editor /pm?_action=tech_editor Production Manager
Manuscripts with Language Editor's Decision Pending Production pm.php?_action=tech_editor_p /pm?_action=tech_editor_p Production Manager
Sent to Author for Editing Fixes Pending Production pm.php?_action=tech_au /pm?_action=tech_au Production Manager
Returned from Author After Editing Fixes Pending Production pm.php?_action=au_tech /pm?_action=au_tech Production Manager
Manuscripts Sent to Page Designer Pending Production pm.php?_action=page_designer /pm?_action=page_designer Production Manager
Manuscripts with Page Designer's Decision Pending Production pm.php?_action=page_designer_p /pm?_action=page_designer_p Production Manager
Manuscripts Sent to Authors for Galley Proof Pending Production pm.php?_action=galley_proof /pm?_action=galley_proof Production Manager
Galley Proof Handled by Authors Pending Production pm.php?_action=glp_resp /pm?_action=glp_resp Production Manager
Manuscripts with PM's Decision Pending Production pm.php?_action=handled /pm?_action=handled Production Manager
Search Manuscripts Pending pm.php?_action=search /pm?_action=search Production Manager
Manuscript Detail — Production Manager Action Pending Production EditorManager::prepareToAccept + ManuManager::getManuscriptDetails, via request/editor.ajax.php task=prepareToAccept /request/editor.ajax Production Manager

Features

FeatureStatusE2EDescription
Production Manager can sign in to a dedicated role portal gated to their role Pending apps/legacy/js/pm.php requires an authenticated session with ju_contact_role._role=11, redirecting unauthenticated users to login with a return-to-pm deep link and bouncing non-PM users home.
PM sees a dashboard of production-queue counts across all pipeline stages Pending pm.php's default action aggregates per-status manuscript counts (statuses 6,33,34,19,20,21,27,28,29,60,61) and renders them as queue links via view/index.pm.view.php, hiding zero-count editing-fixes queues on the Classic theme.
PM gets a Register Author shortcut when the journal enables it Pending When the journal setting eic_custom_opt contains reg_au, the dashboard shows a link to contacts?_action=signup so the PM can register an author on the spot.
PM can view the New Manuscripts production queue Pending pm.php?_action=new lists manuscripts sent to production (manu_status=33) via EditorManager::getSubmissionList, the one queue whose detail modal reliably offers decision controls for PM-delegated journals.
PM can view manuscripts they returned to the Editor-in-Chief Pending pm.php?_action=returned lists manu_status=34 manuscripts handed back to the EIC.
PM can view manuscripts currently with the Language Editor Pending pm.php?_action=tech_editor lists manu_status=19 manuscripts, a PM-owned worklist that in apps/web exists only as an Editor-in-Chief decision action.
PM can view manuscripts the Language Editor has decided on Pending pm.php?_action=tech_editor_p lists manu_status 20 and 21 manuscripts with the Language Editor's decision recorded, the PM's cue to advance the manuscript.
PM can view manuscripts sent to the author for editing fixes (hidden queue) Pending pm.php?_action=tech_au lists manu_status=60 manuscripts, absent from the Modern-theme sidebar and shown on the Classic dashboard only when count is above zero yet always directly reachable by URL.
PM can view manuscripts returned from the author after editing fixes (hidden queue) Pending pm.php?_action=au_tech lists manu_status=61 manuscripts with the same hidden-menu behavior as the tech_au queue.
PM can view manuscripts currently with the Page Designer Pending pm.php?_action=page_designer lists manu_status=27 manuscripts, a PM queue that in apps/web exists only as the EIC's 'Send to Page Designer' decision action.
PM can view manuscripts the Page Designer has decided on Pending pm.php?_action=page_designer_p lists manu_status=28 manuscripts awaiting the PM's next production step.
PM can view manuscripts sent to authors for galley proof Pending pm.php?_action=galley_proof lists manu_status=6 manuscripts, a PM queue that in apps/web exists only as the EIC's 'Send to Author for Galley Proof' decision action.
PM can view galley proofs handled by authors Pending pm.php?_action=glp_resp lists manu_status=29 manuscripts (author responded to galley proof), the final PM checkpoint before returning to the EIC/Publisher.
PM can review the manuscripts they have already handled Pending pm.php?_action=handled resolves the PM's own past assignments via EditorManager::getEdtHandledSubmissions (assign_status=33) and lists them with getSubmissionList.
PM can search manuscripts within production statuses Pending pm.php?_action=search renders EditorManager::manuSearchForm and, on submit, constrains results to production statuses 6,33,34,19,20,21,27,28,29.
PM can open a manuscript detail modal with full manuscript info from any queue row Pending Every queue row's manuscript-ID link calls javascript:prepareToAccept(manu_code) (view/editor.view.php:4489), loading EditorManager::prepareToAccept plus ManuManager::getManuscriptDetails into the view/index.pm.view.php modal via request/editor.ajax.php task=prepareToAccept&edt_r=11.
PM can record a production decision on a manuscript (route to Language Editor, author fixes, Page Designer, galley proof, or return to EIC) Pending The editorManuActions edt_r=11 branch (class/editor.class.php:168-180) offers Send to Language Editor (19), author editing fixes (60), Page Designer (27), author galley proof (6), or return to EIC (34), though a legacy early return (editor.class.php:73-76) when getPMStatus()==1 blocks the form for every whitelisted status except 33 on PM-delegated journals.
PM can open the Reviewer's Note / Questionnaire popups from the manuscript detail panel Pending pm.php loads the shared inc/js/editor.js, so the detail panel can open journal/rev_questions.php, journal/rev_subject.php and journal/sug_op.php exactly as the Editor-in-Chief module does.
class/pm.class.php is not this module's class.
It defines PMAdmin, used only by the old duplicate app trees under main/pm.php and mainn/pm.php (each a self-contained legacy snapshot that renders its screens inline in the same PHP file rather than via the view/*.view.php dispatch pattern — main/pm.php:9 and mainn/pm.php:8 both require_once '../class/pm.class.php', the same shared top-level class/pm.class.php file documented above, not a class/ or view/ directory of their own — out of this segment's scope per the taxonomy's "16 role-entry PHP files" source). The live, currently-routed apps/legacy/js/pm.php documented here instead instantiates EditorManager (class/editor.class.php, which extends ManuManager from class/manu.class.php) — the same class hierarchy editor.php uses, gated to ju_contact_role._role = 11.
Manuscript Detail — Production Manager Action
has no ?_action= of its own — it is the editorManuActions action panel (available "make a decision" options, keyed off edt_r=11 in class/editor.class.php) plus the shared getManuscriptDetails manuscript-info panel (view/manu.view.php), both loaded into the modal defined in view/index.pm.view.php ($FUNCTION == 'modal') via request/editor.ajax.php's prepareToAccept task, opened by clicking a manuscript ID inside any of the queues above (every queue's list row shares the same javascript:prepareToAccept(<manu_code>) link, view/editor.view.php:4489). Counted as its own row per the row-identification method's "distinct tab/sub-view within an action" clause — it renders a materially different screen (decision form + full manuscript info) than the list rows it is launched from. But decision controls rarely render in practice: editorManuActions() has an unconditional early return (class/editor.class.php:73-76), before the edt_r switch runs, whenever getPMStatus() is 1 — i.e. the journal is listed in the preprint_ju setting and so delegates production to a Production Manager, the normal case for using pm.php at all (see apps/legacy/spec/Editor-In-Chief/editor-in-chief-in-publishing-menu-group.md) — and manu_status is one of 6,19,20,21,27,28,29,60,61,66,67. That blocked set covers every value in the edt_r==11 branch's own manu_status whitelist (6,19,20,21,27,28,29,33,60,61, class/editor.class.php:168-180) except 33, and 34 (Returned to Editor-in-Chief) was never in that whitelist either. So for a Production-Manager journal, only the New Manuscripts queue (manu_status=33) reliably surfaces the decision form through this modal — the other 9 queues above open it with only the manuscript-info panel.
"Guide" is dead code here.
pm.php's page-title switch has a case "guide" (setting the title to "Guide for Editor") and template/rules.php's __pm_qmenu() has a commented-out "Product Manager Guide" quick-menu link, but the module's actual render switch has no matching case "guide" — requesting pm.php?_action=guide falls through to the default branch and silently renders the Dashboard (just with a different page title). Unlike the Language Editor's and Technical Editor's genuine Guide pages, this never renders a distinct screen, so it is not counted as a row.
Sent to Author for Editing Fixes
and Returned from Author After Editing Fixes are absent from the Modern-theme sidebar menu (__pm_pmenu()) and only appear on the Classic-theme Dashboard when their respective manuscript counts are greater than zero — but both remain directly reachable via _action=tech_au / _action=au_tech regardless of theme or count, per the row-identification method's "secondary/hidden actions count" clause. The same manu_status pair (60/61) is also exposed by the Language Editor module (tech_editor.php).
Reviewer's Note/Questionnaire popup, both hosts.
The root pm.php loads the shared inc/js/editor.js (same file editor.php uses), so its manuscript-detail panel can open journal/rev_questions.php, journal/rev_subject.php, and journal/sug_op.php the same way — documented in full at Editor-in-Chief. The mainn-hosted mirror (mainn/pm.php) instead loads its own mainn/inc/js/pm.js, whose showRevNote(ID) loads a host-local copy, mainn/rev_questions.php, at line 399 — both fold into the manuscript rows above rather than getting their own rows (route-file checklist gap, resolved 2026-07-02).