Skip to content

Commit aa623d5

Browse files
committed
Customization: Banner9 Course Details
- a few more adjustments based on user feedback - sections now can be opened and closed (when shown on the Course Catalog page) - dotted lines between items in the first section
1 parent d9d6190 commit aa623d5

3 files changed

Lines changed: 48 additions & 15 deletions

File tree

JavaSource/org/unitime/timetable/gwt/client/offerings/CourseCatalogPage.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020
package org.unitime.timetable.gwt.client.offerings;
2121

22+
import org.unitime.timetable.gwt.client.ToolBox;
2223
import org.unitime.timetable.gwt.client.page.UniTimeNotifications;
2324
import org.unitime.timetable.gwt.client.widgets.LoadingWidget;
2425
import org.unitime.timetable.gwt.command.client.GwtRpcRequest;
@@ -28,6 +29,8 @@
2829
import org.unitime.timetable.gwt.resources.GwtMessages;
2930

3031
import com.google.gwt.core.client.GWT;
32+
import com.google.gwt.dom.client.Element;
33+
import com.google.gwt.dom.client.NodeList;
3134
import com.google.gwt.user.client.Window;
3235
import com.google.gwt.user.client.rpc.AsyncCallback;
3336
import com.google.gwt.user.client.ui.HTML;
@@ -47,6 +50,10 @@ public CourseCatalogPage() {
4750
public void onSuccess(CatalogResponse response) {
4851
LoadingWidget.getInstance().hide();
4952
setHTML(response.getContent());
53+
NodeList<Element> scripts = getElement().getElementsByTagName("script");
54+
if (scripts != null)
55+
for (int i = 0; i < scripts.getLength(); i++)
56+
ToolBox.eval(scripts.getItem(i).getInnerHTML());
5057
}
5158

5259
@Override

JavaSource/org/unitime/timetable/onlinesectioning/custom/purdue/course-details.ftl

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,12 @@
2323
</#if>
2424
<div class='table'>
2525
<span class='row'><span class='key'>Short Title:</span><span class='value'><@longitem base.courseDetail.shortTitle/></span></span>
26+
<#if base.courseDetail.college??>
2627
<span class='row'><span class='key'>College:</span><span class='value'><@longitem (base.courseDetail.collegeDescription + ' (' + base.courseDetail.college + ')')/></span></span>
28+
</#if>
29+
<#if base.courseDetail.department??>
2730
<span class='row'><span class='key'>Department:</span><span class='value'><@longitem (base.courseDetail.departmentDescription + ' (' + base.courseDetail.department + ')')/></span></span>
31+
</#if>
2832
<#if base.courseDetail.creditCeuHoursMaximum??>
2933
<span class='row'><span class='key'>Credit Hours:</span><span class='value'><@longitem (base.courseDetail.creditCeuHoursMinimum + ' ' + base.courseDetail.creditCeuHoursConnector?lower_case + ' ' + base.courseDetail.creditCeuHoursMaximum)/></span></span>
3034
<#elseif base.courseDetail.creditCeuHoursMinimum??>
@@ -57,8 +61,8 @@
5761
</div>
5862

5963
<#if descriptors.learningObjectives?? && descriptors.learningObjectives.objectives??>
60-
<div class='section'>Learning Objectives</div>
61-
<div class='text'>${descriptors.learningObjectives.objectives}</div>
64+
<@header 'Learning Objectives' 'LearnObj'/>
65+
<div class='text' id='LearnObj'>${descriptors.learningObjectives.objectives}</div>
6266
</#if>
6367

6468
<#if restrictions?? &&
@@ -67,9 +71,9 @@
6771
|| restrictions.levelRegistrationRestriction?? || restrictions.degreeRegistrationRestriction??
6872
|| restrictions.cohortRegistrationRestriction?? || restrictions.campusRegistrationRestriction??
6973
)>
70-
<div class='section'>Restrictions</div>
74+
<@header 'Restrictions' 'Restrictions'/>
7175
<#assign hasRestriction = false>
72-
<span class='restrictions'>
76+
<span class='restrictions' id='Restrictions'>
7377
<#if restrictions.levelRegistrationRestriction?? && (restrictions.levelRegistrationRestriction.levels?filter(x -> x.level??)?size > 0)>
7478
<@rsection 'Levels' restrictions.levelRegistrationRestriction 'level'/>
7579
<#assign hasRestriction = true>
@@ -117,8 +121,8 @@
117121

118122
</#if>
119123
<#if prerequisites?? && prerequisites.courseCorequisite?? && prerequisites.courseCorequisite.corequisites?? && (prerequisites.courseCorequisite.corequisites?filter(x -> x.courseSubject??)?size > 0) >
120-
<div class='section'>Corequisites</div>
121-
<table class='corequisites'>
124+
<@header 'Corequisites' 'Corequisites'/>
125+
<table class='corequisites' id='Corequisites'>
122126
<tr class='header'><th>Subject</th><th>Course</th></tr>
123127
<#list prerequisites.courseCorequisite.corequisites?filter(x -> x.courseSubject??) as line>
124128
<tr><td>${line.courseSubject!'-'}</td>
@@ -130,8 +134,8 @@
130134

131135

132136
<#if prerequisites?? && prerequisites.coursePrerequisite?? && prerequisites.coursePrerequisite.prerequisites?? && prerequisites.coursePrerequisite.prerequisites.basic??>
133-
<div class='section'>Prerequisites</div>
134-
<table class='prerequisites'>
137+
<@header 'Prerequisites' 'Prerequisites'/>
138+
<table class='prerequisites' id='Prerequisites'>
135139
<tr class='header'><th>And/Or</th><th></th><th>Subject</th><th>Course</th><th>Level</th><th>Grade</th><th>Concurrent</th><th></th></tr>
136140
<#list prerequisites.coursePrerequisite.prerequisites.basic?filter(r -> r.lineOrderSequence??)?sort_by("lineOrderSequence") as line>
137141
<tr><td><#if line.logicalOperator??>${line.logicalOperator?capitalize}</#if></td>
@@ -148,14 +152,14 @@
148152
prerequisites.coursePrerequisite.checkMethodDetails.checkMethod?? && prerequisites.coursePrerequisite.checkMethodDetails.checkMethod != 'basic'>
149153
<#assign prereqs = lookup.getPrereqsFromCatalog()/>
150154
<#if (prereqs?? && prereqs?length > 0) >
151-
<div class='section'>Prerequisites</div>
152-
<div class='catalog-section'>${prereqs}</div>
155+
<@header 'PlocalStoragetes' 'Prerequisites'/>
156+
<div class='catalog-section' id='Prerequisites'>${prereqs}</div>
153157
</#if>
154158
</#if>
155159

156160
<#if restrictions?? && restrictions.mutualCourseExclusion?? && restrictions.mutualCourseExclusion.courseExclusions?? && (restrictions.mutualCourseExclusion.courseExclusions?size>1) >
157-
<div class='section'>Mutual Exclusions</div>
158-
<table class='mutual-exclusions'>
161+
<@header 'Mutual Exclusions' 'Exclusions'/>
162+
<table class='mutual-exclusions' id='Exclusions'>
159163
<tr class='header'><th>Subject</th><th>Course</th><th>Level</th><th>Min Grade</th></tr>
160164
<#list restrictions.mutualCourseExclusion.courseExclusions?filter(x -> x.subject??) as line>
161165
<tr><td>${line.subject}</td>
@@ -168,8 +172,8 @@
168172
</#if>
169173

170174
<#if descriptors?? && descriptors.courseText??>
171-
<div class='section'>Course Configurations</div>
172-
<table class='configurations'>
175+
<@header 'Course Configurations' 'Configurations'/>
176+
<table class='configurations' id='Configurations'>
173177
<#list descriptors.courseText.textLines?sort_by("sequenceNumber") as line><#list line.text?split('|') as x>
174178
<#if x?index = 0><tr class='configuration'><th colspan='3'>Configuration ${line.sequenceNumber}: ${x} Credits</td></tr>
175179
<tr class='header'><th>Schedule Type</th><th>Weekly Contact Hours</th><th>Instructional Credit Distribution</th></tr>
@@ -214,3 +218,18 @@
214218
<#list base.levelDetail.levels as level><#if level.level = ref>${level.levelDescription}<#return/></#if></#list>
215219
</#if>${ref}
216220
</#macro>
221+
<#macro header name id>
222+
<div class='section'>
223+
<img alt='Open ${name?xhtml}' src='images/expand_node_btn.gif' onClick="document.getElementById('${id}').style.display='block';this.style.display='none';document.getElementById('${id}-close').style.display='inline-block';localStorage.setItem('UniTime:CourseCatalog${id}', '1');" id='${id}-open' style='display:none;'/>
224+
<img alt='Close ${name?xhtml}' src='images/collapse_node_btn.gif' onClick="document.getElementById('${id}').style.display='none';this.style.display='none';document.getElementById('${id}-open').style.display='inline-block';localStorage.setItem('UniTime:CourseCatalog${id}', '0');" id='${id}-close' style='display:none;'/>
225+
${name}</div>
226+
<script>
227+
if ('0' == localStorage.getItem('UniTime:CourseCatalog${id}')) {
228+
$doc.getElementById('${id}').style.display='none';
229+
$doc.getElementById('${id}-open').style.display='inline-block';
230+
$doc.getElementById('${id}-close').style.display='none';
231+
} else {
232+
$doc.getElementById('${id}-close').style.display='inline-block';
233+
}
234+
</script>
235+
</#macro>

WebContent/styles/unitime.css

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8329,7 +8329,9 @@ unitime-RoomSharingWidget .legend .blank {
83298329
font-size: large;
83308330
font-weight: bold;
83318331
color: black;
8332-
text-align: left;
8332+
text-align: left;
8333+
display: inline-block;
8334+
width: 100%;
83338335
}
83348336

83358337
.unitime-CourseCatalogDetails .text {
@@ -8346,6 +8348,7 @@ unitime-RoomSharingWidget .legend .blank {
83468348
.unitime-CourseCatalogDetails .row {
83478349
display: table-row;
83488350
}
8351+
83498352
.unitime-CourseCatalogDetails .row:hover {
83508353
background-color: #DDD;
83518354
cursor: default;
@@ -8362,6 +8365,10 @@ unitime-RoomSharingWidget .legend .blank {
83628365
white-space: normal;
83638366
}
83648367

8368+
.unitime-CourseCatalogDetails .row:not(:last-child) .value {
8369+
border-bottom: 1px dotted #9CB0CE;
8370+
}
8371+
83658372
.unitime-CourseCatalogDetails .item {
83668373
display: inline-block;
83678374
width: 33%;

0 commit comments

Comments
 (0)