diff --git a/src/pages/workflow/composables/useWorkflowConfig/workflowConfigAuthorOJS.js b/src/pages/workflow/composables/useWorkflowConfig/workflowConfigAuthorOJS.js index 584e3e9b2..1a536426d 100644 --- a/src/pages/workflow/composables/useWorkflowConfig/workflowConfigAuthorOJS.js +++ b/src/pages/workflow/composables/useWorkflowConfig/workflowConfigAuthorOJS.js @@ -84,6 +84,32 @@ export const WorkflowConfig = { items, }; }, + getSecondaryItems: ({ + submission, + selectedReviewRound, + selectedStageId, + permissions, + }) => { + if (!permissions.accessibleStages.includes(selectedStageId)) { + return { + shouldContinue: false, + items: [], + }; + } + }, + getActionItems: ({ + submission, + selectedStageId, + selectedReviewRound, + permissions, + }) => { + if (!permissions.accessibleStages.includes(selectedStageId)) { + return { + shouldContinue: false, + items: [], + }; + } + }, }, [pkp.const.WORKFLOW_STAGE_ID_SUBMISSION]: { getPrimaryItems: ({submission, selectedStageId, selectedReviewRound}) => { diff --git a/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js b/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js index 755bfbb7a..4305af3db 100644 --- a/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js +++ b/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js @@ -131,6 +131,32 @@ export const WorkflowConfig = { items, }; }, + getSecondaryItems: ({ + submission, + selectedReviewRound, + selectedStageId, + permissions, + }) => { + if (!permissions.accessibleStages.includes(selectedStageId)) { + return { + shouldContinue: false, + items: [], + }; + } + }, + getActionItems: ({ + submission, + selectedStageId, + selectedReviewRound, + permissions, + }) => { + if (!permissions.accessibleStages.includes(selectedStageId)) { + return { + shouldContinue: false, + items: [], + }; + } + }, }, [pkp.const.WORKFLOW_STAGE_ID_SUBMISSION]: { getPrimaryItems: ({submission, selectedStageId, selectedReviewRound}) => { diff --git a/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOJS.js b/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOJS.js index 99d3f9420..968a9e238 100644 --- a/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOJS.js +++ b/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOJS.js @@ -191,14 +191,12 @@ export function useWorkflowNavigationConfigOJS(pageInitConfig) { ); } - if (permissions.canAccessProduction) { - items.push( - getPublicationItem({ - name: 'galleys', - label: t('submission.layout.galleys'), - }), - ); - } + items.push( + getPublicationItem({ + name: 'galleys', + label: t('submission.layout.galleys'), + }), + ); return items; } @@ -283,25 +281,35 @@ export function useWorkflowNavigationConfigOJS(pageInitConfig) { return []; } - const menuItems = [ - { - key: 'workflow', - label: t('manager.workflow'), - icon: 'Dashboard', - items: getWorkflowItems({submission, permissions}), - }, - { + let menuItems = []; + + menuItems.push({ + key: 'workflow', + label: t('manager.workflow'), + icon: 'Dashboard', + items: getWorkflowItems({submission, permissions}), + }); + + if ( + pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD && + permissions.canAccessPublication + ) { + menuItems.push({ key: 'publication', label: t('submission.publication'), icon: 'MySubmissions', - items: - pageInitConfig.dashboardPage === - DashboardPageTypes.EDITORIAL_DASHBOARD - ? getPublicationItemsEditorial({submission, permissions}) - : getPublicationItemsAuthor({submission, permissions}), - }, - ]; - + items: getPublicationItemsEditorial({submission, permissions}), + }); + } else if ( + pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS + ) { + menuItems.push({ + key: 'publication', + label: t('submission.publication'), + icon: 'MySubmissions', + items: getPublicationItemsAuthor({submission, permissions}), + }); + } return menuItems; } diff --git a/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOMP.js b/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOMP.js index f4e9e7012..974f1c127 100644 --- a/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOMP.js +++ b/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOMP.js @@ -147,14 +147,12 @@ export function useWorkflowNavigationConfigOMP(pageInitConfig) { ); } - if (permissions.canAccessProduction) { - items.push( - getPublicationItem({ - name: 'galleys', - label: t('submission.layout.galleys'), - }), - ); - } + items.push( + getPublicationItem({ + name: 'galleys', + label: t('submission.layout.galleys'), + }), + ); return items; } @@ -298,15 +296,26 @@ export function useWorkflowNavigationConfigOMP(pageInitConfig) { items: getMarketingItems({submission, permissions}), }); } - menuItems.push({ - key: 'publication', - label: t('submission.publication'), - icon: 'MySubmissions', - items: - pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD - ? getPublicationItemsEditorial({submission, permissions}) - : getPublicationItemsAuthor({submission, permissions}), - }); + if ( + pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD && + permissions.canAccessPublication + ) { + menuItems.push({ + key: 'publication', + label: t('submission.publication'), + icon: 'MySubmissions', + items: getPublicationItemsEditorial({submission, permissions}), + }); + } else if ( + pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS + ) { + menuItems.push({ + key: 'publication', + label: t('submission.publication'), + icon: 'MySubmissions', + items: getPublicationItemsAuthor({submission, permissions}), + }); + } return menuItems; } diff --git a/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOPS.js b/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOPS.js index c2d36a1e0..9b1d502df 100644 --- a/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOPS.js +++ b/src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOPS.js @@ -176,15 +176,26 @@ export function useWorkflowNavigationConfigOPS(pageInitConfig) { }); } - menuItems.push({ - key: 'publication', - label: t('submission.publication'), - icon: 'MySubmissions', - items: - pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD - ? getPublicationItemsEditorial({submission, permissions}) - : getPublicationItemsAuthor({submission, permissions}), - }); + if ( + pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD && + permissions.canAccessPublication + ) { + menuItems.push({ + key: 'publication', + label: t('submission.publication'), + icon: 'MySubmissions', + items: getPublicationItemsEditorial({submission, permissions}), + }); + } else if ( + pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS + ) { + menuItems.push({ + key: 'publication', + label: t('submission.publication'), + icon: 'MySubmissions', + items: getPublicationItemsAuthor({submission, permissions}), + }); + } return menuItems; } diff --git a/src/pages/workflow/composables/useWorkflowPermissions.js b/src/pages/workflow/composables/useWorkflowPermissions.js index 45d567e7d..221ebf2e3 100644 --- a/src/pages/workflow/composables/useWorkflowPermissions.js +++ b/src/pages/workflow/composables/useWorkflowPermissions.js @@ -58,17 +58,13 @@ export function useWorkflowPermissions({submission, selectedPublication}) { } if ( - hasIntersection(activeStage.currentUserAssignedRoles, [ - ...EditorialRoles, - pkp.const.ROLE_ID_AUTHOR, - ]) + hasIntersection(activeStage.currentUserAssignedRoles, [...EditorialRoles]) ) { canAccessPublication = true; if ( hasIntersection(productionStage.currentUserAssignedRoles, [ ...EditorialRoles, - pkp.const.ROLE_ID_AUTHOR, ]) ) { canAccessProduction = true;