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

controllers/grid/content/announcements/ManageAnnouncementGridHandler.inc.php

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    // Overridden template methods
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       // Load language components
00057       AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
00058 
00059       // Add grid action.
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    // Public handler methods.
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       // Identify the announcement Id.
00126       $announcementId = $request->getUserVar('announcementId');
00127       $press =& $request->getPress();
00128       $pressId = $press->getId();
00129 
00130       // Form handling.
00131       $announcementForm = new AnnouncementForm($pressId, $announcementId);
00132       $announcementForm->readInputData();
00133 
00134       if ($announcementForm->validate()) {
00135          $announcementForm->execute($request);
00136 
00137          if ($announcementId) {
00138             // Successful edit of an existing announcement.
00139             $notificationLocaleKey = 'notification.editedAnnouncement';
00140          } else {
00141             // Successful added a new announcement.
00142             $notificationLocaleKey = 'notification.addedAnnouncement';
00143          }
00144 
00145          // Record the notification to user.
00146          $notificationManager = new NotificationManager();
00147          $user =& $request->getUser();
00148          $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __($notificationLocaleKey)));
00149 
00150          // Prepare the grid row data.
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       // Create notification.
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 ?>

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