HomePublishing Workflow › Technical Editor

Technical Editor

Legacy role: te_editor.php (ROLE_15). Manuscript-lifecycle role — production-pipeline step for structural/format checking (manu_status 62→63), sitting between the Abstract Editor and the Page Designer in the production sequence.

Page Status Workflow E2E Enhanced Legacy Ref Route Roles
Technical Editor Dashboard Pending te_editor.php /te_editor Technical Editor
Technical Editor Guide Pending te_editor.php?_action=guide /te_editor?_action=guide Technical Editor
New Manuscripts Pending Production te_editor.php?_action=assign /te_editor?_action=assign Technical Editor
Manuscripts with Editor's Decision Pending Production te_editor.php?_action=assigned /te_editor?_action=assigned Technical Editor
Manuscript Review Form Pending Production te_editor.php?_action=assign|assigned /request/te.editor.ajax Technical Editor

Features

FeatureStatusE2EDescription
Technical Editor sees a role dashboard listing their two work queues (New Manuscripts, Manuscripts with Editor's Decision) with live count badges Pending Legacy default view (te_editor.php default -> view/index.te_editor.view.php 'default') renders links to both queues with count badges; New Manuscripts badge turns red when count > 0 (Modern theme renders a chart instead).
Technical Editor can read a journal-configurable Technical Editors' Guide page Pending TeEditorManager::getTechEditorsGuide renders the localized 'te_editor_guide' journal setting as a static guide screen (te_editor.php?_action=guide).
Technical Editor can browse an inbound queue of manuscripts newly assigned to them (manu_status 62) with server-side pagination and page-size control Pending TeEditorManager::preAssignedManuscript lists ID, title, author, submit/modify dates and status; pageNavigator paging appears past 5 rows with a max_rows selector; empty state shows a 'no submissions found' alert.
Technical Editor can browse the queue of manuscripts they have already processed (manu_status 63, decision recorded) Pending Same preAssignedManuscript list filtered to decided assignments (te_editor.php?_action=assigned); rows open a read-only manuscript-info panel instead of the input form.
Technical Editor can open a manuscript review workspace by clicking a manuscript ID in either queue, with the clicked row highlighted Pending AJAX-loaded technicalReviewerActionForm (request/te.editor.ajax.php task=showManusriptDetails) renders inline below the list; content is conditional — still-pending (62) manuscripts get the editable form, decided ones only the info panel.
Technical Editor sees the Editor-in-Chief's note addressed to them plus the files the editor attached for technical editing Pending The review workspace shows editor_note (direction-aware for RTL text) and the file_stt=25 file list from getManuscriptFiles.
Technical Editor fills a structured evaluation questionnaire with per-question auto-save, a running total score, and per-question clear/reset Pending Shared EditorReview form (showEvaluationForm/saveEvaluationForm, reviewType 15); each answer saves via AJAX (task=saveQU) and updates the completed flag and score display without a page reload.
System blocks submitting the technical decision until the evaluation questionnaire is complete Pending saveTechnicalNote() in inc/js/te.editor.js checks revCompleted, re-renders the form highlighting unanswered questions (show_notcmp=1), and alerts the editor to finish the form first.
Technical Editor can write a technical note and send the manuscript back to the Editor-in-Chief, recording their recommendation Pending TeEditorManager::saveTechnicalNote stamps reviwer_recommendation=15 and review_date on the assignment (confirm dialog before send), then reloads the page.
Manuscript only advances to status 63 once the last pending technical editor on it responds Pending saveTechnicalNote always sets manu_wait_for_response=1 on every technical-note submission; it also checks for other still-pending TE assignments on the same manuscript and only sets manu_status=63 when none remain — multi-assignee semantics.
Editor-in-Chief is emailed automatically when a technical editor completes their assignment Pending EmailManager::emailsToEditorinChief with template field 'te_editor_respond', carrying the technical note as the editor note.
Completion of a technical-editing assignment is written to the manuscript tracking history, including the email content and the technical note Pending saveManuTracking records status 63 with TRACK_TE_EDITOR_COMPLETER_ASSIGNMENT description — audit-trail side effect of the send action.
Technical Editor can upload the technically-edited manuscript file with a description Pending TeEditorManager::uploadFile stores the file as file_stt=26 / file_type=48; upload is rejected for blacklisted extensions and refused entirely unless the manuscript is still in status 62; a pending file selection is auto-uploaded on final send.
Technical Editor can delete a file they uploaded, after confirmation Pending deleteManuFile in inc/js/te.editor.js posts task=deleteManuSFile to request/editor.ajax (the shared editor endpoint, not te.editor.ajax) with edt_r=15 and refreshes the file list.
Technical Editor can drag-to-reorder the manuscript's file list Pending jQuery-UI sortable (checkSortable) plus task=reOrderFile posting the new fileCode order to request/te.editor.ajax.php.
Technical Editor can expand a collapsible full manuscript-information panel including editor and technical files Pending getManuscriptDetails with file_stt '25,26' rendered in a toggleable dvManu fieldset (shManu()), shown for both pending and already-decided manuscripts.
Technical Editor can lazily load a manuscript's submission history tab Pending getSubmissionHistory in inc/js/te.editor.js fetches task=getSubmissionHistory from request/editor.ajax once per open (skips if the tab is already populated).
Technical Editor can open a reviewer's note/questionnaire answers in a printable popup Pending showRevNote (inc/js/te.editor.js:288) loads the shared journal/rev_questions.php partial (edt=1) into the manu_prv modal with a print icon; same partial documented under Editor-in-Chief.
Technical Editor can print the contents of the manuscript preview modal Pending The manu_prv modal chrome (view/index.te_editor.view.php 'modal') carries a print button wired to printElement via jquery.print.
Editor-in-Chief can assign a manuscript to a technical editor (the feed into this module's queues) Full The EIC-side assign action that creates the assign_status=15 rows this module consumes exists in apps/web, but the TE-side receiving portal does not.
Manuscript Review Form
has no ?_action= of its own — it is the technicalReviewerActionForm modal (loaded via request/te.editor.ajax.php, task=showManusriptDetails) opened by clicking a manuscript ID in either New Manuscripts or Manuscripts with Editor's Decision. 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 (manuscript info, the shared reviewer evaluation form, the technical-note textarea, and file upload) than either list it is launched from. Content within it varies with the underlying manuscript's status — the input form only appears for still-pending (status 62) manuscripts; already-decided ones show a read-only manuscript-info panel — but this is one screen with conditional content, not two.
Workflow tag "Production", not "Review"
: every action in this module operates on manu_status 62/63, which manuscript-lifecycle-end-to-end.md explicitly buckets under the Production phase (alongside the Language Editor, Abstract Editor, and Page Designer steps) rather than the earlier peer-review phase — even though the Technical Editor's own task is, functionally, a review of the manuscript's structure/format.
request/te.editor.ajax.php's makeTAction task
also calls technicalReviewerActionForm, but it has no reachable caller anywhere: neither view/index.te_editor.view.php nor view/te.editor.view.php wires up a call to it, and while inc/js/te.editor.js defines its own local makeTAction() JS function that posts to this task, that function itself has zero callers in either view. The identically-named onchange="makeTAction()" in view/tech.editor.view.php is a red herring — that page belongs to the separate Language Editor module (tech_editor.php), which loads its own distinct inc/js/tech.editor.js defining a separate makeTAction() that posts to request/tech.editor.ajax.php instead. te.editor.js's makeTAction() reads as dead code copy-pasted (near-verbatim) from tech.editor.js and is not counted as a row.
view/index.te_editor.view.php's breadcrumb switch also carries tech_au/au_tech cases, but te_editor.php's own dispatch switch never sets _action to either value (those actions live on tech_editor.php, pm.php, and jexpert.php instead) — another copy-paste remnant from the Language Editor module's breadcrumb, unreachable here and not counted as a row.
Reviewer's Note/Questionnaire popup
(journal/rev_questions.php, opened by inc/js/te.editor.js:288 loading ./journal/rev_questions?edt=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).