From fc19987bef1608d615e7a09d9dba430f0e248f27 Mon Sep 17 00:00:00 2001
From: jyhein <124268211+jyhein@users.noreply.github.com>
Date: Wed, 25 Sep 2024 14:50:54 +0300
Subject: [PATCH 1/2] Change submission language
---
.../ChangeSubmissionLanguage.cy.js | 75 ++++++++
registry/uiLocaleKeysBackend.json | 160 ++++++++++++++----
templates/authorDashboard/authorDashboard.tpl | 8 +
templates/workflow/workflow.tpl | 23 +++
4 files changed, 231 insertions(+), 35 deletions(-)
create mode 100644 cypress/tests/integration/ChangeSubmissionLanguage.cy.js
diff --git a/cypress/tests/integration/ChangeSubmissionLanguage.cy.js b/cypress/tests/integration/ChangeSubmissionLanguage.cy.js
new file mode 100644
index 00000000000..02b54e88d18
--- /dev/null
+++ b/cypress/tests/integration/ChangeSubmissionLanguage.cy.js
@@ -0,0 +1,75 @@
+/**
+ * @file cypress/tests/integration/ChangeSubmissionLanguage.cy.js
+ *
+ * Copyright (c) 2024 Simon Fraser University
+ * Copyright (c) 2024 John Willinsky
+ * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
+ */
+
+describe('Change Submission Language', function() {
+ let user;
+ let author;
+ let password;
+ let originalLanguage;
+ let originalLocaleKey;
+ let newLanguage;
+ let newLocaleKey;
+ let title;
+ let abstract;
+
+ before(function() {
+ user = 'dbarnes';
+ password = user + user;
+ author = {
+ familyName: 'Karbasizaed',
+ }
+ originalLanguage = 'English';
+ originalLocaleKey = 'en';
+ newLanguage = 'French (Canada)';
+ newLocaleKey = 'fr_CA';
+ title = {
+ [newLocaleKey]: "Résistance aux antimicrobiens et aux métaux lourds et profil plasmidique des coliformes isolés d'infections nosocomiales dans un hôpital d'Ispahan, Iran",
+ };
+ abstract = {
+ [newLocaleKey]: "Les profils de résistance aux antimicrobiens et aux métaux lourds ainsi que les profils plasmidiques des coliformes (Enterobacteriacea) isolés d'infections nosocomiales et de matières fécales humaines saines ont été comparés. Quinze des 25 isolats provenant d'infections nosocomiales ont été identifiés comme étant des Escherichia coli, et les autres comme étant des Kelebsiella pneumoniae. Soixante-douze pour cent des souches isolées d'infections nosocomiales possèdent une résistance multiple aux antibiotiques, contre 45 % des souches provenant de matières fécales humaines saines. La différence entre les valeurs de concentration minimale inhibitrice (CMI) des souches provenant de cas cliniques et de matières fécales pour quatre métaux lourds (Hg, Cu, Pb, Cd) n'était pas significative. Cependant, la plupart des souches isolées à l'hôpital étaient plus tolérantes aux métaux lourds que celles provenant de personnes en bonne santé. Il n'y avait pas de relation cohérente entre le groupe de profil plasmidique et le profil de résistance aux antimicrobiens, bien qu'un plasmide conjugatif (>56,4 kb) codant pour la résistance aux métaux lourds et aux antibiotiques ait été récupéré chez huit des souches isolées d'infections nosocomiales. Les résultats indiquent que les coliformes multirésistants sont une cause potentielle d'infection nosocomiale dans cette région.",
+ };
+ });
+
+ it('Try to change submission language after publication', function() {
+ cy.login(user, password, 'publicknowledge');
+ cy.get('button[id="archive-button"]').click();
+ cy.contains('View ' + author.familyName).click({force: true});
+ cy.get(`.pkpPublication__changeSubmissionLanguage > button`).should('not.exist');
+ });
+
+ it('Change submission language', function() {
+ cy.login(user, password, 'publicknowledge');
+ cy.get('button[id="archive-button"]').click();
+ cy.contains('View ' + author.familyName).click({force: true});
+ // Unpublish
+ cy.get('button[id="publication-button"]').click();
+ cy.get('#publication button:contains("Unpublish")').click();
+ cy.get('#headlessui-dialog-panel-5 button:contains("Unpublish")').click();
+ // Change language
+ cy.get(`.pkpPublication__changeSubmissionLanguage > button`).should('be.enabled').click();
+ cy.get('#changeSubmissionLanguage').find(`input[value="${newLocaleKey}"]`).click();
+ cy.setTinyMceContent('changeSubmissionLanguageMetadata-title-control', title[newLocaleKey]);
+ cy.setTinyMceContent('changeSubmissionLanguageMetadata-abstract-control', abstract[newLocaleKey]);
+ cy.get('#changeSubmissionLanguage button[label="Confirm"]').click();
+ cy.get(`.pkpPublication__changeSubmissionLanguage > span`).contains(`Current Submission Language: ${newLanguage}`);
+ });
+
+ it('Change submission language back to the original', function() {
+ cy.findSubmissionAsEditor(user, password, author.familyName);
+ // Change language
+ cy.get('button[id="publication-button"]').click();
+ cy.get(`.pkpPublication__changeSubmissionLanguage > button`).click();
+ cy.get('#changeSubmissionLanguage').find(`input[value="${originalLocaleKey}"]`).click();
+ cy.get('#changeSubmissionLanguage button[label="Confirm"]').click();
+ // Publish
+ cy.get(`.pkpPublication__changeSubmissionLanguage > span`).contains(`Current Submission Language: ${originalLanguage}`);
+ cy.get('button[id="publication-button"]').click();
+ cy.get('div#publication button:contains("Schedule For Publication")').click();
+ cy.get('div.pkpWorkflow__publishModal button:contains("Publish")').click();
+ });
+});
diff --git a/registry/uiLocaleKeysBackend.json b/registry/uiLocaleKeysBackend.json
index 941a49b2902..9a9d221cd98 100644
--- a/registry/uiLocaleKeysBackend.json
+++ b/registry/uiLocaleKeysBackend.json
@@ -1,38 +1,60 @@
[
+ "acceptInvitation.modal.button",
+ "acceptInvitation.modal.message",
+ "acceptInvitation.modal.title",
+ "acceptInvitation.passwordField.description",
+ "acceptInvitation.privacyStatement.btn",
+ "acceptInvitation.privacyStatement.label",
+ "acceptInvitation.review.accountDetails",
+ "acceptInvitation.review.userDetails",
+ "acceptInvitation.skipVerifyOrcid",
+ "acceptInvitation.usernameField.description",
+ "acceptInvitation.verifyOrcid",
+ "admin.jobs.failed.action.redispatch",
+ "admin.jobs.failed.action.redispatch.all",
"article.article",
+ "article.metadata",
"author.users.contributor.principalContact",
"author.users.contributor.setPrincipalContact",
- "common.abstract",
"common.addCCBCC",
+ "common.assign",
"common.attachFiles",
"common.attachedFiles",
+ "common.back",
"common.cancel",
"common.clearSearch",
"common.close",
"common.commaListSeparator",
+ "common.confirmDelete",
"common.content",
+ "common.dateUploaded",
"common.default",
"common.delete",
"common.description",
"common.deselect",
+ "common.details",
"common.download",
"common.edit",
"common.editItem",
"common.emailTemplates",
"common.error",
+ "common.fileName",
"common.filter",
"common.filterAdd",
"common.filterRemove",
"common.filtersClear",
"common.findTemplate",
"common.geographic",
+ "common.id",
"common.insert",
"common.insertContent",
"common.insertContentSearch",
- "common.keywords",
+ "common.language",
"common.lastActivity",
"common.loaded",
"common.loading",
+ "common.moreActions",
+ "common.name",
"common.no",
"common.noItemsFound",
"common.none",
@@ -46,6 +68,7 @@
"common.pagination.label",
"common.pagination.next",
"common.pagination.previous",
+ "common.payments",
"common.publications",
"common.remove",
"common.removeItem",
@@ -62,7 +85,6 @@
"common.showingSteps",
"common.showingXofX",
"common.status",
- "common.subtitle",
"common.switchTo",
"common.switchToNamedItem",
"common.type",
@@ -82,17 +104,20 @@
"contributor.listPanel.preview.full",
"contributor.listPanel.preview.publicationLists",
"dashboard.acceptOrDeclineRequestDate",
- "dashboard.action",
"dashboard.applyFilters",
"dashboard.assignEditor",
"dashboard.assignReviewers",
"dashboard.clearFilters",
"dashboard.completeReviewByDate",
"dashboard.dashboards",
- "dashboard.deadlineForComplitingReviewHasPassed",
+ "dashboard.deadlineForCompletingReviewHasPassed",
"dashboard.deadlineForRespondingAcceptOrDecline",
+ "dashboard.declinedDuringStage",
"dashboard.mySubmissions",
"dashboard.newReviewRoundToBeCreated",
+ "dashboard.recommendOnly.pendingRecommendations",
+ "dashboard.recommendOnly.recommendationsCompleted",
+ "dashboard.recommendOnly.recommendationsReady",
"dashboard.reviewAssignment.action.cancelReviewer",
"dashboard.reviewAssignment.action.editDueDate",
"dashboard.reviewAssignment.action.resendReviewRequest",
@@ -124,39 +149,31 @@
"dashboard.revisionRequested",
"dashboard.revisionRequestedFromAuthor",
"dashboard.revisionsRequestedFromAuthorNextRound",
- "dashboard.revisionsSubmittedByAuthor",
+ "dashboard.revisionsSubmitted",
"dashboard.stage.copyediting",
- "dashboard.stage.deskReview",
"dashboard.stage.production",
"dashboard.stage.published",
+ "dashboard.stage.review",
"dashboard.stage.reviewWithRound",
"dashboard.stage.scheduledForPublication",
+ "dashboard.stage.submission",
"dashboard.startNewSubmission",
"dashboard.submitRevisions",
"dashboard.summary.acceptAndSkipReview",
- "dashboard.summary.acceptReview",
"dashboard.summary.acceptSubmission",
- "dashboard.summary.accessReviewForm",
"dashboard.summary.assignToIssue",
+ "dashboard.summary.backToCopyediting",
+ "dashboard.summary.cancelCopyEditing",
"dashboard.summary.cancelReviewRound",
"dashboard.summary.copyeditedFiles",
- "dashboard.summary.daysInCopyediting",
- "dashboard.summary.daysInProduction",
- "dashboard.summary.daysInReview",
- "dashboard.summary.daysInSubmission",
- "dashboard.summary.daysSinceSubmission",
- "dashboard.summary.decline",
+ "dashboard.summary.copyeditedFilesDescription",
"dashboard.summary.declineSubmission",
"dashboard.summary.deskReviewFiles",
"dashboard.summary.deskReviewFilesDescription",
"dashboard.summary.draftFiles",
"dashboard.summary.draftFilesDescription",
- "dashboard.summary.editorsAssigned",
"dashboard.summary.filesForReview",
- "dashboard.summary.filesForReviewDescription",
- "dashboard.summary.galleys",
"dashboard.summary.issueNo",
- "dashboard.summary.journalName",
"dashboard.summary.notAssigned",
"dashboard.summary.preview",
"dashboard.summary.productionReadyFiles",
@@ -165,34 +182,53 @@
"dashboard.summary.reviewer",
"dashboard.summary.reviewerStatus",
"dashboard.summary.reviewers",
- "dashboard.summary.revisionsSubmitted",
- "dashboard.summary.revisionsSubmittedDescription",
- "dashboard.summary.scheduleForProduction",
+ "dashboard.summary.revisionsUploaded",
+ "dashboard.summary.revisionsUploadedDescription",
"dashboard.summary.sendSubmissionForReview",
"dashboard.summary.sendToProduction",
- "dashboard.summary.submissionLanguage",
- "dashboard.summary.submittedOn",
- "dashboard.summary.unschedule",
- "dashboard.summary.uploadFile",
- "dashboard.summary.uploadRevisions",
- "dashboard.summary.viewActivityLog",
- "dashboard.summary.viewSubmissionInDetail",
- "dashboard.viewSummary",
"doi.manager.versions.countStatement",
"doi.manager.versions.modalTitle",
"doi.manager.versions.view",
+ "editor.activityLog",
"editor.review.cancelReviewer",
+ "editor.review.emailReviewer",
+ "editor.review.notInitiated",
+ "editor.review.readReview",
+ "editor.review.reinstateReviewer",
+ "editor.review.reminder",
"editor.review.resendRequestReviewer",
+ "editor.review.revertDecision",
"editor.review.reviewDetails",
+ "editor.review.sendReminder",
+ "editor.review.thankReviewer",
"editor.review.unassignReviewer",
+ "editor.review.unconsiderReview",
+ "editor.review.unconsiderReviewText",
+ "editor.submission.addReviewer",
"editor.submission.addStageParticipant",
+ "editor.submission.createNewRound",
"editor.submission.decision.requestRevisions",
+ "editor.submission.editStageParticipant",
+ "editor.submission.recommend.accept",
+ "editor.submission.recommend.decline",
+ "editor.submission.recommend.revisions",
+ "editor.submission.recommendation",
+ "editor.submission.removeStageParticipant",
+ "editor.submission.removeStageParticipant.description",
+ "editor.submission.review.currentFiles",
"editor.submission.revisions",
"editor.submission.schedulePublication",
"editor.submission.search",
+ "editor.submission.stageParticipants",
+ "editor.submission.uploadSelectFiles",
+ "editor.submission.workflowDecision.changeDecision",
+ "editor.submission.workflowDecision.submission.production",
+ "editor.submission.workflowDecision.submission.published",
+ "editor.submission.workflowDecision.submission.reviewRound",
+ "editor.submission.workflowDecision.submission.underReview",
"editor.submissionArchive.confirmDelete",
+ "editor.submissionLibrary",
"editor.submissionReview.editReview",
- "editor.submissionReview.uploadAttachment",
"editor.submissionReview.uploadFile",
"email.bcc",
"email.cc",
@@ -209,16 +245,25 @@
"form.multilingualProgress",
"form.saved",
"grid.action.addContributor",
+ "grid.action.addGalley",
+ "grid.action.delete",
"grid.action.deleteContributor",
"grid.action.deleteContributor.confirmationMessage",
"grid.action.edit",
+ "grid.action.editFile",
+ "grid.action.logInAs",
+ "grid.action.moreInformation",
+ "grid.action.order",
"grid.action.saveOrdering",
"grid.action.sort",
+ "grid.columns.actions",
+ "grid.libraryFiles.submission.title",
+ "grid.noItems",
+ "grid.user.confirmLogInAs",
"help.help",
+ "informationCenter.informationCenter",
"invitation.orcid.acceptInvitation.message",
- "invitation.orcid.message",
"invitation.role.addRole.button",
- "invitation.role.dateEnd",
"invitation.role.dateStart",
"invitation.role.masthead",
"invitation.role.removeRole.button",
@@ -288,8 +333,10 @@
"manager.mailables.addTemplates",
"manager.mailables.editTemplate",
"manager.mailables.templates",
- "metadata.property.displayName.doi",
+ "manager.publication.reviewStage",
+ "manager.workflow",
"navigation.backTo",
+ "notification.type.roundStatusTitle",
"orcid.field.authorEmailModal.message",
"orcid.field.authorEmailModal.title",
"orcid.field.deleteOrcidModal.message",
@@ -297,18 +344,29 @@
"orcid.field.unverified.shouldRequest",
"orcid.field.verification.request",
"orcid.field.verification.requested",
+ "orcid.field.verification.resendRequest",
"publication.contributors",
+ "publication.createVersion",
+ "publication.editDisabled",
+ "publication.jats",
"publication.jats.autoCreatedMessage",
"publication.jats.confirmDeleteFileButton",
"publication.jats.confirmDeleteFileMessage",
"publication.jats.confirmDeleteFileTitle",
"publication.jats.lastModified",
+ "publication.publicationLicense",
"publication.selectIssue",
"publication.status.published",
+ "publication.status.scheduled",
"publication.status.unpublished",
+ "publication.status.unscheduled",
+ "publication.titleAbstract",
+ "publication.unpublish",
+ "publication.unpublish.confirm",
"publication.unschedule",
"publication.unschedule.confirm",
"publication.version",
+ "publication.version.confirm",
"reviewer.article.decision.accept",
"reviewer.article.decision.decline",
"reviewer.article.decision.pendingRevisions",
@@ -317,7 +375,6 @@
"reviewer.article.decision.seeComments",
"reviewer.article.recommendation",
"reviewer.submission.acceptedOn",
- "reviewer.submission.declineReview",
"reviewer.submission.responseDueDate",
"reviewer.submission.reviewDueDate",
"reviewer.submission.reviewRequestDate",
@@ -344,6 +401,7 @@
"reviewer.submission.reviewRound.reviewNotCompleted",
"reviewer.submission.submittedOn",
"search.searchResults",
+ "semicolon",
"stageParticipants.notify.message",
"stats.context.downloadReport.description",
"stats.context.downloadReport.downloadContext",
@@ -365,9 +423,19 @@
"stats.publications.downloadReport.downloadSubmissions.description",
"stats.timeline",
"stats.timeline.downloadReport.downloadTimeline",
+ "submission.changeFile",
+ "submission.citations",
"submission.contributors",
"submission.files",
+ "submission.files.downloadAll",
+ "submission.history",
+ "submission.identifiers",
+ "submission.layout.galleys",
+ "submission.layout.newGalley",
"submission.list.assignEditor",
+ "submission.list.changeSubmissionLanguage.metadataDescription.abstract",
+ "submission.list.changeSubmissionLanguage.metadataDescription.title",
+ "submission.list.changeSubmissionLanguage.title",
"submission.list.copyeditsSubmitted",
"submission.list.currentStage",
"submission.list.discussions",
@@ -383,15 +451,37 @@
"submission.list.reviewerWorkflowLink",
"submission.list.reviewsCompleted",
"submission.list.revisionsSubmitted",
+ "submission.publication",
+ "submission.review",
+ "submission.stageParticipants.notify",
"submission.submit.newSubmissionSingle",
+ "submission.submit.uploadSubmissionFile",
"submission.upload.percentComplete",
+ "submission.upload.productionReady",
+ "submission.upload.proof",
+ "submission.versions",
"submission.wizard.changeSubmission",
"submissions.declined",
"submissions.incomplete",
"todo",
+ "user.affiliation",
"user.email",
+ "user.emailAddress",
+ "user.familyName",
+ "user.givenName",
+ "user.gossip",
"user.orcid",
"user.password",
"user.username",
+ "userInvitation.emailField.description",
+ "userInvitation.modal.button",
+ "userInvitation.modal.message",
+ "userInvitation.modal.title",
+ "userInvitation.orcidField.description",
+ "userInvitation.roleTable.endDate",
+ "userInvitation.roleTable.journalMasthead",
+ "userInvitation.roleTable.role",
+ "userInvitation.roleTable.startDate",
+ "userInvitation.usernameField.description",
"validator.required"
]
diff --git a/templates/authorDashboard/authorDashboard.tpl b/templates/authorDashboard/authorDashboard.tpl
index 331fe8d8006..b6fa81767bb 100644
--- a/templates/authorDashboard/authorDashboard.tpl
+++ b/templates/authorDashboard/authorDashboard.tpl
@@ -57,6 +57,11 @@
);
{rdelim});
+