00001 <?php
00002
00015 import('lib.pkp.classes.controllers.grid.GridHandler');
00016 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
00017
00018 import('controllers.grid.content.announcements.form.AnnouncementTypeForm');
00019
00020 class AnnouncementTypeGridHandler extends GridHandler {
00024 function AnnouncementTypeGridHandler() {
00025 parent::GridHandler();
00026 $this->addRoleAssignment(
00027 ROLE_ID_PRESS_MANAGER,
00028 array(
00029 'fetchGrid', 'fetchRow',
00030 'addAnnouncementType', 'editAnnouncementType',
00031 'updateAnnouncementType',
00032 'deleteAnnouncementType'
00033 )
00034 );
00035 }
00036
00037
00038
00039
00040
00044 function authorize($request, $args, $roleAssignments) {
00045 import('classes.security.authorization.OmpPressAccessPolicy');
00046 $this->addPolicy(new OmpPressAccessPolicy($request, $roleAssignments));
00047
00048 $returner = parent::authorize($request, $args, $roleAssignments);
00049 $press =& $request->getPress();
00050
00051 $announcementTypeId = $request->getUserVar('announcementTypeId');
00052 if ($announcementTypeId) {
00053
00054 $announcementTypeDao =& DAORegistry::getDAO('AnnouncementTypeDAO');
00055 $announcementType =& $announcementTypeDao->getById($announcementTypeId);
00056 if (!$announcementType || $announcementType->getAssocType() != ASSOC_TYPE_PRESS || $announcementType->getAssocId() != $press->getId()) {
00057 return false;
00058 }
00059 }
00060
00061 return $returner;
00062 }
00063
00067 function initialize(&$request) {
00068 parent::initialize($request);
00069
00070
00071 $this->setTitle('manager.announcementTypes');
00072
00073
00074 $this->setEmptyRowText('manager.announcementTypes.noneCreated');
00075
00076 $press =& $request->getPress();
00077
00078
00079 import('controllers.grid.content.announcements.AnnouncementTypeGridCellProvider');
00080 $announcementTypeCellProvider = new AnnouncementTypeGridCellProvider();
00081 $this->addColumn(
00082 new GridColumn('name',
00083 'common.name',
00084 null,
00085 'controllers/grid/gridCell.tpl',
00086 $announcementTypeCellProvider,
00087 array('width' => 60)
00088 )
00089 );
00090
00091
00092 AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
00093
00094
00095 $router =& $request->getRouter();
00096
00097 import('lib.pkp.classes.linkAction.request.AjaxModal');
00098 $this->addAction(
00099 new LinkAction(
00100 'addAnnouncementType',
00101 new AjaxModal(
00102 $router->url($request, null, null, 'addAnnouncementType', null, null),
00103 __('grid.action.addAnnouncementType'),
00104 'modal_add_item',
00105 true
00106 ),
00107 __('grid.action.addAnnouncementType'),
00108 'add_item'
00109 )
00110 );
00111 }
00112
00116 function loadData($request, $filter) {
00117 $press =& $request->getPress();
00118 $announcementTypeDao =& DAORegistry::getDAO('AnnouncementTypeDAO');
00119 $pressAnnouncementTypes =& $announcementTypeDao->getByAssoc(ASSOC_TYPE_PRESS, $press->getId());
00120
00121 return $pressAnnouncementTypes;
00122 }
00123
00127 function getRowInstance() {
00128 import('controllers.grid.content.announcements.AnnouncementTypeGridRow');
00129 return new AnnouncementTypeGridRow();
00130 }
00131
00132
00133
00134
00141 function addAnnouncementType($args, &$request) {
00142 return $this->editAnnouncementType($args, $request);
00143 }
00144
00151 function editAnnouncementType($args, &$request) {
00152 $announcementTypeId = (int)$request->getUserVar('announcementTypeId');
00153 $press =& $request->getPress();
00154 $pressId = $press->getId();
00155
00156 $announcementTypeForm = new AnnouncementTypeForm($pressId, $announcementTypeId);
00157 $announcementTypeForm->initData($args, $request);
00158
00159 $json = new JSONMessage(true, $announcementTypeForm->fetch($request));
00160 return $json->getString();
00161 }
00162
00169 function updateAnnouncementType($args, &$request) {
00170
00171
00172 $announcementTypeId = $request->getUserVar('announcementTypeId');
00173 $press =& $request->getPress();
00174 $pressId = $press->getId();
00175
00176
00177 $announcementTypeForm = new AnnouncementTypeForm($pressId, $announcementTypeId);
00178 $announcementTypeForm->readInputData();
00179
00180 if ($announcementTypeForm->validate()) {
00181 $announcementTypeForm->execute($request);
00182
00183 if ($announcementTypeId) {
00184
00185 $notificationLocaleKey = 'notification.editedAnnouncementType';
00186 } else {
00187
00188 $notificationLocaleKey = 'notification.addedAnnouncementType';
00189 }
00190
00191
00192 $notificationManager = new NotificationManager();
00193 $user =& $request->getUser();
00194 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __($notificationLocaleKey)));
00195
00196
00197 return DAO::getDataChangedEvent($announcementTypeId);
00198 } else {
00199 $json = new JSONMessage(false);
00200 }
00201 return $json->getString();
00202 }
00203
00209 function deleteAnnouncementType($args, $request) {
00210 $announcementTypeId = (int) $request->getUserVar('announcementTypeId');
00211
00212 $announcementTypeDao =& DAORegistry::getDAO('AnnouncementTypeDAO');
00213 $announcementTypeDao->deleteById($announcementTypeId);
00214
00215
00216 $notificationManager = new NotificationManager();
00217 $user =& $request->getUser();
00218 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedAnnouncementType')));
00219
00220 return DAO::getDataChangedEvent($announcementTypeId);
00221 }
00222 }
00223
00224 ?>