16 import(
'classes.handler.Handler');
17 import(
'lib.pkp.classes.core.JSONMessage');
27 function authorize($request, &$args, $roleAssignments) {
30 $step = isset($args[0]) ? (int) $args[0] : 1;
31 if ($step<1 || $step>$this->
getStepCount())
return false;
34 $submissionId = (int)$request->getUserVar(
'submissionId');
37 if ($step === 1 && $submissionId === 0) {
39 import(
'lib.pkp.classes.security.authorization.UserRequiredPolicy');
44 import(
'lib.pkp.classes.security.authorization.SubmissionAccessPolicy');
49 if (!parent::authorize($request, $args, $roleAssignments))
return false;
56 if (!is_a($submission,
'Submission') && $step == 1)
return true;
60 assert(is_a($submission,
'Submission'));
64 if ($submission->getSubmissionProgress() == 0 && $step != $this->getStepCount() )
return false;
67 if ($submission->getSubmissionProgress() != 0 && $step > $submission->getSubmissionProgress())
return false;
81 function index($args, $request) {
82 $request->redirect(
null,
null,
'wizard');
93 $step = isset($args[0]) ? (int) $args[0] : 1;
94 $templateMgr->assign(
'step', $step);
96 $templateMgr->assign(
'sectionId', (
int) $request->getUserVar(
'sectionId'));
100 $templateMgr->assign(
'submissionId', $submission->getId());
101 $templateMgr->assign(
'submissionProgress', (
int) $submission->getSubmissionProgress());
103 $templateMgr->assign(
'submissionProgress', 1);
105 $templateMgr->assign([
106 'pageTitle' => __(
'submission.submit.title'),
108 $templateMgr->display(
'submission/form/index.tpl');
118 function step($args, $request) {
119 $step = isset($args[0]) ? (int) $args[0] : 1;
121 $context = $request->getContext();
127 $formClass =
"SubmissionSubmitStep{$step}Form";
128 import(
"classes.submission.form.$formClass");
130 $submitForm =
new $formClass($context, $submission);
131 $submitForm->initData();
132 return new JSONMessage(
true, $submitForm->fetch($request));
135 $templateMgr->assign(
'context', $context);
138 import(
'classes.core.Services');
139 $reviewSubmissionUrl =
Services::get(
'submission')->getWorkflowUrlByUserRoles($submission);
140 $router = $request->getRouter();
141 $dispatcher = $router->getDispatcher();
143 $templateMgr->assign(array(
144 'reviewSubmissionUrl' => $reviewSubmissionUrl,
145 'submissionId' => $submission->getId(),
146 'submitStep' => $step,
147 'submissionProgress' => $submission->getSubmissionProgress(),
150 return new JSONMessage(
true, $templateMgr->fetch(
'submission/form/complete.tpl'));
161 $step = isset($args[0]) ? (int) $args[0] : 1;
163 $router = $request->getRouter();
164 $context = $router->getContext($request);
169 $formClass =
"SubmissionSubmitStep{$step}Form";
170 import(
"classes.submission.form.$formClass");
172 $submitForm =
new $formClass($context, $submission);
173 $submitForm->readInputData();
175 if (!
HookRegistry::call(
'SubmissionHandler::saveSubmit', array($step, &$submission, &$submitForm))) {
176 if ($submitForm->validate()) {
177 $submissionId = $submitForm->execute();
179 return $request->redirectUrlJson($router->url($request,
null,
null,
'wizard', $step+1, array(
'submissionId' => $submissionId),
'step-2'));
182 $json->setEvent(
'setStep', max($step+1, $submission->getSubmissionProgress()));
186 $tagitKeywords = $submitForm->getData(
'keywords');
187 if (is_array($tagitKeywords)) {
188 $tagitFieldNames = $submitForm->_metadataFormImplem->getTagitFieldNames();
189 $locales = array_keys($submitForm->supportedLocales);
190 $formTagitData = array();
191 foreach ($tagitFieldNames as $tagitFieldName) {
192 foreach ($locales as $locale) {
193 $formTagitData[$locale] = array_key_exists($locale .
"-$tagitFieldName", $tagitKeywords) ? $tagitKeywords[$locale .
"-$tagitFieldName"] : array();
195 $submitForm->setData($tagitFieldName, $formTagitData);
198 return new JSONMessage(
true, $submitForm->fetch($request));
211 parent::setupTemplate($request);