Home › Publishing 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
| Feature | Status | E2E | Description |
|---|---|---|---|
| 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 taskalso 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).