--- loncom/interface/lonnavmaps.pm 2002/09/30 16:45:01 1.56
+++ loncom/interface/lonnavmaps.pm 2002/10/03 19:40:33 1.63
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.56 2002/09/30 16:45:01 bowersj2 Exp $
+# $Id: lonnavmaps.pm,v 1.63 2002/10/03 19:40:33 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -124,32 +124,32 @@ sub parmval {
my $courselevelm=$usercourseprefix.'.'.$mapparm;
# ---------------------------------------------------------- first, check user
- if ($uname) {
- if ($useropt{$courselevelr}) { return $useropt{$courselevelr}; }
- if ($useropt{$courselevelm}) { return $useropt{$courselevelm}; }
- if ($useropt{$courselevel}) { return $useropt{$courselevel}; }
+ if (defined($uname)) {
+ if (defined($useropt{$courselevelr})) { return $useropt{$courselevelr}; }
+ if (defined($useropt{$courselevelm})) { return $useropt{$courselevelm}; }
+ if (defined($useropt{$courselevel})) { return $useropt{$courselevel}; }
}
# ------------------------------------------------------- second, check course
- if ($csec) {
- if ($courseopt{$seclevelr}) { return $courseopt{$seclevelr}; }
- if ($courseopt{$seclevelm}) { return $courseopt{$seclevelm}; }
- if ($courseopt{$seclevel}) { return $courseopt{$seclevel}; }
+ if (defined($csec)) {
+ if (defined($courseopt{$seclevelr})) { return $courseopt{$seclevelr}; }
+ if (defined($courseopt{$seclevelm})) { return $courseopt{$seclevelm}; }
+ if (defined($courseopt{$seclevel})) { return $courseopt{$seclevel}; }
}
- if ($courseopt{$courselevelr}) { return $courseopt{$courselevelr}; }
- if ($courseopt{$courselevelm}) { return $courseopt{$courselevelm}; }
- if ($courseopt{$courselevel}) { return $courseopt{$courselevel}; }
+ if (defined($courseopt{$courselevelr})) { return $courseopt{$courselevelr}; }
+ if (defined($courseopt{$courselevelm})) { return $courseopt{$courselevelm}; }
+ if (defined($courseopt{$courselevel})) { return $courseopt{$courselevel}; }
# ----------------------------------------------------- third, check map parms
my $thisparm=$parmhash{$symbparm};
- if ($thisparm) { return $thisparm; }
+ if (defined($thisparm)) { return $thisparm; }
# ----------------------------------------------------- fourth , check default
my $default=&Apache::lonnet::metadata($fn,$rwhat.'.default');
- if ($default) { return $default}
+ if (defined($default)) { return $default}
# --------------------------------------------------- fifth , cascade up parts
@@ -159,10 +159,10 @@ sub parmval {
my ($part,$id)=split(/\_/,$space);
if ($id) {
my $partgeneral=&parmval($part.".$qualifier",$symb);
- if ($partgeneral) { return $partgeneral; }
+ if (defined($partgeneral)) { return $partgeneral; }
} else {
my $resourcegeneral=&parmval("0.$qualifier",$symb);
- if ($resourcegeneral) { return $resourcegeneral; }
+ if (defined($resourcegeneral)) { return $resourcegeneral; }
}
}
return '';
@@ -848,16 +848,37 @@ sub new_handle {
# Defines a status->color mapping, null string means don't color
my %colormap =
( $res->NETWORK_FAILURE => '',
- $res->CORRECT => '#BBFFBB',
+ $res->CORRECT => '',
$res->EXCUSED => '#BBBBFF',
- $res->PAST_DUE_ANSWER_LATER => '#FFAA00',
- $res->PAST_DUE_NO_ANSWER => '#FFAA00',
- $res->ANSWER_OPEN => '#FF00AA',
+ $res->PAST_DUE_ANSWER_LATER => '',
+ $res->PAST_DUE_NO_ANSWER => '',
+ $res->ANSWER_OPEN => '#CCFFCC',
$res->OPEN_LATER => '',
- $res->TRIES_LEFT => '#FFFF00',
- $res->INCORRECT => '#FFAA00',
- $res->OPEN => '#FFFF88',
+ $res->TRIES_LEFT => '',
+ $res->INCORRECT => '',
+ $res->OPEN => '',
$res->NOTHING_SET => '' );
+ # And a special case in the nav map; what to do when the assignment
+ # is not yet done and due in less then 24 hours
+ my $hurryUpColor = "#FFCCCC";
+
+ my %statusIconMap =
+ ( $res->NETWORK_FAILURE => '',
+ $res->NOTHING_SET => '',
+ $res->CORRECT => 'navmap.correct.gif',
+ $res->EXCUSED => 'navmap.correct.gif',
+ $res->PAST_DUE_NO_ANSWER => 'navmap.wrong.gif',
+ $res->PAST_DUE_ANSWER_LATER => 'navmap.wrong.gif',
+ $res->ANSWER_OPEN => 'navmap.wrong.gif',
+ $res->OPEN_LATER => '',
+ $res->TRIES_LEFT => 'navmap.open.gif',
+ $res->INCORRECT => 'navmap.wrong.gif',
+ $res->OPEN => 'navmap.open.gif' );
+
+ my %condenseStatuses =
+ ( $res->NETWORK_FAILURE => 1,
+ $res->NOTHING_SET => 1,
+ $res->CORRECT => 1 );
my %filterHash;
# Figure out what we're not displaying
@@ -867,17 +888,27 @@ sub new_handle {
}
}
+ my $currenturl = $ENV{'form.postdata'};
+ $currenturl=~s/^http\:\/\///;
+ $currenturl=~s/^[^\/]+//;
+ my $queryAdd = "postdata=" . &Apache::lonnet::escape($currenturl);
+
+ $r->print("$currenturl
");
+
+
# Begin the HTML table
- # two columns: the title/icon on the left, the info on the right
+ # four cols: resource + indent, chat+feedback, icon, text string
$r->print('
\n"); # print indentation - for (my $i = 0; $i < $indentLevel; $i++) { + for (my $i = 0; $i < $indentLevel - $deltalevel; $i++) { $r->print($indentString); } - $r->print(" ${newBranchText}${linkopen}${linkclose}\n"); + $r->print(" ${newBranchText}${linkopen}$icon${linkclose}\n"); - if ($curRes->is_problem() && $part != "0") { $partLabel = " (Part $part)"; } + if ($curRes->is_problem() && $part != "0" && !$condensed) { + $partLabel = " (Part $part)"; + $title = ""; + } + + $r->print(" $title$partLabel | "); + + my $discussionHTML = ""; my $feedbackHTML = ""; + + # SECOND ROW: Is there text or feedback? + if ($curRes->hasDiscussion()) { + $discussionHTML = $linkopen . + '' . + $linkclose; + } + + if ($curRes->getFeedback()) { + my $feedback = $curRes->getFeedback(); + foreach (split(/\,/, $feedback)) { + if ($_) { + $feedbackHTML .= ' ' + . ''; + } + } + } + + $r->print("$discussionHTML$feedbackHTML | "); + + # Is this the first displayed part of a multi-part problem + # that has not been condensed, so we should suppress these two + # columns? + my $firstDisplayed = !$condensed && $multipart && $part eq "0"; + + # THIRD ROW: Problem status icon + if ($curRes->is_problem() && + !$firstDisplayed) { + my $icon = $statusIconMap{$curRes->status($part)}; + if ($icon) { + $r->print("$linkopen$linkclose | \n"); + } else { + $r->print("\n"); + } + } else { # not problem, no icon + $r->print(" | \n"); + } - $r->print(" $title$partLabel". - " | \n"); + # FOURTH ROW: Text description + $r->print(" | \n"); - if ($curRes->kind() eq "res" and - $curRes->is_problem() ) { + if ($curRes->kind() eq "res" && + $curRes->is_problem() && + !$firstDisplayed) { $r->print (getDescription($curRes, $part)); } + + $r->print(" |