Skip to content
Snippets Groups Projects
Commit 3a6b985d authored by Alexandru Munteanu's avatar Alexandru Munteanu
Browse files

Merge branch 'develop' of gitlab.coko.foundation:xpub/xpub-faraday into hindawi-theme

parents aa14c940 ea6c49ec
No related branches found
No related tags found
1 merge request!43Sprint #19
......@@ -24,6 +24,10 @@ export const currentUserIs = ({ currentUser: { user } }, role) => {
return isHe
case 'staff':
return isAdmin || isEic || isHe
case 'isEiC':
return isEic
case 'isAdmin':
return isAdmin
case 'adminEiC':
return isAdmin || isEic
default:
......@@ -71,6 +75,15 @@ export const canMakeDecision = (state, collection, fragment = {}) => {
return isEIC && canMakeDecisionStatuses.includes(status)
}
const canEditManuscriptStatuses = ['draft', 'technicalChecks']
export const canEditManuscript = (state, collection, fragment = {}) => {
if (fragment.id !== last(collection.fragments)) return false
const status = get(collection, 'status')
const isAdmin = currentUserIs(state, 'isAdmin')
return isAdmin && canEditManuscriptStatuses.includes(status)
}
export const canSeeReviewersReports = (state, collectionId) => {
const isHE = isHEToManuscript(state, collectionId)
const isEiC = currentUserIs(state, 'adminEiC')
......
......@@ -30,7 +30,6 @@ const ManuscriptLayout = ({
editorInChief,
canMakeRevision,
editorialRecommendations,
responseToReviewers,
hasResponseToReviewers,
project = {},
version = {},
......
import React from 'react'
import { compose } from 'recompose'
import { Icon } from '@pubsweet/ui'
import { compose, withHandlers } from 'recompose'
import { Icon, Button } from '@pubsweet/ui'
import { connect } from 'react-redux'
import styled from 'styled-components'
import { th } from '@pubsweet/ui-toolkit'
......@@ -11,21 +11,30 @@ import {
Recommendation,
} from 'pubsweet-components-faraday/src/components'
import { createRevision } from 'pubsweet-component-wizard/src/redux/conversion'
import {
canMakeDecision,
canMakeRecommendation,
canEditManuscript,
} from 'pubsweet-component-faraday-selectors/src'
const SideBarActions = ({
project,
version,
createRevision,
goToEdit,
canMakeDecision,
canEditManuscript,
canMakeRecommendation,
}) => (
<Root>
{canEditManuscript && (
<Button
data-test="button-edit-manuscript"
onClick={goToEdit(project, version)}
primary
>
Edit
</Button>
)}
{canMakeDecision && (
<Decision
collectionId={project.id}
......@@ -55,15 +64,18 @@ const SideBarActions = ({
export default compose(
withRouter,
connect(
(state, { project, version }) => ({
canMakeDecision: canMakeDecision(state, project, version),
canMakeRecommendation: canMakeRecommendation(state, project, version),
}),
(dispatch, { project, version, history }) => ({
createRevision: () => dispatch(createRevision(project, version, history)),
}),
),
connect((state, { project, version }) => ({
canMakeDecision: canMakeDecision(state, project, version),
canMakeRecommendation: canMakeRecommendation(state, project, version),
canEditManuscript: canEditManuscript(state, project, version),
})),
withHandlers({
goToEdit: ({ history }) => (project, version) => () => {
history.push(`/projects/${project.id}/versions/${version.id}/submit`, {
editMode: true,
})
},
}),
)(SideBarActions)
// #region styled-components
......
......@@ -10,7 +10,13 @@ import { DragDropContext } from 'react-dnd'
import { Icon, Button } from '@pubsweet/ui'
import HTML5Backend from 'react-dnd-html5-backend'
import { selectCollection, selectFragment } from 'xpub-selectors'
import { withStateHandlers, compose, toClass, withProps } from 'recompose'
import {
withStateHandlers,
compose,
toClass,
withProps,
withHandlers,
} from 'recompose'
import {
withModal,
......@@ -44,9 +50,11 @@ const NewWizard = ({
step,
history,
prevStep,
isEditMode,
isLastStep,
isFirstStep,
handleSubmit,
getButtonText,
journal: { manuscriptTypes = [] },
...rest
}) => (
......@@ -76,7 +84,7 @@ const NewWizard = ({
>{`< BACK`}</Button>
)}
<Button data-test="submission-next" onClick={handleSubmit} primary>
{isLastStep ? `SUBMIT MANUSCRIPT` : `NEXT STEP >`}
{getButtonText()}
</Button>
</ButtonContainer>
</Row>
......@@ -132,13 +140,22 @@ export default compose(
},
),
withProps(setInitialValues),
withProps(({ formValues, formSyncErrors, submitFailed, step }) => ({
withProps(({ formValues, formSyncErrors, submitFailed, step, location }) => ({
isFirstStep: step === 0,
isLastStep: step === wizardSteps.length - 1,
filesError: submitFailed && get(formSyncErrors, 'files', ''),
authorsError: submitFailed && get(formSyncErrors, 'authors', ''),
hasConflicts: get(formValues, 'conflicts.hasConflicts', 'no') === 'yes',
isEditMode: get(location, 'state.editMode', false),
})),
withHandlers({
getButtonText: ({ isLastStep, isEditMode }) => () => {
if (isEditMode && isLastStep) {
return 'SAVE CHANGES'
}
return isLastStep ? `SUBMIT MANUSCRIPT` : `NEXT STEP >`
},
}),
withModal(() => ({
modalComponent: ModalWrapper,
})),
......
......@@ -82,6 +82,7 @@ export const onSubmit = (
nextStep,
showModal,
hideModal,
isEditMode,
setModalError,
autosaveRequest,
autosaveSuccess,
......@@ -93,7 +94,7 @@ export const onSubmit = (
) => {
if (step !== 2) {
nextStep()
} else {
} else if (!isEditMode) {
showModal({
title:
'By submitting the manuscript you agree to the following statements:',
......@@ -119,5 +120,7 @@ export const onSubmit = (
},
onCancel: hideModal,
})
} else {
history.goBack()
}
}
......@@ -46,7 +46,7 @@ module.exports = {
API_ENDPOINT: '/api',
baseUrl: process.env.CLIENT_BASE_URL || 'http://localhost:3000',
'login-redirect': '/',
'redux-log': process.env.NODE_ENV === 'development',
'redux-log': process.env.NODE_ENV !== 'production',
theme: process.env.PUBSWEET_THEME,
},
orcid: {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment