00001 <?php
00002
00015
00016
00017
00018 class SubmissionLayoutHandler extends LayoutEditorHandler {
00019
00020
00021
00022
00023
00028 function submission($args) {
00029 $articleId = isset($args[0]) ? $args[0] : 0;
00030 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00031 parent::setupTemplate(true, $articleId);
00032
00033 import('submission.proofreader.ProofreaderAction');
00034 ProofreaderAction::layoutEditorProofreadingUnderway($submission);
00035
00036 $layoutAssignment = &$submission->getLayoutAssignment();
00037
00038 if ($layoutAssignment->getDateNotified() != null && $layoutAssignment->getDateUnderway() == null)
00039 {
00040
00041 $layoutAssignment->setDateUnderway(Core::getCurrentDate());
00042 $layoutDao = &DAORegistry::getDAO('LayoutEditorSubmissionDAO');
00043 $layoutDao->updateSubmission($submission);
00044 }
00045
00046 $disableEdit = !SubmissionLayoutHandler::layoutEditingEnabled($submission);
00047
00048 $templateMgr = &TemplateManager::getManager();
00049 $templateMgr->assign_by_ref('submission', $submission);
00050 $templateMgr->assign('disableEdit', $disableEdit);
00051 $templateMgr->assign('useProofreaders', $journal->getSetting('useProofreaders'));
00052 $templateMgr->assign('templates', $journal->getSetting('templates'));
00053 $templateMgr->assign('helpTopicId', 'editorial.layoutEditorsRole.layout');
00054
00055 $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
00056 $publishedArticle =& $publishedArticleDao->getPublishedArticleByArticleId($submission->getArticleId());
00057 if ($publishedArticle) {
00058 $issueDao =& DAORegistry::getDAO('IssueDAO');
00059 $issue =& $issueDao->getIssueById($publishedArticle->getIssueId());
00060 $templateMgr->assign_by_ref('publishedArticle', $publishedArticle);
00061 $templateMgr->assign_by_ref('issue', $issue);
00062 }
00063
00064 $templateMgr->display('layoutEditor/submission.tpl');
00065 }
00066
00067 function viewMetadata($args) {
00068 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00069 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00070 parent::setupTemplate(true, $articleId, 'summary');
00071
00072 LayoutEditorAction::viewMetadata($submission, ROLE_ID_LAYOUT_EDITOR);
00073 }
00074
00078 function completeAssignment($args) {
00079 $articleId = Request::getUserVar('articleId');
00080 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00081
00082 if (LayoutEditorAction::completeLayoutEditing($submission, Request::getUserVar('send'))) {
00083 Request::redirect(null, null, 'submission', $articleId);
00084 }
00085 }
00086
00087
00088
00089
00090
00091
00095 function uploadLayoutFile() {
00096 $articleId = Request::getUserVar('articleId');
00097 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00098
00099 switch (Request::getUserVar('layoutFileType')) {
00100 case 'submission':
00101 LayoutEditorAction::uploadLayoutVersion($submission);
00102 Request::redirect(null, null, 'submission', $articleId);
00103 break;
00104 case 'galley':
00105 import('submission.form.ArticleGalleyForm');
00106
00107 $galleyForm = &new ArticleGalleyForm($articleId);
00108 $galleyId = $galleyForm->execute('layoutFile');
00109
00110 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
00111 break;
00112 case 'supp':
00113 import('submission.form.SuppFileForm');
00114
00115 $suppFileForm = &new SuppFileForm($submission);
00116 $suppFileForm->setData('title', Locale::translate('common.untitled'));
00117 $suppFileId = $suppFileForm->execute('layoutFile');
00118
00119 Request::redirect(null, null, 'editSuppFile', array($articleId, $suppFileId));
00120 break;
00121 default:
00122
00123 Request::redirect(null, 'layoutEditor');
00124 }
00125 }
00126
00131 function editGalley($args) {
00132 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00133 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00134 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00135
00136 parent::setupTemplate(true, $articleId, 'editing');
00137
00138 if (SubmissionLayoutHandler::layoutEditingEnabled($submission)) {
00139 import('submission.form.ArticleGalleyForm');
00140
00141 $submitForm = &new ArticleGalleyForm($articleId, $galleyId);
00142
00143 if ($submitForm->isLocaleResubmit()) {
00144 $submitForm->readInputData();
00145 } else {
00146 $submitForm->initData();
00147 }
00148 $submitForm->display();
00149
00150 } else {
00151
00152 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
00153 $galley = &$galleyDao->getGalley($galleyId, $articleId);
00154
00155 if (!isset($galley)) {
00156 Request::redirect(null, null, 'submission', $articleId);
00157 }
00158
00159 $templateMgr = &TemplateManager::getManager();
00160 $templateMgr->assign('articleId', $articleId);
00161 $templateMgr->assign_by_ref('galley', $galley);
00162 $templateMgr->display('submission/layout/galleyView.tpl');
00163 }
00164 }
00165
00170 function saveGalley($args) {
00171 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00172 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00173 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00174
00175 import('submission.form.ArticleGalleyForm');
00176
00177 $submitForm = &new ArticleGalleyForm($articleId, $galleyId);
00178 $submitForm->readInputData();
00179
00180 if ($submitForm->validate()) {
00181 $submitForm->execute();
00182
00183 if (Request::getUserVar('uploadImage')) {
00184 $submitForm->uploadImage();
00185 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
00186 } else if(($deleteImage = Request::getUserVar('deleteImage')) && count($deleteImage) == 1) {
00187 list($imageId) = array_keys($deleteImage);
00188 $submitForm->deleteImage($imageId);
00189 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
00190 }
00191 Request::redirect(null, null, 'submission', $articleId);
00192 } else {
00193 parent::setupTemplate(true, $articleId, 'editing');
00194 $submitForm->display();
00195 }
00196 }
00197
00202 function deleteGalley($args) {
00203 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00204 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00205 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00206
00207 LayoutEditorAction::deleteGalley($submission, $galleyId);
00208
00209 Request::redirect(null, null, 'submission', $articleId);
00210 }
00211
00215 function orderGalley() {
00216 $articleId = Request::getUserVar('articleId');
00217 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00218
00219 LayoutEditorAction::orderGalley($submission, Request::getUserVar('galleyId'), Request::getUserVar('d'));
00220
00221 Request::redirect(null, null, 'submission', $articleId);
00222 }
00223
00228 function proofGalley($args) {
00229 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00230 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00231 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00232
00233 $templateMgr = &TemplateManager::getManager();
00234 $templateMgr->assign('articleId', $articleId);
00235 $templateMgr->assign('galleyId', $galleyId);
00236 $templateMgr->display('submission/layout/proofGalley.tpl');
00237 }
00238
00243 function proofGalleyTop($args) {
00244 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00245 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00246 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00247
00248 $templateMgr = &TemplateManager::getManager();
00249 $templateMgr->assign('articleId', $articleId);
00250 $templateMgr->assign('galleyId', $galleyId);
00251 $templateMgr->assign('backHandler', 'submissionEditing');
00252 $templateMgr->display('submission/layout/proofGalleyTop.tpl');
00253 }
00254
00259 function proofGalleyFile($args) {
00260 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00261 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00262 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00263
00264 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
00265 $galley = &$galleyDao->getGalley($galleyId, $articleId);
00266
00267 import('file.ArticleFileManager');
00268
00269 if (isset($galley)) {
00270 if ($galley->isHTMLGalley()) {
00271 $templateMgr = &TemplateManager::getManager();
00272 $templateMgr->assign_by_ref('galley', $galley);
00273 if ($galley->isHTMLGalley() && $styleFile =& $galley->getStyleFile()) {
00274 $templateMgr->addStyleSheet(Request::url(null, 'article', 'viewFile', array(
00275 $articleId, $galleyId, $styleFile->getFileId()
00276 )));
00277 }
00278 $templateMgr->display('submission/layout/proofGalleyHTML.tpl');
00279
00280 } else {
00281
00282 SubmissionLayoutHandler::viewFile(array($articleId, $galley->getFileId()));
00283 }
00284 }
00285 }
00286
00291 function deleteArticleImage($args) {
00292 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00293 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
00294 $fileId = isset($args[2]) ? (int) $args[2] : 0;
00295 $revisionId = isset($args[3]) ? (int) $args[3] : 0;
00296 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00297 LayoutEditorAction::deleteArticleImage($submission, $fileId, $revisionId);
00298
00299 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
00300 }
00301
00302
00303
00304
00305
00306
00307
00312 function editSuppFile($args) {
00313 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00314 $suppFileId = isset($args[1]) ? (int) $args[1] : 0;
00315 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00316
00317 parent::setupTemplate(true, $articleId, 'editing');
00318
00319 if (SubmissionLayoutHandler::layoutEditingEnabled($submission)) {
00320 import('submission.form.SuppFileForm');
00321
00322 $submitForm = &new SuppFileForm($submission, $suppFileId);
00323
00324 if ($submitForm->isLocaleResubmit()) {
00325 $submitForm->readInputData();
00326 } else {
00327 $submitForm->initData();
00328 }
00329 $submitForm->display();
00330
00331
00332 } else {
00333
00334 $suppFileDao = &DAORegistry::getDAO('SuppFileDAO');
00335 $suppFile = &$suppFileDao->getSuppFile($suppFileId, $articleId);
00336
00337 if (!isset($suppFile)) {
00338 Request::redirect(null, null, 'submission', $articleId);
00339 }
00340
00341 $templateMgr = &TemplateManager::getManager();
00342 $templateMgr->assign('articleId', $articleId);
00343 $templateMgr->assign_by_ref('suppFile', $suppFile);
00344 $templateMgr->display('submission/suppFile/suppFileView.tpl');
00345 }
00346 }
00347
00352 function saveSuppFile($args) {
00353 $articleId = Request::getUserVar('articleId');
00354 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00355
00356 $suppFileId = isset($args[0]) ? (int) $args[0] : 0;
00357
00358 import('submission.form.SuppFileForm');
00359
00360 $submitForm = &new SuppFileForm($submission, $suppFileId);
00361 $submitForm->readInputData();
00362
00363 if ($submitForm->validate()) {
00364 $submitForm->execute();
00365 Request::redirect(null, null, 'submission', $articleId);
00366
00367 } else {
00368 parent::setupTemplate(true, $articleId, 'editing');
00369 $submitForm->display();
00370 }
00371 }
00372
00377 function deleteSuppFile($args) {
00378 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00379 $suppFileId = isset($args[1]) ? (int) $args[1] : 0;
00380 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00381
00382 LayoutEditorAction::deleteSuppFile($submission, $suppFileId);
00383
00384 Request::redirect(null, null, 'submission', $articleId);
00385 }
00386
00390 function orderSuppFile() {
00391 $articleId = Request::getUserVar('articleId');
00392 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId, true);
00393
00394 LayoutEditorAction::orderSuppFile($submission, Request::getUserVar('suppFileId'), Request::getUserVar('d'));
00395
00396 Request::redirect(null, null, 'submission', $articleId);
00397 }
00398
00399
00400
00401
00402
00403
00408 function downloadFile($args) {
00409 $articleId = isset($args[0]) ? $args[0] : 0;
00410 $fileId = isset($args[1]) ? $args[1] : 0;
00411 $revision = isset($args[2]) ? $args[2] : null;
00412
00413 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00414 if (!LayoutEditorAction::downloadFile($submission, $fileId, $revision)) {
00415 Request::redirect(null, null, 'submission', $articleId);
00416 }
00417 }
00418
00423 function viewFile($args) {
00424 $articleId = isset($args[0]) ? $args[0] : 0;
00425 $fileId = isset($args[1]) ? $args[1] : 0;
00426 $revision = isset($args[2]) ? $args[2] : null;
00427
00428 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00429 if (!LayoutEditorAction::viewFile($articleId, $fileId, $revision)) {
00430 Request::redirect(null, null, 'submission', $articleId);
00431 }
00432 }
00433
00434
00435
00436
00437
00441 function layoutEditorProofreadingComplete($args) {
00442 $articleId = Request::getUserVar('articleId');
00443
00444 list($journal, $submission) = SubmissionLayoutHandler::validate($articleId);
00445 parent::setupTemplate(true, $articleId);
00446
00447 $send = false;
00448 if (isset($args[0])) {
00449 $send = Request::getUserVar('send') ? true : false;
00450 }
00451
00452 import('submission.proofreader.ProofreaderAction');
00453 if (ProofreaderAction::proofreadEmail($articleId,'PROOFREAD_LAYOUT_COMPLETE', $send?'':Request::url(null, 'layoutEditor', 'layoutEditorProofreadingComplete', 'send'))) {
00454 Request::redirect(null, null, 'submission', $articleId);
00455 }
00456 }
00457
00458
00459
00460
00461
00462
00469 function validate($articleId, $checkEdit = false) {
00470 parent::validate();
00471
00472 $isValid = false;
00473
00474 $journal = &Request::getJournal();
00475 $user = &Request::getUser();
00476
00477 $layoutDao = &DAORegistry::getDAO('LayoutEditorSubmissionDAO');
00478 $submission = &$layoutDao->getSubmission($articleId, $journal->getJournalId());
00479
00480 if (isset($submission)) {
00481 $layoutAssignment = &$submission->getLayoutAssignment();
00482 if (!isset($layoutAssignment)) $isValid = false;
00483 elseif ($layoutAssignment->getEditorId() == $user->getUserId()) {
00484 if ($checkEdit) {
00485 $isValid = SubmissionLayoutHandler::layoutEditingEnabled($submission);
00486 } else {
00487 $isValid = true;
00488 }
00489 }
00490 }
00491
00492 if (!$isValid) {
00493 Request::redirect(null, Request::getRequestedPage());
00494 }
00495 return array($journal, $submission);
00496 }
00497
00505 function layoutEditingEnabled(&$submission) {
00506 $layoutAssignment = &$submission->getLayoutAssignment();
00507 $proofAssignment = &$submission->getProofAssignment();
00508
00509 return(($layoutAssignment->getDateNotified() != null
00510 && $layoutAssignment->getDateCompleted() == null)
00511 || ($proofAssignment->getDateLayoutEditorNotified() != null
00512 && $proofAssignment->getDateLayoutEditorCompleted() == null));
00513 }
00514
00515 function downloadLayoutTemplate($args) {
00516 parent::validate();
00517 $journal =& Request::getJournal();
00518 $templates = $journal->getSetting('templates');
00519 import('file.JournalFileManager');
00520 $journalFileManager =& new JournalFileManager($journal);
00521 $templateId = (int) array_shift($args);
00522 if ($templateId >= count($templates) || $templateId < 0) Request::redirect(null, 'layoutEditor');
00523 $template =& $templates[$templateId];
00524
00525 $filename = "template-$templateId." . $journalFileManager->parseFileExtension($template['originalFilename']);
00526 $journalFileManager->downloadFile($filename, $template['fileType']);
00527 }
00528 }
00529
00530 ?>