({
+ components: {ColorsDisplay},
setup() {
return {args};
},
diff --git a/src/mocks/announcement.js b/src/mocks/announcement.js
new file mode 100644
index 000000000..58b07c045
--- /dev/null
+++ b/src/mocks/announcement.js
@@ -0,0 +1,35 @@
+const description = `
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Dictum sit amet justo donec enim diam vulputate ut. Sapien pellentesque habitant morbi tristique senectus et netus. Mi sit amet mauris commodo quis. Commodo sed egestas egestas fringilla phasellus faucibus. Nisi est sit amet facilisis magna etiam. Nec nam aliquam sem et tortor consequat. In metus vulputate eu scelerisque. Convallis posuere morbi leo urna molestie at. Viverra nibh cras pulvinar mattis. In tellus integer feugiat scelerisque. Pretium quam vulputate dignissim suspendisse. Mi in nulla posuere sollicitudin aliquam ultrices sagittis orci. Nibh ipsum consequat nisl vel pretium lectus quam. Faucibus purus in massa tempor. Ac turpis egestas sed tempus urna et pharetra pharetra massa. Tellus pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum. Arcu felis bibendum ut tristique et egestas quis ipsum.
+A diam maecenas sed enim ut sem viverra. Risus feugiat in ante metus dictum at. Iaculis nunc sed augue lacus viverra vitae congue. Malesuada fames ac turpis egestas. Viverra nibh cras pulvinar mattis. Sit amet venenatis urna cursus eget nunc scelerisque. Ac feugiat sed lectus vestibulum mattis ullamcorper. Ultrices vitae auctor eu augue ut. Malesuada pellentesque elit eget gravida cum. Dui accumsan sit amet nulla facilisi morbi tempus.
+Morbi tincidunt ornare massa eget egestas purus viverra accumsan. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Velit laoreet id donec ultrices tincidunt arcu non sodales. Cursus mattis molestie a iaculis at erat pellentesque adipiscing commodo. Commodo sed egestas egestas fringilla phasellus faucibus scelerisque eleifend. Consectetur adipiscing elit pellentesque habitant. Tincidunt vitae semper quis lectus nulla at volutpat diam. Sodales ut etiam sit amet nisl purus in mollis. Elementum sagittis vitae et leo duis. Aliquet nibh praesent tristique magna.
+Pellentesque elit eget gravida cum. Eros in cursus turpis massa tincidunt dui ut ornare lectus. Dignissim enim sit amet venenatis urna cursus. Arcu dictum varius duis at consectetur lorem. Hendrerit gravida rutrum quisque non tellus orci ac auctor. Augue neque gravida in fermentum et sollicitudin. Ac tortor vitae purus faucibus ornare suspendisse sed nisi. Turpis massa sed elementum tempus egestas sed sed risus pretium. Enim blandit volutpat maecenas volutpat blandit aliquam etiam erat velit. Aliquam id diam maecenas ultricies mi eget mauris pharetra et. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt. Amet cursus sit amet dictum sit amet. Hendrerit gravida rutrum quisque non tellus orci ac auctor augue. Sagittis purus sit amet volutpat consequat mauris nunc congue. Nibh sed pulvinar proin gravida hendrerit. Ut sem nulla pharetra diam sit. At consectetur lorem donec massa sapien. Varius quam quisque id diam vel quam elementum.
+Erat velit scelerisque in dictum non consectetur a erat nam. Nibh praesent tristique magna sit amet purus gravida quis. Nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum. Et odio pellentesque diam volutpat commodo. At varius vel pharetra vel turpis nunc eget. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quisque id diam vel quam elementum. Mattis enim ut tellus elementum sagittis vitae et leo. At elementum eu facilisis sed odio morbi. Lorem ipsum dolor sit amet consectetur adipiscing. Pulvinar elementum integer enim neque. Enim neque volutpat ac tincidunt vitae semper. Id aliquet risus feugiat in ante metus.
+`;
+
+const descriptionShort = `
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Dictum sit amet justo donec enim diam vulputate ut. Sapien pellentesque habitant morbi tristique senectus et netus. Mi sit amet mauris commodo quis. Commodo sed egestas egestas fringilla phasellus faucibus. Nisi est sit amet facilisis magna etiam. Nec nam aliquam sem et tortor consequat. In metus vulputate eu scelerisque. Convallis posuere morbi leo urna molestie at. Viverra nibh cras pulvinar mattis. In tellus integer feugiat scelerisque. Pretium quam vulputate dignissim suspendisse. Mi in nulla posuere sollicitudin aliquam ultrices sagittis orci. Nibh ipsum consequat nisl vel pretium lectus quam. Faucibus purus in massa tempor. Ac turpis egestas sed tempus urna et pharetra pharetra massa. Tellus pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum. Arcu felis bibendum ut tristique et egestas quis ipsum.
+`;
+
+export default {
+ assocId: 1,
+ assocType: 256,
+ dateExpire: '2022-02-03',
+ datePosted: '2020-01-29',
+ description: {
+ en: description,
+ fr_CA: description,
+ ar: description,
+ },
+ descriptionShort: {
+ en: descriptionShort,
+ fr_CA: descriptionShort,
+ ar: descriptionShort,
+ },
+ id: 1,
+ title: {
+ en: 'Eros in cursus turpis massa tincidunt dui ut ornare lectus',
+ fr_CA: 'Eros in cursus turpis massa tincidunt dui ut ornare lectus',
+ ar: 'Eros in cursus turpis massa tincidunt dui ut ornare lectus',
+ },
+ typeId: 1,
+};
diff --git a/src/mocks/authors.js b/src/mocks/authors.js
new file mode 100644
index 000000000..08e1b0813
--- /dev/null
+++ b/src/mocks/authors.js
@@ -0,0 +1,63 @@
+export const dbarnes = {
+ affiliation: {
+ en: 'Public Knowledge Project',
+ fr_CA: '',
+ },
+ email: 'dbarnes@mailinator.com',
+ familyName: {
+ en: 'Barnes',
+ fr_CA: '',
+ },
+ fullName: 'Daniel Barnes',
+ givenName: {
+ en: 'Daniel',
+ fr_CA: '',
+ },
+ id: 20,
+ includeInBrowse: true,
+ orcid: '',
+ preferredPublicName: {
+ fr_CA: '',
+ en: '',
+ },
+ publicationId: 17,
+ seq: 1,
+ userGroupId: 14,
+ userGroupName: {
+ fr_CA: '',
+ en: 'Author',
+ },
+};
+
+export const lipsum = {
+ affiliation: {
+ en: 'University of Public Knowledge',
+ fr_CA: '',
+ },
+ email: 'lipsum@mailinator.com',
+ familyName: {
+ en: 'Ipsum',
+ fr_CA: 'Ipsum',
+ },
+ fullName: 'Dr. L. P. Ipsum',
+ givenName: {
+ en: 'Lorem',
+ fr_CA: 'French Lorem',
+ },
+ id: 21,
+ includeInBrowse: true,
+ orcid: 'https://orcid.org/0000-0001-5756-5406',
+ preferredPublicName: {
+ en: 'Dr. L. P. Ipsum',
+ fr_CA: 'Dr F. L. P. Ipsum',
+ },
+ publicationId: 17,
+ seq: 1,
+ userGroupId: 14,
+ userGroupName: {
+ fr_CA: '',
+ en: 'Author',
+ },
+};
+
+export default [{...dbarnes}, {...lipsum}];
diff --git a/src/mocks/categories.js b/src/mocks/categories.js
new file mode 100644
index 000000000..1db8f42ed
--- /dev/null
+++ b/src/mocks/categories.js
@@ -0,0 +1,8 @@
+export default {
+ 1: 'Applied Science',
+ 2: 'Applied Science > Computer Science',
+ 3: 'Applied Science > Engineering',
+ 4: 'Social Sciences',
+ 5: 'Social Sciences > Sociology',
+ 6: 'Social Sciences > Anthropology',
+};
diff --git a/src/mocks/doi.js b/src/mocks/doi.js
new file mode 100644
index 000000000..3e8bb2536
--- /dev/null
+++ b/src/mocks/doi.js
@@ -0,0 +1,6 @@
+export default {
+ contextId: 1,
+ doi: '10.1234/abcd1234',
+ id: 1,
+ status: 1,
+};
diff --git a/src/mocks/dropzoneOptions.js b/src/mocks/dropzoneOptions.js
new file mode 100644
index 000000000..e96969e9e
--- /dev/null
+++ b/src/mocks/dropzoneOptions.js
@@ -0,0 +1,20 @@
+export default {
+ maxFilesize: 2,
+ url: 'https://mock/index.php/publicknowledge/api/v1/temporaryFiles',
+ dropzoneDictDefaultMessage: 'Drop files here to upload',
+ dropzoneDictFallbackMessage:
+ "Your browser does not support drag'n'drop file uploads.",
+ dropzoneDictFallbackText:
+ 'Please use the fallback form below to upload your files.',
+ dropzoneDictFileTooBig:
+ 'File is too big ({{filesize}}mb). Files larger than {{maxFilesize}}mb can not be uploaded.',
+ dropzoneDictInvalidFileType: 'Files of this type can not be uploaded.',
+ dropzoneDictResponseError:
+ 'Server responded with {{statusCode}} code. Please contact the system administrator if this problem persists.',
+ dropzoneDictCancelUpload: 'Cancel upload',
+ dropzoneDictUploadCanceled: 'Upload canceled',
+ dropzoneDictCancelUploadConfirmation:
+ 'Are you sure you want to cancel this upload?',
+ dropzoneDictRemoveFile: 'Remove file',
+ dropzoneDictMaxFilesExceeded: 'You can not upload any more files.',
+};
diff --git a/src/mocks/emailTemplate.js b/src/mocks/emailTemplate.js
new file mode 100644
index 000000000..12900aac3
--- /dev/null
+++ b/src/mocks/emailTemplate.js
@@ -0,0 +1,26 @@
+export default {
+ _href:
+ 'https://httbin.org/publicknowledge/api/v1/emailTemplates/EDITOR_DECISION_ACCEPT',
+ body: {
+ en: `Dear {$senderName},
+ I am delighted to inform you that your submission, {$submissionTitle}, has been accepted for publication. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ Sincerely,
+ {$senderName}
{$journalName}
`,
+ fr_CA: `Chear {$senderName},
+ J'ai le plaisir de vous informer que votre soumission, {$submissionTitle}, a été acceptée pour publication. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ Sincèrement,
+ {$senderName}
{$journalName}
`,
+ },
+ contextId: null,
+ id: null,
+ key: 'EDITOR_DECISION_ACCEPT',
+ name: {
+ en: 'Accept for Publication',
+ },
+ stageId: 3,
+ subject: {
+ en: 'Your submission has been accepted for publication in {$journalName}',
+ fr_CA:
+ 'Votre soumission a été acceptée pour publication dans {$journalName}',
+ },
+};
diff --git a/src/mocks/exampleText.js b/src/mocks/exampleText.js
new file mode 100644
index 000000000..f369dcef1
--- /dev/null
+++ b/src/mocks/exampleText.js
@@ -0,0 +1,11 @@
+const text = [
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pharetra et ultrices neque ornare aenean. Aenean pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Proin libero nunc consequat interdum varius sit. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Nam aliquam sem et tortor consequat id. Odio facilisis mauris sit amet massa vitae tortor condimentum lacinia. Pharetra sit amet aliquam id diam. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Sed nisi lacus sed viverra. Eget nunc lobortis mattis aliquam faucibus purus in massa. Orci ac auctor augue mauris augue neque gravida in fermentum. Neque sodales ut etiam sit amet nisl purus in mollis. Lectus nulla at volutpat diam ut venenatis tellus in. Suspendisse in est ante in nibh mauris cursus. Pharetra diam sit amet nisl suscipit adipiscing. Pretium quam vulputate dignissim suspendisse in est ante. Amet mattis vulputate enim nulla aliquet. Odio euismod lacinia at quis risus sed vulputate.',
+ 'Sem integer vitae justo eget magna fermentum iaculis. Vulputate mi sit amet mauris commodo quis imperdiet massa. Mollis aliquam ut porttitor leo. Viverra vitae congue eu consequat. Vel facilisis volutpat est velit egestas dui id ornare. Purus sit amet volutpat consequat mauris nunc congue. Sapien et ligula ullamcorper malesuada proin libero. Auctor eu augue ut lectus arcu. In massa tempor nec feugiat nisl pretium fusce id. Urna molestie at elementum eu facilisis sed. Praesent tristique magna sit amet purus. Eu augue ut lectus arcu bibendum at. A pellentesque sit amet porttitor eget dolor morbi non arcu. Blandit libero volutpat sed cras ornare arcu. Quam viverra orci sagittis eu volutpat. Sit amet mattis vulputate enim. Justo donec enim diam vulputate ut pharetra sit. Feugiat pretium nibh ipsum consequat nisl vel pretium. Arcu ac tortor dignissim convallis aenean et. Dolor sit amet consectetur adipiscing elit duis tristique sollicitudin nibh.',
+ 'Pellentesque dignissim enim sit amet venenatis urna cursus. Ut sem viverra aliquet eget sit amet tellus cras. Nulla at volutpat diam ut venenatis tellus in. Consequat mauris nunc congue nisi vitae suscipit. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus. Imperdiet dui accumsan sit amet nulla facilisi. Nisi quis eleifend quam adipiscing vitae proin. Ante metus dictum at tempor commodo. Viverra suspendisse potenti nullam ac. Dignissim cras tincidunt lobortis feugiat vivamus. Nunc scelerisque viverra mauris in aliquam. Nunc lobortis mattis aliquam faucibus purus in massa tempor nec. Curabitur gravida arcu ac tortor. Lobortis feugiat vivamus at augue eget. Amet porttitor eget dolor morbi non arcu.',
+ 'Vulputate mi sit amet mauris. Vulputate odio ut enim blandit volutpat. Varius morbi enim nunc faucibus a pellentesque sit amet porttitor. Consectetur a erat nam at lectus urna. Faucibus vitae aliquet nec ullamcorper sit amet risus. Commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Iaculis at erat pellentesque adipiscing. Fermentum posuere urna nec tincidunt praesent semper. Tellus pellentesque eu tincidunt tortor. Ullamcorper a lacus vestibulum sed arcu non. In egestas erat imperdiet sed euismod nisi porta lorem. Tempus imperdiet nulla malesuada pellentesque elit eget gravida cum. Nam at lectus urna duis convallis convallis tellus id. Etiam erat velit scelerisque in dictum non. Ultrices in iaculis nunc sed augue lacus viverra. Amet consectetur adipiscing elit pellentesque. Vestibulum lorem sed risus ultricies tristique nulla aliquet enim tortor.',
+ 'Nisl vel pretium lectus quam id. Posuere urna nec tincidunt praesent semper feugiat nibh sed. Proin sed libero enim sed faucibus turpis in. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Nunc mattis enim ut tellus elementum sagittis vitae et. Felis imperdiet proin fermentum leo vel orci porta. Arcu risus quis varius quam. Mi proin sed libero enim. Suspendisse interdum consectetur libero id faucibus. Blandit aliquam etiam erat velit scelerisque. Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi tristique. Luctus accumsan tortor posuere ac ut consequat semper viverra. Auctor elit sed vulputate mi sit. Mi bibendum neque egestas congue quisque egestas diam.',
+];
+
+export const paragraph = text[0];
+
+export default text;
diff --git a/src/mocks/fileAttachers.js b/src/mocks/fileAttachers.js
new file mode 100644
index 000000000..ca6daba7b
--- /dev/null
+++ b/src/mocks/fileAttachers.js
@@ -0,0 +1,89 @@
+/**
+ * Sample props for FileAttacher components
+ */
+import dropzoneOptions from '@/docs/data/dropzoneOptions';
+
+export default [
+ {
+ component: 'FileAttacherUpload',
+ label: 'Upload File',
+ description: 'Upload a file from your computer.',
+ button: 'Upload File',
+ dropzoneOptions: {...dropzoneOptions},
+ temporaryFilesApiUrl: 'http://example.org',
+ addFilesLabel: 'Add Files',
+ attachFilesLabel: 'Attach Files',
+ backLabel: 'Back',
+ dragAndDropMessage: 'Drag and drop files here.',
+ dragAndDropOrUploadMessage: 'Or upload a file',
+ removeItemLabel: 'Remove {$item}',
+ },
+ {
+ component: 'FileAttacherReviewFiles',
+ label: 'Review Files',
+ description: 'Attach files that were uploaded by reviewers.',
+ button: 'Attach Review File',
+ attachSelectedLabel: 'Attach Selected',
+ backLabel: 'Back',
+ downloadLabel: 'Download',
+ files: [
+ {
+ id: 142,
+ name: {
+ en: 'jpk-review-document.docx',
+ },
+ documentType: 'word',
+ url: 'http://example.org',
+ reviewerName: 'Adela Gallego',
+ },
+ {
+ id: 191,
+ name: {
+ en: 'review-for-jpk.docx'.repeat(6),
+ },
+ documentType: 'word',
+ url: 'http://example.org',
+ reviewerName: 'Aisla McCrae',
+ },
+ ],
+ },
+ {
+ component: 'FileAttacherFileStage',
+ label: 'Submission Files',
+ description:
+ 'Attach files uploaded during the submission workflow, such as revisions or files to be reviewed.',
+ button: 'Attach Submission Files',
+ submissionFilesApiUrl:
+ 'https://mock/index.php/publicknowledge/api/v1/submissions/26/files',
+ attachSelectedLabel: 'Attach Selected',
+ backLabel: 'Back',
+ downloadLabel: 'Download',
+ fileStages: [
+ {
+ label: 'Revisions',
+ queryParams: {
+ fileStage: 15, // SubmissionFile::SUBMISSION_FILE_REVIEW_REVISION
+ reviewRoundId: 1,
+ },
+ },
+ {
+ label: 'Files for Review',
+ queryParams: {
+ fileStage: 4, // SubmissionFile::SUBMISSION_FILE_REVIEW_FILE
+ reviewRoundId: 1,
+ },
+ },
+ ],
+ },
+ {
+ component: 'FileAttacherLibrary',
+ label: 'Library Files',
+ description: 'Attach files from the Submission and Publisher Libraries.',
+ button: 'Attach Library Files',
+ libraryApiUrl: 'https://mock/index.php/publicknowledge/api/v1/_library',
+ includeSubmissionId: 15,
+ attachSelectedLabel: 'Attach Selected',
+ backLabel: 'Back',
+ downloadLabel: 'Download',
+ },
+];
diff --git a/src/mocks/genres.js b/src/mocks/genres.js
new file mode 100644
index 000000000..89350bcb6
--- /dev/null
+++ b/src/mocks/genres.js
@@ -0,0 +1,44 @@
+export default [
+ {
+ id: 1,
+ name: 'Book Manuscript',
+ isPrimary: true,
+ },
+ {
+ id: 2,
+ name: 'Chapter Manuscript',
+ isPrimary: true,
+ },
+ {
+ id: 3,
+ name: 'Preface',
+ },
+ {
+ id: 4,
+ name: 'Index',
+ },
+ {
+ id: 5,
+ name: 'Glossary',
+ },
+ {
+ id: 7,
+ name: 'Prospectus',
+ },
+ {
+ id: 11,
+ name: 'Table',
+ },
+ {
+ id: 8,
+ name: 'Figure',
+ },
+ {
+ id: 9,
+ name: 'Audio',
+ },
+ {
+ id: 10,
+ name: 'Other',
+ },
+];
diff --git a/src/mocks/highlight.js b/src/mocks/highlight.js
new file mode 100644
index 000000000..5cd6eebd2
--- /dev/null
+++ b/src/mocks/highlight.js
@@ -0,0 +1,27 @@
+const title = 'Lorem Ipsum Dolor Sit Amet';
+const desc =
+ 'Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex.';
+
+export default {
+ _href: 'https://example.org',
+ contextId: 1,
+ description: {
+ en: desc,
+ fr_CA: `${desc} (French)`,
+ ar: `${desc} (Arabic)`,
+ },
+ id: 1,
+ image: {},
+ sequence: 1,
+ title: {
+ en: title,
+ fr_CA: `${title} (French)`,
+ ar: `${title} (Arabic)`,
+ },
+ url: 'https://example.org',
+ urlText: {
+ en: 'Read More',
+ fr_CA: 'En savoir plus',
+ ar: 'اقرأ أكثر',
+ },
+};
diff --git a/src/mocks/insertContent.js b/src/mocks/insertContent.js
new file mode 100644
index 000000000..b4d3fede9
--- /dev/null
+++ b/src/mocks/insertContent.js
@@ -0,0 +1,64 @@
+/**
+ * Sample data that can be inserted into the content of a rich text editor
+ *
+ * @see InsertContent|FieldPreparedContent
+ */
+export default [
+ {
+ key: 'contactName',
+ value: 'Daniel Barnes',
+ description: 'The name of the primary journal contact',
+ },
+ {
+ key: 'contactEmail',
+ value: 'dbarnes@example.org',
+ description: 'The email of the primary journal contact',
+ },
+ {
+ key: 'journalName',
+ value: 'Journal of Public Knowledge',
+ description: 'The name of the journal',
+ },
+ {
+ key: 'journalUrl',
+ value: 'http://example.org/publicknowledge',
+ description: 'The URL of the journal',
+ },
+ {
+ key: 'principleContactSignature',
+ value: 'Daniel Barnes
Editor, Public Knowledge Project
',
+ description: "The journal's contact signature",
+ },
+ {
+ key: 'recipientName',
+ value: 'Carlo Corino',
+ description: 'The name of the recipient',
+ },
+ {
+ key: 'reviewerComments',
+ value:
+ 'Reviewer 1:
Recommendation: Accept
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
',
+ description: 'The comments and recommendations from reviewers',
+ },
+ {
+ key: 'revisionsDueDate',
+ value: '2021-03-21',
+ description: 'The date the revisions are due',
+ },
+ {
+ key: 'signature',
+ value: 'Daniel Barnes
Editor, Public Knowledge Project
',
+ description: 'The name of the sender',
+ },
+ {
+ key: 'submissionTitle',
+ value:
+ 'The influence of lactation on the quantity and quality of cashmere production',
+ description: 'The title of the submission',
+ },
+ {
+ key: 'submissionUrl',
+ value: 'http://example.org/publicknowledge/workflow/access/21',
+ description: "The URL to the submission's editorial workflow",
+ },
+];
diff --git a/src/mocks/issue.js b/src/mocks/issue.js
new file mode 100644
index 000000000..45c63749d
--- /dev/null
+++ b/src/mocks/issue.js
@@ -0,0 +1,67 @@
+import submission from '@/docs/data/submission';
+import doi from '@/docs/data/doi';
+
+export default {
+ _href: 'https://httbin.org/publicknowledge/api/v1/issues/1',
+ articles: [
+ {
+ ...submission,
+ id: 2,
+ currentPublicationId: 22,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 22,
+ authorsString: 'Catherine Kwantes',
+ authorsStringShort: 'Kwantes',
+ fullTitle: {
+ en: 'Quisque vel ultrices ut vel sollicitudin vel varius suscipit phasellus',
+ },
+ isPublished: true,
+ },
+ ],
+ stages: submission.stages.map((stage) => {
+ return {
+ ...stage,
+ currentUserAssignedRoles: [pkp.const.ROLE_ID_MANAGER],
+ };
+ }),
+ status: 3,
+ urlAuthorWorkflow: submission.urlAuthorWorkflow.replace('1', '2'),
+ urlEditorialWorkflow: submission.urlEditorialWorkflow.replace('1', '2'),
+ urlPublished: submission.urlPublished.replace('1', '2'),
+ urlWorkflow: submission.urlWorkflow.replace('1', '2'),
+ },
+ {
+ ...submission,
+ },
+ ],
+ coverImageAltText: {
+ en: '',
+ fr_CA: '',
+ },
+ coverImageUrl: {
+ en: '',
+ fr_CA: '',
+ },
+ dateNotified: null,
+ datePublished: '2020-09-18 20:41:39',
+ doiObject: {...doi},
+ description: {
+ en: '',
+ fr_CA: '',
+ },
+ galleys: [],
+ id: 1,
+ identification: 'Vol 1. No 1. (2020): Issue Number 1',
+ isPublished: '1',
+ number: '1',
+ 'pub-id::doi': '10.987/iss123',
+ publishedUrl: 'https://httbin.org/publicknowledge/issue/view/1',
+ title: {
+ en: 'Issue Number 1',
+ fr_CA: 'Issue Number 1',
+ },
+ volume: 1,
+ year: 2020,
+};
diff --git a/src/mocks/issues.js b/src/mocks/issues.js
new file mode 100644
index 000000000..b67506f9e
--- /dev/null
+++ b/src/mocks/issues.js
@@ -0,0 +1,48 @@
+import issue from '@/docs/data/issue';
+import doi from '@/docs/data/doi';
+
+export default [
+ issue,
+ {
+ ...issue,
+ id: 2,
+ identification: 'Vol 1. No 2. (2020): Issue Number 2',
+ number: '2',
+ doiObject: {
+ ...doi,
+ identifier: '10.987/iss456',
+ },
+ title: {
+ en: 'Issue Number 2',
+ fr_CA: 'Issue Number 2',
+ },
+ },
+ {
+ ...issue,
+ id: 3,
+ identification: 'Vol 1. No 3. (2020): Issue Number 3',
+ number: '3',
+ doiObject: {
+ ...doi,
+ identifier: '10.987/iss789',
+ },
+ title: {
+ en: 'Issue Number 3',
+ fr_CA: 'Issue Number 3',
+ },
+ },
+ {
+ ...issue,
+ id: 4,
+ identification: 'Vol 1. No 4. (2020): Issue Number 4',
+ number: '4',
+ doiObject: {
+ ...doi,
+ identifier: '10.987/iss012',
+ },
+ title: {
+ en: 'Issue Number 4',
+ fr_CA: 'Issue Number 4',
+ },
+ },
+];
diff --git a/src/mocks/mailable.json b/src/mocks/mailable.json
new file mode 100644
index 000000000..561eafba9
--- /dev/null
+++ b/src/mocks/mailable.json
@@ -0,0 +1,67 @@
+{
+ "_href": "http://localhost:8000/pu/api/v1/mailables/DISCUSSION_NOTIFICATION_COPYEDITING",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a discussion is created or replied to in the copyediting stage.",
+ "emailTemplateKey": "DISCUSSION_NOTIFICATION_COPYEDITING",
+ "fromRoleIds": [17, 4097, 65536],
+ "groupIds": ["copyediting"],
+ "name": "Discussion (Copyediting)",
+ "supportsTemplates": true,
+ "toRoleIds": [17, 4097, 65536],
+ "emailTemplates": [
+ {
+ "_href": "http://localhost:8000/pu/api/v1/emailTemplates/DISCUSSION_NOTIFICATION_COPYEDITING",
+ "alternateTo": null,
+ "body": {
+ "fr_CA": "Prière de saisir votre message.",
+ "en": "Please enter your message."
+ },
+ "contextId": null,
+ "id": null,
+ "key": "DISCUSSION_NOTIFICATION_COPYEDITING",
+ "name": {
+ "fr_CA": "",
+ "en": "Discussion (Copyediting)"
+ },
+ "subject": {
+ "fr_CA": "Un message à propos de la revue {$journalName}",
+ "en": "A message regarding {$journalName}"
+ }
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/emailTemplates/COPYEDIT_REQUEST",
+ "alternateTo": "DISCUSSION_NOTIFICATION_COPYEDITING",
+ "body": {
+ "en": "Dear {$recipientName},
A new submission is ready to be copyedited:
{$submissionId} {$submissionTitle}
{$journalName}
Please follow these steps to complete this task:
- 1. Click on the Submission URL below.
- 2. 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).
- 3. Save the copyedited file(s) and upload them to the Copyedited panel.
- 4. 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 this journal.
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}"
+ },
+ "contextId": 1,
+ "id": 1,
+ "key": "COPYEDIT_REQUEST",
+ "name": {
+ "en": "Request Copyedit",
+ "fr_CA": ""
+ },
+ "subject": {
+ "en": "Submission {$submissionId} is ready to be copyedited for {$contextAcronym}",
+ "fr_CA": "Demande de révision d'une soumission"
+ }
+ }
+ ]
+}
diff --git a/src/mocks/mailables.json b/src/mocks/mailables.json
new file mode 100644
index 000000000..dcd43e818
--- /dev/null
+++ b/src/mocks/mailables.json
@@ -0,0 +1,1622 @@
+[
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/DISCUSSION_NOTIFICATION_COPYEDITING",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a discussion is created or replied to in the copyediting stage.",
+ "emailTemplateKey": "DISCUSSION_NOTIFICATION_COPYEDITING",
+ "fromRoleIds": [17, 4097, 65536],
+ "groupIds": ["copyediting"],
+ "name": "Discussion (Copyediting)",
+ "supportsTemplates": true,
+ "toRoleIds": [17, 4097, 65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/DISCUSSION_NOTIFICATION_PRODUCTION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a discussion is created or replied to in the production stage.",
+ "emailTemplateKey": "DISCUSSION_NOTIFICATION_PRODUCTION",
+ "fromRoleIds": [17, 4097, 65536],
+ "groupIds": ["production"],
+ "name": "Discussion (Production)",
+ "supportsTemplates": true,
+ "toRoleIds": [17, 4097, 65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/DISCUSSION_NOTIFICATION_REVIEW",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a discussion is created or replied to in the review stage.",
+ "emailTemplateKey": "DISCUSSION_NOTIFICATION_REVIEW",
+ "fromRoleIds": [17, 4097, 65536],
+ "groupIds": ["review"],
+ "name": "Discussion (Review)",
+ "supportsTemplates": true,
+ "toRoleIds": [17, 4097, 65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/DISCUSSION_NOTIFICATION_SUBMISSION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a discussion is created or replied to in the submission stage.",
+ "emailTemplateKey": "DISCUSSION_NOTIFICATION_SUBMISSION",
+ "fromRoleIds": [17, 4097, 65536],
+ "groupIds": ["submission"],
+ "name": "Discussion (Submission)",
+ "supportsTemplates": true,
+ "toRoleIds": [17, 4097, 65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/NOTIFICATION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "notificationContents": "##emailTemplate.variable.notificationContents##",
+ "notificationUrl": "##emailTemplate.variable.notificationUrl##",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "unsubscribeLink": "##emailTemplate.variable.unsubscribeLink##",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email automatically notifies the reviewer when the details of their review assignment have been changed.",
+ "emailTemplateKey": "NOTIFICATION",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Edit Review Notification",
+ "supportsTemplates": false,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITORIAL_REMINDER",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "numberOfSubmissions": "The number of submissions assigned to this editor",
+ "outstandingTasks": "A list of submissions with outstanding tasks",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "An automated email sent to editors with outstanding tasks",
+ "emailTemplateKey": "EDITORIAL_REMINDER",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Editorial Reminder",
+ "supportsTemplates": false,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/ISSUE_PUBLISH_NOTIFY",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "issueIdentification": "Issue identification, including volume, number, year, and title",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent to registered users when the new issue is published.",
+ "emailTemplateKey": "ISSUE_PUBLISH_NOTIFY",
+ "fromRoleIds": [17],
+ "groupIds": ["other"],
+ "name": "Issue Published Notify",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/ANNOUNCEMENT",
+ "dataDescriptions": {
+ "announcementSummary": "Short description of the announcement",
+ "announcementTitle": "The title of the announcement",
+ "announcementUrl": "The URL to the announcement",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a new announcement is created.",
+ "emailTemplateKey": "ANNOUNCEMENT",
+ "fromRoleIds": [17],
+ "groupIds": ["other"],
+ "name": "New Announcement",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_NEW_ROUND",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that a new round of review is beginning for their submission.",
+ "emailTemplateKey": "EDITOR_DECISION_NEW_ROUND",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "New Review Round Initiated",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_NOTIFY_OTHER_AUTHORS",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "messageToSubmittingAuthor": "A copy of the email message that was sent to the submitting author",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "submittingAuthorName": "The names of the authors assigned to the submission workflow. Usually this is the submitting author",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent to notify authors of a submission who are not assigned as participants that a decision has been made. Usually these are all others except the submitting author.",
+ "emailTemplateKey": "EDITOR_DECISION_NOTIFY_OTHER_AUTHORS",
+ "fromRoleIds": [17],
+ "groupIds": ["submission", "review", "copyediting", "production"],
+ "name": "Notify Other Authors",
+ "supportsTemplates": false,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/OPEN_ACCESS_NOTIFY",
+ "dataDescriptions": {
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients"
+ },
+ "description": "This email is sent to registered readers who have requested to receive a notification email when an issue becomes open access.",
+ "emailTemplateKey": "OPEN_ACCESS_NOTIFY",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Open Access Notify",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/PASSWORD_RESET_CONFIRM",
+ "dataDescriptions": {
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "siteContactEmail": "The email of the website's primary contact",
+ "siteContactName": "The full name of the website's primary contact",
+ "siteSignature": "The website's email signature for automated emails",
+ "siteTitle": "Name of the website when more than one journal is hosted"
+ },
+ "description": "This email is sent to a registered user when they indicate that they have forgotten their password or are unable to login. It provides a URL they can follow to reset their password.",
+ "emailTemplateKey": "PASSWORD_RESET_CONFIRM",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Password Reset Confirm",
+ "supportsTemplates": false,
+ "toRoleIds": [17, 4097, 65536, 1048576, 4096, 2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/NOTIFICATION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "notificationContents": "##emailTemplate.variable.notificationContents##",
+ "notificationUrl": "##emailTemplate.variable.notificationUrl##",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "unsubscribeLink": "##emailTemplate.variable.unsubscribeLink##",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email automatically notifies assigned editors about new version of the publication",
+ "emailTemplateKey": "NOTIFICATION",
+ "fromRoleIds": [-1],
+ "groupIds": ["production"],
+ "name": "Publication Version Notification",
+ "supportsTemplates": false,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_PURCHASE_INDL",
+ "dataDescriptions": {
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email notifies the Subscription Manager that an individual subscription has been purchased online. It provides summary information about the subscription and a quick access link to the purchased subscription.",
+ "emailTemplateKey": "SUBSCRIPTION_PURCHASE_INDL",
+ "fromRoleIds": [1048576],
+ "groupIds": ["other"],
+ "name": "Purchase Individual Subscription",
+ "supportsTemplates": false,
+ "toRoleIds": [2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_PURCHASE_INSTL",
+ "dataDescriptions": {
+ "domain": "Domain",
+ "institutionMailingAddress": "The mailing address of the institution",
+ "institutionName": "The name of the institution",
+ "ipRanges": "IP ranges for subscription authentication",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email notifies the Subscription Manager that an institutional subscription has been purchased online. It provides summary information about the subscription and a quick access link to the purchased subscription.",
+ "emailTemplateKey": "SUBSCRIPTION_PURCHASE_INSTL",
+ "fromRoleIds": [1048576],
+ "groupIds": ["other"],
+ "name": "Purchase Institutional Subscription",
+ "supportsTemplates": false,
+ "toRoleIds": [2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_RECOMMENDATION",
+ "dataDescriptions": {
+ "allReviewerComments": "All comments from completed reviews. Reviewer names are hidden for anonymous reviews",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "recommendation": "The recommended decision, such as Accept Submission",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This message notifies a senior Editor or Section Editor that an editorial recommendation has been made regarding one of their assigned submissions. This message is used when an editor is only allowed to recommend an editorial decision and requires an authorized editor to record editorial decisions. This option can be selected when assigning participants to a submission.",
+ "emailTemplateKey": "EDITOR_RECOMMENDATION",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Recommendation Made",
+ "supportsTemplates": true,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_REVERT_DECLINE",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that a previous decision to decline their submission after peer review is being reverted.",
+ "emailTemplateKey": "EDITOR_DECISION_REVERT_DECLINE",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Reinstate Declined Submission",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_REVERT_INITIAL_DECLINE",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that a previous decision to decline their submission without review is being reverted.",
+ "emailTemplateKey": "EDITOR_DECISION_REVERT_INITIAL_DECLINE",
+ "fromRoleIds": [17],
+ "groupIds": ["submission"],
+ "name": "Reinstate Submission Declined Without Review",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_RENEW_INDL",
+ "dataDescriptions": {
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email notifies the Subscription Manager that an individual subscription has been renewed online. It provides summary information about the subscription and a quick access link to the renewed subscription.",
+ "emailTemplateKey": "SUBSCRIPTION_RENEW_INDL",
+ "fromRoleIds": [1048576],
+ "groupIds": ["other"],
+ "name": "Renew Individual Subscription",
+ "supportsTemplates": false,
+ "toRoleIds": [2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_RENEW_INSTL",
+ "dataDescriptions": {
+ "domain": "Domain",
+ "institutionMailingAddress": "The mailing address of the institution",
+ "institutionName": "The name of the institution",
+ "ipRanges": "IP ranges for subscription authentication",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email notifies the Subscription Manager that an institutional subscription has been renewed online. It provides summary information about the subscription and a quick access link to the renewed subscription.",
+ "emailTemplateKey": "SUBSCRIPTION_RENEW_INSTL",
+ "fromRoleIds": [1048576],
+ "groupIds": ["other"],
+ "name": "Renew Institutional Subscription",
+ "supportsTemplates": false,
+ "toRoleIds": [2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_RESEND_REQUEST",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent by an editor to a reviewer who has declined a review request, when the editor wishes to resend the request.",
+ "emailTemplateKey": "REVIEW_RESEND_REQUEST",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Resend Review Request to Reviewer",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_RESUBMIT",
+ "dataDescriptions": {
+ "allReviewerComments": "All comments from completed reviews. Reviewer names are hidden for anonymous reviews",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author of a \"revise and resubmit\" decision regarding their submission.",
+ "emailTemplateKey": "EDITOR_DECISION_RESUBMIT",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Resubmit for Review",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_ACK",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent to a reviewer to confirm that their review has been received and to thank the reviewer for their contributions.",
+ "emailTemplateKey": "REVIEW_ACK",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Review Acknowledgement",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_CONFIRM",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent when a reviewer accepts a review request",
+ "emailTemplateKey": "REVIEW_CONFIRM",
+ "fromRoleIds": [4096],
+ "groupIds": ["review"],
+ "name": "Review Confirm",
+ "supportsTemplates": true,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_DECLINE",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent by a reviewer when declining a review request",
+ "emailTemplateKey": "REVIEW_DECLINE",
+ "fromRoleIds": [4096],
+ "groupIds": ["review"],
+ "name": "Review Decline",
+ "supportsTemplates": false,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_REMIND",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "passwordResetUrl": "Hashed URL which is sent to a user to confirm the password reset",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent by an Editor to remind a reviewer that their review is due",
+ "emailTemplateKey": "REVIEW_REMIND",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Review Reminder",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_REMIND_AUTO",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "passwordResetUrl": "Hashed URL which is sent to a user to confirm the password reset",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent when a reviewer has not completed their review by the due date.",
+ "emailTemplateKey": "REVIEW_REMIND_AUTO",
+ "fromRoleIds": [-1],
+ "groupIds": ["review"],
+ "name": "Review Reminder (Automated)",
+ "supportsTemplates": false,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_REQUEST",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email from the Section Editor to a Reviewer requests that the reviewer accept or decline the task of reviewing a submission. ",
+ "emailTemplateKey": "REVIEW_REQUEST",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Review Request",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_REQUEST_SUBSEQUENT",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email from an Editor to a Reviewer requests that the reviewer accept or decline the task of reviewing a submission for an additional round of review. It provides information about the submission such as the title and abstract, a review due date, and how to access the submission itself.",
+ "emailTemplateKey": "REVIEW_REQUEST_SUBSEQUENT",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Review Request Subsequent",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_RESPONSE_OVERDUE_AUTO",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "passwordResetUrl": "Hashed URL which is sent to a user to confirm the password reset",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent when the deadline for a reviewer to respond to a review request passes.",
+ "emailTemplateKey": "REVIEW_RESPONSE_OVERDUE_AUTO",
+ "fromRoleIds": [-1],
+ "groupIds": ["review"],
+ "name": "Review Response Overdue (Automated)",
+ "supportsTemplates": false,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_CANCEL_REVIEW_ROUND",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that a review round for their submission has been cancelled.",
+ "emailTemplateKey": "EDITOR_DECISION_CANCEL_REVIEW_ROUND",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Review Round Cancelled",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_ACK",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A short description of this decision that is intended to be shared in an email notification sent to reviewers about this decision.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent by an Editor to a Reviewer to notify them that a decision has been made regarding a submission that they reviewed.",
+ "emailTemplateKey": "REVIEW_ACK",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Reviewer Acknowledgement",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/NOTIFICATION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "notificationContents": "##emailTemplate.variable.notificationContents##",
+ "notificationUrl": "##emailTemplate.variable.notificationUrl##",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "unsubscribeLink": "##emailTemplate.variable.unsubscribeLink##",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent to assigned editors when reviewer makes review recommendation",
+ "emailTemplateKey": "NOTIFICATION",
+ "fromRoleIds": [4096],
+ "groupIds": ["review"],
+ "name": "Reviewer Commented Notify Editors",
+ "supportsTemplates": false,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEWER_REGISTER",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "password": "New random user password",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent to a newly registered reviewer to welcome them to the system and provide them with a record of their username and password.",
+ "emailTemplateKey": "REVIEWER_REGISTER",
+ "fromRoleIds": [17, 4097],
+ "groupIds": ["review"],
+ "name": "Reviewer Register",
+ "supportsTemplates": false,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_REINSTATE",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when a reviewer that was unassigned is reinstated by an editor.",
+ "emailTemplateKey": "REVIEW_REINSTATE",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Reviewer Reinstate",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVIEW_CANCEL",
+ "dataDescriptions": {
+ "authorSubmissionUrl": "The full names of the authors",
+ "authors": "The full names of the authors",
+ "authorsShort": "Author names in a form of a shortened string",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A short description of this decision that is intended to be shared in an email notification sent to reviewers about this decision.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "responseDueDate": "Date when the review should be completed",
+ "reviewAssignmentUrl": "The URL to the review assignment",
+ "reviewDueDate": "Date when the reviewer should accept or decline the assignment",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionAbstract": "The submission's abstract",
+ "submissionId": "The submission's unique ID number",
+ "submissionTitle": "The submission's title",
+ "submissionUrl": "The URL to the submission in the editorial backend",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent when an editor unassigns a reviewer.",
+ "emailTemplateKey": "REVIEW_CANCEL",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Reviewer Unassign",
+ "supportsTemplates": true,
+ "toRoleIds": [4096]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/REVISED_VERSION_NOTIFY",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "submitterName": "The full name of a user who uploaded a submission file",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent to the assigned editor when author uploads a revised version of an article.",
+ "emailTemplateKey": "REVISED_VERSION_NOTIFY",
+ "fromRoleIds": [-1],
+ "groupIds": ["review"],
+ "name": "Revised Version Notification",
+ "supportsTemplates": false,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_REVISIONS",
+ "dataDescriptions": {
+ "allReviewerComments": "All comments from completed reviews. Reviewer names are hidden for anonymous reviews",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author of a decision to requests revisions during peer review.",
+ "emailTemplateKey": "EDITOR_DECISION_REVISIONS",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Revisions Requested",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_SEND_TO_PRODUCTION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission is being sent to the production stage.",
+ "emailTemplateKey": "EDITOR_DECISION_SEND_TO_PRODUCTION",
+ "fromRoleIds": [17],
+ "groupIds": ["copyediting"],
+ "name": "Sent to Production",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_SEND_TO_EXTERNAL",
+ "dataDescriptions": [
+ {
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderName": "The full name of the sender",
+ "senderEmail": "The email address of the sender",
+ "signature": "The email signature of the sender",
+ "contactName": "The name of the journal's primary contact",
+ "contactEmail": "The email address of the journal's primary contact",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile.",
+ "journalName": "The journal's name",
+ "journalUrl": "The URL to the journal's homepage",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalAcronym": "the journal initials",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage."
+ },
+ {
+ "reviewTypeDescription": "A description of the default review method, such as double anonymous or open."
+ }
+ ],
+ "description": "This email notifies the author that their submission is being sent to the review stage.",
+ "emailTemplateKey": "EDITOR_DECISION_SEND_TO_EXTERNAL",
+ "fromRoleIds": [17],
+ "groupIds": ["submission"],
+ "name": "Sent to Review",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/STATISTICS_REPORT_NOTIFICATION",
+ "dataDescriptions": {
+ "acceptedSubmissions": "The number of accepted submissions",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "declinedSubmissions": "The number of declined submissions",
+ "editorialStatsLink": "The link to the editorial activity page",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "month": "The month of the report",
+ "newSubmissions": "The number of submissions received this month",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "publicationStatsLink": "The link to the published articles statistics page",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "skippedSubmissions": "The number of skipped submissions",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "totalSubmissions": "Th total number of submissions received",
+ "userProfileUrl": "The URL for a user to view and edit their profile.",
+ "year": "##emailTemplate.variable.statisticsReportNotify.year##"
+ },
+ "description": "This email is automatically sent monthly to editors and journal managers to provide them a system health overview.",
+ "emailTemplateKey": "STATISTICS_REPORT_NOTIFICATION",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Statistics Report Notification",
+ "supportsTemplates": false,
+ "toRoleIds": [17]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_ACCEPT",
+ "dataDescriptions": {
+ "allReviewerComments": "All comments from completed reviews. Reviewer names are hidden for anonymous reviews",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission has been accepted for publication.",
+ "emailTemplateKey": "EDITOR_DECISION_ACCEPT",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Submission Accepted",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_SKIP_REVIEW",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission is being sent directly to the copyediting stage and will not be peer reviewed.",
+ "emailTemplateKey": "EDITOR_DECISION_SKIP_REVIEW",
+ "fromRoleIds": [17],
+ "groupIds": ["submission"],
+ "name": "Submission Accepted (Without Review)",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBMISSION_ACK",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent to an author when they make a new submission. It should confirm that the submission was received and provide guidance on what they can expect next.",
+ "emailTemplateKey": "SUBMISSION_ACK",
+ "fromRoleIds": [-1],
+ "groupIds": ["submission"],
+ "name": "Submission Confirmation",
+ "supportsTemplates": false,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBMISSION_ACK_NOT_USER",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "submitterName": "The full name of a user who uploaded a submission file",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent to the authors named on a submission, other than the submitting author. It should inform them that they have been named as an author and provide a way for them to contact editorial staff with any concerns or corrections.",
+ "emailTemplateKey": "SUBMISSION_ACK_NOT_USER",
+ "fromRoleIds": [-1],
+ "groupIds": ["submission"],
+ "name": "Submission Confirmation (Other Authors)",
+ "supportsTemplates": false,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_DECLINE",
+ "dataDescriptions": {
+ "allReviewerComments": "All comments from completed reviews. Reviewer names are hidden for anonymous reviews",
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission has been declined after peer review.",
+ "emailTemplateKey": "EDITOR_DECISION_DECLINE",
+ "fromRoleIds": [17],
+ "groupIds": ["review"],
+ "name": "Submission Declined",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_INITIAL_DECLINE",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission is being declined, before the review stage, because the submission does not meet the requirements for publication in the journal.",
+ "emailTemplateKey": "EDITOR_DECISION_INITIAL_DECLINE",
+ "fromRoleIds": [17],
+ "groupIds": ["submission"],
+ "name": "Submission Declined (Pre-Review)",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_BACK_FROM_COPYEDITING",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission has been sent back from the copyediting stage.",
+ "emailTemplateKey": "EDITOR_DECISION_BACK_FROM_COPYEDITING",
+ "fromRoleIds": [17],
+ "groupIds": ["copyediting"],
+ "name": "Submission Sent Back from Copyediting",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/EDITOR_DECISION_BACK_FROM_PRODUCTION",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "decision": "The name of the decision that was taken.",
+ "decisionDescription": "A description of the decision that was taken.",
+ "decisionReviewRound": "The round of review this decision was taken in, if the decision is related to a review stage.",
+ "decisionStage": "The stage of the editorial workflow this decision was taken in.",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email notifies the author that their submission has been sent back to the copyediting stage.",
+ "emailTemplateKey": "EDITOR_DECISION_BACK_FROM_PRODUCTION",
+ "fromRoleIds": [17],
+ "groupIds": ["production"],
+ "name": "Submission Sent Back to Copyediting",
+ "supportsTemplates": true,
+ "toRoleIds": [65536]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_AFTER_EXPIRY",
+ "dataDescriptions": {
+ "expiryDate": "The date when the subscription ends",
+ "membership": "Information about the subscriber's membership",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "subscriberDetails": "The subscriber's name, affiliation, phone number and email address",
+ "subscriptionSignature": "The subscription manager's contact details",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This Email sent automatically to notify a subscriber that their subscription has expired",
+ "emailTemplateKey": "SUBSCRIPTION_AFTER_EXPIRY",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Subscription Expired",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_AFTER_EXPIRY_LAST",
+ "dataDescriptions": {
+ "expiryDate": "The date when the subscription ends",
+ "membership": "Information about the subscriber's membership",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "subscriberDetails": "The subscriber's name, affiliation, phone number and email address",
+ "subscriptionSignature": "The subscription manager's contact details",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email sent automatically to notify a subscriber the second time that their subscription has expired",
+ "emailTemplateKey": "SUBSCRIPTION_AFTER_EXPIRY_LAST",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Subscription Expired Last",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_BEFORE_EXPIRY",
+ "dataDescriptions": {
+ "expiryDate": "The date when the subscription ends",
+ "membership": "Information about the subscriber's membership",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "subscriberDetails": "The subscriber's name, affiliation, phone number and email address",
+ "subscriptionSignature": "The subscription manager's contact details",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email is sent automatically to notify a subscriber that their subscription expires soon.",
+ "emailTemplateKey": "SUBSCRIPTION_BEFORE_EXPIRY",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Subscription Expires Soon",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/SUBSCRIPTION_NOTIFY",
+ "dataDescriptions": {
+ "expiryDate": "The date when the subscription ends",
+ "membership": "Information about the subscriber's membership",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "subscriberDetails": "The subscriber's name, affiliation, phone number and email address",
+ "subscriptionSignature": "The subscription manager's contact details",
+ "subscriptionType": "A summary of the subscription's type, name, duration and cost",
+ "subscriptionUrl": "The URL to the subscription page"
+ },
+ "description": "This email notifies a registered reader that the Manager has created a subscription for them. It provides the journal's URL along with instructions for access.",
+ "emailTemplateKey": "SUBSCRIPTION_NOTIFY",
+ "fromRoleIds": [2097152],
+ "groupIds": ["other"],
+ "name": "Subscription Notify",
+ "supportsTemplates": false,
+ "toRoleIds": [1048576]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/USER_REGISTER",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "password": "New random user password",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "senderEmail": "The email address of the sender",
+ "senderName": "The full name of the sender",
+ "signature": "The email signature of the sender",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is sent to a newly created user when the editorial manager has created the user through the user settings. The email should welcome them to the system and provide them with a record of their username and password.",
+ "emailTemplateKey": "USER_REGISTER",
+ "fromRoleIds": [17],
+ "groupIds": ["other"],
+ "name": "User Created",
+ "supportsTemplates": false,
+ "toRoleIds": [17, 4097, 65536, 1048576, 4096, 2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/USER_VALIDATE_CONTEXT",
+ "dataDescriptions": {
+ "contactEmail": "The email address of the journal's primary contact",
+ "contactName": "The name of the journal's primary contact",
+ "journalAcronym": "the journal initials",
+ "journalName": "The journal's name",
+ "journalSignature": "The journal's email signature for automated emails",
+ "journalUrl": "The URL to the journal's homepage",
+ "mailingAddress": "The mailing address of the journal",
+ "passwordLostUrl": "The URL to a page where the user can recover a lost password",
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "submissionsUrl": "The URL to view all of a user's assigned submissions.",
+ "userProfileUrl": "The URL for a user to view and edit their profile."
+ },
+ "description": "This email is automatically sent to a new user when they register with the journal when the settings require the email address to be validated.",
+ "emailTemplateKey": "USER_VALIDATE_CONTEXT",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Validate Email (Journal Registration)",
+ "supportsTemplates": false,
+ "toRoleIds": [17, 4097, 65536, 1048576, 4096, 2097152]
+ },
+ {
+ "_href": "http://localhost:8000/pu/api/v1/mailables/USER_VALIDATE_SITE",
+ "dataDescriptions": {
+ "recipientName": "The full name of the recipient or all recipients",
+ "recipientUsername": "The username of the recipient or all recipients",
+ "siteContactEmail": "The email of the website's primary contact",
+ "siteContactName": "The full name of the website's primary contact",
+ "siteSignature": "The website's email signature for automated emails",
+ "siteTitle": "Name of the website when more than one journal is hosted"
+ },
+ "description": "This email is automatically sent to a new user when they register with the site when the settings require the email address to be validated.",
+ "emailTemplateKey": "USER_VALIDATE_SITE",
+ "fromRoleIds": [-1],
+ "groupIds": ["other"],
+ "name": "Validate Email (Site)",
+ "supportsTemplates": false,
+ "toRoleIds": [17, 4097, 65536, 1048576, 4096, 2097152]
+ }
+]
diff --git a/src/mocks/page.js b/src/mocks/page.js
new file mode 100644
index 000000000..1cbb9e12b
--- /dev/null
+++ b/src/mocks/page.js
@@ -0,0 +1,133 @@
+export default {
+ breadcrumbs: [
+ {
+ id: 'settings',
+ name: 'Settings',
+ url: 'http://example.org',
+ },
+ {
+ id: 'website',
+ name: 'Website',
+ },
+ ],
+ contexts: [
+ {
+ id: 1,
+ title: 'Journal of Public Knowledge',
+ url: 'http://example.org',
+ },
+ {
+ id: 2,
+ title: 'Recherche Bactériologique',
+ url: 'http://example.org',
+ },
+ {
+ id: 3,
+ title: 'الطب والأنثروبولوجيا',
+ url: 'http://example.org',
+ },
+ ],
+ currentLocale: 'en',
+ hasMultipleContexts: true,
+ isLoggedInAs: 'ccorino',
+ locales: [
+ {
+ key: 'en',
+ name: 'English',
+ },
+ {
+ key: 'fr_CA',
+ name: 'Français (Canada)',
+ },
+ {
+ key: 'ar',
+ name: 'العربية',
+ },
+ ],
+ menu: {
+ submissions: {
+ name: 'Submissions',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ issues: {
+ name: 'Issues',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ announcements: {
+ name: 'Announcements',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ subscriptions: {
+ name: 'Subscriptions',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ settings: {
+ name: 'Settings',
+ isCurrent: false,
+ submenu: {
+ context: {
+ name: 'Journal',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ website: {
+ name: 'Website',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ workflow: {
+ name: 'Workflow',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ distribution: {
+ name: 'Distribution',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ access: {
+ name: 'Users & Roles',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ },
+ },
+ stats: {
+ name: 'Stats',
+ isCurrent: false,
+ submenu: {
+ editorial: {
+ name: 'Editorial',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ publications: {
+ name: 'Publications',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ users: {
+ name: 'Users',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ },
+ },
+ tools: {
+ name: 'Tools',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ admin: {
+ name: 'Administration',
+ url: '#/component/Page',
+ isCurrent: false,
+ },
+ },
+ tasksUrl: '',
+ unreadTasksCount: 3,
+};
diff --git a/src/mocks/publication.js b/src/mocks/publication.js
new file mode 100644
index 000000000..ff05c85e1
--- /dev/null
+++ b/src/mocks/publication.js
@@ -0,0 +1,141 @@
+import authors from './authors';
+import doi from '@/docs/data/doi';
+
+export default {
+ _href:
+ 'https://httbin.org/publicknowledge/api/v1/submissions/17/publications/17',
+ abstract: {
+ en: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
',
+ fr_CA:
+ 'FR Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
',
+ },
+ accessStatus: 0,
+ authors: [...authors],
+ authorsString: 'Daniel Barnes, Dr. L. P. Ipsum',
+ authorsStringShort: 'Barnes, et al',
+ categoryIds: [2, 3],
+ citations: {
+ fr_CA: '',
+ en: '',
+ },
+ copyrightHolder: {
+ fr_CA: '',
+ en: '',
+ },
+ copyrightYear: null,
+ coverImage: {
+ fr_CA: null,
+ en: null,
+ },
+ coverage: {
+ fr_CA: '',
+ en: '',
+ },
+ datePublished: null,
+ disciplines: {
+ fr_CA: [],
+ en: [],
+ },
+ doiObject: {...doi},
+ fullTitle: {
+ en: 'The Lorem ipsum dolor sit amet: Excepteur sint occaecat cupidatat non proident',
+ fr_CA:
+ 'Le Frorem ipsum dolor sit amet: Frexcepteur sint occaecat cupidatat non proident',
+ },
+ galleys: [
+ {
+ fileId: 36,
+ id: 7,
+ isApproved: false,
+ label: 'PDF',
+ locale: 'en',
+ doiObject: {...doi},
+ publicationId: 17,
+ seq: 0,
+ urlPublished: 'http://...',
+ urlRemote: '',
+ },
+ {
+ fileId: null,
+ id: 8,
+ isApproved: false,
+ label: 'Remote',
+ locale: 'en',
+ doiObject: {...doi},
+ publicationId: 17,
+ seq: 1,
+ urlPublished: 'http://...',
+ urlRemote: 'http://google.com',
+ },
+ {
+ fileId: 37,
+ id: 9,
+ isApproved: false,
+ label: 'Supplementaru',
+ locale: 'en',
+ doiObject: {...doi},
+ publicationId: 17,
+ seq: 2,
+ urlPublished: 'http://...',
+ urlRemote: '',
+ },
+ ],
+ hideAuthor: null,
+ id: 17,
+ isPublished: false,
+ issueId: null,
+ keywords: {
+ en: ['new keyword', 'and second keyword'],
+ fr_CA: ['fr keyword one', 'fr keyword two'],
+ },
+ language: null,
+ lastModified: '2019-06-06 15:00:37',
+ licenseUrl: null,
+ locale: 'en',
+ pages: null,
+ prefix: {
+ fr_CA: 'Le',
+ en: 'The',
+ },
+ primaryContactId: 20,
+ 'pub-id::publisher-id': 'lorem-ipsum',
+ publicationDateType: 'pub',
+ publicationSummary: {
+ fr_CA: '',
+ en: '',
+ },
+ publicationType: 'publication',
+ rights: {
+ fr_CA: '',
+ en: '',
+ },
+ sectionId: 1,
+ seq: 0,
+ source: {
+ fr_CA: '',
+ en: '',
+ },
+ subjects: {
+ fr_CA: [],
+ en: [],
+ },
+ submissionId: 17,
+ subtitle: {
+ en: 'Excepteur sint occaecat cupidatat non proident',
+ fr_CA: 'Frexcepteur sint occaecat cupidatat non proident',
+ },
+ supportingAgencies: {
+ fr_CA: [],
+ en: [],
+ },
+ title: {
+ en: 'Lorem ipsum dolor sit amet',
+ fr_CA: 'Frorem ipsum dolor sit amet',
+ },
+ type: {
+ fr_CA: '',
+ en: '',
+ },
+ urlPublished:
+ 'https://httbin.org/publicknowledge/article/view/lorem-ipsum/version/17',
+};
diff --git a/src/mocks/reviewAssignment.js b/src/mocks/reviewAssignment.js
new file mode 100644
index 000000000..c85d5aeee
--- /dev/null
+++ b/src/mocks/reviewAssignment.js
@@ -0,0 +1,10 @@
+export default {
+ due: '2019-07-23',
+ id: 14,
+ isCurrentUserAssigned: false,
+ responseDue: '2019-07-23',
+ round: 1,
+ roundId: 15,
+ status: 'Waiting for a response from the reviewer.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE,
+};
diff --git a/src/mocks/reviewRound.js b/src/mocks/reviewRound.js
new file mode 100644
index 000000000..9328f700d
--- /dev/null
+++ b/src/mocks/reviewRound.js
@@ -0,0 +1,7 @@
+export default {
+ id: 1,
+ round: 1,
+ stageId: 3,
+ status: 'Waiting for reviewers to be selected.',
+ statusId: pkp.const.REVIEW_ROUND_STATUS_PENDING_REVIEWERS,
+};
diff --git a/src/mocks/reviewer.js b/src/mocks/reviewer.js
new file mode 100644
index 000000000..4b844d12b
--- /dev/null
+++ b/src/mocks/reviewer.js
@@ -0,0 +1,56 @@
+export default {
+ id: 1,
+ _href: 'http://publicknowledgeprojects.org/journal/api/users/1',
+ userName: 'exampleuser',
+ fullName: 'Jane Doe',
+ affiliation: {
+ en: 'University of Nowhere',
+ },
+ groups: [
+ {
+ id: 1,
+ name: {
+ en: 'Reviewer',
+ },
+ abbrev: {
+ en: 'RV',
+ },
+ roleId: 4096, // reviewer
+ showTitle: true,
+ permitSelfRegistration: true,
+ recommendOnly: true,
+ },
+ ],
+ interests: [
+ {
+ id: 123,
+ interest: 'cat',
+ },
+ {
+ id: 124,
+ interest: 'dog',
+ },
+ {
+ id: 125,
+ interest: 'fish',
+ },
+ {
+ id: 126,
+ interest: 'bear',
+ },
+ {
+ id: 127,
+ interest: 'alien',
+ },
+ ],
+ reviewsActive: 2,
+ reviewsCompleted: 1,
+ averageReviewCompletionDays: 21,
+ dateLastReviewAssignment: '2023-02-03 11:22:42',
+ reviewsDeclined: 0,
+ reviewsCancelled: 0,
+ reviewerRating: 4,
+ orcid: '',
+ disabled: false,
+ biography: {},
+};
diff --git a/src/mocks/submission.js b/src/mocks/submission.js
new file mode 100644
index 000000000..588a99502
--- /dev/null
+++ b/src/mocks/submission.js
@@ -0,0 +1,70 @@
+import publication from './publication';
+
+export default {
+ _href: 'https://httbin.org/publicknowledge/api/v1/submissions/1',
+ contextId: 1,
+ currentPublicationId: 17,
+ dateLastActivity: '2019-06-25 16:52:47',
+ dateSubmitted: '2019-05-30 12:28:18',
+ id: 1,
+ lastModified: '2019-06-25 16:40:29',
+ publications: [{...publication}],
+ reviewAssignments: [],
+ reviewRounds: [],
+ sectionId: 1,
+ stageId: 1,
+ stageName: 'Desk Review',
+ stages: [
+ {
+ id: 1,
+ label: 'Submission',
+ isActiveStage: true,
+ queries: [],
+ currentUserAssignedRoles: [],
+ files: {
+ count: 0,
+ },
+ },
+ {
+ id: 3,
+ label: 'Review',
+ isActiveStage: false,
+ queries: [],
+ currentUserAssignedRoles: [],
+ status: 'Waiting for reviewers to be selected',
+ statusId: 6,
+ files: {
+ count: 0,
+ },
+ currentUserCanRecommendOnly: false,
+ },
+ {
+ id: 4,
+ label: 'Copyediting',
+ isActiveStage: false,
+ queries: [],
+ currentUserAssignedRoles: [],
+ files: {
+ count: 0,
+ },
+ },
+ {
+ id: 5,
+ label: 'Production',
+ isActiveStage: false,
+ queries: [],
+ currentUserAssignedRoles: [],
+ files: {
+ count: 0,
+ },
+ },
+ ],
+ status: 1,
+ statusLabel: 'Queued',
+ submissionProgress: '',
+ urlAuthorWorkflow:
+ 'https://httbin.org/publicknowledge/authorDashboard/submission/1',
+ urlEditorialWorkflow: 'https://httbin.org/publicknowledge/workflow/access/1',
+ urlPublished: 'https://httbin.org/publicknowledge/article/view/1',
+ urlWorkflow: 'https://httbin.org/publicknowledge/workflow/access/1',
+};
diff --git a/src/mocks/submissionFiles.js b/src/mocks/submissionFiles.js
new file mode 100644
index 000000000..5d13f5f8b
--- /dev/null
+++ b/src/mocks/submissionFiles.js
@@ -0,0 +1,57 @@
+export default [
+ {
+ id: 232,
+ fileId: 1232,
+ name: {
+ en: 'influence-lactation-final-v2-edited-final.docx',
+ fr_CA: 'french-influence-lactation-final-v2-edited-final.docx',
+ },
+ genreId: 1,
+ genreName: {
+ en: 'Book Manuscript',
+ fr_CA: 'FR Book Manuscript',
+ },
+ genreIsDependent: false,
+ genreIsSupplementary: false,
+ documentType: 'word',
+ description: '',
+ url: 'https://example.com/publicknowledge/$$$call$$$/api/file/file-api/download-file?id=232&submissionId=22&stageId=2',
+ },
+ {
+ id: 233,
+ fileId: 1233,
+ name: {
+ en: 'ccorino-disclosure-statement.docx',
+ fr_CA: 'french-ccorino-disclosure-statement.docx',
+ },
+ genreId: 1,
+ genreName: {
+ en: 'Other',
+ fr_CA: 'FR Other',
+ },
+ genreIsDependent: false,
+ genreIsSupplementary: true,
+ documentType: 'word',
+ description:
+ 'This document details the sources of funding we received to support this research.',
+ url: 'https://example.com/publicknowledge/$$$call$$$/api/file/file-api/download-file?id=233&submissionId=22&stageId=2',
+ },
+ {
+ id: 234,
+ fileId: 1234,
+ name: {
+ en: 'influence-lactation-dataset-approved.xls',
+ fr_CA: 'french-influence-lactation-dataset-approved.xls',
+ },
+ genreId: 1,
+ genreName: {
+ en: 'Dataset',
+ fr_CA: 'FR Dataset',
+ },
+ genreIsDependent: false,
+ genreIsSupplementary: true,
+ documentType: 'excel',
+ description: '',
+ url: 'https://example.com/publicknowledge/$$$call$$$/api/file/file-api/download-file?id=234&submissionId=22&stageId=2',
+ },
+];
diff --git a/src/mocks/submissions.js b/src/mocks/submissions.js
new file mode 100644
index 000000000..709b91163
--- /dev/null
+++ b/src/mocks/submissions.js
@@ -0,0 +1,288 @@
+import doi from './doi';
+import reviewAssignment from './reviewAssignment';
+import submission from './submission';
+
+const reviewRound = {
+ id: 1,
+ round: 1,
+ stageId: 3,
+ statusId: 1,
+ status: 'Example status',
+};
+
+let submissions = [
+ submission,
+ {
+ ...submission,
+ id: 2,
+ currentPublicationId: 22,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 22,
+ authorsString: 'Catherine Kwantes',
+ authorsStringShort: 'Kwantes',
+ doiObject: {
+ ...doi,
+ status: 4,
+ crossref_batchId: '_123456',
+ crossref_failedMsg: 'This is a sample failure message',
+ },
+ fullTitle: {
+ en: 'Quisque vel ultrices ut vel sollicitudin vel varius suscipit phasellus',
+ },
+ isPublished: true,
+ },
+ ],
+ sectionId: 2,
+ stageId: 1,
+ stageName: 'Desk Review',
+ status: 3,
+ },
+ {
+ ...submission,
+ id: 3,
+ currentPublicationId: 45,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 45,
+ authorsString: 'Domatilia Sokoloff',
+ authorsStringShort: 'Sokoloff',
+ fullTitle: {
+ en: 'Metus ut elit est ultrices vivamus mauris est quisque arcu',
+ },
+ },
+ ],
+ reviewRounds: [{...reviewRound}],
+ stageId: 3,
+ stageName: 'Review',
+ },
+ {
+ ...submission,
+ id: 4,
+ currentPublicationId: 87,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 87,
+ authors: [],
+ authorsString: '',
+ authorsStringShort: '',
+ fullTitle: {
+ en: 'Submission title when current user is assigned as reviewer and editor',
+ },
+ },
+ ],
+ reviewAssignments: [
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2017-01-01',
+ isCurrentUserAssigned: true,
+ status: 'The reviewer has missed the response due date.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE,
+ },
+ ],
+ reviewRounds: [{...reviewRound}],
+ stageId: 3,
+ stageName: 'Review',
+ },
+ {
+ ...submission,
+ id: 5,
+ currentPublicationId: 12,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 12,
+ authorsString: 'Convallis Tellus',
+ authorsStringShort: 'Tellus',
+ fullTitle: {
+ en: 'Scelerisque felis imperdiet proin fermentum: Pretium quam vulputate dignissim suspendisse in est',
+ },
+ },
+ ],
+ reviewAssignments: [
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2024-12-05',
+ status: 'Waiting for a response from the reviewer.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE,
+ },
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2024-12-05',
+ status: 'The reviewer has submitted their review.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_RECEIVED,
+ },
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2024-12-05',
+ status: 'The reviewer has submitted their review.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_RECEIVED,
+ },
+ ],
+ reviewRounds: [
+ {...reviewRound},
+ {
+ ...reviewRound,
+ round: 2,
+ },
+ ],
+ sectionId: 2,
+ stageId: 3,
+ stageName: 'Review',
+ },
+ {
+ ...submission,
+ id: 6,
+ currentPublicationId: 71,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 71,
+ authorsString: 'Curabitur Eget',
+ authorsStringShort: 'Eget',
+ fullTitle: {
+ en: 'Mi eget mauris pharetra et ultrices neque ornare aenean',
+ },
+ },
+ ],
+ reviewAssignments: [
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2024-12-05',
+ status: 'The reviewer has submitted their review.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_RECEIVED,
+ },
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2024-12-05',
+ status: 'The reviewer has submitted their review.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_RECEIVED,
+ },
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2024-12-05',
+ status: 'The reviewer has submitted their review.',
+ statusId: pkp.const.REVIEW_ROUND_STATUS_REVIEWS_COMPLETED,
+ },
+ ],
+ reviewRounds: [{...reviewRound}],
+ stageId: 3,
+ stageName: 'Review',
+ },
+ {
+ ...submission,
+ id: 7,
+ currentPublicationId: 123,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 123,
+ authorsString: 'Sed Aenean',
+ authorsStringShort: 'Aenean',
+ fullTitle: {
+ en: 'Sed sed mattis amet eget aenean leo est nam sit',
+ },
+ },
+ ],
+ stageId: 4,
+ stageName: 'Copyediting',
+ },
+ {
+ ...submission,
+ id: 8,
+ currentPublicationId: 872,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 872,
+ authorsString: 'Lacus Agittis',
+ authorsStringShort: 'Agittis',
+ fullTitle: {
+ en: 'Lacus ut leo dolor nam neque nam dolor aenean sagittis',
+ },
+ },
+ ],
+ stageId: 5,
+ stageName: 'Production',
+ },
+ {
+ ...submission,
+ id: 9,
+ currentPublicationId: 321,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 321,
+ authorsString: 'Ullamco Excepteur',
+ authorsStringShort: 'Excepteur',
+ fullTitle: {
+ en: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur',
+ },
+ },
+ ],
+ reviewAssignments: [
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2017-01-01',
+ status: 'The reviewer has missed the response due date.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE,
+ },
+ ],
+ reviewRounds: [{...reviewRound}],
+ stageId: 3,
+ stageName: 'Review',
+ },
+ {
+ ...submission,
+ id: 10,
+ currentPublicationId: 87,
+ publications: [
+ {
+ ...submission.publications[0],
+ id: 87,
+ authors: [],
+ authorsString: '',
+ authorsStringShort: '',
+ fullTitle: {
+ en: 'Submission title when current user has completed a review',
+ },
+ },
+ ],
+ reviewAssignments: [
+ {
+ ...reviewAssignment,
+ due: '2025-12-05',
+ responseDue: '2017-01-01',
+ isCurrentUserAssigned: true,
+ status: 'This review has been completed.',
+ statusId: pkp.const.REVIEW_ASSIGNMENT_STATUS_COMPLETE,
+ },
+ ],
+ reviewRounds: [{...reviewRound}],
+ sectionId: 2,
+ stageId: 3,
+ stageName: 'Review',
+ },
+];
+
+submissions = submissions.map((s) => {
+ s.daysInStage = Math.floor(Math.random() * (200 - 0 + 1));
+ s.urlAuthorWorkflow = s.urlAuthorWorkflow.replace('1', s.id);
+ s.urlEditorialWorkflow = s.urlEditorialWorkflow.replace('1', s.id);
+ s.urlPublished = s.urlPublished.replace('1', s.id);
+ s.urlWorkflow = s.urlWorkflow.replace('1', s.id);
+ return s;
+});
+
+export default submissions;
diff --git a/src/pages/example/ExamplePage.mdx b/src/pages/example/ExamplePage.mdx
index 8530cabe0..cf79866f0 100644
--- a/src/pages/example/ExamplePage.mdx
+++ b/src/pages/example/ExamplePage.mdx
@@ -1,3 +1,9 @@
+import {Primary, Controls, Stories, Meta, ArgTypes} from '@storybook/blocks';
+
+import * as ExamplePageStories from './ExamplePage.stories.js';
+
+
+
# Example page
These principles applies for version 3.5 and higher, when building new pages or making significant changes to existing ones.
@@ -33,7 +39,9 @@ State management is intentionally done via [pinia store](../?path=/docs/guide-vu
## Server side configuration
-On initial page load, there is still opportunity to pass JS object from PHP to the Vue.js.
+On initial page load, there is still opportunity to pass JS object from PHP to the Vue.js. Best is to express individual items as props, so it can be easily displayed in storybook and its well documented:
+
+
This might include things like:
diff --git a/src/pages/example/ExamplePage.stories.js b/src/pages/example/ExamplePage.stories.js
index 88c6db88e..f1a6c01ef 100644
--- a/src/pages/example/ExamplePage.stories.js
+++ b/src/pages/example/ExamplePage.stories.js
@@ -1,8 +1,6 @@
import ExamplePage from './ExamplePage.vue';
import SubmissionsMock from './mocks/submissions25';
-import {rest} from 'msw';
-
-const delay = (time) => new Promise((resolve) => setTimeout(resolve, time));
+import {http, HttpResponse, delay} from 'msw';
export default {
title: 'Pages/Example',
@@ -15,7 +13,7 @@ export const ExamplePage1 = {
setup() {
return {args};
},
- template: '',
+ template: '',
}),
args: {
pageInitConfig: {
@@ -26,12 +24,12 @@ export const ExamplePage1 = {
parameters: {
msw: {
handlers: [
- rest.get(
+ http.get(
'https://mock/index.php/publicknowledge/api/v1/_submissions',
- async (req, res, ctx) => {
+ async (r) => {
await delay(500);
- return res(ctx.json(SubmissionsMock));
+ return HttpResponse.json(SubmissionsMock);
},
),
],
diff --git a/src/pages/example/ExamplePage.vue b/src/pages/example/ExamplePage.vue
index e01470431..258f39e9f 100644
--- a/src/pages/example/ExamplePage.vue
+++ b/src/pages/example/ExamplePage.vue
@@ -5,29 +5,20 @@