00001 <?php
00014 import('classes.handler.Handler');
00015
00016 class DashboardHandler extends Handler {
00020 function DashboardHandler() {
00021 parent::Handler();
00022
00023 $this->addRoleAssignment(array(ROLE_ID_SITE_ADMIN, ROLE_ID_PRESS_MANAGER, ROLE_ID_SERIES_EDITOR, ROLE_ID_AUTHOR, ROLE_ID_REVIEWER, ROLE_ID_PRESS_ASSISTANT),
00024 array('index', 'tasks', 'submissions'));
00025 }
00026
00033 function authorize(&$request, $args, $roleAssignments) {
00034 import('lib.pkp.classes.security.authorization.PKPSiteAccessPolicy');
00035 $this->addPolicy(new PKPSiteAccessPolicy($request, null, $roleAssignments));
00036 return parent::authorize($request, $args, $roleAssignments);
00037 }
00038
00044 function index($args, &$request) {
00045 $templateMgr =& TemplateManager::getManager();
00046 $this->setupTemplate($request);
00047 $templateMgr->display('dashboard/index.tpl');
00048 }
00049
00055 function tasks($args, &$request) {
00056 $templateMgr =& TemplateManager::getManager();
00057 $this->setupTemplate($request);
00058
00059
00060 $pressDao =& DAORegistry::getDAO('PressDAO');
00061 $presses = $pressDao->getPresses();
00062
00063
00064 $user =& $request->getUser();
00065 $roleDao =& DAORegistry::getDAO('RoleDAO');
00066 $allContextsUserRoles = $roleDao->getByUserIdGroupedByContext($user->getId());
00067 $userRolesThatCanSubmit = array(ROLE_ID_AUTHOR, ROLE_ID_PRESS_ASSISTANT, ROLE_ID_PRESS_MANAGER, ROLE_ID_SERIES_EDITOR);
00068 $accessiblePresses = array();
00069 while ($press =& $presses->next()) {
00070 if (array_key_exists($press->getId(), $allContextsUserRoles)) {
00071 $pressContextUserRoles = array_keys($allContextsUserRoles[$press->getId()]);
00072 if (array_intersect($userRolesThatCanSubmit, $pressContextUserRoles)) {
00073 $accessiblePresses[] =& $press;
00074 }
00075 }
00076 unset($press);
00077 }
00078
00079
00080 $pressCount = count($accessiblePresses);
00081 $templateMgr->assign('pressCount', $pressCount);
00082 if ($pressCount == 1) {
00083 $templateMgr->assign_by_ref('press', $accessiblePresses[0]);
00084 } elseif ($pressCount > 1) {
00085 $presses = array();
00086 foreach ($accessiblePresses as $press) {
00087 $url = $request->url($press->getPath(), 'submission', 'wizard');
00088 $presses[$url] = $press->getLocalizedName();
00089 }
00090 $templateMgr->assign_by_ref('presses', $presses);
00091 }
00092
00093 return $templateMgr->fetchJson('dashboard/tasks.tpl');
00094 }
00095
00101 function submissions($args, &$request) {
00102 $templateMgr =& TemplateManager::getManager();
00103 $this->setupTemplate($request);
00104
00105 return $templateMgr->fetchJson('dashboard/submissions.tpl');
00106 }
00107
00112 function setupTemplate($request) {
00113 AppLocale::requireComponents(LOCALE_COMPONENT_OMP_MANAGER, LOCALE_COMPONENT_PKP_MANAGER, LOCALE_COMPONENT_OMP_SUBMISSION);
00114 parent::setupTemplate();
00115 }
00116 }
00117
00118 ?>