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

pages/dashboard/DashboardHandler.inc.php

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       // Get all the presses in the system, to determine which 'new submission' entry point we display
00060       $pressDao =& DAORegistry::getDAO('PressDAO'); /* @var $pressDao PressDAO */
00061       $presses = $pressDao->getPresses();
00062 
00063       // Check each press to see if user has access to it.
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       // Assign presses to template.
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 ?>

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