00001 <?php
00002
00015
00016
00017
00018 class SetupHandler extends ManagerHandler {
00019
00025 function setup($args) {
00026 parent::validate();
00027 parent::setupTemplate(true);
00028
00029 $step = isset($args[0]) ? (int) $args[0] : 0;
00030
00031 if ($step >= 1 && $step <= 5) {
00032
00033 $formClass = "JournalSetupStep{$step}Form";
00034 import("manager.form.setup.$formClass");
00035
00036 $setupForm = &new $formClass();
00037 if ($setupForm->isLocaleResubmit()) {
00038 $setupForm->readInputData();
00039 } else {
00040 $setupForm->initData();
00041 }
00042 $setupForm->display();
00043
00044 } else {
00045 $templateMgr = &TemplateManager::getManager();
00046 $templateMgr->assign('helpTopicId','journal.managementPages.setup');
00047 $templateMgr->display('manager/setup/index.tpl');
00048 }
00049 }
00050
00055 function saveSetup($args) {
00056 parent::validate();
00057
00058 $step = isset($args[0]) ? (int) $args[0] : 0;
00059
00060 if ($step >= 1 && $step <= 5) {
00061
00062 parent::setupTemplate(true);
00063
00064 $formClass = "JournalSetupStep{$step}Form";
00065 import("manager.form.setup.$formClass");
00066
00067 $setupForm = &new $formClass();
00068 $setupForm->readInputData();
00069 $formLocale = $setupForm->getFormLocale();
00070
00071
00072 switch ($step) {
00073 case 1:
00074 if (Request::getUserVar('addSponsor')) {
00075
00076 $editData = true;
00077 $sponsors = $setupForm->getData('sponsors');
00078 array_push($sponsors, array());
00079 $setupForm->setData('sponsors', $sponsors);
00080
00081 } else if (($delSponsor = Request::getUserVar('delSponsor')) && count($delSponsor) == 1) {
00082
00083 $editData = true;
00084 list($delSponsor) = array_keys($delSponsor);
00085 $delSponsor = (int) $delSponsor;
00086 $sponsors = $setupForm->getData('sponsors');
00087 array_splice($sponsors, $delSponsor, 1);
00088 $setupForm->setData('sponsors', $sponsors);
00089
00090 } else if (Request::getUserVar('addContributor')) {
00091
00092 $editData = true;
00093 $contributors = $setupForm->getData('contributors');
00094 array_push($contributors, array());
00095 $setupForm->setData('contributors', $contributors);
00096
00097 } else if (($delContributor = Request::getUserVar('delContributor')) && count($delContributor) == 1) {
00098
00099 $editData = true;
00100 list($delContributor) = array_keys($delContributor);
00101 $delContributor = (int) $delContributor;
00102 $contributors = $setupForm->getData('contributors');
00103 array_splice($contributors, $delContributor, 1);
00104 $setupForm->setData('contributors', $contributors);
00105 }
00106 break;
00107
00108 case 2:
00109 if (Request::getUserVar('addCustomAboutItem')) {
00110
00111 $editData = true;
00112 $customAboutItems = $setupForm->getData('customAboutItems');
00113 $customAboutItems[$formLocale][] = array();
00114 $setupForm->setData('customAboutItems', $customAboutItems);
00115
00116 } else if (($delCustomAboutItem = Request::getUserVar('delCustomAboutItem')) && count($delCustomAboutItem) == 1) {
00117
00118 $editData = true;
00119 list($delCustomAboutItem) = array_keys($delCustomAboutItem);
00120 $delCustomAboutItem = (int) $delCustomAboutItem;
00121 $customAboutItems = $setupForm->getData('customAboutItems');
00122 if (!isset($customAboutItems[$formLocale])) $customAboutItems[$formLocale][] = array();
00123 array_splice($customAboutItems[$formLocale], $delCustomAboutItem, 1);
00124 $setupForm->setData('customAboutItems', $customAboutItems);
00125 }
00126 if (Request::getUserVar('addReviewerDatabaseLink')) {
00127
00128 $editData = true;
00129 $reviewerDatabaseLinks = $setupForm->getData('reviewerDatabaseLinks');
00130 array_push($reviewerDatabaseLinks, array());
00131 $setupForm->setData('reviewerDatabaseLinks', $reviewerDatabaseLinks);
00132
00133 } else if (($delReviewerDatabaseLink = Request::getUserVar('delReviewerDatabaseLink')) && count($delReviewerDatabaseLink) == 1) {
00134
00135 $editData = true;
00136 list($delReviewerDatabaseLink) = array_keys($delReviewerDatabaseLink);
00137 $delReviewerDatabaseLink = (int) $delReviewerDatabaseLink;
00138 $reviewerDatabaseLinks = $setupForm->getData('reviewerDatabaseLinks');
00139 array_splice($reviewerDatabaseLinks, $delReviewerDatabaseLink, 1);
00140 $setupForm->setData('reviewerDatabaseLinks', $reviewerDatabaseLinks);
00141 }
00142 break;
00143
00144 case 3:
00145 if (Request::getUserVar('addChecklist')) {
00146
00147 $editData = true;
00148 $checklist = $setupForm->getData('submissionChecklist');
00149 if (!isset($checklist[$formLocale]) || !is_array($checklist[$formLocale])) {
00150 $checklist[$formLocale] = array();
00151 $lastOrder = 0;
00152 } else {
00153 $lastOrder = $checklist[$formLocale][count($checklist[$formLocale])-1]['order'];
00154 }
00155 array_push($checklist[$formLocale], array('order' => $lastOrder+1));
00156 $setupForm->setData('submissionChecklist', $checklist);
00157
00158 } else if (($delChecklist = Request::getUserVar('delChecklist')) && count($delChecklist) == 1) {
00159
00160 $editData = true;
00161 list($delChecklist) = array_keys($delChecklist);
00162 $delChecklist = (int) $delChecklist;
00163 $checklist = $setupForm->getData('submissionChecklist');
00164 if (!isset($checklist[$formLocale])) $checklist[$formLocale] = array();
00165 array_splice($checklist[$formLocale], $delChecklist, 1);
00166 $setupForm->setData('submissionChecklist', $checklist);
00167 }
00168
00169 if (!isset($editData)) {
00170
00171 $checklist = $setupForm->getData('submissionChecklist');
00172 if (isset($checklist[$formLocale]) && is_array($checklist[$formLocale])) {
00173 usort($checklist[$formLocale], create_function('$a,$b','return $a[\'order\'] == $b[\'order\'] ? 0 : ($a[\'order\'] < $b[\'order\'] ? -1 : 1);'));
00174 }
00175 $setupForm->setData('submissionChecklist', $checklist);
00176 }
00177 break;
00178
00179 case 4:
00180 $journal =& Request::getJournal();
00181 $templates = $journal->getSetting('templates');
00182 import('file.JournalFileManager');
00183 $journalFileManager =& new JournalFileManager($journal);
00184 if (Request::getUserVar('addTemplate')) {
00185
00186 $editData = true;
00187 if (!is_array($templates)) $templates = array();
00188 $templateId = count($templates);
00189 $originalFilename = $_FILES['template-file']['name'];
00190 $fileType = $_FILES['template-file']['type'];
00191 $filename = "template-$templateId." . $journalFileManager->parseFileExtension($originalFilename);
00192 $journalFileManager->uploadFile('template-file', $filename);
00193 $templates[$templateId] = array(
00194 'originalFilename' => $originalFilename,
00195 'fileType' => $fileType,
00196 'filename' => $filename,
00197 'title' => Request::getUserVar('template-title')
00198 );
00199 $journal->updateSetting('templates', $templates);
00200 } else if (($delTemplate = Request::getUserVar('delTemplate')) && count($delTemplate) == 1) {
00201
00202 $editData = true;
00203 list($delTemplate) = array_keys($delTemplate);
00204 $delTemplate = (int) $delTemplate;
00205 $template = $templates[$delTemplate];
00206 $filename = "template-$delTemplate." . $journalFileManager->parseFileExtension($template['originalFilename']);
00207 $journalFileManager->deleteFile($filename);
00208 array_splice($templates, $delTemplate, 1);
00209 $journal->updateSetting('templates', $templates);
00210 }
00211 $setupForm->setData('templates', $templates);
00212 break;
00213 case 5:
00214 if (Request::getUserVar('uploadHomeHeaderTitleImage')) {
00215 if ($setupForm->uploadImage('homeHeaderTitleImage', $formLocale)) {
00216 $editData = true;
00217 } else {
00218 $setupForm->addError('homeHeaderTitleImage', Locale::translate('manager.setup.homeTitleImageInvalid'));
00219 }
00220
00221 } else if (Request::getUserVar('deleteHomeHeaderTitleImage')) {
00222 $editData = true;
00223 $setupForm->deleteImage('homeHeaderTitleImage', $formLocale);
00224
00225 } else if (Request::getUserVar('uploadHomeHeaderLogoImage')) {
00226 if ($setupForm->uploadImage('homeHeaderLogoImage', $formLocale)) {
00227 $editData = true;
00228 } else {
00229 $setupForm->addError('homeHeaderLogoImage', Locale::translate('manager.setup.homeHeaderImageInvalid'));
00230 }
00231
00232 } else if (Request::getUserVar('deleteHomeHeaderLogoImage')) {
00233 $editData = true;
00234 $setupForm->deleteImage('homeHeaderLogoImage', $formLocale);
00235
00236 } else if (Request::getUserVar('uploadPageHeaderTitleImage')) {
00237 if ($setupForm->uploadImage('pageHeaderTitleImage', $formLocale)) {
00238 $editData = true;
00239 } else {
00240 $setupForm->addError('pageHeaderTitleImage', Locale::translate('manager.setup.pageHeaderTitleImageInvalid'));
00241 }
00242
00243 } else if (Request::getUserVar('deletePageHeaderTitleImage')) {
00244 $editData = true;
00245 $setupForm->deleteImage('pageHeaderTitleImage', $formLocale);
00246
00247 } else if (Request::getUserVar('uploadPageHeaderLogoImage')) {
00248 if ($setupForm->uploadImage('pageHeaderLogoImage', $formLocale)) {
00249 $editData = true;
00250 } else {
00251 $setupForm->addError('pageHeaderLogoImage', Locale::translate('manager.setup.pageHeaderLogoImageInvalid'));
00252 }
00253
00254 } else if (Request::getUserVar('deletePageHeaderLogoImage')) {
00255 $editData = true;
00256 $setupForm->deleteImage('pageHeaderLogoImage', $formLocale);
00257
00258 } else if (Request::getUserVar('uploadHomepageImage')) {
00259 if ($setupForm->uploadImage('homepageImage', $formLocale)) {
00260 $editData = true;
00261 } else {
00262 $setupForm->addError('homepageImage', Locale::translate('manager.setup.homepageImageInvalid'));
00263 }
00264
00265 } else if (Request::getUserVar('deleteHomepageImage')) {
00266 $editData = true;
00267 $setupForm->deleteImage('homepageImage', $formLocale);
00268 } else if (Request::getUserVar('uploadJournalStyleSheet')) {
00269 if ($setupForm->uploadStyleSheet('journalStyleSheet')) {
00270 $editData = true;
00271 } else {
00272 $setupForm->addError('journalStyleSheet', Locale::translate('manager.setup.journalStyleSheetInvalid'));
00273 }
00274
00275 } else if (Request::getUserVar('deleteJournalStyleSheet')) {
00276 $editData = true;
00277 $setupForm->deleteImage('journalStyleSheet');
00278
00279 } else if (Request::getUserVar('addNavItem')) {
00280
00281 $editData = true;
00282 $navItems = $setupForm->getData('navItems');
00283 $navItems[$formLocale][] = array();
00284 $setupForm->setData('navItems', $navItems);
00285
00286 } else if (($delNavItem = Request::getUserVar('delNavItem')) && count($delNavItem) == 1) {
00287
00288 $editData = true;
00289 list($delNavItem) = array_keys($delNavItem);
00290 $delNavItem = (int) $delNavItem;
00291 $navItems = $setupForm->getData('navItems');
00292 if (is_array($navItems) && is_array($navItems[$formLocale])) {
00293 array_splice($navItems[$formLocale], $delNavItem, 1);
00294 $setupForm->setData('navItems', $navItems);
00295 }
00296 }
00297 break;
00298 }
00299
00300 if (!isset($editData) && $setupForm->validate()) {
00301 $setupForm->execute();
00302
00303 Request::redirect(null, null, 'setupSaved', $step);
00304 } else {
00305 $setupForm->display();
00306 }
00307
00308 } else {
00309 Request::redirect();
00310 }
00311 }
00312
00316 function setupSaved($args) {
00317 parent::validate();
00318
00319 $step = isset($args[0]) ? (int) $args[0] : 0;
00320
00321 if ($step >= 1 && $step <= 5) {
00322 parent::setupTemplate(true);
00323
00324 $templateMgr = &TemplateManager::getManager();
00325 $templateMgr->assign('setupStep', $step);
00326 $templateMgr->assign('helpTopicId', 'journal.managementPages.setup');
00327 $templateMgr->display('manager/setup/settingsSaved.tpl');
00328 } else {
00329 Request::redirect(null, 'index');
00330 }
00331 }
00332
00333 function downloadLayoutTemplate($args) {
00334 parent::validate();
00335 $journal =& Request::getJournal();
00336 $templates = $journal->getSetting('templates');
00337 import('file.JournalFileManager');
00338 $journalFileManager =& new JournalFileManager($journal);
00339 $templateId = (int) array_shift($args);
00340 if ($templateId >= count($templates) || $templateId < 0) Request::redirect(null, null, 'setup');
00341 $template =& $templates[$templateId];
00342
00343 $filename = "template-$templateId." . $journalFileManager->parseFileExtension($template['originalFilename']);
00344 $journalFileManager->downloadFile($filename, $template['fileType']);
00345 }
00346 }
00347 ?>