00001 <?php
00002
00015
00016 import('controllers.grid.settings.SetupGridHandler');
00017
00018
00019 import('controllers.grid.settings.contributor.ContributorGridRow');
00020
00021 import('lib.pkp.classes.linkAction.request.AjaxModal');
00022
00023 class ContributorGridHandler extends SetupGridHandler {
00027 function ContributorGridHandler() {
00028 parent::SetupGridHandler();
00029 $this->addRoleAssignment(array(ROLE_ID_PRESS_MANAGER),
00030 array('fetchGrid', 'addContributor', 'editContributor', 'updateContributor', 'deleteContributor'));
00031 }
00032
00033
00034
00035
00036
00037
00038
00039
00040 function initialize(&$request) {
00041 parent::initialize($request);
00042
00043
00044 $router =& $request->getRouter();
00045 $context =& $router->getContext($request);
00046 $contributors = $context->getSetting('contributors');
00047 $contributors = isset($contributors) ? $contributors : array();
00048 $this->setGridDataElements($contributors);
00049
00050
00051 $router =& $request->getRouter();
00052
00053 $this->addAction(
00054 new LinkAction(
00055 'addContributor',
00056 new AjaxModal(
00057 $router->url($request, null, null, 'addContributor', null, array('gridId' => $this->getId())),
00058 __('grid.action.addContributor'),
00059 'modal_add_user',
00060 true
00061 ),
00062 __('grid.action.addContributor'),
00063 'add_user')
00064 );
00065
00066
00067 $this->addColumn(
00068 new GridColumn(
00069 'institution',
00070 'grid.columns.institution',
00071 null,
00072 'controllers/grid/gridCell.tpl',
00073 null,
00074 array('width' => 50, 'alignment' => COLUMN_ALIGNMENT_LEFT)
00075 )
00076 );
00077 $this->addColumn(
00078 new GridColumn(
00079 'url',
00080 'grid.columns.url',
00081 null,
00082 'controllers/grid/gridCell.tpl',
00083 null,
00084 array('width' => 50, 'alignment' => COLUMN_ALIGNMENT_LEFT)
00085 )
00086 );
00087 }
00088
00089
00090
00091
00096 function &getRowInstance() {
00097 $row = new ContributorGridRow();
00098 return $row;
00099 }
00100
00101
00102
00103
00110 function addContributor($args, &$request) {
00111
00112
00113 return $this->editContributor($args, $request);
00114 }
00115
00122 function editContributor($args, &$request) {
00123 $contributorId = isset($args['rowId']) ? $args['rowId'] : null;
00124 import('controllers.grid.settings.contributor.form.ContributorForm');
00125 $contributorForm = new ContributorForm($contributorId);
00126
00127 if ($contributorForm->isLocaleResubmit()) {
00128 $contributorForm->readInputData();
00129 } else {
00130 $contributorForm->initData($args, $request);
00131 }
00132
00133 $json = new JSONMessage(true, $contributorForm->fetch($request));
00134 return $json->getString();
00135 }
00136
00143 function updateContributor($args, &$request) {
00144
00145
00146 $contributorId = isset($args['rowId']) ? $args['rowId'] : null;
00147 import('controllers.grid.settings.contributor.form.ContributorForm');
00148 $contributorForm = new ContributorForm($contributorId);
00149 $contributorForm->readInputData();
00150
00151 if ($contributorForm->validate()) {
00152 $contributorForm->execute($request);
00153
00154
00155 $row =& $this->getRowInstance();
00156 $row->setGridId($this->getId());
00157 $row->setId($contributorForm->contributorId);
00158 $rowData = array('institution' => $contributorForm->getData('institution'),
00159 'url' => $contributorForm->getData('url'));
00160 $row->setData($rowData);
00161 $row->initialize($request);
00162
00163 return DAO::getDataChangedEvent();
00164 } else {
00165 return new JSONMessage(false);
00166 }
00167 }
00168
00175 function deleteContributor($args, &$request) {
00176 $contributorId = isset($args['rowId']) ? $args['rowId'] : null;
00177 $router =& $request->getRouter();
00178 $press =& $router->getContext($request);
00179 $pressSettingsDao =& DAORegistry::getDAO('PressSettingsDAO');
00180
00181
00182 $contributors = $pressSettingsDao->getSetting($press->getId(), 'contributors');
00183
00184 if ( isset($contributors[$contributorId]) ) {
00185 unset($contributors[$contributorId]);
00186 $pressSettingsDao->updateSetting($press->getId(), 'contributors', $contributors, 'object');
00187 return DAO::getDataChangedEvent();
00188 } else {
00189 return new JSONMessage(false, __('manager.setup.errorDeletingItem'));
00190 }
00191 }
00192 }
00193
00194 ?>