- Overview
- Features
- Requirements
- Installation
- Configuration
- Technical Details
- Development
- Support
- Contributing
- License
The Issue Preselection Plugin allows authors to select which journal issue their submission should be assigned to during the submission process. Editors can configure which issues are open for submissions and pre-assign guest editors who will automatically be assigned to incoming submissions.
- Issue Selection During Submission - Select from available future issues when submitting
- Direct Response to Calls for Papers - Submit directly to specific themed issues
- Filtered Issue List - Only see issues that editors have marked as open
- Issue Configuration - Mark issues as open/closed for author selection
- Editor Pre-assignment - Assign guest editors to issues for automatic workflow assignment
- Automatic Workflow - Submissions automatically assigned to configured editors with notifications
- OJS Version: 3.5.0.1 or higher
- PHP Version: 8.2 or higher
- Database: MySQL 5.7+ or PostgreSQL 9.5+
- Download the latest release from the releases page
- Extract the archive
- Copy the
issuePreselectionfolder toplugins/generic/in your OJS installation - Log in to OJS as Administrator
- Navigate to Settings > Website > Plugins
- Find "Issue Preselection Plugin" under Generic Plugins
- Click Enable
cd /path/to/ojs/plugins/generic
git clone https://github.com/abenteuerzeit/ojs-issue-preselection.git issuePreselectionThen enable via the OJS admin interface as described above.
Step 1: Navigate to Future Issues
Navigate to Issues > Future Issues
Step 2: Create or Edit an Issue
Click Create or Edit on an issue you want to configure
Edit is shown after expanding the view by clicking on the triangular bullet to the left of the issue. You can also click on the name directly.
Step 3: Configure Issue Data
You'll see two new fields under Issue Data
- Enable for Submission: Check to make this issue available for author selection
- Assigned Editors (Optional): Select one or more editors to automatically assign to submissions
Updates to editor assignments under the issue data tab apply to all active submissions assigned to an issue and not scheduled for publication.
Step 4: Save Changes
Click Save
Step 1: Start New Submission
Author clicks "New Submission"
Step 2: View Issue Selection
In the "For the Editors" step, they see an "Issue Selection" dropdown
Step 3: Select Target Issue
Author selects the target issue
Step 4: Validation - Missing Issue Selection
If the author does not select an issue, an error notification appears
Step 5: Navigation - Back Button
On clicking Back
Step 6: Validation - Success
Successful validation
Step 7: Publication Scheduled
Upon submission, publication is scheduled to the selected issue
Step 8: Guest Editors Added
All pre-assigned editors are added as Guest Editors
Step 9: Notifications Sent
Editors receive notifications
The plugin uses OJS's hook system exclusively for integration:
- Schema Hooks: Extend issue and submission schemas with custom fields
- Form Hooks: Add UI elements to issue and submission forms
- Template Hooks: Display selected issue in review section
- Validation Hooks: Process issue assignment and editor assignment on submission
Uses OJS's existing settings tables (no database migrations required):
issue_settings: StoresisOpen(boolean) andeditedBy(array of user IDs)submission_settings: StorespreselectedIssueId(integer)publications: Uses existingissueIdfield for scheduling
| Hook | Purpose |
|---|---|
Schema::get::issue |
Add custom fields to issue schema |
Templates::Editor::Issues::IssueData::AdditionalMetadata |
Extend issue form |
issueform::readuservars |
Register custom form variables |
issueform::execute |
Save custom issue settings |
Issue::edit |
Preserve custom data during edits |
Schema::get::submission |
Add preselectedIssueId to submission schema |
Form::config::after |
Add issue selector to submission wizard |
Submission::getSubmissionsListProps |
Include field in Vue state |
Template::SubmissionWizard::Section::Review::Editors |
Display in review section |
Submission::validateSubmit |
Process assignment on submission |
- Copy
locale/en/locale.potolocale/{locale_code}/locale.po - Translate the strings
- Submit a pull request
The plugin includes Cypress end-to-end tests. To run them:
npx cypress run --config-file plugins/generic/issuePreselection/cypress.jsonSee cypress/README.md for more details.
Enable error logging in config.inc.php:
[debug]
show_stacktrace = On
display_errors = OnThe plugin logs extensively with [IssuePreselection] prefix.
- Issues: GitHub Issues
- Documentation: Wiki
- OJS Forum: PKP Community Forum
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This plugin is licensed under the GNU General Public License v3.0. See LICENSE for details.