From b9db8e52ce3b38a77579a3ca3a1ccf6f2444e3d6 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Wed, 15 Aug 2007 17:25:33 +0000
Subject: [PATCH] Add DF Removal, sidebar links in Edit Request now submit the
 form, 403 Error page for RequestController

---
 application/controllers/RequestController.php | 48 ++++++++++++++-----
 application/views/request/edit_wrapper.xhtml  |  6 +--
 application/views/request/submit.xhtml        |  6 +--
 application/views/request/time_location.xhtml | 27 +++++++++++
 .../views/sidebars/requestProgress.xhtml      |  2 +-
 .../javascript/request/edit_wrapper.js        | 21 ++++++++
 6 files changed, 91 insertions(+), 19 deletions(-)

diff --git a/application/controllers/RequestController.php b/application/controllers/RequestController.php
index 61dbb069..254a881d 100755
--- a/application/controllers/RequestController.php
+++ b/application/controllers/RequestController.php
@@ -5,7 +5,7 @@ class RequestController extends Nmc_Controller_Action
 
     public function init()
     {
-        $this->_registerPlugin(new Nmc_Controller_Action_Plugin_Authorize());
+        $this->_registerPlugin(new Application_Controller_Action_Plugin_Authorize());
     }
 
     public function indexAction()
@@ -99,13 +99,18 @@ class RequestController extends Nmc_Controller_Action
 
     public function loadAction()
     {
-        $in = $this->_getAllParams();
-
-        $requestId = Zend_Filter_Int::filter($in[0]);
-        $request = Requests::getInstance()->findOne($requestId);
-        $course = $request->getCourseGeneration();
+        $in = $this->getRequest();
+        $requestId = $in->getParam(0);
 
-        $course = clone $course;
+        if ($requestId == 'saved') {
+            $course = Nmc_Registry_Session::getInstance()->savedCourse;
+            $request = Nmc_Registry_Session::getInstance()->savedRequest;
+        } else {
+            $requestId = Zend_Filter_Int::filter($requestId);
+            $request = Requests::getInstance()->findOne($requestId);
+            $course = $request->getCourseGeneration();
+            $course = clone $course;
+        }
 
         Nmc_Registry_Session::getInstance()->course = $course;
         Nmc_Registry_Session::getInstance()->request = $request;
@@ -189,7 +194,7 @@ class RequestController extends Nmc_Controller_Action
 
 
 
-        $submit = Zend_Filter_Alpha::filter($_POST['submit']);
+        $submit = Zend_Filter_Alpha::filter($_POST['submitType']);
 
         if(is_array($_POST['request'])) {
         foreach($_POST['request'] as $key => $val) {
@@ -207,7 +212,7 @@ class RequestController extends Nmc_Controller_Action
 
         unset($_POST['request']);
 
-        unset($_POST['submit']);
+        unset($_POST['submitType']);
         unset($_POST['p_subject']);
         unset($_POST['p_course_number']);
 
@@ -416,8 +421,8 @@ class RequestController extends Nmc_Controller_Action
 
         if($submit == 'Submit') {
             return $this->_submitRequestAction();
-        } else if ($submit == 'Save for Later Submission') {
-            // save for later
+        } else if ($submit == 'SaveforLaterSubmission') {
+            return $this->_saveUnfinishedRequest();
         } else if ($submit == 'CancelRequest') {
             return $this->_cancelRequest();
         }
@@ -452,7 +457,9 @@ class RequestController extends Nmc_Controller_Action
             $prevForm = $requestFormOrder[$currentForm];
         }
 
-        if($submit == 'Prev') {
+        if (in_array($submit, $requestFormOrder)) {
+            $targetForm = $submit;
+        } else if($submit == 'Prev') {
             $targetForm = $prevForm;
         } else {
             $targetForm = $nextForm;
@@ -690,6 +697,23 @@ class RequestController extends Nmc_Controller_Action
         $view->refresh = '/home';
         echo $view->render('unlModernWrapper.xhtml');
     }
+
+    protected function _saveUnfinishedRequest()
+    {
+        $user = Nmc_User::getInstance()->getUser();
+        $course = Nmc_Registry_Session::getInstance()->course;
+        $request = Nmc_Registry_Session::getInstance()->request;
+
+        Nmc_Registry_Session::getInstance()->savedCourse = $course;
+        Nmc_Registry_Session::getInstance()->savedRequest = $request;
+
+        Nmc_Registry_Session::getInstance()->erase('course');
+        Nmc_Registry_Session::getInstance()->erase('request');
+
+        $view = new Application_View();
+        $view->refresh = '/home';
+        echo $view->render('unlModernWrapper.xhtml');
+    }
 }
 
 ?>
diff --git a/application/views/request/edit_wrapper.xhtml b/application/views/request/edit_wrapper.xhtml
index 0653d31b..a15fedcd 100644
--- a/application/views/request/edit_wrapper.xhtml
+++ b/application/views/request/edit_wrapper.xhtml
@@ -1,5 +1,5 @@
-<form action="/Request/update" method="post" enctype="multipart/form-data">
+<form id="editRequestForm" action="/Request/update" method="post" enctype="multipart/form-data">
     <?php @include('' . $this->requestPage . '.xhtml'); ?>
-    <input id="prev_button" type="submit" name="submit" value="&lt; Prev" />
-    <input id="next_button" type="submit" name="submit" value="Next &gt;" />
+    <input id="prev_button" type="submit" name="submitType" value="&lt; Prev" />
+    <input id="next_button" type="submit" name="submitType" value="Next &gt;" />
 </form>
diff --git a/application/views/request/submit.xhtml b/application/views/request/submit.xhtml
index d09ae7ca..9d12e633 100644
--- a/application/views/request/submit.xhtml
+++ b/application/views/request/submit.xhtml
@@ -10,6 +10,6 @@
     to finish your request.
 </h2>
 
-<input id="submit_request" type="submit" name="submit" value="Submit" />
-<input id="save_request" type="submit" name="submit" value="Save for Later Submission" />
-<input id="cancel_request" type="submit" name="submit" value="Cancel Request" />
\ No newline at end of file
+<input id="submit_request" type="submit" name="submitType" value="Submit" />
+<input id="save_request" type="submit" name="submitType" value="Save for Later Submission" />
+<input id="cancel_request" type="submit" name="submitType" value="Cancel Request" />
\ No newline at end of file
diff --git a/application/views/request/time_location.xhtml b/application/views/request/time_location.xhtml
index 6a9f175d..8b6bfb6a 100644
--- a/application/views/request/time_location.xhtml
+++ b/application/views/request/time_location.xhtml
@@ -36,6 +36,33 @@
     </label>
 </fieldset>
 
+<h2>DF Removal</h2>
+<fieldset class="three_column">
+    <label>
+        No
+        <input type="radio"
+               class="radio"
+               name="dfRemoval"
+               value="no"
+               <?php if($this->course->dfRemoval == 'no') { ?>
+               checked="checked"
+               <?php } ?>
+               />
+    </label>
+
+    <label>
+        Yes
+        <input type="radio"
+               class="radio"
+               name="dfRemoval"
+               value="yes"
+               <?php if($this->course->dfRemoval == 'yes') { ?>
+               checked="checked"
+               <?php } ?>
+               />
+    </label>
+</fieldset>
+
 <h2>Delivery Method(s)</h2>
 <fieldset class="three_column">
     <label>
diff --git a/application/views/sidebars/requestProgress.xhtml b/application/views/sidebars/requestProgress.xhtml
index b8984d6c..7ff05398 100644
--- a/application/views/sidebars/requestProgress.xhtml
+++ b/application/views/sidebars/requestProgress.xhtml
@@ -9,7 +9,7 @@
     <div class="content">
         <ul>
             <li class="completed">
-                 <a href="/Request/courseID">Course ID</a>
+                 <a href="/Request/CourseID">Course ID</a>
             </li>
             <li>
                  <a href="/Request/CreditHours">Credit Hours</a>
diff --git a/document_root/javascript/request/edit_wrapper.js b/document_root/javascript/request/edit_wrapper.js
index 3de6c513..5f9eeb6b 100644
--- a/document_root/javascript/request/edit_wrapper.js
+++ b/document_root/javascript/request/edit_wrapper.js
@@ -12,6 +12,12 @@ function onEditWrapperLoad()
     for(var i = 0; i < removeButtons.length; i++) {
         removeButtons[i].onclick = handleRemoveRecord;
     }
+
+    var requestProgress = document.getElementById('requestProgress');
+    var requestProgressLinks = requestProgress.getElementsByTagName('a');
+    for (var i = 0; i < requestProgressLinks.length; i++) {
+        requestProgressLinks[i]. onclick = handleRequestProgressLinkClicked;
+    }
 }
 
 function handleAddRecord()
@@ -71,5 +77,20 @@ function handleRemoveRecord()
 
     currentTable.removeChild(currentTR);
 
+    return false;
+}
+
+function handleRequestProgressLinkClicked()
+{
+    var editRequestForm = document.getElementById('editRequestForm');
+    var submitType = document.createElement('input');
+    submitType.type = 'hidden';
+    submitType.name = 'submitType';
+    submitType.value = this.href.split('/').pop();
+    editRequestForm.appendChild(submitType);
+    editRequestForm.submit( );
+
+
+
     return false;
 }
-- 
GitLab