diff --git a/application/controllers/HomeController.php b/application/controllers/HomeController.php index 0a9a481c7474fe7d05af729c79393bf4bbfc40f7..4c7a7a25558f72f8dc8b17da55048bed264569ec 100644 --- a/application/controllers/HomeController.php +++ b/application/controllers/HomeController.php @@ -15,6 +15,12 @@ class HomeController extends Nmc_Controller_Action /************/ + $sortBy = Nmc_Registry_Session::getInstance('home')->sortBy; + if (!is_array($sortBy)) { + $sortBy = array('subject', 'courseNumber', 'courseLetter', 'college', 'type'); + Nmc_Registry_Session::getInstance('home')->sortBy = $sortBy; + } + $roles = ApprovalBodyRoles::getInstance()->fetchRolesForUser($user); $rolesData = array(); @@ -24,6 +30,8 @@ class HomeController extends Nmc_Controller_Action $roleRequests['subject'] = array(); $roleRequests['courseNumber'] = array(); $roleRequests['courseLetter'] = array(); + $roleRequests['college'] = array(); + $roleRequests['type'] = array(); $roleRequests['counter'] = array(); $roleRequests['request'] = array(); @@ -39,21 +47,28 @@ class HomeController extends Nmc_Controller_Action $roleRequests['subject'][] = $originalCourse->subject; $roleRequests['courseNumber'][] = $originalCourse->courseNumber; $roleRequests['courseLetter'][] = $originalCourse->courseLetter; + $roleRequests['college'][] = $originalCourse->getHomeCollege()->name; + $roleRequests['type'][] = $request->type->name; $roleRequests['counter'][] = $i++; $roleRequests['request'][] = $request; } - array_multisort($roleRequests['subject'], - $roleRequests['courseNumber'], - $roleRequests['courseLetter'], - $roleRequests['counter'], - $roleRequests['request']); + $sortParams = array(); + foreach ($sortBy as $sortKey) { + $sortParams[] =& $roleRequests[$sortKey]; + } + $sortParams[] =& $roleRequests['counter']; + $sortParams[] =& $roleRequests['request']; + call_user_func_array('array_multisort', $sortParams); + $watchingRequests = array(); $watchingRequests['subject'] = array(); $watchingRequests['courseNumber'] = array(); $watchingRequests['courseLetter'] = array(); + $watchingRequests['college'] = array(); + $watchingRequests['type'] = array(); $watchingRequests['counter'] = array(); $watchingRequests['request'] = array(); @@ -70,15 +85,21 @@ class HomeController extends Nmc_Controller_Action $watchingRequests['subject'][] = $originalCourse->subject; $watchingRequests['courseNumber'][] = $originalCourse->courseNumber; $watchingRequests['courseLetter'][] = $originalCourse->courseLetter; + $watchingRequests['college'][] = $originalCourse->getHomeCollege()->name; + $watchingRequests['type'][] = $request->type->name; $watchingRequests['counter'][] = $i++; $watchingRequests['request'][] = $request; } - array_multisort($watchingRequests['subject'], - $watchingRequests['courseNumber'], - $watchingRequests['courseLetter'], - $watchingRequests['counter'], - $watchingRequests['request']); + $sortParams = array(); + foreach ($sortBy as $sortKey) { + $sortParams[] =& $watchingRequests[$sortKey]; + } + $sortParams[] =& $watchingRequests['counter']; + $sortParams[] =& $watchingRequests['request']; + call_user_func_array('array_multisort', $sortParams); + + $roleData = array(); $roleData['role'] = $role; @@ -103,6 +124,8 @@ class HomeController extends Nmc_Controller_Action $myRequests['subject'] = array(); $myRequests['courseNumber'] = array(); $myRequests['courseLetter'] = array(); + $myRequests['college'] = array(); + $myRequests['type'] = array(); $myRequests['counter'] = array(); $myRequests['request'] = array(); $i = 0; @@ -117,16 +140,21 @@ class HomeController extends Nmc_Controller_Action $myRequests['subject'][] = $originalCourse->subject; $myRequests['courseNumber'][] = $originalCourse->courseNumber; $myRequests['courseLetter'][] = $originalCourse->courseLetter; + $myRequests['college'][] = $originalCourse->getHomeCollege()->name; + $myRequests['type'][] = $request->type->name; $myRequests['counter'][] = $i++; $myRequests['request'][] = $request; } - array_multisort($myRequests['subject'], - $myRequests['courseNumber'], - $myRequests['courseLetter'], - $myRequests['counter'], - $myRequests['request']); + $sortParams = array(); + foreach ($sortBy as $sortKey) { + $sortParams[] =& $myRequests[$sortKey]; + } + $sortParams[] =& $myRequests['counter']; + $sortParams[] =& $myRequests['request']; + call_user_func_array('array_multisort', $sortParams); + /*************/ @@ -182,4 +210,34 @@ class HomeController extends Nmc_Controller_Action $out->setBody($view->render('unlModernWrapper.xhtml')); } + public function sortByAction() + { + $in = $this->getRequest(); + + $newSortBy = $in->getParam(0); + $newSortBy = strtolower($newSortBy); + $validSortBy = array('course', 'college', 'type'); + if (in_array($newSortBy, $validSortBy)) { + $sortBy = Nmc_Registry_Session::getInstance('home')->sortBy; + if ($newSortBy == 'course') { + array_unshift($sortBy, 'courseLetter'); + array_unshift($sortBy, 'courseNumber'); + array_unshift($sortBy, 'subject'); + } else if ($newSortBy == 'college') { + array_unshift($sortBy, 'college'); + } else if ($newSortBy == 'type') { + array_unshift($sortBy, 'type'); + } + $sortBy = array_unique($sortBy); + Nmc_Registry_Session::getInstance('home')->sortBy = $sortBy; + } + + + $out = $this->getResponse(); + + $view = new Application_View(); + $view->location = '/Home'; + $out->setBody($view->render('unlModernWrapper.xhtml')); + } + } \ No newline at end of file diff --git a/application/views/home.xhtml b/application/views/home.xhtml index d806f02f39c70cb1550cf78dc9c457a0c845e49f..cd85b13e21f014b846e90be3aa6db757c2625dac 100755 --- a/application/views/home.xhtml +++ b/application/views/home.xhtml @@ -85,9 +85,9 @@ <table class="course_list"> <tr> <!-- th id="check"> </th --> - <th id="course">Course</th> - <th id="college">College</th> - <th id="type">Type</th> + <th id="course"><a href="/Home/SortBy/Course">Course</a></th> + <th id="college"><a href="/Home/SortBy/College">College</a></th> + <th id="type"><a href="/Home/SortBy/Type">Type</a></th> <th id="approval_body">Approval Body</th> <th id="status">Status</th> <th id="view_edit">View/Edit</th> @@ -163,9 +163,9 @@ <table class="course_list"> <tr> <!-- th id="check"> </th --> - <th id="course">Course</th> - <th id="college">College</th> - <th id="type">Type</th> + <th id="course"><a href="/Home/SortBy/Course">Course</a></th> + <th id="college"><a href="/Home/SortBy/College">College</a></th> + <th id="type"><a href="/Home/SortBy/Type">Type</a></th> <th id="pending_action">Pending Action</th> <th id="status">Status</th> <th id="view_edit">View/Edit</th>