Skip to content

Commit d4668b7

Browse files
pkp/pkp-lib#10674_2 Progress on editorial activity, for reviewers
1 parent b5532e7 commit d4668b7

11 files changed

+3381
-88
lines changed

Diff for: public/globals.js

+56-31
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,6 @@ window.pkp = {
147147
'acceptInvitation.verifyOrcid': 'Verify ORCID iD',
148148
'admin.jobs.failed.action.redispatch': 'Try Again',
149149
'admin.jobs.failed.action.redispatch.all': 'Requeue All Failed Jobs',
150-
'dashboard.submissions.incomplete.bulkDelete.body':
151-
'##dashboard.submissions.incomplete.bulkDelete.body##',
152-
'dashboard.submissions.incomplete.bulkDelete.column.description':
153-
'##dashboard.submissions.incomplete.bulkDelete.column.description##',
154-
'dashboard.submissions.incomplete.bulkDelete.confirm':
155-
'##dashboard.submissions.incomplete.bulkDelete.confirm##',
156150
'admin.version': 'Version',
157151
'article.article': 'Article',
158152
'article.metadata': 'Metadata',
@@ -190,7 +184,6 @@ window.pkp = {
190184
'common.filtersClear': 'Clear Filters',
191185
'common.findTemplate': 'Find Template',
192186
'common.geographic': 'Geographic',
193-
'common.id': 'ID',
194187
'common.insert': 'Insert',
195188
'common.insertContent': 'Insert Content',
196189
'common.insertContentSearch': 'Find content to insert',
@@ -204,6 +197,7 @@ window.pkp = {
204197
'common.noItemsFound': 'No items found.',
205198
'common.none': 'None',
206199
'common.numberedMore': '{$number} more',
200+
'common.numero': 'No',
207201
'common.ok': 'OK',
208202
'common.order': 'Order',
209203
'common.orderDown': 'Decrease position of {$itemTitle}',
@@ -217,6 +211,7 @@ window.pkp = {
217211
'common.payments': 'Payments',
218212
'common.preview': 'Preview',
219213
'common.publications': 'Articles',
214+
'common.refreshingData': 'Refreshing data',
220215
'common.remove': 'Remove',
221216
'common.removeItem': 'Remove {$item}',
222217
'common.required': 'Required',
@@ -253,33 +248,42 @@ window.pkp = {
253248
'contributor.listPanel.preview.format': 'Format',
254249
'contributor.listPanel.preview.full': 'Full',
255250
'contributor.listPanel.preview.publicationLists': 'Publication Lists',
256-
'dashboard.acceptOrDeclineRequestDate':
257-
'Please accept or decline this request {$date}',
251+
'dashboard.actions.finishReview': 'Finish review',
252+
'dashboard.actions.respondToRequest': 'Respond to request',
258253
'dashboard.applyFilters': 'Apply Filters',
259254
'dashboard.assignReviewers': 'Assign Reviewers',
260-
'dashboard.completeReviewByDate': 'Please complete this review by {$date}.',
261-
'dashboard.deadlineForCompletingReviewHasPassed':
262-
'Deadline for completing this review has passed. Please complete the review at the earliest.',
263-
'dashboard.deadlineForRespondingAcceptOrDecline':
264-
'Deadline for responding to this request has passed. Please accept or decline this request at the earliest.',
265-
'dashboard.declinedDuringStage': 'Declined during the {$stageName} stage',
255+
'dashboard.declinedDuringStage': 'Declined during the {$stageName} stage.',
266256
'dashboard.newReviewRoundToBeCreated': 'New review round to be created',
267257
'dashboard.recommendOnly.pendingRecommendations':
268258
'Recommending Editors are tasked to advise the next steps for this submission',
269259
'dashboard.recommendOnly.recommendationsCompleted':
270260
'All editorial recommendations have been received, and a decision is required.',
271261
'dashboard.recommendOnly.recommendationsReady':
272262
'An editorial recommendation has been received',
263+
'dashboard.reviewAssignment.acceptOrDeclineRequestDate':
264+
'Please accept or decline this request by {$date}',
273265
'dashboard.reviewAssignment.action.cancelReviewer': 'Cancel Reviewer',
274266
'dashboard.reviewAssignment.action.editDueDate': 'Edit Due Date',
275267
'dashboard.reviewAssignment.action.resendReviewRequest':
276268
'Resend Review Request',
269+
'dashboard.reviewAssignment.action.sendReviewToOrcid':
270+
'Send Review To ORCID',
271+
'dashboard.reviewAssignment.action.sendReviewToOrcid.confirm':
272+
"Send this review to the reviewer's ORCID?",
277273
'dashboard.reviewAssignment.action.unassignReviewer': 'Unassign',
278274
'dashboard.reviewAssignment.action.viewDetails': 'View details',
279275
'dashboard.reviewAssignment.action.viewRecommendation':
280276
'View recommendation',
281277
'dashboard.reviewAssignment.action.viewUnreadRecommendation':
282278
'View unread recommendation',
279+
'dashboard.reviewAssignment.completeReviewByDate':
280+
'Please complete this review by {$date}.',
281+
'dashboard.reviewAssignment.deadlineForCompletingReviewHasPassed':
282+
'Deadline for completing this review has passed. Please complete the review at the earliest.',
283+
'dashboard.reviewAssignment.deadlineForRespondingAcceptOrDecline':
284+
'Deadline for responding to this request has passed. Please accept or decline this request at the earliest.',
285+
'dashboard.reviewAssignment.declined': 'Request declined on {$date}',
286+
'dashboard.reviewAssignment.reviewSubmitted': 'Review submitted on {$date}',
283287
'dashboard.reviewAssignment.statusAccepted.description':
284288
'This reviewer has accepted the review request. Their review is due in <b>{$days} days on {$date}.</b>',
285289
'dashboard.reviewAssignment.statusAccepted.title':
@@ -323,6 +327,14 @@ window.pkp = {
323327
'dashboard.revisionRequestedFromAuthor': 'Revisions requested from author',
324328
'dashboard.revisionsRequestedFromAuthorNextRound':
325329
'Revisions requested from the author to be taken to a new review round',
330+
'dashboard.submissions.incomplete.bulkDelete.body':
331+
'Are you sure you want to delete the selected items? This action cannot be undone. Please confirm to proceed.',
332+
'dashboard.submissions.incomplete.bulkDelete.button':
333+
'Delete Incomplete Submissions',
334+
'dashboard.submissions.incomplete.bulkDelete.column.description':
335+
'Select incomplete submissions to be deleted.',
336+
'dashboard.submissions.incomplete.bulkDelete.confirm':
337+
'Confirm Delete of Incomplete Submissions',
326338
'dashboard.submitRevisions': 'Submit revisions',
327339
'doi.manager.versions.countStatement': 'There are {$count} versions.',
328340
'doi.manager.versions.modalTitle': 'DOIs for all versions',
@@ -413,17 +425,18 @@ window.pkp = {
413425
'fileManager.copyeditedFiles': 'Copyedited Files',
414426
'fileManager.copyeditedFilesDescription':
415427
'These are edited files that will be taken to the production stage',
416-
'fileManager.deskReviewFilesDescription':
417-
'##fileManager.deskReviewFilesDescription##',
418428
'fileManager.draftFilesDescription':
419429
'These are files from the review stage which are to be copyedited',
420-
'fileManager.filesForReview': 'Files for review',
430+
'fileManager.filesForReview': 'Files for Review',
431+
'fileManager.filesForReviewDescription':
432+
'These files will be sent to the reviewers to review',
421433
'fileManager.productionReadyFilesDescription':
422434
'These are the files that will be sent for publication',
435+
'fileManager.revisionsUploaded': 'Revisions Uploaded',
423436
'fileManager.revisionsUploadedDescription':
424437
'These files have been submitted by the author after revisions were requested',
425438
'fileManager.submissionFilesDescription':
426-
'These are the files that will be taken forward to the review stage in the workflow.',
439+
'Files uploaded at the time of submission',
427440
'form.dataHasChanged':
428441
'The data on this form has changed. Do you wish to continue without saving?',
429442
'form.errorA11y': 'Go to {$fieldLabel}: {$errorMessage}',
@@ -583,7 +596,6 @@ window.pkp = {
583596
'manager.statistics.counterR5Reports.usageNotPossible':
584597
'There are no COUNTER R5 usage statistics available yet.',
585598
'manager.workflow': 'Workflow',
586-
'navigation.backTo': '\u27f5 Back to {$page}',
587599
'navigation.dashboards': 'Dashboards',
588600
'navigation.mySubmissions': 'My Submissions',
589601
'navigation.reviewAssignments': 'Review Assignments',
@@ -714,8 +726,6 @@ window.pkp = {
714726
'submission.citations': 'References',
715727
'submission.contributors': 'List of Contributors',
716728
'submission.copyediting': 'Copyediting',
717-
'submission.dashboard.view.published': 'Published',
718-
'submission.dashboard.view.scheduled': 'Scheduled for publication',
719729
'submission.files': 'Files',
720730
'submission.files.downloadAll': 'Download All Files',
721731
'submission.finalDraft': 'Draft Files',
@@ -755,17 +765,23 @@ window.pkp = {
755765
'submission.recommendation': 'Recommendation: {$recommendation}',
756766
'submission.review': 'Review',
757767
'submission.stage.externalReviewWithRound': 'Review (Round {$round})',
768+
'submission.stage.internalReviewWithRound':
769+
'##submission.stage.internalReviewWithRound##',
770+
'submission.stage.published': 'Published',
771+
'submission.stage.scheduledForPublication': 'Scheduled For Publication',
758772
'submission.stageParticipants.notify': 'Notify',
759773
'submission.submit.newSubmissionSingle': 'New Submission',
760774
'submission.submit.submissionFiles': 'Submission Files',
761775
'submission.submit.uploadSubmissionFile': 'Upload Submission File',
762776
'submission.upload.percentComplete': 'Uploading {$percent}% complete',
763777
'submission.upload.productionReady': 'Upload a Production Ready File',
764778
'submission.upload.proof': 'Upload a File Ready for Publication',
779+
'submission.wizard.cancel.confirmation':
780+
'Are you sure you wish to cancel this submission? This will delete the submission and all associated data. This action cannot be undone.',
765781
'submission.wizard.changeSubmission': 'Change Submission Settings',
782+
'submission.wizard.submissionCancel': 'Cancel submission',
766783
'submissions.declined': 'Declined',
767784
'submissions.incomplete': 'Incomplete',
768-
todo: '##todo##',
769785
'user.affiliation': 'Affiliation',
770786
'user.authorization.accessibleWorkflowStage':
771787
"You don't currently have access to that stage of the workflow.",
@@ -817,21 +833,30 @@ window.pkp = {
817833
'workflow.submissionNextReviewRoundInFutureStage':
818834
'The submission advanced to the next review round, was accepted, and is currently in the {$stage} stage.',
819835
'user.affiliations': 'Affiliations',
820-
'user.affiliations.description': 'Enter the full name of the institution below, avoiding any acronyms. Select the name from the dropdown and click "Add" to include the affiliation in your profile. (e.g. "Simon Fraser University")',
836+
'user.affiliations.description':
837+
'Enter the full name of the institution below, avoiding any acronyms. Select the name from the dropdown and click "Add" to include the affiliation in your profile. (e.g. "Simon Fraser University")',
821838
'user.affiliations.institution': 'Institution',
822839
'user.affiliations.translation': 'More information',
823840
'user.affiliations.translationEditActionLabel': 'Edit institution name',
824841
'user.affiliations.translationDeleteActionLabel': 'Remove institution',
825842
'user.affiliations.translationActionsAriaLabel': 'Click to edit or delete',
826843
'user.affiliations.translationsAllAvailable': 'All translations available',
827-
'user.affiliations.translationsSomeAvailable': '{$count} of {$total} languages completed',
828-
'user.affiliations.typeTranslationNameInLanguageLabel': 'Type the institute name in {$language}',
829-
'user.affiliations.translationNameInLanguage': 'Institute name in {$language}',
844+
'user.affiliations.translationsSomeAvailable':
845+
'{$count} of {$total} languages completed',
846+
'user.affiliations.typeTranslationNameInLanguageLabel':
847+
'Type the institute name in {$language}',
848+
'user.affiliations.translationNameInLanguage':
849+
'Institute name in {$language}',
830850
'user.affiliations.deleteModal.title': 'Are you sure?',
831-
'user.affiliations.deleteModal.message': 'The affiliation <strong>{$affiliation}</strong> will be deleted.',
832-
'user.affiliations.searchPhraseLabel': 'Type the institute name in {$language}',
833-
'user.affiliations.searchPhraseNothingFound': 'Your search phrase could not be found',
834-
'user.affiliations.primaryLocaleRequired': 'The primary language {$primaryLocale} is required',
851+
'user.affiliations.deleteModal.message':
852+
'The affiliation <strong>{$affiliation}</strong> will be deleted.',
853+
'user.affiliations.searchPhraseLabel':
854+
'Type the institute name in {$language}',
855+
'user.affiliations.searchPhraseNothingFound':
856+
'Your search phrase could not be found',
857+
'user.affiliations.primaryLocaleRequired':
858+
'The primary language {$primaryLocale} is required',
859+
'workflow.uploadRevisions': 'Upload revisions',
835860
},
836861
tinyMCE: {
837862
skinUrl: '/styles/tinymce',

Diff for: src/pages/dashboard/DashboardPage.stories.js

+86-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import DashboardPage from './DashboardPage.vue';
22
import {http, HttpResponse} from 'msw';
33
import SubmissionsMock25 from './mocks/submissions25.js';
4-
import PageInitConfigMock from './mocks/pageInitConfig.js';
4+
import PageInitConfigEditorialMock from './mocks/pageInitConfigEditorial.js';
5+
import PageInitConfigReviewAssignmentsMock from './mocks/pageInitConfigReviewAssignments';
6+
import PageInitConfigMySubmissionsMock from './mocks/pageInitConfigMySubmissions';
57

68
import {EditorialActivityScenario} from './mocks/submissionScenariosMock';
9+
import {ReviewAssignmentEditorialActivityScenario} from './mocks/reviewAssignmentScenariosMock';
710

811
export default {
912
title: 'Pages/Dashboard',
@@ -54,7 +57,7 @@ export const Init = {
5457
],
5558
},
5659
},
57-
args: PageInitConfigMock,
60+
args: PageInitConfigEditorialMock,
5861
};
5962

6063
export const ReviewRoundStatusesEditor = {
@@ -78,7 +81,7 @@ export const ReviewRoundStatusesEditor = {
7881
],
7982
},
8083
},
81-
args: PageInitConfigMock,
84+
args: PageInitConfigEditorialMock,
8285
};
8386

8487
export const ReviewRoundStatusesDecidingEditor = {
@@ -108,5 +111,84 @@ export const ReviewRoundStatusesDecidingEditor = {
108111
],
109112
},
110113
},
111-
args: PageInitConfigMock,
114+
args: PageInitConfigEditorialMock,
115+
};
116+
117+
export const ReviewRoundStatusesAuthor = {
118+
parameters: {
119+
// mock date to consistently show sensible editorial activity popups
120+
date: new Date('February 20, 2024 10:00:00'),
121+
msw: {
122+
handlers: [
123+
http.get(
124+
'https://mock/index.php/publicknowledge/api/v1/_submissions/assigned',
125+
({request}) => {
126+
const submissions = JSON.parse(
127+
JSON.stringify(EditorialActivityScenario),
128+
);
129+
130+
submissions.forEach((submission) => {
131+
submission.stages[1].currentUserDecidingEditor = true;
132+
});
133+
134+
return HttpResponse.json({
135+
itemsMax: 1,
136+
consts: pkp.const,
137+
items: submissions,
138+
});
139+
},
140+
),
141+
],
142+
},
143+
},
144+
args: {...PageInitConfigMySubmissionsMock},
145+
};
146+
147+
export const ReviewAssignmentStatusesReviewer = {
148+
render: (args) => ({
149+
components: {DashboardPage},
150+
setup() {
151+
return {args};
152+
},
153+
template: `
154+
<ul class="text-sm-normal">
155+
<li><b>1.REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE</b> - request has been sent but reviewer has not responded </li>
156+
<li><b>2.REVIEW_ASSIGNMENT_STATUS_DECLINED</b> - reviewer declined review request</li>
157+
<li><b>3.REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE</b> - review not responded within due date</li>
158+
<li><b>4.REVIEW_ASSIGNMENT_STATUS_ACCEPTED</b> - reviewer has agreed to the review</li>
159+
<li><b>5.REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE</b> - review not submitted within due date </li>
160+
<li><b>6.REVIEW_ASSIGNMENT_STATUS_RECEIVED</b> - review has been submitted</li>
161+
<li><b>7.REVIEW_ASSIGNMENT_STATUS_COMPLETE</b> - review has been confirmed by an editor</li>
162+
<li><b>8.REVIEW_ASSIGNMENT_STATUS_THANKED</b> - reviewer has been thanked </li>
163+
<li><b>9.REVIEW_ASSIGNMENT_STATUS_REQUEST_RESEND</b> - request resent to reviewer after they declined</li>
164+
<li><b>10.REVIEW_ASSIGNMENT_STATUS_VIEWED</b> -editor viewed the review, but not confirm</li>
165+
<li><b>11.REVIEW_ASSIGNMENT_STATUS_CANCELLED</b> - reviewer cancelled review request // should not be displayed </li>
166+
<ul>
167+
168+
<DashboardPage v-bind="args" />`,
169+
}),
170+
171+
parameters: {
172+
// mock date to consistently show sensible editorial activity popups
173+
date: new Date('February 20, 2024 10:00:00'),
174+
msw: {
175+
handlers: [
176+
http.get(
177+
'https://mock/index.php/publicknowledge/api/v1/_submissions/reviewerAssignments',
178+
({request}) => {
179+
const submissions = JSON.parse(
180+
JSON.stringify(ReviewAssignmentEditorialActivityScenario),
181+
);
182+
183+
return HttpResponse.json({
184+
itemsMax: submissions.length,
185+
consts: pkp.const,
186+
items: submissions,
187+
});
188+
},
189+
),
190+
],
191+
},
192+
},
193+
args: {...PageInitConfigReviewAssignmentsMock},
112194
};

Diff for: src/pages/dashboard/components/DashboardTable/CellReviewAssignmentActions.vue

+7-5
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,25 @@ import {defineProps, computed} from 'vue';
1919
import PkpButton from '@/components/Button/Button.vue';
2020
import TableCell from '@/components/Table/TableCell.vue';
2121
import {useDashboardPageStore} from '@/pages/dashboard/dashboardPageStore.js';
22+
import {useLocalize} from '@/composables/useLocalize';
23+
24+
const {t} = useLocalize();
2225
2326
const props = defineProps({
2427
item: {type: Object, required: true},
2528
});
2629
27-
// TODO refine that further once more example is provided
28-
// Plus localisation once the labels are settleed
2930
const actionLabel = computed(() => {
3031
switch (props.item.status) {
3132
case pkp.const.REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE:
3233
case pkp.const.REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE:
33-
return 'Respond to request';
34+
case pkp.const.REVIEW_ASSIGNMENT_STATUS_REQUEST_RESEND:
35+
return t('dashboard.actions.respondToRequest');
3436
case pkp.const.REVIEW_ASSIGNMENT_STATUS_ACCEPTED:
3537
case pkp.const.REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE:
36-
return 'Finish review';
38+
return t('dashboard.actions.finishReview');
3739
default:
38-
return 'View';
40+
return t('common.view');
3941
}
4042
});
4143

0 commit comments

Comments
 (0)