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

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

00001 <?php
00002 
00015 import('lib.pkp.classes.controllers.grid.GridHandler');
00016 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
00017 
00018 class AnnouncementGridHandler extends GridHandler {
00022    function AnnouncementGridHandler() {
00023       parent::GridHandler();
00024    }
00025 
00026 
00027    //
00028    // Overridden template methods
00029    //
00037    function authorize($request, $args, $roleAssignments, $requireAnnouncementsEnabled = true) {
00038 
00039       import('lib.pkp.classes.security.authorization.ContextRequiredPolicy');
00040       $this->addPolicy(new ContextRequiredPolicy($request));
00041 
00042       $returner = parent::authorize($request, $args, $roleAssignments);
00043 
00044       // Ensure announcements are enabled.
00045       $press =& $request->getPress();
00046       if ($requireAnnouncementsEnabled && !$press->getSetting('enableAnnouncements')) {
00047          return false;
00048       }
00049 
00050       $announcementId = $request->getUserVar('announcementId');
00051       if ($announcementId) {
00052          // Ensure announcement is valid and for this context
00053          $announcementDao =& DAORegistry::getDAO('AnnouncementDAO'); /* @var $announcementDao AnnouncementDAO */
00054          if ($announcementDao->getAnnouncementAssocType($announcementId) != ASSOC_TYPE_PRESS &&
00055             $announcementDao->getAnnouncementAssocId($announcementId) != $press->getId()) {
00056             return false;
00057          }
00058       }
00059 
00060       return $returner;
00061    }
00062 
00066    function initialize(&$request) {
00067       parent::initialize($request);
00068 
00069       // Set the no items row text
00070       $this->setEmptyRowText('announcement.noneExist');
00071 
00072       $press =& $request->getPress();
00073 
00074       // Columns
00075       import('controllers.grid.content.announcements.AnnouncementGridCellProvider');
00076       $announcementCellProvider = new AnnouncementGridCellProvider();
00077       $this->addColumn(
00078          new GridColumn('title',
00079             'common.title',
00080             null,
00081             'controllers/grid/gridCell.tpl',
00082             $announcementCellProvider,
00083             array('width' => 60)
00084          )
00085       );
00086 
00087       $this->addColumn(
00088          new GridColumn('type',
00089             'common.type',
00090             null,
00091             'controllers/grid/gridCell.tpl',
00092             $announcementCellProvider
00093          )
00094       );
00095 
00096       $cellProvider = new DataObjectGridCellProvider();
00097       $this->addColumn(
00098          new GridColumn(
00099             'datePosted',
00100             'announcement.posted',
00101             null,
00102             'controllers/grid/gridCell.tpl',
00103             $cellProvider
00104          )
00105       );
00106    }
00107 
00111    function loadData($request, $filter) {
00112       $press =& $request->getPress();
00113       $announcementDao =& DAORegistry::getDAO('AnnouncementDAO');
00114       $pressAnnouncements =& $announcementDao->getAnnouncementsNotExpiredByAssocId(ASSOC_TYPE_PRESS, $press->getId());
00115 
00116       return $pressAnnouncements;
00117    }
00118 
00119 
00120    //
00121    // Public grid actions.
00122    //
00129    function moreInformation($args, &$request) {
00130       $announcementId = (int)$request->getUserVar('announcementId');
00131       $press =& $request->getPress();
00132       $pressId = $press->getId();
00133 
00134       import('controllers.grid.content.announcements.form.AnnouncementForm');
00135       $announcementForm = new AnnouncementForm($pressId, $announcementId, true);
00136 
00137       $announcementForm->initData($args, $request);
00138 
00139       $json = new JSONMessage(true, $announcementForm->fetch($request));
00140       return $json->getString();
00141    }
00142 }
00143 
00144 ?>

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