{**
* templates/management/record.tpl
*
* Copyright (c) 2014-2022 Simon Fraser University
* Copyright (c) 2003-2022 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief A step-by-step UI to record an editorial decision
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<div class="app__page--decision">
<h1 class="app__pageHeading" ref="pageTitle">
<template v-if="steps.length > 1">
{translate|escape key="semicolon" label=$decisionType->getLabel()}
{{ currentStep.name }}
</template>
<template v-else>
{$decisionType->getLabel()}
</template>
</h1>
<p class="app__pageDescription">
{$decisionType->getDescription()}
</p>
<notification
v-for="(error, stepId) in errors"
:key="stepId"
type="warning"
class="decision__error"
role="alert"
>
{{ error }}
<button class="-linkButton" @click="openStep(stepId)">
{translate|escape key="common.viewError"}
</button>
</notification>
<steps
v-if="steps.length"
:current="currentStep.id"
:started-steps="startedSteps"
label="{translate|escape key="editor.decision.completeSteps"}"
progress-label="{translate key="common.showingSteps"}"
:scroll-to="$refs.pageTitle"
show-steps-label="{translate|escape key="common.showAllSteps"}"
@step:open="openStep"
>
<step
v-for="step in steps"
:key="step.id"
:id="step.id"
:label="step.name"
>
<panel class="decision__stepPanel">
<panel-section class="decision__stepHeader">
<h2>{{ step.name }}</h2>
<p>{{ step.description }}</p>
</panel-section>
<template v-if="step.type === 'form'">
<panel-section>
<pkp-form v-bind="step.form" @set="updateStep"></pkp-form>
</panel-section>
</template>
<template v-else-if="step.type === 'email'">
<panel-section v-if="skippedSteps.includes(step.id)">
<notification type="warning">
{translate|escape key="editor.decision.emailSkipped"}
<button
class="-linkButton"
:disabled="isSubmitting"
@click="toggleSkippedStep(step.id)"
>
{translate|escape key="editor.decision.dontSkipEmail"}
</button>
</notification>
</panel-section>
<panel-section v-else>
{capture assign="attachedFilesLabel"}{translate key="common.attachedFiles"}{/capture}
{capture assign="bccLabel"}{translate key="email.bcc"}{/capture}
{capture assign="ccLabel"}{translate key="email.cc"}{/capture}
{capture assign="subjectLabel"}{translate key="email.subject"}{/capture}
{capture assign="switchTolabel"}{translate key="common.switchTo"}{/capture}
{capture assign="recipientsLabel"}{translate key="email.to"}{/capture}
<composer
add-c-c-label="{translate|escape key="common.addCCBCC"}"
attach-files-label="{translate|escape key="common.attachFiles"}"
attached-files-label="{translate|escape key="semicolon" label=$attachedFilesLabel}"
:attachers="step.attachers"
:attachments="step.attachments"
:bcc="step.bcc"
bcc-label="{translate|escape key="semicolon" label=$bccLabel}"
:body="step.body"
body-label="{translate|escape key="stageParticipants.notify.message"}"
:can-change-recipients="step.canChangeRecipients"
:cc="step.cc"
cc-label="{translate|escape key="semicolon" label=$ccLabel}"
confirm-switch-locale-label="{translate|escape key="email.confirmSwitchLocale"}"
deselect-label="{translate|escape key="common.deselect"}"
:email-templates="step.emailTemplates"
:email-templates-api-url="emailTemplatesApiUrl"
:errors="step.errors"
find-template-label="{translate|escape key="common.findTemplate"}"
:id="step.id"
:initial-template-key="step.initialTemplateKey"
insert-label="{translate|escape key="common.insert"}"
insert-modal-label="{translate|escape key="common.insertContent"}"
insert-content-label="{translate|escape key="common.content"}"
insert-search-label="{translate|escape key="common.insertContentSearch"}"
load-template-label="{translate|escape key="common.emailTemplates"}"
:locale="step.locale"
:locales="step.locales"
more-search-results-label="{translate|escape key="common.numberedMore"}"
:recipient-options="step.recipientOptions"
:recipients="step.recipients"
recipients-label="{translate|escape key="semicolon" label=$recipientsLabel}"
remove-item-label="{translate|escape key="common.removeItem"}"
searching-label="{translate|escape key="common.searching"}"
search-results-label="{translate|escape key="search.searchResults"}"
:subject="step.subject"
subject-label="{translate|escape key="semicolon" label=$subjectLabel}"
switch-to-label="{translate|escape key="semicolon" label=$switchTolabel}"
switch-to-named-language-label="{translate|escape key="common.switchToNamedItem"}"
:variables="step.variables"
@set="updateStep"
></composer>
</panel-section>
</template>
<template v-else-if="step.type === 'promoteFiles'">
<panel-section>
<list-panel
v-for="(list, i) in step.lists"
:key="i"
:items="list.files"
:title="list.name"
>
<template v-slot:item="{ldelim}item{rdelim}">
<select-submission-file-list-item
:created-at="item.createdAt"
:document-type="item.documentType"
download-label="{translate key="common.download"}"
:genre-name="localize(item.genreName)"
:genre-is-primary="!item.genreIsDependent && !item.genreIsSupplementary"
:file-id="item.id"
:name="localize(item.name)"
:uploaded-by="item.uploaderUserName"
:url="item.url"
>
<input
type="checkbox"
:name="'promoteFile' + item.id"
:value="item.id"
v-model="step.selected"
></input>
</select-submission-file-list-item>
</template>
</list-panel>
</panel-section>
</template>
</panel>
</step>
</steps>
<panel class="decision__footer__panel">
<panel-section>
<span slot="header">
<!-- empty on purpose -->
</span>
<div class="decision__footer" :class="{ldelim}'decision__footer--noSteps': !steps.length{rdelim}">
<button
v-if="currentStep.type === 'email' && currentStep.canSkip && !skippedSteps.includes(currentStep.id)"
class="decision__skipStep -linkButton"
:disabled="isSubmitting"
@click="toggleSkippedStep(currentStep.id)"
>
{translate|escape key="editor.decision.skipEmail"}
</button>
<spinner v-if="isSubmitting"></spinner>
<pkp-button
:disabled="isSubmitting"
:is-warnable="true"
@click="cancel"
>
{translate|escape key="common.cancel"}
</pkp-button>
<pkp-button
v-if="!isOnFirstStep && steps.length > 1"
:disabled="isSubmitting"
@click="previousStep"
>
{translate|escape key="help.previous"}
</pkp-button>
<pkp-button
:disabled="isSubmitting"
:is-primary="isOnLastStep"
@click="nextStep"
>
<template v-if="isOnLastStep">
{translate|escape key="editor.decision.recordDecision"}
</template>
<template v-else>
{translate|escape key="common.continue"}
</template>
</pkp-button>
</div>
</panel-section>
</panel>
</div>
{/block}
|