baseline
[omp.pkp.sfu.ca.git] / pages / designer / SubmissionLayoutHandler.inc.php
blob0940ed2ce97fa45383a4507ff03b362de7df0cb1
1 <?php
3 /**
4 * @file SubmissionLayoutHandler.inc.php
6 * Copyright (c) 2003-2008 John Willinsky
7 * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
9 * @class SubmissionLayoutHandler
10 * @ingroup pages_designer
12 * @brief Handle requests related to submission layout editing.
15 // $Id: SubmissionLayoutHandler.inc.php,v 1.10 2009/09/22 21:27:34 asmecher Exp $
17 import('pages.designer.DesignerHandler');
19 class SubmissionLayoutHandler extends DesignerHandler {
20 function SubmissionLayoutHandler() {
21 parent::DesignerHandler();
25 // Submission Management
28 /**
29 * View an assigned submission's design page.
30 * @param $args array ($monographId)
32 function submission($args) {
33 $monographId = isset($args[0]) ? $args[0] : 0;
34 $this->validate($monographId);
35 $press =& $this->press;
36 $submission =& $this->submission;
37 $this->setupTemplate(true, $monographId);
38 $signoffDao =& DAORegistry::getDAO('SignoffDAO');
40 $productionAssignments =& $submission->getProductionAssignments();
41 for ($i=0,$iCount=count($productionAssignments); $i<$iCount; $i++) {
42 $productionSignoffsUnindexed =& $productionAssignments[$i]->getSignoffs();
43 $productionSignoff =& $productionSignoffsUnindexed['PRODUCTION_DESIGN']; //FIXME other symbolics for other assignment types
44 if (!$productionSignoff->getDateUnderway()) {
45 $productionSignoff->setDateUnderway(Core::getCurrentDate());
46 $signoffDao->updateObject($productionSignoff);
48 $productionSignoffsIndexed['PRODUCTION_DESIGN'] =& $productionSignoff;
49 $productionAssignments[$i]->setSignoffs($productionSignoffsIndexed);
51 $submission->setProductionAssignments($productionAssignments);
53 $templateMgr =& TemplateManager::getManager();
54 $templateMgr->assign_by_ref('submission', $submission);
56 $templateMgr->assign('helpTopicId', 'editorial.designersRole.layout');
58 $templateMgr->display('designer/submission.tpl');
61 function viewMetadata($args) {
62 $monographId = isset($args[0]) ? (int) $args[0] : 0;
63 $this->validate($monographId);
64 $press =& $this->press;
65 $submission =& $this->submission;
66 $this->setupTemplate(true, $monographId, 'summary');
68 DesignerAction::viewMetadata($submission);
71 /**
72 * Mark assignment as complete.
74 function completeDesign($args) {
75 $monographId = Request::getUserVar('monographId');
76 $assignmentId = Request::getUserVar('assignmentId');
77 $this->validate($monographId, true);
78 $press =& $this->press;
79 $submission =& $this->submission;
81 if (DesignerAction::completeDesign($submission, $assignmentId, Request::getUserVar('send'))) {
82 Request::redirect(null, null, 'submission', $monographId);
88 // Galley Management
91 /**
92 * Create a new galley file.
94 function uploadGalley($args) {
95 $monographId = isset($args[0]) ? (int) $args[0] : 0;
96 $this->validate($monographId);
98 import('submission.form.MonographGalleyForm');
99 $productionAssignmentId = Request::getUserVar('productionAssignmentId');
101 $galleyForm = new MonographGalleyForm($monographId);
102 $galleyId = $galleyForm->execute('galleyFile', $productionAssignmentId);
104 Request::redirect(null, null, 'editGalley', array($monographId, $galleyId));
108 * Edit a galley.
109 * @param $args array ($monographId, $galleyId)
111 function editGalley($args) {
112 $monographId = isset($args[0]) ? (int) $args[0] : 0;
113 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
114 $this->validate($monographId);
115 $press =& $this->press;
116 $submission =& $this->submission;
118 $this->setupTemplate(true, $monographId, 'editing');
120 import('submission.form.MonographGalleyForm');
122 $submitForm = new MonographGalleyForm($monographId, $galleyId);
124 if ($submitForm->isLocaleResubmit()) {
125 $submitForm->readInputData();
126 } else {
127 $submitForm->initData();
129 $submitForm->display();
133 * Save changes to a galley.
134 * @param $args array ($monographId, $galleyId)
136 function saveGalley($args) {
137 $monographId = isset($args[0]) ? (int) $args[0] : 0;
138 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
139 $this->validate($monographId);
140 $press =& $this->press;
141 $submission =& $this->submission;
143 import('submission.form.MonographGalleyForm');
145 $submitForm = new MonographGalleyForm($monographId, $galleyId);
147 $submitForm->readInputData();
148 if ($submitForm->validate()) {
149 $submitForm->execute();
151 if (Request::getUserVar('uploadImage')) {
152 $submitForm->uploadImage();
153 Request::redirect(null, null, 'editGalley', array($monographId, $galleyId));
154 } else if(($deleteImage = Request::getUserVar('deleteImage')) && count($deleteImage) == 1) {
155 list($imageId) = array_keys($deleteImage);
156 $submitForm->deleteImage($imageId);
157 Request::redirect(null, null, 'editGalley', array($monographId, $galleyId));
159 Request::redirect(null, null, 'submission', $monographId);
160 } else {
161 $this->setupTemplate(true, $monographId, 'editing');
162 $submitForm->display();
167 * Delete a galley file.
168 * @param $args array ($monographId, $galleyId)
170 function deleteGalley($args) {
171 $monographId = isset($args[0]) ? (int) $args[0] : 0;
172 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
173 $this->validate($monographId, true);
174 $press =& $this->press;
175 $submission =& $this->submission;
177 DesignerAction::deleteGalley($submission, $galleyId);
179 Request::redirect(null, null, 'submission', $monographId);
183 * Change the sequence order of a galley.
185 function orderGalley() {
186 $monographId = Request::getUserVar('monographId');
187 $this->validate($monographId, true);
188 $press =& $this->press;
189 $submission =& $this->submission;
191 DesignerAction::orderGalley($submission, Request::getUserVar('galleyId'), Request::getUserVar('d'));
193 Request::redirect(null, null, 'submission', $monographId);
197 * Delete a monograph image.
198 * @param $args array ($monographId, $fileId)
200 function deleteMonographImage($args) {
201 $monographId = isset($args[0]) ? (int) $args[0] : 0;
202 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
203 $fileId = isset($args[2]) ? (int) $args[2] : 0;
204 $revisionId = isset($args[3]) ? (int) $args[3] : 0;
205 $this->validate($monographId);
206 $press =& $this->press;
207 $submission =& $this->submission;
208 DesignerAction::deleteMonographImage($submission, $fileId, $revisionId);
210 Request::redirect(null, null, 'editGalley', array($monographId, $galleyId));
214 // File Access
218 * Download a file.
219 * @param $args array ($monographId, $fileId, [$revision])
221 function downloadFile($args) {
222 $monographId = isset($args[0]) ? $args[0] : 0;
223 $fileId = isset($args[1]) ? $args[1] : 0;
224 $revision = isset($args[2]) ? $args[2] : null;
226 $this->validate($monographId);
227 $press =& $this->press;
228 $submission =& $this->submission;
229 if (!DesignerAction::downloadFile($submission, $fileId, $revision)) {
230 Request::redirect(null, null, 'submission', $monographId);
235 * View a file (inlines file).
236 * @param $args array ($monographId, $fileId, [$revision])
238 function viewFile($args) {
239 $monographId = isset($args[0]) ? $args[0] : 0;
240 $fileId = isset($args[1]) ? $args[1] : 0;
241 $revision = isset($args[2]) ? $args[2] : null;
243 $this->validate($monographId);
244 $press =& $this->press;
245 $submission =& $this->submission;
246 if (!DesignerAction::viewFile($monographId, $fileId, $revision)) {
247 Request::redirect(null, null, 'submission', $monographId);
252 // Proofreading
256 * Sets the date of layout editor proofreading completion
258 function designerProofreadingComplete($args) {
259 $monographId = Request::getUserVar('monographId');
261 $this->validate($monographId);
262 $press =& $this->press;
263 $submission =& $this->submission;
264 $this->setupTemplate(true, $monographId);
266 $send = false;
267 if (isset($args[0])) {
268 $send = Request::getUserVar('send') ? true : false;
271 import('submission.proofreader.ProofreaderAction');
272 if (ProofreaderAction::proofreadEmail($monographId,'PROOFREAD_LAYOUT_COMPLETE', $send?'':Request::url(null, 'designer', 'designerProofreadingComplete', 'send'))) {
273 Request::redirect(null, null, 'submission', $monographId);
279 // Validation
283 * Validate that the user is an assigned designer for the submission.
284 * Redirects to designer index page if validation fails.
285 * @param $monographId int the submission being edited
287 function validate($monographId) {
288 parent::validate();
290 $isValid = false;
292 $press =& Request::getPress();
293 $user =& Request::getUser();
295 $designerSubmissionDao =& DAORegistry::getDAO('DesignerSubmissionDAO');
296 $submission =& $designerSubmissionDao->getSubmission($monographId);
298 if (isset($submission)) {
299 $isValid = true;
302 if (!$isValid) {
303 Request::redirect(null, Request::getRequestedPage());
306 $this->press =& $press;
307 $this->submission =& $submission;
309 return true;