@@ -167,7 +168,7 @@ export default {
const workflowStore = useWorkflowStore();
workflowStore.workflowAssignToIssue({}, (finishedData) => {
- if (finishedData.data) {
+ if (finishedData?.data) {
this.currentValue = finishedData.data.issueId;
}
});
diff --git a/src/composables/useForm.js b/src/composables/useForm.js
index 161a8679e..c1681aff5 100644
--- a/src/composables/useForm.js
+++ b/src/composables/useForm.js
@@ -198,6 +198,10 @@ export function useForm(_form = {}, {customSubmit} = {}) {
}
}
+ function setHiddenValue(name, value) {
+ form.value.hiddenFields[name] = value;
+ }
+
/**
* Clear a specific form field
* @param {string} fieldName - The name of the field to clear
@@ -535,6 +539,7 @@ export function useForm(_form = {}, {customSubmit} = {}) {
set,
setValue,
setValues,
+ setHiddenValue,
getValue,
removeFieldValue,
isFieldValueArray,
@@ -552,6 +557,7 @@ export function useForm(_form = {}, {customSubmit} = {}) {
initEmptyForm,
addPage,
addGroup,
+ addField,
addFieldText,
addFieldSelect,
addFieldOptions,
diff --git a/src/composables/useLegacyGridUrl.test.js b/src/composables/useLegacyGridUrl.test.js
index 5b347c05e..651e239d3 100644
--- a/src/composables/useLegacyGridUrl.test.js
+++ b/src/composables/useLegacyGridUrl.test.js
@@ -33,15 +33,15 @@ describe('useLegacyGridUrl', () => {
);
});
- test('modals.publish.AssignToIssueHandler', () => {
- const {url} = useLegacyGridUrl({
- component: 'modals.publish.AssignToIssueHandler',
- op: 'assign',
- params: {submissionId: 13, publicationId: 14},
- });
+ // test('modals.publish.AssignToIssueHandler', () => {
+ // const {url} = useLegacyGridUrl({
+ // component: 'modals.publish.AssignToIssueHandler',
+ // op: 'assign',
+ // params: {submissionId: 13, publicationId: 14},
+ // });
- expect(url.value).toBe(
- 'http://mock/index.php/publicknowledge/$$$call$$$/modals/publish/assign-to-issue/assign?submissionId=13&publicationId=14',
- );
- });
+ // expect(url.value).toBe(
+ // 'http://mock/index.php/publicknowledge/$$$call$$$/modals/publish/assign-to-issue/assign?submissionId=13&publicationId=14',
+ // );
+ // });
});
diff --git a/src/pages/workflow/WorkflowPageOJS.vue b/src/pages/workflow/WorkflowPageOJS.vue
index 25df92228..d893435df 100644
--- a/src/pages/workflow/WorkflowPageOJS.vue
+++ b/src/pages/workflow/WorkflowPageOJS.vue
@@ -23,6 +23,7 @@ import WorkflowNotificationDisplay from './components/primary/WorkflowNotificati
import WorkflowListingEmails from './components/primary/WorkflowListingEmails.vue';
import WorkflowPaymentDropdown from './components/header/WorkflowPaymentDropdown.vue';
import WorkflowPublicationForm from './components/publication/WorkflowPublicationForm.vue';
+import WorkflowPublicationFormIssue from './components/publication/WorkflowPublicationFormIssue.vue';
import WorkflowPublicationJats from './components/publication/WorkflowPublicationJats.vue';
import WorkflowPublicationVersionControl from './components/publication/WorkflowPublicationVersionControl.vue';
import WorkflowChangeSubmissionLanguage from './components/publication/WorkflowChangeSubmissionLanguage.vue';
@@ -61,6 +62,7 @@ const Components = markRaw({
WorkflowPaymentDropdown,
WorkflowPrimaryBasicMetadata,
WorkflowPublicationForm,
+ WorkflowPublicationFormIssue,
WorkflowPublicationJats,
WorkflowPublicationVersionControl,
WorkflowChangeSubmissionLanguage,
diff --git a/src/pages/workflow/components/publication/WorkflowPublicationFormIssue.vue b/src/pages/workflow/components/publication/WorkflowPublicationFormIssue.vue
new file mode 100644
index 000000000..e336959db
--- /dev/null
+++ b/src/pages/workflow/components/publication/WorkflowPublicationFormIssue.vue
@@ -0,0 +1,53 @@
+
+
+ {{ noFieldsMessage }}
+
+
+
+
+
diff --git a/src/pages/workflow/components/publication/WorkflowVersionSideModal.vue b/src/pages/workflow/components/publication/WorkflowVersionSideModal.vue
index c68780c46..a3d51758c 100644
--- a/src/pages/workflow/components/publication/WorkflowVersionSideModal.vue
+++ b/src/pages/workflow/components/publication/WorkflowVersionSideModal.vue
@@ -1,11 +1,11 @@
- {{ t('publication.scheduledForPublication.versionStage.label') }}
+ {{ t('publication.scheduledForPublication.reviewDetails.label') }}
- {{ t('publication.scheduledForPublication.versionStage.description') }}
+ {{ t('publication.scheduledForPublication.reviewDetails.description') }}
@@ -29,11 +29,16 @@ const props = defineProps({
type: Function,
default: () => () => {},
},
+ issueCount: {
+ type: Number,
+ default: 0,
+ },
});
const {form, set} = useWorkflowVersionForm(
'publish',
props.onCloseFn,
props.onSubmitFn,
+ props.issueCount,
);
diff --git a/src/pages/workflow/composables/useWorkflowActions.js b/src/pages/workflow/composables/useWorkflowActions.js
index 839ebdda3..ec87e490b 100644
--- a/src/pages/workflow/composables/useWorkflowActions.js
+++ b/src/pages/workflow/composables/useWorkflowActions.js
@@ -4,6 +4,7 @@ import {useLocalize} from '@/composables/useLocalize';
import {useUrl} from '@/composables/useUrl';
import {useFetch} from '@/composables/useFetch';
import {useLegacyGridUrl} from '@/composables/useLegacyGridUrl';
+import {useApp} from '@/composables/useApp';
import WorkflowModalChangeSubmissionLanguage from '@/pages/workflow/modals/WorkflowChangeSubmissionLanguageModal.vue';
import WorkflowVersionDialogBody from '@/pages/workflow/components/publication/WorkflowVersionDialogBody.vue';
@@ -37,27 +38,41 @@ export function useWorkflowActions() {
redirectToPage();
}
- function workflowAssignToIssue(
- {submission, selectedPublication},
- finishedCallback,
- ) {
- const {openLegacyModal} = useLegacyGridUrl({
- component: 'modals.publish.AssignToIssueHandler',
- op: 'assign',
- params: {
- submissionId: submission.id,
- publicationId: selectedPublication.id,
- },
- });
-
- openLegacyModal(
- {
- title: t('publication.selectIssue'),
- closeOnFormSuccessId: pkp.const.FORM_ASSIGN_TO_ISSUE,
- },
- finishedCallback,
- );
- }
+ /**
+ * TODO: need this anymore ?
+ * Legacy function to assign a publication to an issue.
+ *
+ * NOTE: This function is kept for backward compatibility.
+ * For new implementations, consider using the combined version assignment
+ * and issue assignment functionality in workflowAssignPublicationStage.
+ *
+ * @param {Object} params - Parameters object
+ * @param {Object} params.submission - The submission object
+ * @param {Object} params.selectedPublication - The selected publication
+ * @param {Function} finishedCallback - Callback function to execute when finished
+ */
+ // function workflowAssignToIssue(
+ // {submission, selectedPublication},
+ // finishedCallback,
+ // ) {
+ // console.log('Legacy workflowAssignToIssue called');
+ // const {openLegacyModal} = useLegacyGridUrl({
+ // component: 'modals.publish.AssignToIssueHandler',
+ // op: 'assign',
+ // params: {
+ // submissionId: submission.id,
+ // publicationId: selectedPublication.id,
+ // },
+ // });
+
+ // openLegacyModal(
+ // {
+ // title: t('publication.selectIssue'),
+ // closeOnFormSuccessId: pkp.const.FORM_ASSIGN_TO_ISSUE,
+ // },
+ // finishedCallback,
+ // );
+ // }
function workflowViewActivityLog({submission}, finishedCallback) {
const {openLegacyModal} = useLegacyGridUrl({
@@ -84,8 +99,29 @@ export function useWorkflowActions() {
);
}
+ /**
+ * Open a modal to assign publication stage and optionally assign to an issue.
+ *
+ * This function combines version assignment with issue assignment in a single modal.
+ * The modal will show:
+ * - Version stage selection (required for unassigned versions)
+ * - Version significance selection (major/minor)
+ * - Issue assignment options (only if issues exist in the journal)
+ *
+ * Issue assignment options include:
+ * - No issue assignment (publish immediately)
+ * - Assign to future issue and publish immediately
+ * - Assign to future issue and schedule only
+ * - Assign to current/back issue (publish immediately)
+ *
+ * @param {Object} params - Parameters object
+ * @param {Object} params.selectedPublication - The selected publication
+ * @param {Object} params.submission - The submission object
+ * @param {Object} params.pageInitConfig - Page initialization config containing issue count
+ * @param {Function} finishedCallback - Callback function to execute when finished
+ */
function workflowAssignPublicationStage(
- {selectedPublication, submission},
+ {selectedPublication, submission, pageInitConfig},
finishedCallback,
) {
const {openSideModal, closeSideModal} = useModal();
@@ -94,9 +130,14 @@ export function useWorkflowActions() {
closeSideModal(WorkflowVersionSideModal);
}
+ // Get issue count from pageInitConfig if available
+ // This determines whether to show issue assignment options
+ const issueCount = pageInitConfig?.publicationSettings?.countIssues || 0;
+
openSideModal(WorkflowVersionSideModal, {
onCloseFn,
onSubmitFn: finishedCallback,
+ issueCount,
});
}
@@ -104,10 +145,23 @@ export function useWorkflowActions() {
{pageInitConfig, selectedPublication, submission},
finishedCallback,
) {
- // if version is unassigned, we need to assign it to a publication stage first
- if (!selectedPublication.versionStage) {
+ const {isOJS} = useApp();
+
+ // if version is unassigned
+ // or OJS specific the publication status not to
+ // STATUS_READY_TO_PUBLISH or STATUS_READY_TO_SCHEDULE,
+ // we need to assign the publication stage and status (for issue or issueless context)
+ const requirePublicationStage = isOJS()
+ ? !selectedPublication.versionStage ||
+ ![
+ pkp.const.STATUS_READY_TO_PUBLISH,
+ pkp.const.STATUS_READY_TO_SCHEDULE,
+ ].includes(selectedPublication.status)
+ : !selectedPublication.versionStage;
+
+ if (requirePublicationStage) {
return workflowAssignPublicationStage(
- {selectedPublication, submission},
+ {selectedPublication, submission, pageInitConfig},
(publicationData) =>
workflowAssignToIssueAndScheduleForPublication(
{pageInitConfig, selectedPublication: publicationData, submission},
@@ -116,72 +170,85 @@ export function useWorkflowActions() {
);
}
+ workflowScheduleForPublication(
+ {submission, selectedPublication},
+ finishedCallback,
+ );
+
+ // TODO : Rest of the codes are dead code, need cleanup
+
// if there are no issues, we can schedule the publication immediately
- if (pageInitConfig.publicationSettings.countIssues === 0) {
- workflowScheduleForPublication(
- {submission, selectedPublication},
- finishedCallback,
- );
+ // if (pageInitConfig.publicationSettings.countIssues === 0) {
+ // workflowScheduleForPublication(
+ // {submission, selectedPublication},
+ // finishedCallback,
+ // );
- return;
- }
+ // return;
+ // }
- // If the publication is marked as published,
+ // If the publication is marked as ready to publish,
// and not assigned to an issue, or assigned to an issue that is not published (e.g. future issue),
// we can publish the publication immediately as issueless or continuous publication
- if (
- selectedPublication.published &&
- (selectedPublication.issueId === null ||
- !pageInitConfig.publicationSettings.issuePublishedStatus[
- selectedPublication.issueId
- ])
- ) {
- workflowScheduleForPublication(
- {submission, selectedPublication},
- finishedCallback,
- );
- return;
- }
-
- if (selectedPublication.issueId === null || selectedPublication.published) {
- const {url} = useLegacyGridUrl({
- component: 'modals.publish.AssignToIssueHandler',
- op: 'assign',
- params: {
- submissionId: submission.id,
- publicationId: selectedPublication.id,
- },
- });
- const {openSideModal} = useModal();
-
- openSideModal(
- 'LegacyAjax',
- {
- legacyOptions: {
- title: t('publication.selectIssue'),
- url,
- closeOnFormSuccessId: pkp.const.FORM_ASSIGN_TO_ISSUE,
- },
- },
- {
- onClose: async ({formId, data}) => {
- if (data?.issueId || data?.published) {
- workflowScheduleForPublication(
- {submission, selectedPublication},
- finishedCallback,
- );
- } else {
- finishedCallback();
- }
- },
- },
- );
- } else {
- workflowScheduleForPublication(
- {submission, selectedPublication},
- finishedCallback,
- );
- }
+ // if (
+ // selectedPublication.status === pkp.const.STATUS_READY_TO_PUBLISH &&
+ // (selectedPublication.issueId === null ||
+ // !pageInitConfig.publicationSettings.issuePublishedStatus[
+ // selectedPublication.issueId
+ // ])
+ // ) {
+ // workflowScheduleForPublication(
+ // {submission, selectedPublication},
+ // finishedCallback,
+ // );
+ // return;
+ // }
+
+ // if (
+ // selectedPublication.issueId === null ||
+ // selectedPublication.status === pkp.const.STATUS_READY_TO_PUBLISH
+ // ) {
+ // const {url} = useLegacyGridUrl({
+ // component: 'modals.publish.AssignToIssueHandler',
+ // op: 'assign',
+ // params: {
+ // submissionId: submission.id,
+ // publicationId: selectedPublication.id,
+ // },
+ // });
+ // const {openSideModal} = useModal();
+
+ // openSideModal(
+ // 'LegacyAjax',
+ // {
+ // legacyOptions: {
+ // title: t('publication.selectIssue'),
+ // url,
+ // closeOnFormSuccessId: pkp.const.FORM_ASSIGN_TO_ISSUE,
+ // },
+ // },
+ // {
+ // onClose: async ({formId, data}) => {
+ // if (
+ // data?.issueId ||
+ // data?.status === pkp.const.STATUS_READY_TO_PUBLISH
+ // ) {
+ // workflowScheduleForPublication(
+ // {submission, selectedPublication},
+ // finishedCallback,
+ // );
+ // } else {
+ // finishedCallback();
+ // }
+ // },
+ // },
+ // );
+ // } else {
+ // workflowScheduleForPublication(
+ // {submission, selectedPublication},
+ // finishedCallback,
+ // );
+ // }
}
function workflowScheduleForPublication(
@@ -346,7 +413,7 @@ export function useWorkflowActions() {
return {
workflowViewPublishedSubmission,
- workflowAssignToIssue,
+ // workflowAssignToIssue,
workflowViewActivityLog,
workflowViewLibrary,
workflowAssignToIssueAndScheduleForPublication,
diff --git a/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js b/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js
index 7de5afac9..69fcf8384 100644
--- a/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js
+++ b/src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js
@@ -768,7 +768,11 @@ export const PublicationConfig = {
if (!permissions.canPublish) {
return [];
}
- if (selectedPublication.status === pkp.const.STATUS_QUEUED) {
+ if (
+ selectedPublication.status === pkp.const.STATUS_QUEUED ||
+ selectedPublication.status === pkp.const.STATUS_READY_TO_PUBLISH ||
+ selectedPublication.status === pkp.const.STATUS_READY_TO_SCHEDULE
+ ) {
if (
hasSubmissionPassedStage(
submission,
@@ -992,9 +996,8 @@ export const PublicationConfig = {
}) => {
return [
{
- component: 'WorkflowPublicationForm',
+ component: 'WorkflowPublicationFormIssue',
props: {
- formName: 'issue',
submission,
publication: selectedPublication,
canEdit: permissions.canEditPublication,
diff --git a/src/pages/workflow/composables/useWorkflowPublicationFormIssue.js b/src/pages/workflow/composables/useWorkflowPublicationFormIssue.js
new file mode 100644
index 000000000..33e162ee2
--- /dev/null
+++ b/src/pages/workflow/composables/useWorkflowPublicationFormIssue.js
@@ -0,0 +1,123 @@
+import {useForm} from '@/composables/useForm';
+import {useFetch} from '@/composables/useFetch';
+import {useUrl} from '@/composables/useUrl';
+import {watch, computed} from 'vue';
+export function useWorkflowPublicationFormIssue(form) {
+ const {setHiddenValue, getField, getValue, setValue} = useForm(form);
+
+ /**
+ * Assignments & prepublication status
+ */
+ const {apiUrl: assignmentsUrl} = useUrl('issues/assignmentOptions');
+ const {fetch: fetchAssignments, data: assignments} = useFetch(assignmentsUrl);
+ fetchAssignments();
+
+ // Calculate list of assignment options
+ const assignmentOptions = computed(() => {
+ if (!form.value || !assignments.value) {
+ return [];
+ }
+ return assignments.value.map((assignment) => ({
+ label: assignment.label,
+ value: assignment.value,
+ }));
+ });
+
+ // Calculate which assignments should be displaying issue field
+ const showWhenAssignmentIds = computed(() => {
+ if (!form.value || !assignments.value) {
+ return [];
+ }
+
+ return assignments.value
+ .filter((assignment) => assignment.isPublished !== null)
+ .map((assignment) => assignment.value);
+ });
+
+ // Currently selected assignemnt option
+ const currentAssignmentOption = computed(() => {
+ if (form.value && assignments.value && getField('assignment')?.value) {
+ const option = assignments.value.find(
+ (assignment) => assignment.value === getField('assignment')?.value,
+ );
+ return option;
+ }
+ return null;
+ });
+
+ // Apply assignmentOptions to the form when changes
+ watch(assignmentOptions, (newAssignmentOptions) => {
+ const assignmentField = getField('assignment');
+
+ assignmentField.options = newAssignmentOptions;
+
+ const optionsWhichShowsIssues = newAssignmentOptions
+ .filter((option) => option.isPublished !== null)
+ .map((option) => option.value);
+ const issueIdField = getField('issueId');
+ issueIdField.showWhen = ['assignment', optionsWhichShowsIssues];
+ });
+
+ // Update prePublishStatus
+ watch(currentAssignmentOption, (newAssignmentOption) => {
+ setHiddenValue('prePublishStatus', newAssignmentOption.status);
+ });
+
+ /** Issues */
+ const {apiUrl: issuesUrl} = useUrl('issues');
+ const issuesQuery = computed(() => ({
+ isPublished: currentAssignmentOption.value.isPublished,
+ count: 100,
+ }));
+ const {fetch: fetchIssues, data: issues} = useFetch(issuesUrl, {
+ query: issuesQuery,
+ });
+
+ // fetch issues when the option changes, and isPublished is not null
+ watch(currentAssignmentOption, (newCurrentAssignmentOption) => {
+ if (newCurrentAssignmentOption) {
+ if (newCurrentAssignmentOption.isPublished !== null) {
+ fetchIssues({clearData: true});
+ }
+ }
+ });
+
+ // list of issue options
+ const issueOptions = computed(() => {
+ if (
+ form.value &&
+ issues.value &&
+ currentAssignmentOption.value?.isPublished !== null
+ ) {
+ return issues.value.items.map((issue) => ({
+ id: issue.id,
+ label: issue.identification,
+ value: issue.id,
+ }));
+ }
+
+ return [];
+ });
+
+ // applying issue options
+ watch(issueOptions, (newIssueOptions) => {
+ const issueIdField = getField('issueId');
+
+ issueIdField.options = newIssueOptions;
+
+ // update value if its not within options
+ if (
+ newIssueOptions.length &&
+ !newIssueOptions.find((issue) => getValue('issueId') === issue.value)
+ ) {
+ setValue('issueId', newIssueOptions[0].value);
+ }
+ });
+
+ // applying showWhen
+ watch(showWhenAssignmentIds, (newShowWhenAssignmentIds) => {
+ const issueIdField = getField('issueId');
+
+ issueIdField.showWhen = ['assignment', newShowWhenAssignmentIds];
+ });
+}
diff --git a/src/pages/workflow/composables/useWorkflowVersionForm.js b/src/pages/workflow/composables/useWorkflowVersionForm.js
index a017385df..41ffcbdf4 100644
--- a/src/pages/workflow/composables/useWorkflowVersionForm.js
+++ b/src/pages/workflow/composables/useWorkflowVersionForm.js
@@ -5,6 +5,7 @@ import {useFetch} from '@/composables/useFetch';
import {useLocalize} from '@/composables/useLocalize';
import {useSubmission} from '@/composables/useSubmission';
import {useWorkflowStore} from '@/pages/workflow/workflowStore';
+import {useApp} from '@/composables/useApp';
const VERSION_MODE = {
CREATE: 'createNewVersion', // the "Create New Version" action in the publication workflow menu
@@ -48,12 +49,14 @@ export function useWorkflowVersionForm(
versionMode = 'createNewVersion',
closeDialog = () => {},
onSubmitFn = null,
+ issueCount = 0,
) {
const store = useWorkflowStore();
const {t} = useLocalize();
const {getLatestPublication} = useSubmission();
let publications = [];
let latestPublication = null;
+ const {isOJS} = useApp();
// Determine the mode based on the versionMode parameter
// versionMode can be one of 'createNewVersion', 'sendToTextEditor', or 'publish'
@@ -95,6 +98,29 @@ export function useWorkflowVersionForm(
`submissions/${store.submission.id}/publications/${publicationId}/version`,
);
+ // Prepare request body with version data
+ const requestBody = {
+ versionStage: formData.versionStage,
+ versionIsMinor: formData.versionIsMinor,
+ };
+
+ if (isOJS()) {
+ // if the issue count is 0, e.g. issueless context,
+ // we can safely set the issueId and status to null and
+ // STATUS_READY_TO_PUBLISH
+ if (issueCount === 0) {
+ requestBody.issueId = null;
+ requestBody.prePublishStatus = pkp.const.STATUS_READY_TO_PUBLISH;
+ }
+ // Add issue assignment data if in publish mode and issue assignment is provided
+ else if (modeState.isPublishMode && formData.issueAssignment) {
+ const issueData = formData.issueAssignment;
+
+ requestBody.issueId = issueData.issueId;
+ requestBody.prePublishStatus = issueData.publicationStatus;
+ }
+ }
+
const {
fetch,
data: publicationData,
@@ -102,10 +128,7 @@ export function useWorkflowVersionForm(
isSuccess,
} = useFetch(versionUrl, {
method: shouldCreateNewVersion ? 'POST' : 'PUT',
- body: {
- versionStage: formData.versionStage,
- versionIsMinor: formData.versionIsMinor,
- },
+ body: requestBody,
expectValidationError: true,
});
@@ -138,6 +161,7 @@ export function useWorkflowVersionForm(
const {
form,
initEmptyForm,
+ addField,
addFieldSelect,
addPage,
addGroup,
@@ -227,11 +251,21 @@ export function useWorkflowVersionForm(
showErrorFooter: false,
spacingVariant: 'fullWidth',
});
+
addPage('default', {
submitButton: {label: t('common.confirm')},
cancelButton: {label: t('common.cancel')},
});
- addGroup('default');
+
+ addGroup(
+ 'default',
+ // FIXME: adding group breaking the page layout
+ // {
+ // pageId: 'default',
+ // label: t('publication.scheduledForPublication.versionStage.label'),
+ // description: t('publication.scheduledForPublication.versionStage.description'),
+ // }
+ );
onMounted(() => {
latestPublication = getLatestPublication(store.submission);
@@ -243,6 +277,7 @@ export function useWorkflowVersionForm(
label: t('publication.sendToTextEditor.label'),
options: buildPublicationOptions({withCreateOption: true}),
size: 'large',
+ // groupId: 'default', // FIXME: adding group breaking the page layout
isRequired: modeState.isTextEditorMode,
showWhen: !modeState.isTextEditorMode ? [] : undefined,
});
@@ -254,6 +289,7 @@ export function useWorkflowVersionForm(
description: t('publication.versionSource.create.description'),
options: buildPublicationOptions(),
size: 'large',
+ // groupId: 'default', // FIXME: adding group breaking the page layout
showWhen: !modeState.isCreateMode
? ['sendToVersion', 'create']
: undefined,
@@ -266,6 +302,8 @@ export function useWorkflowVersionForm(
description: t('publication.versionStage.description'),
options: store.versionStageOptions,
size: 'large',
+ value: store.selectedPublication?.versionStage || null,
+ // groupId: 'default', // FIXME: adding group breaking the page layout
isRequired: modeState.isPublishMode,
showWhen: modeState.isTextEditorMode
? ['sendToVersion', getUnassignedVersions()]
@@ -282,6 +320,18 @@ export function useWorkflowVersionForm(
}),
);
+ // Issue assignment fields only visible when
+ // for OJS
+ // it's in publish mode
+ // have issues
+ if (modeState.isPublishMode && issueCount > 0 && isOJS()) {
+ addField('issueAssignment', {
+ component: 'FieldIssueSelection',
+ issueCount: issueCount,
+ publication: store.selectedPublication,
+ });
+ }
+
setValue(
'versionSource',
modeState.isCreateMode ? latestPublication?.id : null,