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
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
00045 $press =& $request->getPress();
00046 if ($requireAnnouncementsEnabled && !$press->getSetting('enableAnnouncements')) {
00047 return false;
00048 }
00049
00050 $announcementId = $request->getUserVar('announcementId');
00051 if ($announcementId) {
00052
00053 $announcementDao =& DAORegistry::getDAO('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
00070 $this->setEmptyRowText('announcement.noneExist');
00071
00072 $press =& $request->getPress();
00073
00074
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
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 ?>