00001 <?php
00002
00015 import('controllers.grid.content.announcements.AnnouncementGridHandler');
00016 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
00017 import('controllers.grid.content.announcements.form.AnnouncementForm');
00018
00019 class ManageAnnouncementGridHandler extends AnnouncementGridHandler {
00023 function ManageAnnouncementGridHandler() {
00024 parent::AnnouncementGridHandler();
00025 $this->addRoleAssignment(
00026 ROLE_ID_PRESS_MANAGER,
00027 array(
00028 'fetchGrid', 'fetchRow', 'moreInformation',
00029 'addAnnouncement', 'editAnnouncement',
00030 'updateAnnouncement', 'deleteAnnouncement'
00031 )
00032 );
00033 }
00034
00035
00036
00037
00038
00042 function authorize(&$request, $args, $roleAssignments) {
00043 import('classes.security.authorization.OmpPressAccessPolicy');
00044 $this->addPolicy(new OmpPressAccessPolicy($request, $roleAssignments));
00045 return parent::authorize($request, $args, $roleAssignments, false);
00046 }
00047
00051 function initialize($request) {
00052 parent::initialize($request);
00053
00054 $this->setTitle('announcement.announcements');
00055
00056
00057 AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
00058
00059
00060 $router =& $request->getRouter();
00061
00062 import('lib.pkp.classes.linkAction.request.AjaxModal');
00063 $this->addAction(
00064 new LinkAction(
00065 'addAnnouncement',
00066 new AjaxModal(
00067 $router->url($request, null, null, 'addAnnouncement', null, null),
00068 __('grid.action.addAnnouncement'),
00069 'modal_add_item',
00070 true
00071 ),
00072 __('grid.action.addAnnouncement'),
00073 'add_item')
00074 );
00075 }
00076
00080 function getRowInstance() {
00081 import('controllers.grid.content.announcements.AnnouncementGridRow');
00082 return new AnnouncementGridRow();
00083 }
00084
00085
00086
00087
00088
00095 function addAnnouncement($args, &$request) {
00096 return $this->editAnnouncement($args, $request);
00097 }
00098
00105 function editAnnouncement($args, &$request) {
00106 $announcementId = (int)$request->getUserVar('announcementId');
00107 $press =& $request->getPress();
00108 $pressId = $press->getId();
00109
00110 $announcementForm = new AnnouncementForm($pressId, $announcementId);
00111 $announcementForm->initData($args, $request);
00112
00113 $json = new JSONMessage(true, $announcementForm->fetch($request));
00114 return $json->getString();
00115 }
00116
00123 function updateAnnouncement($args, &$request) {
00124
00125
00126 $announcementId = $request->getUserVar('announcementId');
00127 $press =& $request->getPress();
00128 $pressId = $press->getId();
00129
00130
00131 $announcementForm = new AnnouncementForm($pressId, $announcementId);
00132 $announcementForm->readInputData();
00133
00134 if ($announcementForm->validate()) {
00135 $announcementForm->execute($request);
00136
00137 if ($announcementId) {
00138
00139 $notificationLocaleKey = 'notification.editedAnnouncement';
00140 } else {
00141
00142 $notificationLocaleKey = 'notification.addedAnnouncement';
00143 }
00144
00145
00146 $notificationManager = new NotificationManager();
00147 $user =& $request->getUser();
00148 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __($notificationLocaleKey)));
00149
00150
00151 return DAO::getDataChangedEvent($announcementId);
00152 } else {
00153 $json = new JSONMessage(false);
00154 }
00155 return $json->getString();
00156 }
00157
00163 function deleteAnnouncement($args, $request) {
00164 $announcementId = (int) $request->getUserVar('announcementId');
00165
00166 $announcementDao =& DAORegistry::getDAO('AnnouncementDAO');
00167 $announcementDao->deleteById($announcementId);
00168
00169
00170 $notificationManager = new NotificationManager();
00171 $user =& $request->getUser();
00172 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedAnnouncement')));
00173
00174 return DAO::getDataChangedEvent($announcementId);
00175 }
00176 }
00177
00178 ?>