diff --git a/public/globals.js b/public/globals.js
index 8a1058495..19f32e7bb 100644
--- a/public/globals.js
+++ b/public/globals.js
@@ -230,6 +230,7 @@ window.pkp = {
'common.loading': 'Loading',
'common.me': 'Me',
'common.moreActions': 'More Actions',
+ 'common.months': 'months',
'common.name': 'Name',
'common.navigation.user': 'User Navigation',
'common.new': 'New',
@@ -243,6 +244,8 @@ window.pkp = {
'common.orderDown': 'Decrease position of {$itemTitle}',
'common.orderUp': 'Increase position of {$itemTitle}',
'common.overdue': 'Overdue',
+ 'common.oneWeek': '1 week',
+ 'common.oneMonth': '1 month',
'common.pageNumber': 'Page {$pageNumber}',
'common.pagination.goToPage': 'Go to {$page}',
'common.pagination.label': 'View additional pages',
@@ -287,6 +290,7 @@ window.pkp = {
'common.inProgress': 'In Progress',
'common.closed': 'Closed',
'common.warning': 'Warning',
+ 'common.weeks': 'weeks',
'common.confirmUnsavedChanges':
'You have unsaved changes. Are you sure you want to cancel?',
'context.context': 'Journal',
@@ -415,7 +419,7 @@ window.pkp = {
'discussion.form.detailsDescription':
'Use this space to share essential information.',
'discussion.form.detailsNameDescription':
- 'Please enter the name for this task and discussion.',
+ 'Please enter the name for the task and discussion.',
'discussion.form.detailsParticipantsDescription':
'You have the option to assign participants or allocate it solely to yourself.',
'discussion.form.discussionDescription':
@@ -539,6 +543,7 @@ window.pkp = {
'Are you sure you want to change to {$localeName} to compose this email? Any changes you have made to the subject and body of the email will be lost.',
'email.email': 'Email',
'email.subject': 'Subject',
+ 'email.body': 'Body',
'email.to': 'To',
'fileManager.copyeditedFiles': 'Copyedited Files',
'fileManager.copyeditedFilesDescription':
@@ -823,6 +828,10 @@ window.pkp = {
'reviewerManager.reviewerStatus': 'Reviewer status',
'search.searchResults': 'Search Results',
semicolon: '{$label}:',
+ 'stage.submission': 'Submission Stage',
+ 'stage.review': 'Review Stage',
+ 'stage.copyediting': 'Copyediting Stage',
+ 'stage.production': 'Production Stage',
'stageParticipants.notify.message': 'Message',
'stats.context.downloadReport.description':
'Download a CSV/Excel spreadsheet with usage statistics for this journal matching the following parameters.',
@@ -925,7 +934,26 @@ window.pkp = {
'taskTemplate.apply': 'Apply Template',
'taskTemplate.applyConfirmation':
"Applying this template will replace data in related fields on the form. These changes won't be saved unless you choose to save. Continue?",
-
+ 'taskTemplates.title': 'Tasks and Discussions Templates',
+ 'taskTemplates.description':
+ 'Use this space to create templates for tasks and discussions. These templates automatically fill in the task name, due date, description, and roles, giving you a head start.',
+ 'taskTemplates.templateName': 'Task and discussion template name',
+ 'taskTemplates.templateAutoAdd':
+ 'Automatically add this task and discussion when a submission reaches a specific stage',
+ 'taskTemplates.templateAutoAddInStage':
+ 'Automatically add this task and/or discussion when a submission reaches the stage',
+ 'taskTemplates.add': 'Add template',
+ 'taskTemplates.addInStage': 'Add Task and Discussion Template in {$stage}',
+ 'taskTemplates.confirmAutoAdd': 'Confirm Automatic Addition',
+ 'taskTemplates.confirmAutoAddEnable':
+ 'Are you sure you want this task/discussion template to be automatically added when a submission reaches the {$stage}?',
+ 'taskTemplates.confirmAutoAddDisable':
+ 'Are you sure you want to stop automatically adding this task/discussion template when a submission reaches the {$stage}?',
+ 'taskTemplates.confirmEmailTemplate':
+ 'Applying this email template will replace the discussion text in the form. The changes will not be saved unless you choose to save. Do you want to continue?',
+ 'taskTemplates.edit': 'Edit Task and Discussion Template',
+ 'taskTemplates.dueDateFromCreationDate':
+ '{$dueDate} from the creation date',
'task.closeThisTask': 'Close this Task',
'task.startedBy': 'Task started by',
'task.startThisTask': 'Start this task',
diff --git a/src/components/Container/SettingsPage.vue b/src/components/Container/SettingsPage.vue
index d8b9c3c44..ef4f2c8b6 100644
--- a/src/components/Container/SettingsPage.vue
+++ b/src/components/Container/SettingsPage.vue
@@ -9,6 +9,7 @@ import DateTimeForm from '@/components/Form/context/DateTimeForm.vue';
import DoiSetupSettingsForm from '@/components/Form/context/DoiSetupSettingsForm.vue';
import DoiRegistrationSettingsForm from '@/components/Form/context/DoiRegistrationSettingsForm.vue';
import ReviewerRecommendationManager from '@/managers/ReviewerRecommendationManager/ReviewerRecommendationManager.vue';
+import TaskTemplateManager from '@/managers/TaskTemplateManager/TaskTemplateManager.vue';
export default {
name: 'SettingsPage',
@@ -22,6 +23,7 @@ export default {
DoiSetupSettingsForm,
DoiRegistrationSettingsForm,
ReviewerRecommendationManager,
+ TaskTemplateManager,
},
extends: Page,
data() {
diff --git a/src/components/Table/TableColGroup.vue b/src/components/Table/TableColGroup.vue
index a6e7067f8..20bc42e1d 100644
--- a/src/components/Table/TableColGroup.vue
+++ b/src/components/Table/TableColGroup.vue
@@ -3,9 +3,15 @@
:id="groupId"
:colspan="tableContext.columnsCount.value"
scope="colgroup"
- class="whitespace-nowrap border-b border-light bg-tertiary px-2 py-4 text-start text-lg-medium text-secondary first:border-s first:ps-3 last:border-e last:pe-3"
+ class="whitespace-nowrap border-b border-light bg-tertiary p-2 text-start text-lg-medium text-secondary first:border-s first:ps-3 last:border-e last:pe-3"
>
-
+
If you find the submission to be relevant for {$journalName}, please forward the submission to the review stage by selecting "Send to Review" and then assign reviewers by clicking "Add Reviewer".
If the submission is not appropriate for this journal, please decline the submission.
Thank you in advance.
Kind regards,
{$journalSignature}',
+ fr_CA:
+ '
{$recipientName},
La soumission suivante vous a été assignée pour le suivi du processus éditorial.
Si vous jugez la soumission pertinente pour la revue {$journalName}, veuillez la transmettre à l\'étape d\'évaluation en sélectionnant "Envoyer en évaluation" et en désignant des évaluateur.trice.s en cliquant sur « Ajouter un.e évaluateur.trice ».
Si la soumission n\'est pas appropriée pour cette revue, veuillez la décliner.
Je vous remercie d\'avance.
Cordialement,
{$journalSignature}',
+ },
+ subject: {
+ en: 'You have been assigned as an editor on a submission to {$journalName}',
+ fr_CA:
+ "Vous avez été assigné.e en tant que rédacteur.trice d'une soumission de la revue {$journalName}",
+ },
+ },
+ ),
+ ],
+ dataDescriptions,
+ },
+ DISCUSSION_NOTIFICATION_REVIEW: {
+ emailTemplates: [
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 3,
+ key: 'DISCUSSION_NOTIFICATION_REVIEW',
+ name: {
+ en: 'Discussion (Review)',
+ fr_CA: 'Discussion (évaluation)',
+ },
+ body: {
+ en: 'Please enter your message.',
+ fr_CA: 'Prière de saisir votre message.',
+ },
+ subject: {
+ en: 'A message regarding {$journalName}',
+ fr_CA: 'Un message à propos de la revue {$journalName}',
+ },
+ },
+ ),
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 4,
+ key: 'EDITOR_ASSIGN_REVIEW',
+ name: {
+ en: 'Assign Editor',
+ fr_CA: 'Assigner un-e rédacteur-trice',
+ },
+ body: {
+ en: '
Dear {$recipientName},
The following submission has been assigned to you to see through the peer review process.
Veuillez vous connecter pour voir la soumission et désigner des évaluateur.trice.s qualifié.es. Vous pouvez désigner un.e évaluateur.trice en cliquant sur « Ajouter un.e évaluateur.trice ».
Je vous remercie d\'avance.
Cordialement,
{$signature}',
+ },
+ subject: {
+ en: 'You have been assigned as an editor on a submission to {$journalName}',
+ fr_CA:
+ "Vous avez été assigné.e en tant que rédacteur.trice d'une soumission de la revue {$journalName}",
+ },
+ },
+ ),
+ ],
+ dataDescriptions,
+ },
+ DISCUSSION_NOTIFICATION_COPYEDITING: {
+ emailTemplates: [
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 5,
+ key: 'DISCUSSION_NOTIFICATION_COPYEDITING',
+ name: {
+ en: 'Discussion (Copyediting)',
+ fr_CA: 'Discussion (révision)',
+ },
+ body: {
+ en: 'Please enter your message.',
+ fr_CA: 'Prière de saisir votre message.',
+ },
+ subject: {
+ en: 'A message regarding {$journalName}',
+ fr_CA: 'Un message à propos de la revue {$journalName}',
+ },
+ },
+ ),
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 6,
+ key: 'COPYEDIT_REQUEST',
+ name: {
+ en: 'Request Copyedit',
+ fr_CA: 'Demande de révision',
+ },
+ body: {
+ en: '
Open any files available under Draft Files and edit the files. Use the Copyediting Discussions area if you need to contact the editor(s) or author(s).
Save the copyedited file(s) and upload them to the Copyedited panel.
Use the Copyediting Discussions to notify the editor(s) that all files have been prepared, and that the Production process may begin.
If you are unable to undertake this work at this time or have any questions, please contact me. Thank you for your contribution to {$journalName}.
Kind regards,
{$signature}',
+ fr_CA:
+ "{$recipientName}, \n \nJ'aimerais que vous effectuiez la révision du manuscrit intitulé « {$submissionTitle} » pour la revue {$journalName} à l'aide des étapes suivantes. \n1. Cliquer sur l'URL de la soumission ci-dessous. \n2. Ouvrir le(s) fichier(s) disponible(s) sous Fichiers des ébauches finales et effectuer votre révision, tout en ajoutant des discussions sur la révision, le cas échéant. \n3. Enregistrer le(s) fichier(s) révisé(s) et le(s) téléverser dans la section Version(s) révisée(s). \n4. Informer le,la rédacteur-trice que tous les fichiers ont été révisés et que l'étape de production peut débuter. \n \nURL de la revue {$journalName} : {$journalUrl} \nURL de la soumission : {$submissionUrl} \nNom d'utilisateur-trice : {$recipientUsername}",
+ },
+ subject: {
+ en: 'Submission {$submissionId} is ready to be copyedited for {$contextAcronym}',
+ fr_CA: "Demande de révision d'une soumission",
+ },
+ },
+ ),
+ ],
+ dataDescriptions,
+ },
+ DISCUSSION_NOTIFICATION_PRODUCTION: {
+ emailTemplates: [
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 7,
+ key: 'DISCUSSION_NOTIFICATION_PRODUCTION',
+ name: {
+ en: 'Discussion (Production)',
+ fr_CA: 'Discussion (production)',
+ },
+ body: {
+ en: 'Please enter your message.',
+ fr_CA: 'Prière de saisir votre message.',
+ },
+ subject: {
+ en: 'A message regarding {$journalName}',
+ fr_CA: 'Un message à propos de la revue {$journalName}',
+ },
+ },
+ ),
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 8,
+ key: 'EDITOR_ASSIGN_PRODUCTION',
+ name: {
+ en: 'Assign Editor',
+ fr_CA: 'Assigner un-e rédacteur-trice',
+ },
+ body: {
+ en: '
Dear {$recipientName},
The following submission has been assigned to you to see through the production stage.
Please login to view the submission. Once production-ready files are available, upload them under the Publication > Galleys section. Then schedule the work for publication by clicking the Schedule for Publication button.
Thank you in advance.
Kind regards,
{$signature}',
+ fr_CA:
+ '
{$recipientName},
La soumission suivante vous a été assignée pour suivre le processus de production.
Veuillez vous connecter pour afficher la soumission. Une fois les fichiers prêts pour la production disponibles, les téléverser sous la section Publication > Épreuves. Ensuite, planifier la publication en cliquant sur le bouton Planifier la publication.
Merci d\'avance.
Cordialement,
{$signature}',
+ },
+ subject: {
+ en: 'You have been assigned as an editor on a submission to {$journalName}',
+ fr_CA:
+ "Vous avez été assigné.e en tant que rédacteur.trice d'une soumission de la revue {$journalName}",
+ },
+ },
+ ),
+ deepMerge(
+ {...CommonDefaults},
+ {
+ id: 9,
+ key: 'LAYOUT_COMPLETE',
+ name: {
+ en: 'Galleys Complete',
+ fr_CA: 'Épreuves complétées',
+ },
+ body: {
+ en: '
Dear {$recipientName},
Galleys have now been prepared for the following submission and are ready for final review.
Download the Production Ready files and use them to create the galleys according to the journal\'s standards.
Upload the galleys to the Publication section of the submission.
Use the Production Discussions to notify the editor that the galleys are ready.
If you are unable to undertake this work at this time or have any questions, please contact me. Thank you for your contribution to this journal.
Kind regards,
{$signature}',
+ fr_CA:
+ "
Bonjour {$recipientName},
J'aimerais que vous prépariez les épreuves du manuscrit intitulé « {$submissionTitle} » pour la revue {$journalName} à l'aide des étapes suivantes.
\n
Cliquer sur l'URL de la soumission ci-dessous.
Se connecter au site Web de la revue et utiliser les fichiers disponibles sous Fichiers prêts pour la production pour créer les épreuves en fonction des normes de la revue.
Téléverser les épreuves dans la section Épreuves.
Informer le-la rédacteur-trice, via une discussion sur la production, que les épreuves ont été téléversées et qu'elles sont prêtes.
URL de la revue {$journalName} : {$journalUrl}
URL du manuscrit : {$submissionUrl}
Nom d'utilisateur-trice : {$recipientUsername}
Si vous ne pouvez pas effectuer ce travail pour le moment ou si vous avez des questions, veuillez communiquer avec moi. Je vous remercie de votre collaboration.
{$signature}",
+ },
+ subject: {
+ en: 'Submission {$submissionId} is ready for production at {$contextAcronym}',
+ fr_CA:
+ 'La soumission {$submissionId} est prête pour production à la revue {$contextAcronym}',
+ },
+ },
+ ),
+ ],
+ dataDescriptions,
+ },
+};
diff --git a/src/mockFactories/taskDiscussionTemplates.js b/src/mockFactories/taskDiscussionTemplates.js
index 9552358a3..1802bf7ce 100644
--- a/src/mockFactories/taskDiscussionTemplates.js
+++ b/src/mockFactories/taskDiscussionTemplates.js
@@ -37,10 +37,10 @@ const CommonDefaults = {
`,
type: 'Task',
- taskDetails: {
- participantRoles: [16, 1],
- dueDate: 'P1W',
- },
+ participantRoles: [16, 1],
+ dueDate: 'P1W',
+ stageId: 'Submission',
+ autoAdd: true,
};
export function getTemplate(overrides = {}) {
@@ -72,6 +72,8 @@ export const TemplatesDataMock = [
Please share your thoughts by July 15. Any concerns about authorship should be raised before we finalize the submission.
`,
type: 'Discussion',
+ stageId: 'Submission',
+ participantRoles: [65536],
},
{
id: 3,
@@ -95,9 +97,7 @@ export const TemplatesDataMock = [
Ensure all documents are consistent and up to date. Reach out to the ethics coordinator if clarification is needed.
`,
type: 'Task',
- taskDetails: {
- participantRoles: [65536],
- dueDate: 'P3M',
- },
+ participantRoles: [65536],
+ dueDate: 'P3M',
},
];