--- loncom/interface/lonnavmaps.pm 2004/09/21 19:28:34 1.267.2.7
+++ loncom/interface/lonnavmaps.pm 2004/07/21 20:19:01 1.269
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.267.2.7 2004/09/21 19:28:34 albertel Exp $
+# $Id: lonnavmaps.pm,v 1.269 2004/07/21 20:19:01 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -83,6 +83,43 @@ my %colormap =
# is not yet done and due in less then 24 hours
my $hurryUpColor = "#FF0000";
+sub launch_win {
+ my ($mode,$script)=@_;
+ my $result;
+ if ($script ne 'no') {
+ $result.='';
+ }
+ if ($mode eq 'link') {
+ $result.=''
+ .&mt("Launch Navmaps in seperate window")."";
+ }
+ return $result;
+}
+
+sub close {
+ if ($ENV{'environment.remotenavmap'} ne 'on') { return ''; }
+ return(<
+window.status='Accessing Nav Control';
+menu=window.open("/adm/rat/empty.html","loncapanav",
+ "height=600,width=400,scrollbars=1");
+window.status='Closing Nav Control';
+menu.close();
+window.status='Done.';
+
+ENDCLOSE
+}
+
+
sub handler {
my $r = shift;
real_handler($r);
@@ -111,6 +148,28 @@ sub real_handler {
&Apache::loncommon::no_cache($r);
$r->send_http_header;
+ if ($ENV{QUERY_STRING} eq 'collapseExternal') {
+ &Apache::lonnet::put('environment',{'remotenavmap' => 'off'});
+ &Apache::lonnet::appenv('environment.remotenavmap' => 'off');
+ $r->print(<<"ENDSUBM");
+
+
+
+
+
+
+ENDSUBM
+ return;
+ }
+ if ($ENV{QUERY_STRING} eq 'launchExternal') {
+ &Apache::lonnet::put('environment',{'remotenavmap' => 'on'});
+ &Apache::lonnet::appenv('environment.remotenavmap' => 'on');
+ }
+
# Create the nav map
my $navmap = Apache::lonnavmaps::navmap->new();
@@ -127,10 +186,23 @@ sub real_handler {
# ----------------------------------------------------- Force menu registration
my $addentries='';
+ my $more_unload;
+ if ($ENV{'environment.remotenavmap'} eq 'on') {
+ $r->print('');
+# FIXME need to be smarter to only catch window close events
+# $more_unload="collapse()"
+ }
if ($ENV{'form.register'}) {
- $addentries=' onLoad="'.&Apache::lonmenu::loadevents().
- '" onUnload="'.&Apache::lonmenu::unloadevents().'"';
- $r->print(&Apache::lonmenu::registerurl(1));
+ $addentries=' onLoad="'.&Apache::lonmenu::loadevents().
+ '" onUnload="'.&Apache::lonmenu::unloadevents().';'.
+ $more_unload.'"';
+ $r->print(&Apache::lonmenu::registerurl(1));
+ } else {
+ $addentries=' onUnload="'.$more_unload.'"';
}
# Header
@@ -173,6 +245,27 @@ sub real_handler {
}
}
+ if ($ENV{QUERY_STRING} eq 'launchExternal') {
+ $r->print('
+ ');
+ $r->print('
+ ');
+ }
+
+ if ($ENV{'environment.remotenavmap'} ne 'on') {
+ $r->print(&launch_win('link','yes'));
+ }
+ if ($ENV{'environment.remotenavmap'} eq 'on') {
+# $r->print("" .
+ $r->print("" .
+ &mt("Close external navmaps").
+ " ");
+ }
+
my $jumpToFirstHomework = 0;
# Check to see if the student is jumping to next open, do-able problem
if ($ENV{QUERY_STRING} eq 'jumpToFirstHomework') {
@@ -513,7 +606,7 @@ sub timeToHumanString {
}
# Not this year, so show the year
- my $timeStr = strftime("on %A, %b %e %Y at %I:%M %P", localtime($time));
+ my $timeStr = strftime("on %A, %b %e %G at %I:%M %P", localtime($time));
$timeStr =~ s/12:00 am/00:00/;
$timeStr =~ s/12:00 pm/noon/;
return $timeStr;
@@ -971,8 +1064,12 @@ sub render_resource {
$nonLinkedText .= ' (' . $resource->countParts() . ' parts)';
}
+ my $target;
+ if ($ENV{'environment.remotenavmap'} eq 'on') {
+ $target=' target="loncapaclient" ';
+ }
if (!$params->{'resource_nolink'} && !$resource->is_sequence() && !$resource->is_empty_sequence) {
- $result .= " $curMarkerBegin$title$partLabel$curMarkerEnd $nonLinkedText";
+ $result .= " $curMarkerBegin$title$partLabel$curMarkerEnd $nonLinkedText";
} else {
$result .= " $curMarkerBegin$title$partLabel$curMarkerEnd $nonLinkedText";
}
@@ -1260,7 +1357,7 @@ sub render {
# We only need to do this if we need to open the maps to show the
# current position. This will change the counter so we can't count
# for the jump marker with this loop.
- while ($here && ($curRes = $mapIterator->next()) && !$found) {
+ while (($curRes = $mapIterator->next()) && !$found) {
if (ref($curRes) && $curRes->symb() eq $here) {
my $mapStack = $mapIterator->getStack();
@@ -1373,7 +1470,7 @@ sub render {
}
# Check for any unread discussions in all resources.
- if (0 && !$args->{'resource_no_folder_link'}) {
+ if (!$args->{'resource_no_folder_link'}) {
my $totdisc = 0;
my $haveDisc = '';
my @allres=$navmap->retrieveResources();
@@ -1879,11 +1976,17 @@ sub generate_email_discuss_status {
foreach my $msgid (split(/\&/, $keys)) {
$msgid=&Apache::lonnet::unescape($msgid);
- if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) {
- my $plain=
- &Apache::lonnet::unescape(&Apache::lonnet::unescape($msgid));
- if ($plain=~/(Error|Feedback) \[([^\]]+)\]/) {
- my ($what,$url)=($1,$2);
+ my $plain=&Apache::lonnet::unescape(&Apache::lonnet::unescape($msgid));
+ if ($plain=~/(Error|Feedback) \[([^\]]+)\]/) {
+ my ($what,$url)=($1,$2);
+ my %status=
+ &Apache::lonnet::get('email_status',[$msgid]);
+ if ($status{$msgid}=~/^error\:/) {
+ $status{$msgid}='';
+ }
+
+ if (($status{$msgid} eq 'new') ||
+ (!$status{$msgid})) {
if ($what eq 'Error') {
$error{$url}.=','.$msgid;
} else {
@@ -1893,10 +1996,8 @@ sub generate_email_discuss_status {
}
}
- #url's of resources that have feedbacks
$self->{FEEDBACK} = \%feedback;
- #or errors
- $self->{ERROR_MSG} = \%error;
+ $self->{ERROR_MSG} = \%error; # what is this? JB
$self->{DISCUSSION_TIME} = \%discussiontime;
$self->{EMAIL_STATUS} = \%emailstatus;
$self->{LAST_READ} = \%lastreadtime;
@@ -3978,7 +4079,6 @@ sub getCompletionStatus {
# Left as separate if statements in case we ever do more with this
if ($status eq 'correct_by_student') {return $self->CORRECT;}
- if ($status eq 'correct_by_scantron') {return $self->CORRECT;}
if ($status eq 'correct_by_override') {return $self->CORRECT_BY_OVERRIDE; }
if ($status eq 'incorrect_attempted') {return $self->INCORRECT; }
if ($status eq 'incorrect_by_override') {return $self->INCORRECT_BY_OVERRIDE; }
@@ -4129,7 +4229,7 @@ sub status {
if ($dateStatus == PAST_DUE_ANSWER_LATER ||
$dateStatus == PAST_DUE_NO_ANSWER ) {
- return $suppressFeedback ? ANSWER_SUBMITTED : $dateStatus;
+ return $dateStatus;
}
if ($dateStatus == ANSWER_OPEN) {