00001 <?php
00002
00016 import('lib.pkp.classes.form.Form');
00017
00018 class ContributorForm extends Form {
00020 var $contributorId;
00021
00025 function ContributorForm($contributorId = null) {
00026 $this->contributorId = $contributorId;
00027 parent::Form('controllers/grid/settings/contributor/form/contributorForm.tpl');
00028
00029
00030 $this->addCheck(new FormValidator($this, 'institution', 'required', 'manager.setup.form.contributors.institutionRequired'));
00031 $this->addCheck(new FormValidatorUrl($this, 'url', 'required', 'manager.emails.form.contributors.urlRequired'));
00032 $this->addCheck(new FormValidatorPost($this));
00033 }
00034
00040 function initData($args, &$request) {
00041 $press =& $request->getPress();
00042
00043 $contributors = $press->getSetting('contributors');
00044 if ( $this->contributorId && isset($contributors[$this->contributorId]) ) {
00045 $this->_data = array(
00046 'contributorId' => $this->contributorId,
00047 'institution' => $contributors[$this->contributorId]['institution'],
00048 'url' => $contributors[$this->contributorId]['url']
00049 );
00050 } else {
00051 $this->_data = array(
00052 'institution' => '',
00053 'url' => ''
00054 );
00055 }
00056
00057
00058 $this->_data['gridId'] = $args['gridId'];
00059 $this->_data['rowId'] = isset($args['rowId']) ? $args['rowId'] : null;
00060 }
00061
00067 function fetch(&$request) {
00068 AppLocale::requireComponents(LOCALE_COMPONENT_OMP_MANAGER);
00069 return parent::fetch($request);
00070 }
00071
00076 function readInputData() {
00077 $this->readUserVars(array('contributorId', 'institution', 'url'));
00078 $this->readUserVars(array('gridId', 'rowId'));
00079 }
00080
00085 function execute($request) {
00086 $press =& $request->getPress();
00087 $contributors = $press->getSetting('contributors');
00088 if (empty($contributors)) {
00089 $contributors = array();
00090 $this->contributorId = 1;
00091 } else {
00092
00093 $this->contributorId = ($this->contributorId?$this->contributorId:(max(array_keys($contributors)) + 1));
00094 }
00095
00096 $contributors[$this->contributorId] = array('institution' => $this->getData('institution'),
00097 'url' => $this->getData('url'));
00098 $press->updateSetting('contributors', $contributors, 'object', false);
00099 return true;
00100 }
00101 }
00102
00103 ?>