• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/grid/settings/submissionChecklist/form/SubmissionChecklistForm.inc.php

00001 <?php
00002 
00016 import('lib.pkp.classes.form.Form');
00017 
00018 class SubmissionChecklistForm extends Form {
00020    var $submissionChecklistId;
00021 
00025    function SubmissionChecklistForm($submissionChecklistId = null) {
00026       $this->submissionChecklistId = $submissionChecklistId;
00027       parent::Form('controllers/grid/settings/submissionChecklist/form/submissionChecklistForm.tpl');
00028 
00029       // Validation checks for this form
00030       $this->addCheck(new FormValidatorLocale($this, 'checklistItem', 'required', 'maganer.setup.submissionChecklistItemRequired'));
00031       $this->addCheck(new FormValidatorPost($this));
00032    }
00033 
00039    function initData($args, &$request) {
00040       $press =& $request->getPress();
00041 
00042       $submissionChecklistAll = $press->getSetting('submissionChecklist');
00043       $checklistItem = array();
00044       // preparea  localizable array for this checklist Item
00045       foreach (AppLocale::getSupportedLocales() as $locale => $name) {
00046          $checklistItem[$locale] = null;
00047       }
00048 
00049       // if editing, set the content
00050       // use of 'content' as key is for backwards compatibility
00051       if ( isset($this->submissionChecklistId) ) {
00052          foreach (AppLocale::getSupportedLocales() as $locale => $name) {
00053             if ( !isset($submissionChecklistAll[$locale][$this->submissionChecklistId]['content'])) {
00054                $checklistItem[$locale] = '';
00055             } else {
00056                $checklistItem[$locale] = $submissionChecklistAll[$locale][$this->submissionChecklistId]['content'];
00057             }
00058          }
00059       }
00060       // assign the data to the form
00061       $this->_data = array( 'checklistItem' => $checklistItem  );
00062 
00063       // grid related data
00064       $this->_data['gridId'] = $args['gridId'];
00065       $this->_data['rowId'] = isset($args['rowId']) ? $args['rowId'] : null;
00066    }
00067 
00073    function fetch(&$request) {
00074       AppLocale::requireComponents(LOCALE_COMPONENT_OMP_MANAGER);
00075       return parent::fetch($request);
00076    }
00077 
00082    function readInputData() {
00083       $this->readUserVars(array('submissionChecklistId', 'checklistItem'));
00084       $this->readUserVars(array('gridId', 'rowId'));
00085    }
00086 
00090    function execute($args, &$request) {
00091       $router =& $request->getRouter();
00092       $press =& $router->getContext($request);
00093       $submissionChecklistAll = $press->getSetting('submissionChecklist');
00094       $locale = AppLocale::getPrimaryLocale();
00095       //FIXME: a bit of kludge to get unique submissionChecklist id's
00096       $this->submissionChecklistId = ($this->submissionChecklistId != null ? $this->submissionChecklistId:(max(array_keys($submissionChecklistAll[$locale])) + 1));
00097 
00098       $order = 0;
00099       foreach ($submissionChecklistAll[$locale] as $checklistItem) {
00100          if ($checklistItem['order'] > $order) {
00101             $order = $checklistItem['order'];
00102          }
00103       }
00104       $order++;
00105 
00106       $checklistItem = $this->getData('checklistItem');
00107       foreach (AppLocale::getSupportedLocales() as $locale => $name) {
00108          if (isset($checklistItem[$locale])) {
00109             $submissionChecklistAll[$locale][$this->submissionChecklistId]['content'] = $checklistItem[$locale];
00110             $submissionChecklistAll[$locale][$this->submissionChecklistId]['order'] = $order;
00111          }
00112       }
00113 
00114       $press->updateSetting('submissionChecklist', $submissionChecklistAll, 'object', true);
00115       return true;
00116    }
00117 }
00118 
00119 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1