diff --git a/packages/component-invite/src/helpers/User.js b/packages/component-invite/src/helpers/User.js index e27e068480de08c30ed171c12429898e870389ff..d64a9d9a9f9f29ccf7059d5fbb097eb12cc8e6ef 100644 --- a/packages/component-invite/src/helpers/User.js +++ b/packages/component-invite/src/helpers/User.js @@ -80,6 +80,17 @@ const setupReviewerDecisionEmailData = async ({ timestamp, }, }) + await mailService.sendNotificationEmail({ + toEmail: user.email, + user, + emailType: 'reviewer-thank-you', + meta: { + collection: { customId: collection.customId, id: collection.id }, + fragment: { id, title, authorName }, + handlingEditorName: collection.handlingEditor.name, + baseUrl, + }, + }) } const setupReviewerUnassignEmail = async ({ diff --git a/packages/component-mail-service/src/Mail.js b/packages/component-mail-service/src/Mail.js index bd0712b551a9a3041912eed787f165566e73d071..da82365693ca61e4e1d845f487a5211579d2ddff 100644 --- a/packages/component-mail-service/src/Mail.js +++ b/packages/component-mail-service/src/Mail.js @@ -345,6 +345,24 @@ module.exports = { replacements.signatureName }` break + case 'reviewer-thank-you': + subject = `${meta.collection.customId}: Manuscript Review` + replacements.previewText = 'Hindawi says thank you' + replacements.intro = `Dear Dr. ${user.firstName} ${user.lastName}` + + replacements.paragraph = `Thank you for agreeing to review the manuscript titled "${ + meta.fragment.title + }" by ${meta.fragment.authorName}.` + replacements.beforeAnchor = + 'You can view the full PDF file of the manuscript and post your review report using the following URL:' + replacements.afterAnchor = '' + replacements.signatureName = meta.handlingEditorName + textBody = `${replacements.intro} ${replacements.paragraph} ${ + replacements.beforeAnchor + } ${replacements.detailsUrl} ${replacements.afterAnchor} ${ + replacements.signatureName + }` + break default: subject = 'Hindawi Notification!' break diff --git a/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js b/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js index 3519e1a5eb6371d2f5517b49fac44dfa0c3bcd7c..f34bc77bef13e42f38b5cdceea349380235c0dc6 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js +++ b/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js @@ -3,10 +3,11 @@ import { get } from 'lodash' import { Icon } from '@pubsweet/ui' import { connect } from 'react-redux' import styled from 'styled-components' -import { getFormValues, reset as resetForm } from 'redux-form' import { compose, withState, withHandlers } from 'recompose' +import { getFormValues, reset as resetForm } from 'redux-form' -import { StepOne, StepTwo, RootContainer } from './' +import { StepOne, StepTwo } from './' +import { FormItems } from '../UIComponents' import { selectError, selectFetching, @@ -24,12 +25,17 @@ const RecommendWizard = ({ recommendationError, ...rest }) => ( - <RootContainer> + <FormItems.RootContainer> <IconButton onClick={hideModal}> <Icon primary>x</Icon> </IconButton> {step === 0 && ( - <StepOne disabled={!decision} onSubmit={nextStep} {...rest} /> + <StepOne + disabled={!decision} + hideModal={hideModal} + onSubmit={nextStep} + {...rest} + /> )} {step === 1 && ( <StepTwo @@ -40,7 +46,7 @@ const RecommendWizard = ({ recommendationError={recommendationError} /> )} - </RootContainer> + </FormItems.RootContainer> ) export default compose( diff --git a/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js b/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js index 004eb9ebe53b03c89fbe5d46359ec70868f5f611..dd47f928dbdb054d46386617d829e88708ba5772 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js +++ b/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js @@ -29,11 +29,17 @@ export default compose( modalComponent: ModalComponent, })), withHandlers({ - showFirstStep: ({ collectionId, fragmentId, showModal }) => () => { + showFirstStep: ({ + showModal, + hideModal, + fragmentId, + collectionId, + }) => () => { showModal({ - type: SHOW_WIZARD, - collectionId, + hideModal, fragmentId, + collectionId, + type: SHOW_WIZARD, }) }, }), diff --git a/packages/components-faraday/src/components/MakeRecommendation/StepOne.js b/packages/components-faraday/src/components/MakeRecommendation/StepOne.js index 5ce88ae43199a61e31aa07daa504e2bc1c6fb5dd..fc20adb61b276af9f16aabb22e81fec792d2f026 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/StepOne.js +++ b/packages/components-faraday/src/components/MakeRecommendation/StepOne.js @@ -2,13 +2,10 @@ import React from 'react' import { reduxForm } from 'redux-form' import { RadioGroup, ValidatedField, Button } from '@pubsweet/ui' -import { RootContainer, Row, RowItem, Title } from './' +import { utils } from './' +import { FormItems } from '../UIComponents' -const radioOptions = [ - { value: 'reject', label: 'Reject' }, - { value: 'publish', label: 'Publish' }, - { value: 'revise', label: 'Request revision' }, -] +const { RootContainer, Row, RowItem, Title } = FormItems const StepOne = ({ hideModal, disabled, onSubmit }) => ( <RootContainer> @@ -17,7 +14,11 @@ const StepOne = ({ hideModal, disabled, onSubmit }) => ( <RowItem> <ValidatedField component={input => ( - <RadioGroup name="decision" options={radioOptions} {...input} /> + <RadioGroup + name="decision" + options={utils.recommendationOptions} + {...input} + /> )} name="decision" /> diff --git a/packages/components-faraday/src/components/MakeRecommendation/StepTwo.js b/packages/components-faraday/src/components/MakeRecommendation/StepTwo.js index 1f7f86db265fb432e5bed61a5a7f0411ee44827a..90f94848451dd8bdc107dd4c9858cc45107ec5e6 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/StepTwo.js +++ b/packages/components-faraday/src/components/MakeRecommendation/StepTwo.js @@ -14,7 +14,10 @@ import { ValidatedField, } from '@pubsweet/ui' -import { +import { utils } from './' +import { FormItems } from '../UIComponents' + +const { Row, Err, Label, @@ -23,12 +26,7 @@ import { Textarea, RootContainer, FormContainer, -} from './' - -const revisionOptions = [ - { value: 'minor', label: 'Minor' }, - { value: 'major', label: 'Major' }, -] +} = FormItems const Form = RootContainer.withComponent(FormContainer) @@ -86,7 +84,7 @@ const StepTwo = ({ <RadioGroup name="revision.revision-type" {...input} - options={revisionOptions} + options={utils.revisionOptions} /> )} name="revision.revisionType" diff --git a/packages/components-faraday/src/components/MakeRecommendation/index.js b/packages/components-faraday/src/components/MakeRecommendation/index.js index a8545992fa0500b61b139077740ab9b9a54e2431..9eb54e667aef35486ff67219b71d6ea64ea1e4f6 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/index.js +++ b/packages/components-faraday/src/components/MakeRecommendation/index.js @@ -1,4 +1,6 @@ -export * from './FormItems' +import * as utils from './utils' + +export { utils } export { default as StepOne } from './StepOne' export { default as StepTwo } from './StepTwo' export { default as Recommendation } from './Recommendation' diff --git a/packages/components-faraday/src/components/MakeRecommendation/utils.js b/packages/components-faraday/src/components/MakeRecommendation/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..fd9ebee92cb62b16c18bfa71a8e51190fc123d8f --- /dev/null +++ b/packages/components-faraday/src/components/MakeRecommendation/utils.js @@ -0,0 +1,10 @@ +export const recommendationOptions = [ + { value: 'reject', label: 'Reject' }, + { value: 'publish', label: 'Publish' }, + { value: 'revise', label: 'Request revision' }, +] + +export const revisionOptions = [ + { value: 'minor', label: 'Minor' }, + { value: 'major', label: 'Major' }, +] diff --git a/packages/components-faraday/src/components/SignUp/FormItems.js b/packages/components-faraday/src/components/SignUp/FormItems.js deleted file mode 100644 index 22089ca2c007dc4899737333d059efa744b5f0bd..0000000000000000000000000000000000000000 --- a/packages/components-faraday/src/components/SignUp/FormItems.js +++ /dev/null @@ -1,65 +0,0 @@ -import { th } from '@pubsweet/ui' -import styled from 'styled-components' - -export const RootContainer = styled.div` - background-color: ${th('backgroundColorReverse')}; - border: ${th('borderDefault')}; - display: flex; - flex-direction: column; - margin: 0 auto; - max-width: 550px; - min-width: 300px; - padding: 20px; -` - -export const Title = styled.div` - color: ${th('colorPrimary')}; - font-family: ${th('fontHeading')}; - font-size: ${th('fontSizeHeading5')}; - font-weight: bold; - margin: 10px auto; - text-align: center; -` -export const Subtitle = styled.div` - font-family: ${th('fontReading')}; - font-size: ${th('fontSizeBase')}; - font-weight: normal; - margin: 10px auto; - text-align: center; -` - -export const Email = styled.div` - font-family: ${th('fontReading')}; - font-size: ${th('fontSizeBase')}; - font-weight: normal; - margin: 10px auto; - text-align: center; -` - -export const FormContainer = styled.form`` - -export const Row = styled.div` - align-items: center; - display: flex; - flex-direction: row; - justify-content: space-evenly; - margin: ${th('gridUnit')} 0; -` - -export const RowItem = styled.div` - flex: 1; - margin-right: ${th('gridUnit')}; -` - -export const Label = styled.div` - font-family: ${th('fontReading')}; - font-size: ${th('fontSizeBaseSmall')}; - text-transform: uppercase; -` -export const Err = styled.span` - color: ${th('colorError')}; - font-family: ${th('fontReading')}; - font-size: ${th('fontSizeBase')}; - margin-top: calc(${th('gridUnit')}*-1); - text-align: center; -` diff --git a/packages/components-faraday/src/components/SignUp/ReviewerDecline.js b/packages/components-faraday/src/components/SignUp/ReviewerDecline.js index 455db357d33b6463e8fbdc8eaa181073859cd6db..74f726dd83b84c55f25a7ff531081c3590aa1ca5 100644 --- a/packages/components-faraday/src/components/SignUp/ReviewerDecline.js +++ b/packages/components-faraday/src/components/SignUp/ReviewerDecline.js @@ -6,12 +6,14 @@ import { withJournal } from 'xpub-journal' import { replace } from 'react-router-redux' import { compose, lifecycle } from 'recompose' -import { RootContainer, Title } from './FormItems' -import { reviewerDecline } from '../../redux/reviewers' import { redirectToError } from '../utils' +import { FormItems } from '../UIComponents' +import { reviewerDecline } from '../../redux/reviewers' + +const { RootContainer, Title } = FormItems const ReviewerDecline = ({ journal: { metadata: { email } } }) => ( - <RootContainer> + <RootContainer bordered> <Title>Thank you for letting us know.</Title> <div> <Description> diff --git a/packages/components-faraday/src/components/SignUp/ReviewerInviteDecision.js b/packages/components-faraday/src/components/SignUp/ReviewerInviteDecision.js index 8065fa65e51127e6eebe88734ec3f6e0866f3cc0..c47b24cc609ca9ab64af40274a09aabd538d91ca 100644 --- a/packages/components-faraday/src/components/SignUp/ReviewerInviteDecision.js +++ b/packages/components-faraday/src/components/SignUp/ReviewerInviteDecision.js @@ -8,7 +8,11 @@ import { compose, withState, lifecycle } from 'recompose' import { loginUser } from 'pubsweet-component-login/actions' import { Button, ValidatedField, TextField } from '@pubsweet/ui' -import { +import { redirectToError } from '../utils' +import { reviewerDecision, setReviewerPassword } from '../../redux/reviewers' +import { FormItems } from '../UIComponents' + +const { Row, Err, Title, @@ -18,9 +22,7 @@ import { Subtitle, RootContainer, FormContainer, -} from './FormItems' -import { reviewerDecision, setReviewerPassword } from '../../redux/reviewers' -import { redirectToError } from '../utils' +} = FormItems const agreeText = `You have been invited to review a manuscript on the Hindawi platform. Please set a password and proceed to the manuscript.` const declineText = `You have decline to work on a manuscript.` @@ -33,7 +35,7 @@ const ReviewerInviteDecision = ({ reviewerEmail, errorMessage, }) => ( - <RootContainer> + <RootContainer bordered> <Title>Hindawi Invitation</Title> <Subtitle>{agree === 'true' ? agreeText : declineText}</Subtitle> <Email>{reviewerEmail}</Email> diff --git a/packages/components-faraday/src/components/SignUp/ReviewerSignUp.js b/packages/components-faraday/src/components/SignUp/ReviewerSignUp.js index d1771f7bd0d2b930677b232ff559ffd619df1e78..cda07d2d289b3020b08171e64e58c5c2659f459a 100644 --- a/packages/components-faraday/src/components/SignUp/ReviewerSignUp.js +++ b/packages/components-faraday/src/components/SignUp/ReviewerSignUp.js @@ -3,8 +3,8 @@ import { isEmpty } from 'lodash' import { Route } from 'react-router-dom' import { AuthenticatedComponent } from 'pubsweet-client' -import { ReviewerInviteDecision, ReviewerDecline } from './' import { parseSearchParams } from './utils' +import { ReviewerInviteDecision, ReviewerDecline } from './' const PrivateRoute = ({ component: Component, token, ...rest }) => ( <Route @@ -28,8 +28,8 @@ const ReviewerSignUp = ({ location }) => { <Route component={props => ( <ReviewerDecline - {...props} invitationToken={invitationToken} + {...props} {...rest} /> )} diff --git a/packages/components-faraday/src/components/SignUp/SignUpInvitationForm.js b/packages/components-faraday/src/components/SignUp/SignUpInvitationForm.js index eae8daeff0553e71f32e629f826613e832102da6..f7b21c17851e6a0d6dcffe32d66c3fdd11bf77c7 100644 --- a/packages/components-faraday/src/components/SignUp/SignUpInvitationForm.js +++ b/packages/components-faraday/src/components/SignUp/SignUpInvitationForm.js @@ -2,19 +2,21 @@ import React from 'react' import Step0 from './SignUpStep0' import Step1 from './SignUpStep1' -import { RootContainer, Title, Subtitle, Email, Err } from './FormItems' +import { FormItems } from '../UIComponents' + +const { RootContainer, Title, Subtitle, Email, Err } = FormItems const SignUpInvitation = ({ - journal, + step, email, token, - step, + error, + journal, nextStep, - submitConfirmation, initialValues, - error, + submitConfirmation, }) => ( - <RootContainer> + <RootContainer bordered> <Title>Add New Account Details</Title> <Subtitle> Your details have been pre-filled, please review and confirm before set diff --git a/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js b/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js index c6c01d53dc844b9b22222a7554740c1f77b58f42..508ecf4d0edea24a67dfbb18d67fa39165cc21c5 100644 --- a/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js +++ b/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js @@ -1,8 +1,8 @@ import { get } from 'lodash' -import { create } from 'pubsweet-client/src/helpers/api' import { withJournal } from 'xpub-journal' -import { loginUser } from 'pubsweet-component-login/actions' import { SubmissionError } from 'redux-form' +import { create } from 'pubsweet-client/src/helpers/api' +import { loginUser } from 'pubsweet-component-login/actions' import { compose, withState, withProps, withHandlers } from 'recompose' import SignUpInvitation from './SignUpInvitationForm' diff --git a/packages/components-faraday/src/components/SignUp/SignUpStep0.js b/packages/components-faraday/src/components/SignUp/SignUpStep0.js index 03c8d2812a8e03509d07beab6a7c4989d2d5643d..93c863e78a36fce55098a47234b6a92250a8efff 100644 --- a/packages/components-faraday/src/components/SignUp/SignUpStep0.js +++ b/packages/components-faraday/src/components/SignUp/SignUpStep0.js @@ -4,7 +4,9 @@ import { isUndefined } from 'lodash' import { required } from 'xpub-validators' import { Button, ValidatedField, TextField, Menu } from '@pubsweet/ui' -import { FormContainer, Row, RowItem, Label } from './FormItems' +import { FormItems } from '../UIComponents' + +const { FormContainer, Row, RowItem, Label } = FormItems const Step0 = ({ journal, handleSubmit, initialValues, error }) => !isUndefined(initialValues) ? ( diff --git a/packages/components-faraday/src/components/SignUp/SignUpStep1.js b/packages/components-faraday/src/components/SignUp/SignUpStep1.js index 706961d985579837b711c13e661756933ffb5956..f5469320fbd6d05098fbdd9c4f78da2005e6a39f 100644 --- a/packages/components-faraday/src/components/SignUp/SignUpStep1.js +++ b/packages/components-faraday/src/components/SignUp/SignUpStep1.js @@ -3,7 +3,9 @@ import { reduxForm } from 'redux-form' import { required } from 'xpub-validators' import { Button, ValidatedField, TextField } from '@pubsweet/ui' -import { FormContainer, Row, RowItem, Label, Err } from './FormItems' +import { FormItems } from '../UIComponents' + +const { FormContainer, Row, RowItem, Label, Err } = FormItems const Step1 = ({ journal, handleSubmit, error }) => ( <FormContainer onSubmit={handleSubmit}> diff --git a/packages/components-faraday/src/components/MakeRecommendation/FormItems.js b/packages/components-faraday/src/components/UIComponents/FormItems.js similarity index 97% rename from packages/components-faraday/src/components/MakeRecommendation/FormItems.js rename to packages/components-faraday/src/components/UIComponents/FormItems.js index 66534ec0c5d026dc771fefd50fa05596c74d05d6..83a36e4dc3c62bb3175abfd79ff4c3952284cb4f 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/FormItems.js +++ b/packages/components-faraday/src/components/UIComponents/FormItems.js @@ -58,22 +58,24 @@ export const Label = styled.div` font-size: ${th('fontSizeBaseSmall')}; text-transform: uppercase; ` + export const Err = styled.span` color: ${th('colorError')}; font-family: ${th('fontReading')}; font-size: ${th('fontSizeBase')}; - margin-top: calc(${th('gridUnit')}*-1); + margin-top: calc(${th('gridUnit')} * -1); text-align: center; ` export const Textarea = styled.textarea` - width: 400px; - padding: calc(${th('subGridUnit')}*2); - font-size: ${th('fontSizeBaseSmall')}; - font-family: ${th('fontWriting')}; border-color: ${({ hasError }) => hasError ? th('colorError') : th('colorPrimary')}; + font-size: ${th('fontSizeBaseSmall')}; + font-family: ${th('fontWriting')}; + padding: calc(${th('subGridUnit')}*2); transition: all 300ms linear; + width: 400px; + &:read-only { background-color: ${th('colorBackgroundHue')}; } diff --git a/packages/components-faraday/src/components/UIComponents/index.js b/packages/components-faraday/src/components/UIComponents/index.js index 0b3250328118937d535b00e72bb038c6c45fb863..738dc3c98c71921c7bcd8c964b59457d0c29cdb4 100644 --- a/packages/components-faraday/src/components/UIComponents/index.js +++ b/packages/components-faraday/src/components/UIComponents/index.js @@ -1,3 +1,6 @@ +import * as FormItems from './FormItems' + +export { FormItems } export { default as Logo } from './Logo' export { default as Spinner } from './Spinner' export { default as NotFound } from './NotFound'