From 28a2618270a3fc11ca36d4debf8f13f1b817fbb3 Mon Sep 17 00:00:00 2001 From: Sebastian Mihalache <sebastian.mihalache@gmail.con> Date: Thu, 17 May 2018 10:41:15 +0300 Subject: [PATCH] feat(component-mail-service): refactor email templates --- .../src/helpers/Collection.js | 2 +- .../src/helpers/Invitation.js | 37 +- packages/component-invite/src/helpers/User.js | 42 +- .../routes/collectionsInvitations/decline.js | 1 + .../routes/collectionsInvitations/delete.js | 8 +- .../routes/collectionsInvitations/patch.js | 26 +- .../src/routes/collectionsInvitations/post.js | 11 +- .../collectionsInvitations/decline.test.js | 2 +- .../collectionsInvitations/delete.test.js | 2 +- .../collectionsInvitations/patch.test.js | 7 +- .../tests/collectionsInvitations/post.test.js | 7 +- packages/component-mail-service/src/Mail.js | 498 ++++++++++-------- .../src/helpers/helpers.js | 108 +++- .../src/templates/add-author.html | 235 --------- .../src/templates/add-author.txt | 7 - .../src/templates/agree.html | 232 -------- .../src/templates/agree.txt | 6 - .../src/templates/assign-handling-editor.html | 232 -------- .../src/templates/assign-handling-editor.txt | 6 - .../src/templates/decline.txt | 6 - .../templates/handling-editor-declined.txt | 6 - .../src/templates/invitation.html | 5 + .../src/templates/invite-author.html | 234 -------- .../src/templates/invite-author.txt | 7 - .../src/templates/invite-reviewer.html | 358 ------------- .../src/templates/invite-reviewer.txt | 33 -- .../src/templates/invite.html | 234 -------- .../src/templates/invite.txt | 7 - .../src/templates/noCTA.html | 3 + .../src/templates/notification.html | 3 + .../src/templates/partials/footer.hbs | 36 ++ .../header.hbs} | 54 +- .../templates/partials/invitationButtons.hbs | 88 ++++ .../invitationHeader.hbs} | 54 +- .../partials/invitationLowerContent.hbs | 18 + .../partials/invitationUpperContent.hbs | 13 + .../src/templates/partials/mainBody.hbs | 10 + .../src/templates/partials/mainButton.hbs | 19 + .../src/templates/partials/manuscriptData.hbs | 15 + .../partials/manuscriptDetailsLink.hbs | 1 + .../templates/partials/notificationBody.hbs | 18 + .../notificationHeader.hbs} | 54 +- .../src/templates/partials/signature.hbs | 5 + .../src/templates/resend-reviewer.html | 335 ------------ .../src/templates/resend-reviewer.txt | 20 - .../src/templates/review-submitted.html | 222 -------- .../src/templates/review-submitted.txt | 6 - .../src/templates/reviewer-agreed.html | 224 -------- .../src/templates/reviewer-agreed.txt | 6 - .../src/templates/reviewer-declined.html | 219 -------- .../src/templates/reviewer-declined.txt | 6 - .../src/templates/revoke-handling-editor.txt | 4 - .../src/templates/simpleCTA.html | 4 + .../src/templates/unassign-reviewer.html | 220 -------- .../src/templates/unassign-reviewer.txt | 4 - .../src/helpers/Collection.js | 7 +- .../src/helpers/User.js | 7 +- .../src/tests/collectionsUsers/patch.test.js | 5 +- .../src/tests/collectionsUsers/post.test.js | 4 +- 59 files changed, 720 insertions(+), 3323 deletions(-) delete mode 100644 packages/component-mail-service/src/templates/add-author.html delete mode 100644 packages/component-mail-service/src/templates/add-author.txt delete mode 100644 packages/component-mail-service/src/templates/agree.html delete mode 100644 packages/component-mail-service/src/templates/agree.txt delete mode 100644 packages/component-mail-service/src/templates/assign-handling-editor.html delete mode 100644 packages/component-mail-service/src/templates/assign-handling-editor.txt delete mode 100644 packages/component-mail-service/src/templates/decline.txt delete mode 100644 packages/component-mail-service/src/templates/handling-editor-declined.txt create mode 100644 packages/component-mail-service/src/templates/invitation.html delete mode 100644 packages/component-mail-service/src/templates/invite-author.html delete mode 100644 packages/component-mail-service/src/templates/invite-author.txt delete mode 100644 packages/component-mail-service/src/templates/invite-reviewer.html delete mode 100644 packages/component-mail-service/src/templates/invite-reviewer.txt delete mode 100644 packages/component-mail-service/src/templates/invite.html delete mode 100644 packages/component-mail-service/src/templates/invite.txt create mode 100644 packages/component-mail-service/src/templates/noCTA.html create mode 100644 packages/component-mail-service/src/templates/notification.html create mode 100644 packages/component-mail-service/src/templates/partials/footer.hbs rename packages/component-mail-service/src/templates/{revoke-handling-editor.html => partials/header.hbs} (67%) create mode 100644 packages/component-mail-service/src/templates/partials/invitationButtons.hbs rename packages/component-mail-service/src/templates/{handling-editor-declined.html => partials/invitationHeader.hbs} (64%) create mode 100644 packages/component-mail-service/src/templates/partials/invitationLowerContent.hbs create mode 100644 packages/component-mail-service/src/templates/partials/invitationUpperContent.hbs create mode 100644 packages/component-mail-service/src/templates/partials/mainBody.hbs create mode 100644 packages/component-mail-service/src/templates/partials/mainButton.hbs create mode 100644 packages/component-mail-service/src/templates/partials/manuscriptData.hbs create mode 100644 packages/component-mail-service/src/templates/partials/manuscriptDetailsLink.hbs create mode 100644 packages/component-mail-service/src/templates/partials/notificationBody.hbs rename packages/component-mail-service/src/templates/{decline.html => partials/notificationHeader.hbs} (64%) create mode 100644 packages/component-mail-service/src/templates/partials/signature.hbs delete mode 100644 packages/component-mail-service/src/templates/resend-reviewer.html delete mode 100644 packages/component-mail-service/src/templates/resend-reviewer.txt delete mode 100644 packages/component-mail-service/src/templates/review-submitted.html delete mode 100644 packages/component-mail-service/src/templates/review-submitted.txt delete mode 100644 packages/component-mail-service/src/templates/reviewer-agreed.html delete mode 100644 packages/component-mail-service/src/templates/reviewer-agreed.txt delete mode 100644 packages/component-mail-service/src/templates/reviewer-declined.html delete mode 100644 packages/component-mail-service/src/templates/reviewer-declined.txt delete mode 100644 packages/component-mail-service/src/templates/revoke-handling-editor.txt create mode 100644 packages/component-mail-service/src/templates/simpleCTA.html delete mode 100644 packages/component-mail-service/src/templates/unassign-reviewer.html delete mode 100644 packages/component-mail-service/src/templates/unassign-reviewer.txt diff --git a/packages/component-invite/src/helpers/Collection.js b/packages/component-invite/src/helpers/Collection.js index 0fdd02e43..d04841fc2 100644 --- a/packages/component-invite/src/helpers/Collection.js +++ b/packages/component-invite/src/helpers/Collection.js @@ -42,7 +42,7 @@ const getFragmentAndAuthorData = async ({ const authorName = `${author.firstName} ${author.lastName}` const authorsPromises = authors.map(async author => { const user = await UserModel.find(author.userId) - return `${user.firstName} ${user.lastName}` + return ` ${user.firstName} ${user.lastName}` }) const authorsList = await Promise.all(authorsPromises) const { id } = fragment diff --git a/packages/component-invite/src/helpers/Invitation.js b/packages/component-invite/src/helpers/Invitation.js index 00b39f0cb..c543f1f54 100644 --- a/packages/component-invite/src/helpers/Invitation.js +++ b/packages/component-invite/src/helpers/Invitation.js @@ -56,27 +56,30 @@ const setupReviewerInvitation = async ({ }) const params = { - invitedUser: user, + user, baseUrl, - collection: { - id: collection.id, - authorName, - handlingEditor: collection.handlingEditor, - }, subject: `${collection.customId}: Review Requested`, - fragment: { - id, - title, - abstract, - authors: authorsList, - }, - invitation: { - id: invitationId, - timestamp, + toEmail: user.email, + meta: { + fragment: { + id, + title, + abstract, + authors: authorsList, + }, + invitation: { + id: invitationId, + timestamp, + }, + collection: { + id: collection.id, + authorName, + handlingEditor: collection.handlingEditor, + }, }, - resend, + emailType: resend ? 'resend-reviewer' : 'invite-reviewer', } - await mailService.setupReviewerInvitationEmail(params) + await mailService.sendReviewerInvitationEmail(params) } const getInvitation = (invitations = [], userId, role) => diff --git a/packages/component-invite/src/helpers/User.js b/packages/component-invite/src/helpers/User.js index 39d348fb7..e27e06848 100644 --- a/packages/component-invite/src/helpers/User.js +++ b/packages/component-invite/src/helpers/User.js @@ -25,7 +25,12 @@ const setupNewUser = async ( try { if (role !== 'reviewer') { - await mailService.setupInviteEmail(newUser, invitationType, url) + await mailService.sendSimpleEmail({ + toEmail: newUser.email, + user: newUser, + emailType: invitationType, + dashboardUrl: url, + }) } return newUser @@ -46,7 +51,7 @@ const setupReviewerDecisionEmailData = async ({ UserModel, FragmentModel, collection, - reviewerName, + user, mailService, agree, timestamp = Date.now(), @@ -62,15 +67,18 @@ const setupReviewerDecisionEmailData = async ({ }) const eic = await getEditorInChief(UserModel) const toEmail = collection.handlingEditor.email - await mailService.setupReviewerDecisionEmail({ + await mailService.sendNotificationEmail({ toEmail, - reviewerName, - collection, - eicName: `${eic.firstName} ${eic.lastName}`, - baseUrl, - fragment: { id, title, authorName }, - agree, - timestamp, + user, + emailType: agree ? 'reviewer-agreed' : 'reviewer-declined', + meta: { + collection: { customId: collection.customId, id: collection.id }, + fragment: { id, title, authorName }, + handlingEditorName: collection.handlingEditor.name, + baseUrl, + eicName: `${eic.firstName} ${eic.lastName}`, + timestamp, + }, }) } @@ -89,12 +97,16 @@ const setupReviewerUnassignEmail = async ({ }, ) - await mailService.setupReviewerUnassignEmail( + await mailService.sendNotificationEmail({ + toEmail: user.email, user, - collection, - title, - authorName, - ) + emailType: 'unassign-reviewer', + meta: { + collection: { customId: collection.customId }, + fragment: { title, authorName }, + handlingEditorName: collection.handlingEditor.name, + }, + }) } module.exports = { diff --git a/packages/component-invite/src/routes/collectionsInvitations/decline.js b/packages/component-invite/src/routes/collectionsInvitations/decline.js index 2143b943b..fc88ffe4f 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/decline.js +++ b/packages/component-invite/src/routes/collectionsInvitations/decline.js @@ -45,6 +45,7 @@ module.exports = models => async (req, res) => { reviewerName: `${user.firstName} ${user.lastName}`, mailService, agree: false, + user, }) } catch (e) { const notFoundError = await helpers.handleNotFoundError(e, 'item') diff --git a/packages/component-invite/src/routes/collectionsInvitations/delete.js b/packages/component-invite/src/routes/collectionsInvitations/delete.js index 71330dc93..d1640d5d7 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/delete.js +++ b/packages/component-invite/src/routes/collectionsInvitations/delete.js @@ -54,10 +54,10 @@ module.exports = models => async (req, res) => { await user.save() try { if (invitation.role === 'handlingEditor') { - await mailService.setupRevokeInvitationEmail( - user.email, - 'revoke-handling-editor', - ) + await mailService.sendSimpleEmail({ + toEmail: user.email, + emailType: 'revoke-handling-editor', + }) } else if (invitation.role === 'reviewer') { await userHelper.setupReviewerUnassignEmail({ UserModel: models.User, diff --git a/packages/component-invite/src/routes/collectionsInvitations/patch.js b/packages/component-invite/src/routes/collectionsInvitations/patch.js index 90de7caa8..c8cd85572 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/patch.js +++ b/packages/component-invite/src/routes/collectionsInvitations/patch.js @@ -58,18 +58,21 @@ module.exports = models => async (req, res) => { await collection.save() try { if (invitation.role === 'handlingEditor') - await mailService.setupAgreeEmail( + await mailService.sendSimpleEmail({ toEmail, user, - invitation.role, - `${req.protocol}://${req.get('host')}`, - collection.customId, - ) + emailType: 'handling-editor-agreed', + dashboardUrl: `${req.protocol}://${req.get('host')}`, + meta: { + collectionId: collection.customId, + }, + }) if (invitation.role === 'reviewer') await userHelper.setupReviewerDecisionEmailData({ ...params, agree: true, timestamp: invitation.respondedOn, + user, }) return res.status(200).json(invitation) } catch (e) { @@ -92,18 +95,21 @@ module.exports = models => async (req, res) => { } try { if (invitation.role === 'handlingEditor') { - await mailService.setupDeclineEmail( + await mailService.sendSimpleEmail({ toEmail, user, - 'handling-editor-declined', - collection.customId, - reason, - ) + emailType: 'handling-editor-declined', + meta: { + reason, + collectionId: collection.customId, + }, + }) } else if (invitation.role === 'reviewer') { await collectionHelper.updateReviewerCollectionStatus(collection) await userHelper.setupReviewerDecisionEmailData({ ...params, agree: false, + user, }) } } catch (e) { diff --git a/packages/component-invite/src/routes/collectionsInvitations/post.js b/packages/component-invite/src/routes/collectionsInvitations/post.js index 29aac5780..8f21d2c11 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/post.js +++ b/packages/component-invite/src/routes/collectionsInvitations/post.js @@ -108,11 +108,12 @@ module.exports = models => async (req, res) => { invitation.invitedOn = Date.now() await collection.save() await collectionHelper.addHandlingEditor(collection, user, invitation) - await mailService.setupAssignEmail( - user.email, - 'assign-handling-editor', - baseUrl, - ) + await mailService.sendSimpleEmail({ + toEmail: user.email, + user, + emailType: 'assign-handling-editor', + dashboardUrl: baseUrl, + }) } return res.status(200).json(invitation) } catch (e) { diff --git a/packages/component-invite/src/tests/collectionsInvitations/decline.test.js b/packages/component-invite/src/tests/collectionsInvitations/decline.test.js index 6084ad2a0..562c3d929 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/decline.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/decline.test.js @@ -7,7 +7,7 @@ const Model = require('./../helpers/Model') const cloneDeep = require('lodash/cloneDeep') jest.mock('pubsweet-component-mail-service', () => ({ - setupReviewerDecisionEmail: jest.fn(), + sendNotificationEmail: jest.fn(), })) const reqBody = { diff --git a/packages/component-invite/src/tests/collectionsInvitations/delete.test.js b/packages/component-invite/src/tests/collectionsInvitations/delete.test.js index a59e8437f..4e6594490 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/delete.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/delete.test.js @@ -7,7 +7,7 @@ const fixtures = require('./../fixtures/fixtures') const requests = require('./../helpers/requests') jest.mock('pubsweet-component-mail-service', () => ({ - setupRevokeInvitationEmail: jest.fn(), + sendSimpleEmail: jest.fn(), })) const path = '../../routes/collectionsInvitations/delete' diff --git a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js index 6aba43fb3..129b791c2 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js @@ -7,10 +7,9 @@ const Model = require('./../helpers/Model') const cloneDeep = require('lodash/cloneDeep') jest.mock('pubsweet-component-mail-service', () => ({ - setupAssignEmail: jest.fn(), - setupAgreeEmail: jest.fn(), - setupDeclineEmail: jest.fn(), - setupReviewerDecisionEmail: jest.fn(), + sendSimpleEmail: jest.fn(), + sendNotificationEmail: jest.fn(), + sendReviewerInvitationEmail: jest.fn(), })) const reqBody = { diff --git a/packages/component-invite/src/tests/collectionsInvitations/post.test.js b/packages/component-invite/src/tests/collectionsInvitations/post.test.js index 4d1e3bc51..53eda4a07 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/post.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/post.test.js @@ -12,10 +12,9 @@ const requests = require('./../helpers/requests') const configRoles = config.get('roles') jest.mock('pubsweet-component-mail-service', () => ({ - setupInviteEmail: jest.fn(), - setupAssignEmail: jest.fn(), - setupDeclineEmail: jest.fn(), - setupReviewerInvitationEmail: jest.fn(), + sendSimpleEmail: jest.fn(), + sendNotificationEmail: jest.fn(), + sendReviewerInvitationEmail: jest.fn(), })) const chance = new Chance() const roles = configRoles.collection diff --git a/packages/component-mail-service/src/Mail.js b/packages/component-mail-service/src/Mail.js index 715bccacc..5ad454da2 100644 --- a/packages/component-mail-service/src/Mail.js +++ b/packages/component-mail-service/src/Mail.js @@ -6,104 +6,123 @@ const resetPasswordPath = config.get('invite-reviewer.url') const resetPath = config.get('invite-reset-password.url') module.exports = { - setupInviteEmail: async (user, emailType, inviteUrl) => { - const replacements = { - url: helpers.createUrl(inviteUrl, resetPath, { - email: user.email, - token: user.passwordResetToken, - firstName: user.firstName, - lastName: user.lastName, - affiliation: user.affiliation, - title: user.title, - }), - } - - const { htmlBody, textBody } = helpers.getEmailBody(emailType, replacements) - const mailData = { - from: config.get('mailer.from'), - to: user.email, - subject: 'Hindawi Invitation', - text: textBody, - html: htmlBody, - } - - return Email.send(mailData) - }, - setupAssignEmail: async (email, emailType, dashBoardUrl) => { - let subject - let replacements = {} + sendSimpleEmail: async ({ + toEmail, + user, + emailType, + dashboardUrl, + meta = {}, + }) => { + let subject, textBody + let emailTemplate = 'simpleCTA' + const replacements = {} switch (emailType) { case 'assign-handling-editor': subject = 'Hindawi Handling Editor Invitation' - replacements = { - url: dashBoardUrl, - } + replacements.headline = + 'You have been assigned as a Handling Editor to a manuscript.' + replacements.paragraph = + 'Please click on the link below to access your dashboard.' + replacements.previewText = 'An Editor in Chief has assinged you' + replacements.buttonText = 'VIEW DASHBOARD' + replacements.url = dashboardUrl + textBody = `${replacements.headline} ${replacements.paragraph} ${ + replacements.url + } ${replacements.buttonText}` break case 'add-author': subject = 'Manuscript Assignment on Hindawi' - replacements = { - url: dashBoardUrl, - } + replacements.headline = + 'You have been assigned as an Author to a manuscript.' + replacements.paragraph = + "The manuscript will become visible on your dashboard once it's submitted. Please click on the link below to access your dashboard." + replacements.previewText = 'You are now an author' + replacements.buttonText = 'VIEW DASHBOARD' + replacements.url = dashboardUrl + textBody = `${replacements.headline} ${replacements.paragraph} ${ + replacements.url + } ${replacements.buttonText}` break - case 'invite-reviewer': - subject = 'Review Request' - replacements = { - url: dashBoardUrl, - } + case 'invite-author': + subject = 'Hindawi Invitation' + replacements.headline = + 'You have been invited as an Author to a manuscript.' + replacements.paragraph = + "The manuscript will be visible on your dashboard once it's submitted. Please confirm your account and set your account details by clicking on the link below." + replacements.previewText = 'You have been invited' + replacements.buttonText = 'CONFIRM' + replacements.url = helpers.createUrl(dashboardUrl, resetPath, { + email: user.email, + token: user.passwordResetToken, + firstName: user.firstName, + lastName: user.lastName, + affiliation: user.affiliation, + title: user.title, + }) + textBody = `${replacements.headline} ${replacements.paragraph} ${ + replacements.url + } ${replacements.buttonText}` break - default: - subject = 'Welcome to Hindawi!' + case 'invite': + subject = 'Hindawi Invitation' + replacements.headline = 'You have been invited to join Hindawi.' + replacements.paragraph = + 'You can now join Hindawi. Please confirm your account and set your account details by clicking on the link below.' + replacements.previewText = 'You have been invited' + replacements.buttonText = 'CONFIRM' + replacements.url = helpers.createUrl(dashboardUrl, resetPath, { + email: user.email, + token: user.passwordResetToken, + firstName: user.firstName, + lastName: user.lastName, + affiliation: user.affiliation, + title: user.title, + }) + textBody = `${replacements.headline} ${replacements.paragraph} ${ + replacements.url + } ${replacements.buttonText}` break - } - - const { htmlBody, textBody } = helpers.getEmailBody(emailType, replacements) - const mailData = { - from: config.get('mailer.from'), - to: email, - subject, - text: textBody, - html: htmlBody, - } - return Email.send(mailData) - }, - setupRevokeInvitationEmail: async (email, emailType) => { - let subject - const replacements = {} - switch (emailType) { - case 'revoke-handling-editor': - subject = 'Invitation has been Cancelled' + case 'handling-editor-agreed': + subject = 'Handling Editor Agreed' + replacements.headline = `${user.firstName} ${ + user.lastName + } agreed to be a Handling Editor on manuscript ${meta.collectionId}.` + replacements.paragraph = + 'Please click on the link below to access your dashboard.' + replacements.previewText = 'a user has is now handling editor' + replacements.buttonText = 'VIEW DASHBOARD' + replacements.url = dashboardUrl + textBody = `${replacements.headline} ${replacements.paragraph} ${ + replacements.url + } ${replacements.buttonText}` break - case 'unassign-reviewer': - subject = 'Reviewer Unassigned' + case 'handling-editor-declined': + subject = 'Handling Editor Declined' + replacements.headline = `${user.firstName} ${ + user.lastName + } has declined to be a Handling Editor on manuscript ${ + meta.collectionId + }.` + replacements.paragraph = meta.reason ? `Reason: "${meta.reason}"` : '' + replacements.previewText = 'a user has declined your invitation' + textBody = `${replacements.headline} ${replacements.paragraph}` + emailTemplate = 'noCTA' + break + case 'revoke-handling-editor': + subject = 'Invitation Has Been Cancelled' + replacements.headline = + 'Your Handling Editor invitation to a manuscript has been revoked.' + replacements.paragraph = '' + replacements.previewText = 'you are no longer invited' + textBody = `${replacements.headline}` + emailTemplate = 'noCTA' break default: - throw new Error('Invalid emailType') - } - - const { htmlBody, textBody } = helpers.getEmailBody(emailType, replacements) - const mailData = { - from: config.get('mailer.from'), - to: email, - subject, - text: textBody, - html: htmlBody, - } - return Email.send(mailData) - }, - setupAgreeEmail: async (toEmail, user, invRole, url, collectionId) => { - let role = 'Handling Editor' - let subject = 'Handling Editor Agreed' - if (invRole === 'reviewer') { - subject = 'Reviewer Agreed' - role = 'Reviewer' + subject = 'Welcome to Hindawi!' + break } - const { htmlBody, textBody } = helpers.getEmailBody('agree', { - url, - role, - name: `${user.firstName} ${user.lastName}`, - collectionId, - }) + const htmlBody = helpers.getEmailBody(emailTemplate, replacements) const mailData = { from: config.get('mailer.from'), to: toEmail, @@ -113,151 +132,113 @@ module.exports = { } return Email.send(mailData) }, - setupDeclineEmail: async (toEmail, user, emailType, collectionId, reason) => { - let finalReason = '' - if (reason !== undefined) { - finalReason = `Reason: "${reason}"` - } - const replacements = { - finalReason, - name: `${user.firstName} ${user.lastName}`, - collectionId, - } - - const { htmlBody, textBody } = helpers.getEmailBody(emailType, replacements) - const mailData = { - from: config.get('mailer.from'), - to: toEmail, - subject: 'Handling Editor Declined', - text: textBody, - html: htmlBody, - } - - return Email.send(mailData) - }, - setupReviewerInvitationEmail: async ({ - invitedUser, + sendReviewerInvitationEmail: async ({ + user, baseUrl, - collection: { id: collectionId, authorName, handlingEditor }, - fragment: { title, id: fragmentId, abstract, authors }, - invitation: { id: invitationId, timestamp }, - resend, + toEmail, subject, + emailType, + meta = {}, }) => { let queryParams = { - invitationId, + invitationId: meta.invitation.id, agree: true, } const declineUrl = helpers.createUrl(baseUrl, resetPasswordPath, { ...queryParams, - collectionId, + invitationId: meta.invitation.id, agree: false, - invitationToken: invitedUser.invitationToken, + invitationToken: user.invitationToken, }) let agreeUrl = helpers.createUrl( baseUrl, - `/projects/${collectionId}/versions/${fragmentId}/details`, + `/projects/${meta.collection.id}/versions/${meta.fragment.id}/details`, queryParams, ) - if (!invitedUser.isConfirmed) { + if (!user.isConfirmed) { queryParams = { ...queryParams, - email: invitedUser.email, - token: invitedUser.passwordResetToken, - collectionId, - fragmentId, + email: user.email, + token: user.passwordResetToken, + collectionId: meta.collection.id, + fragmentId: meta.fragment.id, agree: true, } agreeUrl = helpers.createUrl(baseUrl, resetPasswordPath, queryParams) } - - const daysExpected = resend ? 0 : 14 const replacements = { - reviewerName: `${invitedUser.firstName} ${invitedUser.lastName}`, agreeUrl, declineUrl, baseUrl, - title, - editorName: handlingEditor.name, - submittingAuthorName: authorName, - expectedDate: helpers.getExpectedDate(timestamp, daysExpected), - abstract, - editorEmail: handlingEditor.email, - authors, + title: meta.fragment.title, + authors: meta.fragment.authors, + abstract: meta.fragment.abstract, + previewText: 'invitation from Hindawi', + intro: `Dear ${user.firstName} ${user.lastName}`, + manuscriptText: '', } - const emailTemplate = resend ? 'resend-reviewer' : 'invite-reviewer' - const { htmlBody, textBody } = helpers.getEmailBody( - emailTemplate, - replacements, - ) - const mailData = { - from: config.get('mailer.from'), - to: invitedUser.email, - subject, - text: textBody, - html: htmlBody, - } - return Email.send(mailData) - }, - setupReviewerUnassignEmail: async ( - invitedUser, - collection, - title, - authorName, - ) => { - const subject = `${collection.customId}: Review Unassigned` + let textBody + switch (emailType) { + case 'invite-reviewer': + replacements.upperContent = `A manuscript titled "${ + meta.fragment.title + }" by ${meta.collection.authorName}, has been submitted + for possible publication in Hindawi. As the Academic Editor handling the manuscript, + I would be delighted if you would agree to review it and let me know whether you + feel it is suitable for publication.` - const replacements = { - reviewerName: `${invitedUser.firstName} ${invitedUser.lastName}`, - title, - editorName: collection.handlingEditor.name, - authorName, - staffEmail: config.get('mailer.from'), - } + replacements.manuscriptText = + "The manuscript's abstract, and author information is below to help you decide. Once you have agreed to review, you will be able to download the full article PDF." - const { htmlBody, textBody } = helpers.getEmailBody( - 'unassign-reviewer', - replacements, - ) - const mailData = { - from: config.get('mailer.from'), - to: invitedUser.email, - subject, - text: textBody, - html: htmlBody, - } - return Email.send(mailData) - }, - setupReviewerDecisionEmail: async ({ - toEmail, - reviewerName, - collection: { customId, id: collectionId, handlingEditor }, - eicName, - baseUrl, - fragment: { id: fragmentId, title, authorName }, - agree, - timestamp = Date.now(), - }) => { - const subject = `${customId}: Manuscript Reviews` - const manuscriptUrl = helpers.createUrl( - baseUrl, - `/projects/${collectionId}/versions/${fragmentId}/details`, - ) + replacements.lowerContent = `If a potential conflict of interest exists between yourself and either the authors or + the subject of the manuscript, please decline to handle the manuscript. If a conflict + becomes apparent during the review process, please let me know at the earliest possible + opportunity. For more information about our conflicts of interest policies, please + see: + <a href="https://www.hindawi.com/ethics/#coi">https://www.hindawi.com/ethics/#coi</a>. + If you are able to review the manuscript, I would be grateful if you could submit your + report by ${helpers.getExpectedDate(meta.invitation.timestamp, 14)}.` - const replacements = { - reviewerName, - title, - editorName: handlingEditor.name, - authorName, - manuscriptUrl, - eicName, - expectedDate: helpers.getExpectedDate(timestamp, 14), + replacements.signatureName = meta.collection.handlingEditor.name + replacements.signatureEmail = meta.collection.handlingEditor.email + textBody = `${replacements.intro} ${replacements.upperContent} ${ + replacements.agreeUrl + } ${replacements.declineUrl} ${replacements.manuscriptText} ${ + replacements.lowerContent + } ${replacements.signature}` + break + case 'resend-reviewer': + replacements.upperContent = `On ${helpers.getExpectedDate( + meta.invitation.timestamp, + 0, + )} I sent you a request to review the manuscript titled "${ + meta.fragment.title + }" by ${ + meta.collection.authorName + }, submitted for possible publication in Hindawi. + I would be grateful if you would agree to review it and let me know whether you feel + it is suitable for publication. If you are unable to review this manuscript then + please decline to review. More details are available by clicking the link.` + + replacements.lowerContent = + 'I would like to thank you in advance for your help with the evaluation of this manuscript, since it would not be possible for us to run the journal without the help of our reviewers. I am looking forward to hearing from you.' + + replacements.signatureName = meta.collection.handlingEditor.name + replacements.signatureEmail = meta.collection.handlingEditor.email + textBody = `${replacements.intro} ${replacements.upperContent} ${ + replacements.agreeUrl + } ${replacements.declineUrl} ${replacements.lowerContent} ${ + replacements.signatureName + } ${replacements.signatureEmail}` + break + default: + break } - const emailType = agree ? 'reviewer-agreed' : 'reviewer-declined' - const { htmlBody, textBody } = helpers.getEmailBody(emailType, replacements) + + const htmlBody = helpers.getInvitationBody('invitation', replacements) const mailData = { from: config.get('mailer.from'), to: toEmail, @@ -267,33 +248,108 @@ module.exports = { } return Email.send(mailData) }, - setupReviewSubmittedEmail: async ({ - toEmail, - reviewerName, - collection: { customId, id: collectionId, handlingEditor }, - eicName, - baseUrl, - fragment: { id: fragmentId, title, authorName }, - }) => { - const subject = `${customId}: Manuscript Review` - const manuscriptUrl = helpers.createUrl( - baseUrl, - `/projects/${collectionId}/versions/${fragmentId}/details`, - ) - + sendNotificationEmail: async ({ toEmail, user, emailType, meta = {} }) => { + let subject, textBody + const emailTemplate = 'notification' const replacements = { - reviewerName, - title, - editorName: handlingEditor.name, - authorName, - manuscriptUrl, - eicName, + detailsUrl: helpers.createUrl( + meta.baseUrl, + `/projects/${meta.collection.id}/versions/${meta.fragment.id}/details`, + ), } + switch (emailType) { + case 'unassign-reviewer': + subject = `${meta.collection.customId}: Review Unassigned` + replacements.previewText = 'notification from Hindawi' + replacements.intro = `Dear ${user.firstName} ${user.lastName}` - const { htmlBody, textBody } = helpers.getEmailBody( - 'review-submitted', - replacements, - ) + replacements.paragraph = `You are no longer needed to review the article titled "${ + meta.fragment.title + }" by ${ + meta.fragment.authorName + }. If you have comments on this manuscript you believe the Editor should + see, please email them to ${config.get( + 'mailer.from', + )} as soon as possible. Thank you for your + time and I hope you will consider reviewing for Hindawi again.` + replacements.beforeAnchor = 'Please visit the' + replacements.afterAnchor = 'to see the full review' + replacements.signatureName = meta.handlingEditorName + textBody = `${replacements.intro} ${replacements.paragraph} ${ + replacements.beforeAnchor + } ${replacements.detailsUrl} ${replacements.afterAnchor} ${ + replacements.signatureName + }` + break + case 'review-submitted': + subject = `${meta.collection.customId}: Manuscript Review` + replacements.previewText = 'a new review has been submitted' + replacements.intro = `Dear ${meta.handlingEditorName}` + + replacements.paragraph = `We are pleased to inform you that Dr. ${ + user.firstName + } ${user.lastName} has submitted a review for the manuscript titled "${ + meta.fragment.title + }" by ${meta.fragment.authorName}.` + replacements.beforeAnchor = 'Please visit the' + replacements.afterAnchor = 'to see the full review' + + replacements.signatureName = meta.eicName + textBody = `${replacements.intro} ${replacements.paragraph} ${ + replacements.beforeAnchor + } ${replacements.detailsUrl} ${replacements.afterAnchor} ${ + replacements.signatureName + }` + break + case 'reviewer-agreed': + subject = `${meta.collection.customId}: Manuscript Reviews` + replacements.previewText = 'a user has agreed to review' + replacements.intro = `Dear ${meta.handlingEditorName}` + + replacements.paragraph = `We are pleased to inform you that Dr. ${ + user.firstName + } ${user.lastName} has agreed to review the manuscript titled "${ + meta.fragment.title + }" by ${ + meta.fragment.authorName + }. You should receive the report by Dr. ${user.firstName} ${ + user.lastName + } before ${helpers.getExpectedDate(meta.timestamp, 14)}.` + replacements.beforeAnchor = + 'If you have any queries, or would like to send a reminder if you no report has been submitted, then please visit the' + replacements.afterAnchor = 'to see the full review' + + replacements.signatureName = meta.eicName + textBody = `${replacements.intro} ${replacements.paragraph} ${ + replacements.beforeAnchor + } ${replacements.detailsUrl} ${replacements.afterAnchor} ${ + replacements.signatureName + }` + break + case 'reviewer-declined': + subject = `${meta.collection.customId}: Manuscript Reviews` + replacements.previewText = 'a user has declined to review' + replacements.intro = `Dear ${meta.handlingEditorName}` + replacements.paragraph = `We regret to inform you that Dr. ${ + user.firstName + } ${user.lastName} has declined to review the manuscript titled "${ + meta.fragment.title + }" by ${meta.fragment.authorName}.` + replacements.beforeAnchor = 'Please visit the' + replacements.afterAnchor = + 'to see if you need to invite any additional reviewers in order to reach a decision on the manuscript' + replacements.signatureName = meta.eicName + textBody = `${replacements.intro} ${replacements.paragraph} ${ + replacements.beforeAnchor + } ${replacements.detailsUrl} ${replacements.afterAnchor} ${ + replacements.signatureName + }` + break + default: + subject = 'Hindawi Notification!' + break + } + const htmlBody = helpers.getNotificationBody(emailTemplate, replacements) const mailData = { from: config.get('mailer.from'), to: toEmail, diff --git a/packages/component-mail-service/src/helpers/helpers.js b/packages/component-mail-service/src/helpers/helpers.js index d181dee4e..295cd42e8 100644 --- a/packages/component-mail-service/src/helpers/helpers.js +++ b/packages/component-mail-service/src/helpers/helpers.js @@ -8,13 +8,83 @@ const createUrl = (baseUrl, slug, queryParams = null) => : `${baseUrl}${slug}?${querystring.encode(queryParams)}` const getEmailBody = (emailType, replacements) => { - const htmlFile = readFile(`${__dirname}/../templates/${emailType}.html`) - const textFile = readFile(`${__dirname}/../templates/${emailType}.txt`) - const htmlTemplate = handlebars.compile(htmlFile) - const textTemplate = handlebars.compile(textFile) - const htmlBody = htmlTemplate(replacements) - const textBody = textTemplate(replacements) - return { htmlBody, textBody } + handlePartial('header', { previewText: replacements.previewText }) + handlePartial('footer') + const buttonContext = { + url: replacements.url, + buttonText: replacements.buttonText, + } + handlePartial('mainButton', buttonContext) + + const bodyContext = { + headline: replacements.headline, + paragraph: replacements.paragraph, + } + handlePartial('mainBody', bodyContext) + + return getMainTemplate(emailType, replacements) +} + +const getNotificationBody = (emailType, replacements) => { + handlePartial('notificationHeader', { previewText: replacements.previewText }) + handlePartial('footer') + + handlePartial('signature', { + signatureName: replacements.signatureName, + }) + + handlePartial('manuscriptDetailsLink', { + beforeAnchor: replacements.beforeAnchor, + detailsUrl: replacements.detailsUrl, + afterAnchor: replacements.afterAnchor, + }) + + handlePartial('notificationBody', { + intro: replacements.intro, + paragraph: replacements.paragraph, + }) + + return getMainTemplate(emailType, replacements) +} + +const getInvitationBody = (emailType, replacements) => { + handlePartial('invitationHeader', { previewText: replacements.previewText }) + handlePartial('footer') + + const upperContext = { + intro: replacements.intro, + upperContent: replacements.upperContent, + } + handlePartial('invitationUpperContent', upperContext) + + const buttonsContext = { + declineUrl: replacements.declineUrl, + agreeUrl: replacements.agreeUrl, + } + handlePartial('invitationButtons', buttonsContext) + + const manuscriptContext = { + manuscriptText: replacements.manuscriptText, + title: replacements.title, + authors: replacements.authors, + abstract: replacements.abstract, + } + handlePartial('manuscriptData', manuscriptContext) + + const signatureContext = { + signatureName: replacements.signatureName, + signatureEmail: replacements.signatureEmail, + } + handlePartial('signature', signatureContext) + + const lowerContext = { + baseUrl: replacements.baseUrl, + lowerContent: replacements.lowerContent, + signature: replacements.signature, + } + handlePartial('invitationLowerContent', lowerContext) + + return getMainTemplate(emailType, replacements) } const readFile = path => @@ -26,6 +96,22 @@ const readFile = path => } }) +const handlePartial = (partialName, context = {}) => { + let partial = readFile( + `${__dirname}/../templates/partials/${partialName}.hbs`, + ) + const template = handlebars.compile(partial) + partial = template(context) + handlebars.registerPartial(partialName, partial) +} + +const getMainTemplate = (fileName, context) => { + const htmlFile = readFile(`${__dirname}/../templates/${fileName}.html`) + const htmlTemplate = handlebars.compile(htmlFile) + const htmlBody = htmlTemplate(context) + return htmlBody +} + const getExpectedDate = (timestamp, daysExpected) => { const date = new Date(timestamp) let expectedDate = date.getDate() + daysExpected @@ -38,4 +124,10 @@ const getExpectedDate = (timestamp, daysExpected) => { return expectedDate } -module.exports = { createUrl, getEmailBody, getExpectedDate } +module.exports = { + createUrl, + getEmailBody, + getExpectedDate, + getNotificationBody, + getInvitationBody, +} diff --git a/packages/component-mail-service/src/templates/add-author.html b/packages/component-mail-service/src/templates/add-author.html deleted file mode 100644 index ed919c240..000000000 --- a/packages/component-mail-service/src/templates/add-author.html +++ /dev/null @@ -1,235 +0,0 @@ - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>author</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">You have been assigned as an Author to a manuscript.</h1> - - <div style="text-align: center;">The manuscript will become visible on your dashboard once it's submitted.</div> - - <div style="text-align: center;">Please click on the link below to access your dashboard.</div> - - <div style="text-align: center;"> </div> - <div style="text-align: center;"> </div> - - - </td> - </tr> - </table> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" bgcolor="#FFFFFF" class="outer-td" style="padding:0px 0px 30px 0px;background-color:#FFFFFF"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" - style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a href="{{ url }}" style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - target="_blank">VIEW DASHBOARD</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/add-author.txt b/packages/component-mail-service/src/templates/add-author.txt deleted file mode 100644 index 389fa6da8..000000000 --- a/packages/component-mail-service/src/templates/add-author.txt +++ /dev/null @@ -1,7 +0,0 @@ -You have been assigned as an Author to a manuscript. -The manuscript will become visible on your dashboard once it's submitted. -Please click on the link below to access your dashboard -{{ url }} VIEW DASHBOARD -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/agree.html b/packages/component-mail-service/src/templates/agree.html deleted file mode 100644 index edf453b48..000000000 --- a/packages/component-mail-service/src/templates/agree.html +++ /dev/null @@ -1,232 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>a user has agreed</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">{{ name }} has agreed to be a {{ role }} on manuscript {{ collectionId }}.</h1> - - <div style="text-align: center;">Please click on the link below to access your dashboard.</div> - - <div style="text-align: center;"> </div> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" bgcolor="#FFFFFF" class="outer-td" style="padding:0px 0px 30px 0px;background-color:#FFFFFF"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" - style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a href="{{ url }}" style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - target="_blank">VIEW DASHBOARD</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/agree.txt b/packages/component-mail-service/src/templates/agree.txt deleted file mode 100644 index ea941f3dd..000000000 --- a/packages/component-mail-service/src/templates/agree.txt +++ /dev/null @@ -1,6 +0,0 @@ -{{ name }} has agreed to be a {{ role }} on manuscript {{ collectionId }} -Please click on the link below to access your dashboard -{{ url }} VIEW DASHBOARD -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/assign-handling-editor.html b/packages/component-mail-service/src/templates/assign-handling-editor.html deleted file mode 100644 index 72a0f88f6..000000000 --- a/packages/component-mail-service/src/templates/assign-handling-editor.html +++ /dev/null @@ -1,232 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>handling editor</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">You have been assigned as a Handling Editor to a manuscript.</h1> - - <div style="text-align: center;">Please click on the link below to access your dashboard.</div> - - <div style="text-align: center;"> </div> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" bgcolor="#FFFFFF" class="outer-td" style="padding:0px 0px 30px 0px;background-color:#FFFFFF"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" - style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a href="{{ url }}" style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - target="_blank">VIEW DASHBOARD</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/assign-handling-editor.txt b/packages/component-mail-service/src/templates/assign-handling-editor.txt deleted file mode 100644 index a1c6edf27..000000000 --- a/packages/component-mail-service/src/templates/assign-handling-editor.txt +++ /dev/null @@ -1,6 +0,0 @@ -You have been assigned as a Handling Editor to a manuscript. -Please click on the link below to access your dashboard -{{ url }} VIEW DASHBOARD -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/decline.txt b/packages/component-mail-service/src/templates/decline.txt deleted file mode 100644 index 005491da1..000000000 --- a/packages/component-mail-service/src/templates/decline.txt +++ /dev/null @@ -1,6 +0,0 @@ -Handling Editor Invitation Declined -{{ name }} has declined to be Handling Editor on manuscript {{ collectionId }}. -{{ finalReason }} -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/handling-editor-declined.txt b/packages/component-mail-service/src/templates/handling-editor-declined.txt deleted file mode 100644 index 005491da1..000000000 --- a/packages/component-mail-service/src/templates/handling-editor-declined.txt +++ /dev/null @@ -1,6 +0,0 @@ -Handling Editor Invitation Declined -{{ name }} has declined to be Handling Editor on manuscript {{ collectionId }}. -{{ finalReason }} -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invitation.html b/packages/component-mail-service/src/templates/invitation.html new file mode 100644 index 000000000..e48b106ec --- /dev/null +++ b/packages/component-mail-service/src/templates/invitation.html @@ -0,0 +1,5 @@ +{{> invitationHeader }} +{{> invitationUpperContent }} +{{> invitationButtons }} +{{> invitationLowerContent }} +{{> footer }} \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invite-author.html b/packages/component-mail-service/src/templates/invite-author.html deleted file mode 100644 index 257a3850c..000000000 --- a/packages/component-mail-service/src/templates/invite-author.html +++ /dev/null @@ -1,234 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>please confirm your Hindawi invitation</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">You have been invited as an Author to a manuscript.</h1> - - <div style="text-align: center;">The manuscript will be visible on your dashboard once it's submitted.</div> - - <div style="text-align: center;">Please confirm your account and set your account details by clicking on the link below.</div> - - <div style="text-align: center;"> </div> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" bgcolor="#FFFFFF" class="outer-td" style="padding:0px 0px 30px 0px;background-color:#FFFFFF"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" - style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a href="{{ url }}" style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - target="_blank">CONFIRM</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invite-author.txt b/packages/component-mail-service/src/templates/invite-author.txt deleted file mode 100644 index 7d6c7eb14..000000000 --- a/packages/component-mail-service/src/templates/invite-author.txt +++ /dev/null @@ -1,7 +0,0 @@ -You have been invited as an Author to a manuscript. -The manuscript will be visible on your dashboard once it's submitted. -Please confirm your account and set your account details by clicking on the link below. -{{ url }} CONFIRM -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invite-reviewer.html b/packages/component-mail-service/src/templates/invite-reviewer.html deleted file mode 100644 index cfe6ed5b4..000000000 --- a/packages/component-mail-service/src/templates/invite-reviewer.html +++ /dev/null @@ -1,358 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>review request</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 20px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <div> - <p data-pm-slice="1 1 []">Dear {{reviewerName}},</p> - - <p> </p> - - <p>A manuscript titled "{{title}}" by {{submittingAuthorName}}, has been submitted - for possible publication in Hindawi. As the Academic Editor handling the manuscript, - I would be delighted if you would agree to review it and let me know whether you - feel it is suitable for publication.</p> - </div> - - </td> - </tr> - </table> - - <table border="0" cellpadding="0" cellspacing="0" align="center" width="100%" role="module" data-type="columns" data-version="2" - style="padding:20px 0px 20px 0px;background-color:#ffffff;box-sizing:border-box;" bgcolor="#ffffff"> - <tr role='module-content'> - <td height="100%" valign="top"> - <!--[if (gte mso 9)|(IE)]> - <center> - <table cellpadding="0" cellspacing="0" border="0" width="100%" style="border-spacing:0;border-collapse:collapse;table-layout: fixed;" > - <tr> - <![endif]--> - - <!--[if (gte mso 9)|(IE)]> - <td width="300.000px" valign="top" style="padding: 0px 0px 0px 0px;border-collapse: collapse;" > - <![endif]--> - - <table width="300.000" style="width:300.000px;border-spacing:0;border-collapse:collapse;margin:0px 0px 0px 0px;" cellpadding="0" - cellspacing="0" align="left" border="0" bgcolor="#ffffff" class="column column-0 of-2 - empty"> - <tr> - <td style="padding:0px;margin:0px;border-spacing:0;"> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" class="outer-td" style="padding:0px 0px 0px 0px"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - href="{{agreeUrl}}" target="_blank">AGREE</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </table> - - <!--[if (gte mso 9)|(IE)]> - </td> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <td width="300.000px" valign="top" style="padding: 0px 0px 0px 0px;border-collapse: collapse;" > - <![endif]--> - - <table width="300.000" style="width:300.000px;border-spacing:0;border-collapse:collapse;margin:0px 0px 0px 0px;" cellpadding="0" - cellspacing="0" align="left" border="0" bgcolor="#ffffff" class="column column-1 of-2 - empty"> - <tr> - <td style="padding:0px;margin:0px;border-spacing:0;"> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" class="outer-td" style="padding:0px 0px 0px 0px"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#e4dfdf" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a style="background-color:#e4dfdf;border:1px solid #333333;border-color:#E4DFDF;border-radius:0px;border-width:1px;color:#302e2e;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - href="{{declineUrl}}" target="_blank">DECLINE</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </table> - - <!--[if (gte mso 9)|(IE)]> - </td> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <tr> - </table> - </center> - <![endif]--> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <p data-pm-slice="1 1 []"> - <a href="{{baseUrl}}">See more information</a> - </p> - - <p data-pm-slice="1 1 []"> </p> - - <p data-pm-slice="1 1 []">The manuscript’s abstract, and author information is below to help you decide. - Once you have agreed to review, you will be able to download the full article PDF.</p> - - <p> </p> - - <h2>{{title}}</h2> - - <p> </p> - - <h4> - <span style="font-family:arial,helvetica,sans-serif;">{{authors}}</span> - </h4> - - <p> - <br /> - <em> - <span style="font-family:arial,helvetica,sans-serif;">{{abstract}}</span> - </em> - </p> - - <p> </p> - - <p>If a potential conflict of interest exists between yourself and either the authors or - the subject of the manuscript, please decline to handle the manuscript. If a conflict - becomes apparent during the review process, please let me know at the earliest possible - opportunity. For more information about our conflicts of interest policies, please - see: - <a href="https://www.hindawi.com/ethics/#coi.">https://www.hindawi.com/ethics/#coi.</a> - </p> - - <p> </p> - <p>If you are able to review the manuscript, I would be grateful if you could submit your - report by {{ expectedDate }}.</p> - <p> </p> - <p>With many thanks and best regards, - <br /> {{editorName}} - <br /> {{editorEmail}} - </p> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" - style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial,Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial,Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial,Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invite-reviewer.txt b/packages/component-mail-service/src/templates/invite-reviewer.txt deleted file mode 100644 index 946571853..000000000 --- a/packages/component-mail-service/src/templates/invite-reviewer.txt +++ /dev/null @@ -1,33 +0,0 @@ - -Dear Dr. {{reviewerName}}, - -A manuscript titled {{title}}" by {{submittingAuthorName}}, has been submitted -for possible publication in Hindawi. As the Academic Editor handling the manuscript, -I would be delighted if you would agree to review it and let me know whether you - -{{agreeUrl}} -AGREE - -{{declineUrl}} -DECLINE - -{{dashboardUrl}} See more information - -The manuscript's abstract, and author information is below to help you decide. -Once you have agreed to review, you will be able to download the full article PDF. -{{title}} -{{authors}} -{{abstract}} - -If a potential conflict of interest exists between yourself and either the authors or -the subject of the manuscript, please decline to handle the manuscript. If a conflict -becomes apparent during the review process, please let me know at the earliest possible -opportunity. For more information about our conflicts of interest policies, please -see: -https://www.hindawi.com/ethics/#coi - -If you are able to review the manuscript, I would be grateful if you could submit your report by {{ expectedDate }}. - -With many thanks and best regards, -{{editorName}} -{{editorEmail}} \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invite.html b/packages/component-mail-service/src/templates/invite.html deleted file mode 100644 index f4482f495..000000000 --- a/packages/component-mail-service/src/templates/invite.html +++ /dev/null @@ -1,234 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>please confirm your Hindawi invitation</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">You have been invited to join Hindawi</h1> - - <div style="text-align: center;">You can now join Hindawi</div> - - <div style="text-align: center;">Please confirm your account and set your account details by clicking on the link below.</div> - - <div style="text-align: center;"> </div> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" bgcolor="#FFFFFF" class="outer-td" style="padding:0px 0px 30px 0px;background-color:#FFFFFF"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" - style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a href="{{ url }}" style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - target="_blank">CONFIRM</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/invite.txt b/packages/component-mail-service/src/templates/invite.txt deleted file mode 100644 index 6aa9d92b8..000000000 --- a/packages/component-mail-service/src/templates/invite.txt +++ /dev/null @@ -1,7 +0,0 @@ -You have been invited to Hindawi -You can now join Hindawi. -Please confirm your account and set your account details by clicking on the link below. -{{ url }} CONFIRM -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/noCTA.html b/packages/component-mail-service/src/templates/noCTA.html new file mode 100644 index 000000000..632140917 --- /dev/null +++ b/packages/component-mail-service/src/templates/noCTA.html @@ -0,0 +1,3 @@ +{{> header }} +{{> mainBody }} +{{> footer }} diff --git a/packages/component-mail-service/src/templates/notification.html b/packages/component-mail-service/src/templates/notification.html new file mode 100644 index 000000000..56554d0f7 --- /dev/null +++ b/packages/component-mail-service/src/templates/notification.html @@ -0,0 +1,3 @@ +{{> notificationHeader}} +{{> notificationBody}} +{{> footer}} \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/footer.hbs b/packages/component-mail-service/src/templates/partials/footer.hbs new file mode 100644 index 000000000..4b93ccf59 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/footer.hbs @@ -0,0 +1,36 @@ +<div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" + style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> + <div class="Unsubscribe--addressLine"> + <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> + <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> + <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, + <span class="Unsubscribe--senderCity">NEW YORK</span>, + <span class="Unsubscribe--senderState">NY</span> + <span class="Unsubscribe--senderZip">10017</span> + </p> + </div> + <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> + <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> + </p> +</div> +</td> +</tr> +</table> +<!--[if mso]> + </td></tr></table> + </center> + <![endif]--> +</td> +</tr> +</table> +</td> +</tr> +</table> +</td> +</tr> +</table> +</div> +</center> +</body> + +</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/revoke-handling-editor.html b/packages/component-mail-service/src/templates/partials/header.hbs similarity index 67% rename from packages/component-mail-service/src/templates/revoke-handling-editor.html rename to packages/component-mail-service/src/templates/partials/header.hbs index 1570b897d..3e8efa3ea 100644 --- a/packages/component-mail-service/src/templates/revoke-handling-editor.html +++ b/packages/component-mail-service/src/templates/partials/header.hbs @@ -1,4 +1,3 @@ - <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> @@ -146,7 +145,7 @@ width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> <tr> <td role="module-content"> - <p>revoke handling editor</p> + <p>{{ previewText }}</p> </td> </tr> </table> @@ -159,53 +158,4 @@ alt="" width="60"> </td> </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">Your Handling Editor invitation to a manuscript has been revoked.</h1> - - <div style="text-align: center;"> </div> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file + </table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/invitationButtons.hbs b/packages/component-mail-service/src/templates/partials/invitationButtons.hbs new file mode 100644 index 000000000..002013ea2 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/invitationButtons.hbs @@ -0,0 +1,88 @@ +<table border="0" cellpadding="0" cellspacing="0" align="center" width="100%" role="module" data-type="columns" data-version="2" + style="padding:20px 0px 20px 0px;background-color:#ffffff;box-sizing:border-box;" bgcolor="#ffffff"> + <tr role='module-content'> + <td height="100%" valign="top"> + <!--[if (gte mso 9)|(IE)]> + <center> + <table cellpadding="0" cellspacing="0" border="0" width="100%" style="border-spacing:0;border-collapse:collapse;table-layout: fixed;" > + <tr> + <![endif]--> + + <!--[if (gte mso 9)|(IE)]> + <td width="300.000px" valign="top" style="padding: 0px 0px 0px 0px;border-collapse: collapse;" > + <![endif]--> + + <table width="300.000" style="width:300.000px;border-spacing:0;border-collapse:collapse;margin:0px 0px 0px 0px;" cellpadding="0" + cellspacing="0" align="left" border="0" bgcolor="#ffffff" class="column column-0 of-2 + empty"> + <tr> + <td style="padding:0px;margin:0px;border-spacing:0;"> + <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" + style="table-layout:fixed" width="100%"> + <tbody> + <tr> + <td align="center" class="outer-td" style="padding:0px 0px 0px 0px"> + <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> + <tbody> + <tr> + <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> + <a style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" + href="{{agreeUrl}}" target="_blank">AGREE</a> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </table> + + <!--[if (gte mso 9)|(IE)]> + </td> + <![endif]--> + <!--[if (gte mso 9)|(IE)]> + <td width="300.000px" valign="top" style="padding: 0px 0px 0px 0px;border-collapse: collapse;" > + <![endif]--> + + <table width="300.000" style="width:300.000px;border-spacing:0;border-collapse:collapse;margin:0px 0px 0px 0px;" cellpadding="0" + cellspacing="0" align="left" border="0" bgcolor="#ffffff" class="column column-1 of-2 + empty"> + <tr> + <td style="padding:0px;margin:0px;border-spacing:0;"> + <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" + style="table-layout:fixed" width="100%"> + <tbody> + <tr> + <td align="center" class="outer-td" style="padding:0px 0px 0px 0px"> + <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> + <tbody> + <tr> + <td align="center" bgcolor="#e4dfdf" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> + <a style="background-color:#e4dfdf;border:1px solid #333333;border-color:#E4DFDF;border-radius:0px;border-width:1px;color:#302e2e;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" + href="{{declineUrl}}" target="_blank">DECLINE</a> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </table> + + <!--[if (gte mso 9)|(IE)]> + </td> + <![endif]--> + <!--[if (gte mso 9)|(IE)]> + <tr> + </table> + </center> + <![endif]--> + </td> + </tr> +</table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/handling-editor-declined.html b/packages/component-mail-service/src/templates/partials/invitationHeader.hbs similarity index 64% rename from packages/component-mail-service/src/templates/handling-editor-declined.html rename to packages/component-mail-service/src/templates/partials/invitationHeader.hbs index 4923655d4..3e8efa3ea 100644 --- a/packages/component-mail-service/src/templates/handling-editor-declined.html +++ b/packages/component-mail-service/src/templates/partials/invitationHeader.hbs @@ -145,7 +145,7 @@ width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> <tr> <td role="module-content"> - <p>handling editor invitation declined</p> + <p>{{ previewText }}</p> </td> </tr> </table> @@ -158,54 +158,4 @@ alt="" width="60"> </td> </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">Handling Editor Invitation Declined</h1> - - <div style="text-align: center;">{{ name }} has declined to be Handling Editor on manuscript <span style="font-family:courier,monospace;">{{ collectionId }}</span>.</div> - <div style="text-align: center;">{{ finalReason }}</div> - <div style="text-align: center;"> </div> - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file + </table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/invitationLowerContent.hbs b/packages/component-mail-service/src/templates/partials/invitationLowerContent.hbs new file mode 100644 index 000000000..6d5e3fd25 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/invitationLowerContent.hbs @@ -0,0 +1,18 @@ +<table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> + <tr> + <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> + <p data-pm-slice="1 1 []"> + <a href="{{baseUrl}}">See more information</a> + </p> + + <p data-pm-slice="1 1 []"> </p> + + {{> manuscriptData }} + <p data-pm-slice="1 1 []">{{{ lowerContent }}}</p> + + <p> </p> + {{> signature }} + <div style="text-align: center;"> </div> + </td> + </tr> +</table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/invitationUpperContent.hbs b/packages/component-mail-service/src/templates/partials/invitationUpperContent.hbs new file mode 100644 index 000000000..8dfd58f9b --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/invitationUpperContent.hbs @@ -0,0 +1,13 @@ +<table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> + <tr> + <td style="padding:30px 23px 20px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> + <div> + <p data-pm-slice="1 1 []">{{ intro}},</p> + + <p> </p> + <p>{{ upperContent }}</p> + </div> + + </td> + </tr> +</table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/mainBody.hbs b/packages/component-mail-service/src/templates/partials/mainBody.hbs new file mode 100644 index 000000000..6fb579666 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/mainBody.hbs @@ -0,0 +1,10 @@ +<table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> + <tr> + <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> + <h1 style="text-align: center;">{{ headline }}</h1> + <div style="text-align: center;">{{ paragraph }}</div> + <div style="text-align: center;"> </div> + <div style="text-align: center;"> </div> + </td> + </tr> +</table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/mainButton.hbs b/packages/component-mail-service/src/templates/partials/mainButton.hbs new file mode 100644 index 000000000..9833fff52 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/mainButton.hbs @@ -0,0 +1,19 @@ +<table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" + style="table-layout:fixed" width="100%"> + <tbody> + <tr> + <td align="center" bgcolor="#FFFFFF" class="outer-td" style="padding:0px 0px 30px 0px;background-color:#FFFFFF"> + <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> + <tbody> + <tr> + <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> + <a href="{{ url }}" style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" + target="_blank">{{ buttonText }}</a> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> +</table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/manuscriptData.hbs b/packages/component-mail-service/src/templates/partials/manuscriptData.hbs new file mode 100644 index 000000000..f89afa6df --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/manuscriptData.hbs @@ -0,0 +1,15 @@ +<p data-pm-slice="1 1 []">{{ manuscriptText }}</p> +<p> </p> +<h2>{{title}}</h2> +<p> </p> +<h4> + <span style="font-family:arial,helvetica,sans-serif;">{{authors}}</span> +</h4> +<p> + <br /> + <em> + <span style="font-family:arial,helvetica,sans-serif;">{{abstract}}</span> + </em> +</p> + +<p> </p> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/manuscriptDetailsLink.hbs b/packages/component-mail-service/src/templates/partials/manuscriptDetailsLink.hbs new file mode 100644 index 000000000..133841f72 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/manuscriptDetailsLink.hbs @@ -0,0 +1 @@ + {{ beforeAnchor }} <a href="{{ detailsUrl }}">manuscript details page</a> {{ afterAnchor}}. \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/notificationBody.hbs b/packages/component-mail-service/src/templates/partials/notificationBody.hbs new file mode 100644 index 000000000..e2bcdfb0d --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/notificationBody.hbs @@ -0,0 +1,18 @@ +<table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> + <tr> + <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> + <div> + <p data-pm-slice="1 1 []">{{intro}},</p> + <p> </p> + <p> + {{paragraph}} + {{> manuscriptDetailsLink}} + </p> + <p> </p> + {{> signature}} + <p> </p> + </div> + + </td> + </tr> +</table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/decline.html b/packages/component-mail-service/src/templates/partials/notificationHeader.hbs similarity index 64% rename from packages/component-mail-service/src/templates/decline.html rename to packages/component-mail-service/src/templates/partials/notificationHeader.hbs index 4923655d4..3e8efa3ea 100644 --- a/packages/component-mail-service/src/templates/decline.html +++ b/packages/component-mail-service/src/templates/partials/notificationHeader.hbs @@ -145,7 +145,7 @@ width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> <tr> <td role="module-content"> - <p>handling editor invitation declined</p> + <p>{{ previewText }}</p> </td> </tr> </table> @@ -158,54 +158,4 @@ alt="" width="60"> </td> </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <h1 style="text-align: center;">Handling Editor Invitation Declined</h1> - - <div style="text-align: center;">{{ name }} has declined to be Handling Editor on manuscript <span style="font-family:courier,monospace;">{{ collectionId }}</span>.</div> - <div style="text-align: center;">{{ finalReason }}</div> - <div style="text-align: center;"> </div> - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" - data-type="unsubscribe" style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file + </table> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/partials/signature.hbs b/packages/component-mail-service/src/templates/partials/signature.hbs new file mode 100644 index 000000000..29cb70c53 --- /dev/null +++ b/packages/component-mail-service/src/templates/partials/signature.hbs @@ -0,0 +1,5 @@ +<p>With many thanks and best regards, + <br /> {{ signatureName }} + <br /> {{ signatureEmail }} + <br /> Hindawi +</p> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/resend-reviewer.html b/packages/component-mail-service/src/templates/resend-reviewer.html deleted file mode 100644 index 8840a4579..000000000 --- a/packages/component-mail-service/src/templates/resend-reviewer.html +++ /dev/null @@ -1,335 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>review request</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 20px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <div> - <p data-pm-slice="1 1 []">Dear {{reviewerName}},</p> - - <p> </p> - <p>On {{expectedDate}}, I sent you a request to review the manuscript titled "{{title}}" - by {{submittingAuthorName}}, submitted for possible publication in Hindawi. - </p> - <p>I would be grateful if you would agree to review it and let me know whether you feel - it is suitable for publication. If you are unable to review this manuscript then - please decline to review. More details are available by clicking the link.</p> - </div> - - </td> - </tr> - </table> - - <table border="0" cellpadding="0" cellspacing="0" align="center" width="100%" role="module" data-type="columns" data-version="2" - style="padding:20px 0px 20px 0px;background-color:#ffffff;box-sizing:border-box;" bgcolor="#ffffff"> - <tr role='module-content'> - <td height="100%" valign="top"> - <!--[if (gte mso 9)|(IE)]> - <center> - <table cellpadding="0" cellspacing="0" border="0" width="100%" style="border-spacing:0;border-collapse:collapse;table-layout: fixed;" > - <tr> - <![endif]--> - - <!--[if (gte mso 9)|(IE)]> - <td width="300.000px" valign="top" style="padding: 0px 0px 0px 0px;border-collapse: collapse;" > - <![endif]--> - - <table width="300.000" style="width:300.000px;border-spacing:0;border-collapse:collapse;margin:0px 0px 0px 0px;" cellpadding="0" - cellspacing="0" align="left" border="0" bgcolor="#ffffff" class="column column-0 of-2 - empty"> - <tr> - <td style="padding:0px;margin:0px;border-spacing:0;"> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" class="outer-td" style="padding:0px 0px 0px 0px"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#0d78f2" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a style="background-color:#0d78f2;border:1px solid #333333;border-color:#0d78f2;border-radius:0px;border-width:1px;color:#ffffff;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - href="{{agreeUrl}}" target="_blank">AGREE</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </table> - - <!--[if (gte mso 9)|(IE)]> - </td> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <td width="300.000px" valign="top" style="padding: 0px 0px 0px 0px;border-collapse: collapse;" > - <![endif]--> - - <table width="300.000" style="width:300.000px;border-spacing:0;border-collapse:collapse;margin:0px 0px 0px 0px;" cellpadding="0" - cellspacing="0" align="left" border="0" bgcolor="#ffffff" class="column column-1 of-2 - empty"> - <tr> - <td style="padding:0px;margin:0px;border-spacing:0;"> - <table border="0" cellPadding="0" cellSpacing="0" class="module" data-role="module-button" data-type="button" role="module" - style="table-layout:fixed" width="100%"> - <tbody> - <tr> - <td align="center" class="outer-td" style="padding:0px 0px 0px 0px"> - <table border="0" cellPadding="0" cellSpacing="0" class="button-css__deep-table___2OZyb wrapper-mobile" style="text-align:center"> - <tbody> - <tr> - <td align="center" bgcolor="#e4dfdf" class="inner-td" style="border-radius:6px;font-size:16px;text-align:center;background-color:inherit"> - <a style="background-color:#e4dfdf;border:1px solid #333333;border-color:#E4DFDF;border-radius:0px;border-width:1px;color:#302e2e;display:inline-block;font-family:arial,helvetica,sans-serif;font-size:16px;font-weight:normal;letter-spacing:0px;line-height:16px;padding:12px 18px 12px 18px;text-align:center;text-decoration:none" - href="{{declineUrl}}" target="_blank">DECLINE</a> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> - </table> - </td> - </tr> - </table> - - <!--[if (gte mso 9)|(IE)]> - </td> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <tr> - </table> - </center> - <![endif]--> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <p data-pm-slice="1 1 []"> - <a href="{{baseUrl}}">See more information</a> - </p> - - <p data-pm-slice="1 1 []"> </p> - - <p data-pm-slice="1 1 []">I would like to thank you in advance for your help with the evaluation of this manuscript, - since it would not be possible for us to run the journal without the help of our reviewers.</p> - - <p> </p> - - <p>I am looking forward to hearing from you.</p> - - <p> </p> - - - - <p>Best regards, - <br /> {{editorName}} - </p> - - <div style="text-align: center;"> </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" - style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial,Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial,Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial,Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/resend-reviewer.txt b/packages/component-mail-service/src/templates/resend-reviewer.txt deleted file mode 100644 index b9d171afb..000000000 --- a/packages/component-mail-service/src/templates/resend-reviewer.txt +++ /dev/null @@ -1,20 +0,0 @@ -Dear {{reviewerName}}, - -On {{expectedDate}}, I sent you a request to review the manuscript titled "{{title}}" -by {{submittingAuthorName}}, submitted for possible publication in Hindawi. - -I would be grateful if you would agree to review it and let me know whether you feel -it is suitable for publication. If you are unable to review this manuscript then -please decline to review. More details are available by clicking the link. - -{{agreeUrl}} AGREE -{{declineUrl}} DECLINE -{{baseUrl}} See more information - -I would like to thank you in advance for your help with the evaluation of this manuscript, -since it would not be possible for us to run the journal without the help of our reviewers. - -I am looking forward to hearing from you. - -Best regards, -{{editorName}} \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/review-submitted.html b/packages/component-mail-service/src/templates/review-submitted.html deleted file mode 100644 index 2c5608903..000000000 --- a/packages/component-mail-service/src/templates/review-submitted.html +++ /dev/null @@ -1,222 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>reviewe submitted</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <div> - <p data-pm-slice="1 1 []">Dear {{editorName}},</p> - - <p> </p> - <p>We are pleased to inform you that Dr. {{reviewerName}} has submitted a review for the manuscript - titled "{{ title }}" by {{authorName}} - </p> - <p> </p> - <p>Please visit the - <a href="{{manuscriptUrl}}">manuscript details page</a> to see the full review.</p> - <p> </p> - <p>Best regards, - <br /> {{eicName}} - <br /> Hindawi - </p> - <p> </p> - </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" - style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/review-submitted.txt b/packages/component-mail-service/src/templates/review-submitted.txt deleted file mode 100644 index 64f57c83a..000000000 --- a/packages/component-mail-service/src/templates/review-submitted.txt +++ /dev/null @@ -1,6 +0,0 @@ -Dear {{ editorName }} -We are pleased to inform you that Dr. {{ reviewerName }} has submitted a review for the manuscript titled "{{ title }}" by {{authorName}}. -Please visit the {{manuscriptUrl}} manuscript details page to see the full review. -Best regards, -{{eicName}} -Hindawi diff --git a/packages/component-mail-service/src/templates/reviewer-agreed.html b/packages/component-mail-service/src/templates/reviewer-agreed.html deleted file mode 100644 index 00ebd7a6b..000000000 --- a/packages/component-mail-service/src/templates/reviewer-agreed.html +++ /dev/null @@ -1,224 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>reviewer agreed</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <div> - <p data-pm-slice="1 1 []">Dear {{editorName}},</p> - - <p> </p> - <p>We are pleased to inform you that {{reviewerName}} has agreed to review the manuscript - titled "{{ title }}" by {{authorName}} - </p> - <p> </p> - <p>You should receive the report by {{reviewerName}} before {{expectedDate}}. If you have - any queries, or would like to send a reminder if you no report has been submitted, - then please visit the - <a href="{{manuscriptUrl}}">manuscript details page</a>.</p> - <p> </p> - <p>Best regards, - <br /> {{eicName}} - <br /> Hindawi - </p> - <p> </p> - </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" - style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/reviewer-agreed.txt b/packages/component-mail-service/src/templates/reviewer-agreed.txt deleted file mode 100644 index a1aea9da6..000000000 --- a/packages/component-mail-service/src/templates/reviewer-agreed.txt +++ /dev/null @@ -1,6 +0,0 @@ -Dear {{ editorName }} -We are pleased to inform you that {{ reviewerName }} has agreed to review the manuscript titled "{{ title }}" by {{authorName}}. -You should receive the report by {{reviewerName}} before {{expectedDate}}. If you have any queries, or would like to send a reminder if you no report has been submitted, then please visit the {{manuscriptUrl}} manuscript details page -Best regards, -{{eicName}} -Hindawi diff --git a/packages/component-mail-service/src/templates/reviewer-declined.html b/packages/component-mail-service/src/templates/reviewer-declined.html deleted file mode 100644 index 9cb7f95c6..000000000 --- a/packages/component-mail-service/src/templates/reviewer-declined.html +++ /dev/null @@ -1,219 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>reviewer declined</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <div> - <p data-pm-slice="1 1 []">Dear {{editorName}},</p> - - <p> </p> - We regret to inform you that {{reviewerName}} has declined to review the manuscript titled "{{ title }}" by {{authorName}}</p> - <p> </p> - <p>Please visit the <a href="{{manuscriptUrl}}">manuscript details page</a> to see if you need to invite any additional reviewers in order to reach a decision on the manuscript.</p> - <p> </p> - <p>Best regards, - <br /> {{eicName}} - <br /> Hindawi - </p> - <p> </p> - </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" - style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/reviewer-declined.txt b/packages/component-mail-service/src/templates/reviewer-declined.txt deleted file mode 100644 index a3925e886..000000000 --- a/packages/component-mail-service/src/templates/reviewer-declined.txt +++ /dev/null @@ -1,6 +0,0 @@ -Dear {{ editorName }} -We regret to inform you that {{ reviewerName }} has declined to review the manuscript titled "{{ title }}" by {{authorName}}. -Please visit the manuscript details page to see if you need to invite any additional reviewers in order to reach a decision on the manuscript. -Best regards, -{{eicName}} -Hindawi diff --git a/packages/component-mail-service/src/templates/revoke-handling-editor.txt b/packages/component-mail-service/src/templates/revoke-handling-editor.txt deleted file mode 100644 index e871a6f4c..000000000 --- a/packages/component-mail-service/src/templates/revoke-handling-editor.txt +++ /dev/null @@ -1,4 +0,0 @@ -Your Handling Editor invitation to a manuscript has been revoked. -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/simpleCTA.html b/packages/component-mail-service/src/templates/simpleCTA.html new file mode 100644 index 000000000..4d5a97b25 --- /dev/null +++ b/packages/component-mail-service/src/templates/simpleCTA.html @@ -0,0 +1,4 @@ +{{> header }} +{{> mainBody }} +{{> mainButton }} +{{> footer }} diff --git a/packages/component-mail-service/src/templates/unassign-reviewer.html b/packages/component-mail-service/src/templates/unassign-reviewer.html deleted file mode 100644 index 96858a596..000000000 --- a/packages/component-mail-service/src/templates/unassign-reviewer.html +++ /dev/null @@ -1,220 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html data-editor-version="2" class="sg-campaigns" xmlns="http://www.w3.org/1999/xhtml"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> - <!--[if !mso]><!--> - <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> - <!--<![endif]--> - <!--[if (gte mso 9)|(IE)]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> - <![endif]--> - <!--[if (gte mso 9)|(IE)]> - <style type="text/css"> - body {width: 600px;margin: 0 auto;} - table {border-collapse: collapse;} - table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;} - img {-ms-interpolation-mode: bicubic;} - </style> - <![endif]--> - - <style type="text/css"> - body, - p, - div { - font-family: helvetica, arial, sans-serif; - font-size: 14px; - } - - body { - color: #626262; - } - - body a { - color: #0D78F2; - text-decoration: none; - } - - p { - margin: 0; - padding: 0; - } - - table.wrapper { - width: 100% !important; - table-layout: fixed; - -webkit-font-smoothing: antialiased; - -webkit-text-size-adjust: 100%; - -moz-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - img.max-width { - max-width: 100% !important; - } - - .column.of-2 { - width: 50%; - } - - .column.of-3 { - width: 33.333%; - } - - .column.of-4 { - width: 25%; - } - - @media screen and (max-width:480px) { - .preheader .rightColumnContent, - .footer .rightColumnContent { - text-align: left !important; - } - .preheader .rightColumnContent div, - .preheader .rightColumnContent span, - .footer .rightColumnContent div, - .footer .rightColumnContent span { - text-align: left !important; - } - .preheader .rightColumnContent, - .preheader .leftColumnContent { - font-size: 80% !important; - padding: 5px 0; - } - table.wrapper-mobile { - width: 100% !important; - table-layout: fixed; - } - img.max-width { - height: auto !important; - max-width: 480px !important; - } - a.bulletproof-button { - display: block !important; - width: auto !important; - font-size: 80%; - padding-left: 0 !important; - padding-right: 0 !important; - } - .columns { - width: 100% !important; - } - .column { - display: block !important; - width: 100% !important; - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; - } - } - </style> - <!--user entered Head Start--> - - <!--End Head user entered--> -</head> - -<body> - <center class="wrapper" data-link-color="#0D78F2" data-body-style="font-size: 14px; font-family: helvetica,arial,sans-serif; color: #626262; background-color: #F4F4F4;"> - <div class="webkit"> - <table cellpadding="0" cellspacing="0" border="0" width="100%" class="wrapper" bgcolor="#F4F4F4"> - <tr> - <td valign="top" bgcolor="#F4F4F4" width="100%"> - <table width="100%" role="content-container" class="outer" align="center" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td width="100%"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td> - <!--[if mso]> - <center> - <table><tr><td width="600"> - <![endif]--> - <table width="100%" cellpadding="0" cellspacing="0" border="0" style="width: 100%; max-width:600px;" align="center"> - <tr> - <td role="modules-container" style="padding: 0px 0px 0px 0px; color: #626262; text-align: left;" bgcolor="#F4F4F4" width="100%" - align="left"> - - <table class="module preheader preheader-hide" role="module" data-type="preheader" border="0" cellpadding="0" cellspacing="0" - width="100%" style="display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;"> - <tr> - <td role="module-content"> - <p>unassign reviewer</p> - </td> - </tr> - </table> - - <table class="wrapper" role="module" data-type="image" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="font-size:6px;line-height:10px;padding:20px 0px 20px 0px;" valign="top" align="center"> - <img class="max-width" border="0" style="display:block;color:#000000;text-decoration:none;font-family:Helvetica, arial, sans-serif;font-size:16px;max-width:10% !important;width:10%;height:auto !important;" - src="https://marketing-image-production.s3.amazonaws.com/uploads/bb39b20cf15e52c1c0933676e25f2b2402737c6560b8098c204ad6932b84eb2058804376dbc4db138c7a21dcaed9325bde36185648afac5bc97e3d73d4e12718.png" - alt="" width="60"> - </td> - </tr> - </table> - - <table class="module" role="module" data-type="text" border="0" cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;"> - <tr> - <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> - <div> - <p data-pm-slice="1 1 []">Dear {{ reviewerName }},</p> - - <p> </p> - - <p>You are no longer needed to review the article titled "{{ title }}" by {{ - authorName }}. If you have comments on this manuscript you believe the Editor should - see, please email them to {{ staffEmail }} as soon as possible. Thank you for your - time and I hope you will consider reviewing for Hindawi again.</p> - <p> </p> - <p>Best regards, - <br /> {{editorName}} - </p> - <p> </p> - </div> - - </td> - </tr> - </table> - <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe" - style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center"> - <div class="Unsubscribe--addressLine"> - <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>, - <span class="Unsubscribe--senderCity">NEW YORK</span>, - <span class="Unsubscribe--senderState">NY</span> - <span class="Unsubscribe--senderZip">10017</span> - </p> - </div> - <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px"> - <a class="Unsubscribe--unsubscribeLink" href="[Unsubscribe]">Unsubscribe</a> - </p> - </div> - </td> - </tr> - </table> - <!--[if mso]> - </td></tr></table> - </center> - <![endif]--> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </center> -</body> - -</html> \ No newline at end of file diff --git a/packages/component-mail-service/src/templates/unassign-reviewer.txt b/packages/component-mail-service/src/templates/unassign-reviewer.txt deleted file mode 100644 index dfbe89335..000000000 --- a/packages/component-mail-service/src/templates/unassign-reviewer.txt +++ /dev/null @@ -1,4 +0,0 @@ -Your Reviewer invitation to a manuscript has been revoked. -Hindawi Publishing Corporation -315 Madison Ave, Third Floor, Suite 307 -New York, NY 10017 \ No newline at end of file diff --git a/packages/component-user-manager/src/helpers/Collection.js b/packages/component-user-manager/src/helpers/Collection.js index 85853a987..44f6724a4 100644 --- a/packages/component-user-manager/src/helpers/Collection.js +++ b/packages/component-user-manager/src/helpers/Collection.js @@ -27,7 +27,12 @@ module.exports = { return res.status(200).json(user) } try { - await mailService.setupAssignEmail(user.email, 'add-author', url) + await mailService.sendSimpleEmail({ + toEmail: user.email, + user, + emailType: 'add-author', + dashboardUrl: url, + }) return res.status(200).json(user) } catch (e) { diff --git a/packages/component-user-manager/src/helpers/User.js b/packages/component-user-manager/src/helpers/User.js index a0db58ab1..aa2cfb6aa 100644 --- a/packages/component-user-manager/src/helpers/User.js +++ b/packages/component-user-manager/src/helpers/User.js @@ -24,7 +24,12 @@ module.exports = { ) try { - await mailService.setupInviteEmail(newUser, invitationType, url) + await mailService.sendSimpleEmail({ + toEmail: newUser.email, + user: newUser, + emailType: invitationType, + dashboardUrl: url, + }) return newUser } catch (e) { diff --git a/packages/component-user-manager/src/tests/collectionsUsers/patch.test.js b/packages/component-user-manager/src/tests/collectionsUsers/patch.test.js index 907872eac..03c35f392 100644 --- a/packages/component-user-manager/src/tests/collectionsUsers/patch.test.js +++ b/packages/component-user-manager/src/tests/collectionsUsers/patch.test.js @@ -10,9 +10,8 @@ const chance = new Chance() const models = Model.build() jest.mock('pubsweet-component-mail-service', () => ({ - setupAssignEmail: jest.fn(), - setupHandlingEditorAgreedEmail: jest.fn(), - setupDeclineEmail: jest.fn(), + sendSimpleEmail: jest.fn(), + sendNotificationEmail: jest.fn(), })) const { author, submittingAuthor } = fixtures.users diff --git a/packages/component-user-manager/src/tests/collectionsUsers/post.test.js b/packages/component-user-manager/src/tests/collectionsUsers/post.test.js index 6d1b34621..eede871a5 100644 --- a/packages/component-user-manager/src/tests/collectionsUsers/post.test.js +++ b/packages/component-user-manager/src/tests/collectionsUsers/post.test.js @@ -8,8 +8,8 @@ const Model = require('./../helpers/Model') const models = Model.build() jest.mock('pubsweet-component-mail-service', () => ({ - setupInviteEmail: jest.fn(), - setupAssignEmail: jest.fn(), + sendSimpleEmail: jest.fn(), + sendNotificationEmail: jest.fn(), })) const chance = new Chance() -- GitLab