From b36c5497405fb152260d8cc06abc503ab83ff174 Mon Sep 17 00:00:00 2001 From: Tim Steiner <tsteiner2@unl.edu> Date: Tue, 1 Jul 2008 20:58:31 +0000 Subject: [PATCH] Request viewing now has previous and next links (again) --- .../courses/controllers/ViewController.php | 21 +++++++++++++++++++ .../courses/views/scripts/view/index.phtml | 4 ++-- .../requests/controllers/IndexController.php | 18 ++++++++++++++++ .../requests/controllers/ViewController.php | 10 +++++++++ .../requests/views/scripts/index/index.phtml | 7 ++----- 5 files changed, 53 insertions(+), 7 deletions(-) diff --git a/application/modules/courses/controllers/ViewController.php b/application/modules/courses/controllers/ViewController.php index 94995d41..6a466e9b 100644 --- a/application/modules/courses/controllers/ViewController.php +++ b/application/modules/courses/controllers/ViewController.php @@ -5,6 +5,7 @@ class Courses_ViewController extends App_Controller_Action public function indexAction() { $requestId = $this->getRequest()->getParam('id'); + $roleId = $this->getRequest()->getParam('role'); if ($requestId == 'session') { $session = new Zend_Session_Namespace('Edit Request'); $request = $session->request; @@ -26,6 +27,24 @@ class Courses_ViewController extends App_Controller_Action } $initialRequest = false; $preview = false; + + // if we can know our role, we can create next and prev links. + if ($roleId) { + $list = $this->getRequest()->getParam('list'); + $myRequestSession = new Zend_Session_Namespace('My Requests'); + $requestOrder = $myRequestSession->requestOrder[$roleId][$list]; + $listPosition = array_search($request->getId(), $requestOrder); + if ($listPosition == 0) { + $prevRequestId = $requestOrder[count($requestOrder) - 1]; + } else { + $prevRequestId = $requestOrder[$listPosition - 1]; + } + if ($listPosition == count($requestOrder) - 1) { + $nextRequestId = $requestOrder[0]; + } else { + $nextRequestId = $requestOrder[$listPosition + 1]; + } + } } $comments = Requests_CommentsModel::findByRequest($request); @@ -40,6 +59,8 @@ class Courses_ViewController extends App_Controller_Action $this->view->preview = $preview; $this->view->terms = $this->_getFutureTerms(); $this->view->isRequestValid = $course->isValid() && $request->isValid(); + $this->view->prevRequestId = $prevRequestId; + $this->view->nextRequestId = $nextRequestId; $session = new Zend_Session_Namespace(__CLASS__); if ($session->tabName) { diff --git a/application/modules/courses/views/scripts/view/index.phtml b/application/modules/courses/views/scripts/view/index.phtml index 9df090ad..a7028077 100644 --- a/application/modules/courses/views/scripts/view/index.phtml +++ b/application/modules/courses/views/scripts/view/index.phtml @@ -283,10 +283,10 @@ </div> </div> <?php if ($this->prevRequestId > 0) { ?> - <a id="prevRequestLink" href="/Request/View/<?php echo $this->prevRequestId; ?>"><--Prev</a> + <a id="prevRequestLink" href="<?php echo $this->url(array('id' => $this->prevRequestId)); ?>"><--Prev</a> <?php } ?> <?php if ($this->nextRequestId > 0) { ?> - <a id="nextRequestLink" href="/Request/View/<?php echo $this->nextRequestId; ?>">Next--></a> + <a id="nextRequestLink" href="<?php echo $this->url(array('id' => $this->nextRequestId)); ?>">Next--></a> <?php } ?> <?php } ?> diff --git a/application/modules/requests/controllers/IndexController.php b/application/modules/requests/controllers/IndexController.php index 1cbb3cfd..07319c6d 100644 --- a/application/modules/requests/controllers/IndexController.php +++ b/application/modules/requests/controllers/IndexController.php @@ -178,6 +178,24 @@ class Requests_IndexController extends App_Controller_Action $this->view->roles = $roleData; $this->view->user = $user; $this->view->userRequests = $userRequestsData; + + // save the order of requests to the session so we can have next/previous links on other pages. + $session = new Zend_Session_Namespace('My Requests'); + $session->requestOrder = array(); + foreach ($roleData as $role) { + $roleId = $role['role']->getId(); + $session->requestOrder[$roleId] = array(); + $session->requestOrder[$roleId]['normal']; + foreach ($role['requests'] as $request) { + $requestId = $request['request']->getId(); + $session->requestOrder[$roleId]['normal'][] = $requestId; + } + $session->requestOrder[$roleId]['watching']; + foreach ($role['watchingRequests'] as $request) { + $requestId = $request['request']->getId(); + $session->requestOrder[$roleId]['watching'][] = $requestId; + } + } } public function decidePostAction() diff --git a/application/modules/requests/controllers/ViewController.php b/application/modules/requests/controllers/ViewController.php index 07eb114f..44f83a71 100644 --- a/application/modules/requests/controllers/ViewController.php +++ b/application/modules/requests/controllers/ViewController.php @@ -6,10 +6,20 @@ class Requests_ViewController extends App_Controller_Action public function indexAction() { $id = $this->getRequest()->getParam('id'); + $roleId = $this->getRequest()->getParam('role'); + $list = $this->getRequest()->getParam('list'); + $request = Requests_RequestModel::find($id); $module = $request->getModule(); $redirectUrl = Zend_Controller_Action::getFrontController()->getBaseUrl() . '/' . $module . '/view/index/id/' . $id; + if ($roleId) { + $redirectUrl .= '/role/' . $roleId; + } + if ($list) { + $redirectUrl .= '/list/' . $list; + } + $this->getResponse()->setRedirect($redirectUrl); } diff --git a/application/modules/requests/views/scripts/index/index.phtml b/application/modules/requests/views/scripts/index/index.phtml index 74d89467..904e5094 100644 --- a/application/modules/requests/views/scripts/index/index.phtml +++ b/application/modules/requests/views/scripts/index/index.phtml @@ -321,7 +321,7 @@ foreach($this->roles as $roleData) { */ ?> <a class="requestLink<?php echo $linkClass; ?>" - href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>"> + href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>/role/<?php echo $role->getId(); ?>/list/normal"> View </a> <?php if ($request->isEditable()) { ?> @@ -399,10 +399,7 @@ foreach($this->roles as $roleData) { ?> </td> <td> - <a href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>">View</a> - <!-- / - <a href="<?php echo $this->baseUrl(); ?>/requests/edit/load/id/<?php echo $request->getId(); ?>">Edit</a> - --> + <a href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>/role/<?php echo $role->getId(); ?>/list/watching">View</a> </td> <td> <?php -- GitLab