From ce79709238272a82d048ae7e36540515e1a366cc Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Mon, 19 Nov 2007 16:41:18 +0000
Subject: [PATCH] Auto-update of grad tie-in course code.

---
 application/controllers/RequestController.php |  1 +
 application/views/request/course_id.xhtml     |  6 +-
 document_root/javascript/request/courseId.js  | 65 +++++++++++++++++++
 3 files changed, 69 insertions(+), 3 deletions(-)
 create mode 100644 document_root/javascript/request/courseId.js

diff --git a/application/controllers/RequestController.php b/application/controllers/RequestController.php
index 9562103e..93f9117f 100755
--- a/application/controllers/RequestController.php
+++ b/application/controllers/RequestController.php
@@ -612,6 +612,7 @@ class RequestController extends Nmc_Controller_Action
         $view->addCssFile('/ooss/request/course_id');
         $view->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
         $view->addJsFile('/javascript/mce.js');
+        $view->addJsFile('/javascript/request/courseId.js');
 
         $view->course = $course;
         $view->request = $request;
diff --git a/application/views/request/course_id.xhtml b/application/views/request/course_id.xhtml
index 89a06f00..5893b82a 100644
--- a/application/views/request/course_id.xhtml
+++ b/application/views/request/course_id.xhtml
@@ -1,15 +1,15 @@
 <fieldset class="three_column">
     <label>
         <h2>Subject</h2>
-        <input type="text" name="subject" value="<?php echo htmlspecialchars($this->course->subject); ?>" />
+        <input type="text" name="subject" id="subject" value="<?php echo htmlspecialchars($this->course->subject); ?>" />
     </label>
     <label>
         <h2>Course Number</h2>
-        <input type="text" name="courseNumber" value="<?php echo htmlspecialchars($this->course->courseNumber); ?>" />
+        <input type="text" name="courseNumber" id="courseNumber" value="<?php echo htmlspecialchars($this->course->courseNumber); ?>" />
     </label>
     <label>
         <h2>Alpha Suffix (opt.)</h2>
-        <input type="text" name="courseLetter" value="<?php echo htmlspecialchars($this->course->courseLetter); ?>" />
+        <input type="text" name="courseLetter" id="courseLetter" value="<?php echo htmlspecialchars($this->course->courseLetter); ?>" />
     </label>
 </fieldset>
 <fieldset class="one_column">
diff --git a/document_root/javascript/request/courseId.js b/document_root/javascript/request/courseId.js
new file mode 100644
index 00000000..c0439dbc
--- /dev/null
+++ b/document_root/javascript/request/courseId.js
@@ -0,0 +1,65 @@
+addLoadEvent(onCourseIdLoad);
+
+function onCourseIdLoad()
+{
+    var subjectNode = document.getElementById('subject');
+    subjectNode.previousValue = subjectNode.value;
+    subjectNode.onchange = handleChangeSubject;
+    document.getElementById('courseNumber').onchange = handleChangeCourseNumber;
+    document.getElementById('courseLetter').onchange = handleChangeCourseLetter;
+}
+
+
+
+function handleChangeSubject()
+{
+    var previousSubject = this.previousValue;
+    var currentSubject = this.value;
+
+    this.previousValue = currentSubject;
+
+    var gradTieInRows = getElementsByClass('grad_tie_in_row');
+    var noChange = false;
+    for (var i = 0; i != gradTieInRows.length; i++) {
+        var gradTieInRow = gradTieInRows[i];
+        var gradNode = gradTieInRows[i].childNodes[3].childNodes[1];
+
+        if (gradNode.value == currentSubject) {
+            noChange = true;
+        }
+    }
+
+    if (noChange) {
+        return;
+    }
+
+    for (var i = 0; i != gradTieInRows.length; i++) {
+        var gradNode = gradTieInRows[i].childNodes[1].childNodes[1];
+
+        if (gradNode.value == previousSubject) {
+            gradNode.value = currentSubject;
+        }
+    }
+
+}
+
+function handleChangeCourseNumber()
+{
+    var gradNumber = 800 + (this.value % 100);
+    var gradTieInRows = getElementsByClass('grad_tie_in_row');
+    for (var i = 0; i != gradTieInRows.length; i++) {
+
+        gradTieInRows[i].childNodes[3].childNodes[1].value = gradNumber;
+    }
+}
+
+
+function handleChangeCourseLetter()
+{
+    var gradLetter = this.value;
+    var gradTieInRows = getElementsByClass('grad_tie_in_row');
+    for (var i = 0; i != gradTieInRows.length; i++) {
+
+        gradTieInRows[i].childNodes[5].childNodes[1].value = gradLetter;
+    }
+}
\ No newline at end of file
-- 
GitLab