version 1.339, 2005/09/23 22:18:26
|
version 1.348, 2005/11/16 21:09:33
|
Line 171 sub real_handler {
|
Line 171 sub real_handler {
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
} |
} |
&Apache::loncommon::no_cache($r); |
&Apache::loncommon::no_cache($r); |
$r->send_http_header; |
|
|
|
my %toplinkitems=(); |
my %toplinkitems=(); |
&add_linkitem(\%toplinkitems,'blank','',"Select Action"); |
&add_linkitem(\%toplinkitems,'blank','',"Select Action"); |
Line 194 MENU
|
Line 193 MENU
|
$navstatus |
$navstatus |
MENU |
MENU |
} |
} |
|
$r->send_http_header; |
my $html=&Apache::lonxml::xmlbegin(); |
my $html=&Apache::lonxml::xmlbegin(); |
$r->print(<<"ENDSUBM"); |
$r->print(<<"ENDSUBM"); |
$html |
$html |
Line 209 MENU
|
Line 209 MENU
|
<body bgcolor="#FFFFFF" onLoad="submitthis()"></body> |
<body bgcolor="#FFFFFF" onLoad="submitthis()"></body> |
</html> |
</html> |
ENDSUBM |
ENDSUBM |
return; |
return OK; |
} |
} |
if ($ENV{QUERY_STRING} =~ /^launchExternal/) { |
if ($ENV{QUERY_STRING} =~ /^launchExternal/) { |
&Apache::lonnet::put('environment',{'remotenavmap' => 'on'}); |
&Apache::lonnet::put('environment',{'remotenavmap' => 'on'}); |
Line 238 MENU
|
Line 238 MENU
|
$env{'user.error.msg'} = "$requrl:bre:0:0:Course not initialized"; |
$env{'user.error.msg'} = "$requrl:bre:0:0:Course not initialized"; |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
|
$r->send_http_header; |
my $html=&Apache::lonxml::xmlbegin(); |
my $html=&Apache::lonxml::xmlbegin(); |
$r->print("$html<head>\n"); |
$r->print("$html<head>\n"); |
$r->print("<title>".&mt('Navigate Course Contents')."</title>"); |
$r->print("<title>".&mt('Navigate Course Contents')."</title>"); |
Line 514 sub getDescription {
|
Line 515 sub getDescription {
|
return &mt("Not currently assigned."); |
return &mt("Not currently assigned."); |
} |
} |
if ($status == $res->OPEN_LATER) { |
if ($status == $res->OPEN_LATER) { |
return "Open " . timeToHumanString($res->opendate($part)); |
return "Open " . timeToHumanString($res->opendate($part),'start'); |
} |
} |
if ($status == $res->OPEN) { |
if ($status == $res->OPEN) { |
if ($res->duedate($part)) { |
if ($res->duedate($part)) { |
return &mt("Due")." " .timeToHumanString($res->duedate($part)); |
return &mt("Due")." " .timeToHumanString($res->duedate($part),'end'); |
} else { |
} else { |
return &mt("Open, no due date"); |
return &mt("Open, no due date"); |
} |
} |
} |
} |
if ($status == $res->PAST_DUE_ANSWER_LATER) { |
if ($status == $res->PAST_DUE_ANSWER_LATER) { |
return &mt("Answer open")." " . timeToHumanString($res->answerdate($part)); |
return &mt("Answer open")." " . timeToHumanString($res->answerdate($part),'start'); |
} |
} |
if ($status == $res->PAST_DUE_NO_ANSWER) { |
if ($status == $res->PAST_DUE_NO_ANSWER) { |
return &mt("Was due")." " . timeToHumanString($res->duedate($part)); |
return &mt("Was due")." " . timeToHumanString($res->duedate($part),'end'); |
} |
} |
if ($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT) { |
if ($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT) { |
return &mt("Answer available"); |
return &mt("Answer available"); |
Line 549 sub getDescription {
|
Line 550 sub getDescription {
|
} |
} |
} |
} |
if ($res->duedate($part)) { |
if ($res->duedate($part)) { |
return &mt("Due")." " . timeToHumanString($res->duedate($part)) . |
return &mt("Due")." " . timeToHumanString($res->duedate($part),'end') . |
" $triesString"; |
" $triesString"; |
} else { |
} else { |
return &mt("No due date")." $triesString"; |
return &mt("No due date")." $triesString"; |
Line 602 sub advancedUser {
|
Line 603 sub advancedUser {
|
# print "Answer available $timestring" |
# print "Answer available $timestring" |
# Very, very, very, VERY English-only... goodness help a localizer on |
# Very, very, very, VERY English-only... goodness help a localizer on |
# this func... |
# this func... |
|
|
|
|
sub timeToHumanString { |
sub timeToHumanString { |
my ($time) = @_; |
my ($time,$type,$format) = @_; |
|
|
# zero, '0' and blank are bad times |
# zero, '0' and blank are bad times |
if (!$time) { |
if (!$time) { |
return &mt('never'); |
return &mt('never'); |
Line 674 sub timeToHumanString {
|
Line 678 sub timeToHumanString {
|
return "$prefix$hourString$minuteString$tense"; |
return "$prefix$hourString$minuteString$tense"; |
} |
} |
|
|
|
# If there's a caller supplied format, use it. |
|
|
|
if($format ne '') { |
|
my $timeStr = strftime($format, localtime($time)); |
|
return $timeStr.&Apache::lonlocal::gettimezone(); |
|
} |
|
|
# Less then 5 days away, display day of the week and |
# Less then 5 days away, display day of the week and |
# HH:MM |
# HH:MM |
|
|
if ( $delta < $day * 5 ) { |
if ( $delta < $day * 5 ) { |
my $timeStr = strftime("%A, %b %e at %I:%M %P", localtime($time)); |
my $timeStr = strftime("%A, %b %e at %I:%M %P", localtime($time)); |
$timeStr =~ s/12:00 am/00:00/; |
$timeStr =~ s/12:00 am/00:00/; |
$timeStr =~ s/12:00 pm/noon/; |
$timeStr =~ s/12:00 pm/noon/; |
return ($inPast ? "last " : "this ") . |
return ($inPast ? "last " : "this ") . |
$timeStr; |
$timeStr.&Apache::lonlocal::gettimezone(); |
} |
} |
|
|
|
my $conjunction='on'; |
|
if ($type eq 'start') { |
|
$conjunction='at'; |
|
} elsif ($type eq 'end') { |
|
$conjunction='by'; |
|
} |
# Is it this year? |
# Is it this year? |
if ( $time[5] == $now[5]) { |
if ( $time[5] == $now[5]) { |
# Return on Month Day, HH:MM meridian |
# Return on Month Day, HH:MM meridian |
my $timeStr = strftime("on %A, %b %e at %I:%M %P", localtime($time)); |
my $timeStr = strftime("$conjunction %A, %b %e at %I:%M %P", localtime($time)); |
$timeStr =~ s/12:00 am/00:00/; |
$timeStr =~ s/12:00 am/00:00/; |
$timeStr =~ s/12:00 pm/noon/; |
$timeStr =~ s/12:00 pm/noon/; |
return $timeStr; |
return $timeStr.&Apache::lonlocal::gettimezone(); |
} |
} |
|
|
# Not this year, so show the year |
# Not this year, so show the year |
my $timeStr = strftime("on %A, %b %e %Y at %I:%M %P", localtime($time)); |
my $timeStr = strftime("$conjunction %A, %b %e %Y at %I:%M %P", localtime($time)); |
$timeStr =~ s/12:00 am/00:00/; |
$timeStr =~ s/12:00 am/00:00/; |
$timeStr =~ s/12:00 pm/noon/; |
$timeStr =~ s/12:00 pm/noon/; |
return $timeStr; |
return $timeStr.&Apache::lonlocal::gettimezone(); |
} |
} |
} |
} |
|
|
Line 1127 sub render_resource {
|
Line 1145 sub render_resource {
|
if ($resource->randomout()) { |
if ($resource->randomout()) { |
$nonLinkedText .= ' <i>(hidden)</i> '; |
$nonLinkedText .= ' <i>(hidden)</i> '; |
} |
} |
|
if (!$resource->condval()) { |
|
$nonLinkedText .= ' <i>(conditionally hidden)</i> '; |
|
} |
|
|
# We're done preparing and finally ready to start the rendering |
# We're done preparing and finally ready to start the rendering |
my $result = "<td align='left' valign='center'>"; |
my $result = "<td align='left' valign='center'>"; |
Line 1149 sub render_resource {
|
Line 1170 sub render_resource {
|
# Is this the current resource? |
# Is this the current resource? |
if (!$params->{'displayedHereMarker'} && |
if (!$params->{'displayedHereMarker'} && |
$resource->symb() eq $params->{'here'} ) { |
$resource->symb() eq $params->{'here'} ) { |
$curMarkerBegin = '<font color="red" size="+2">> </font>'; |
$curMarkerBegin = '<font color="red" size="+2">></font>'; |
$curMarkerEnd = '<font color="red" size="+2"><</font>'; |
$curMarkerEnd = '<font color="red" size="+2"><</font>'; |
$params->{'displayedHereMarker'} = 1; |
$params->{'displayedHereMarker'} = 1; |
} |
} |
Line 1449 sub render {
|
Line 1470 sub render {
|
# Step 1: Check to see if we have a navmap |
# Step 1: Check to see if we have a navmap |
if (!defined($navmap)) { |
if (!defined($navmap)) { |
$navmap = Apache::lonnavmaps::navmap->new(); |
$navmap = Apache::lonnavmaps::navmap->new(); |
} |
if (!defined($navmap)) { |
|
# no londer in course |
|
return '<font color="red">No course selected</font><br /> |
|
<a href="/adm/roles">Select a course</a><br />'; |
|
} |
|
} |
|
|
# Step two: Locate what kind of here marker is necessary |
# Step two: Locate what kind of here marker is necessary |
# Determine where the "here" marker is and where the screen jumps to. |
# Determine where the "here" marker is and where the screen jumps to. |
Line 1833 END
|
Line 1859 END
|
$args->{'multipart'} = $curRes->multipart(); |
$args->{'multipart'} = $curRes->multipart(); |
|
|
if ($condenseParts) { # do the condensation |
if ($condenseParts) { # do the condensation |
if (!$curRes->opendate("0")) { |
|
@parts = (); |
|
$args->{'condensed'} = 1; |
|
} |
|
if (!$args->{'condensed'}) { |
if (!$args->{'condensed'}) { |
# Decide whether to condense based on similarity |
# Decide whether to condense based on similarity |
my $status = $curRes->status($parts[0]); |
my $status = $curRes->status($parts[0]); |
Line 3570 sub condition {
|
Line 3592 sub condition {
|
my $condition=&Apache::lonnet::directcondval($condid); |
my $condition=&Apache::lonnet::directcondval($condid); |
return $condition; |
return $condition; |
} |
} |
|
sub condval { |
|
my $self=shift; |
|
my $uri=&Apache::lonnet::deversion(&Apache::lonnet::declutter($self->src())); |
|
my ($pathname,$filename)=($uri=~m|(.*)/([^/]*)|); |
|
$pathname=~s/^adm\/wrapper\///; |
|
|
|
my $match=($env{'acc.res.'.$env{'request.course.id'}.'.'.$pathname}=~ |
|
/\&\Q$filename\E\:([\d\|]+)\&/); |
|
if ($match) { |
|
return &Apache::lonnet::condval($1); |
|
} |
|
return 0; |
|
} |
sub compTitle { |
sub compTitle { |
my $self = shift; |
my $self = shift; |
my $title = $self->title(); |
my $title = $self->title(); |
Line 4556 sub status {
|
Line 4590 sub status {
|
return CORRECT; |
return CORRECT; |
} |
} |
|
|
|
# If it's WRONG... and not open |
|
if ( ($completionStatus == INCORRECT || |
|
$completionStatus == INCORRECT_BY_OVERRIDE) |
|
&& (!$self->opendate($part) || $self->opendate($part) > time()) ) { |
|
return INCORRECT; |
|
} |
|
|
if ($completionStatus == ATTEMPTED) { |
if ($completionStatus == ATTEMPTED) { |
return ATTEMPTED; |
return ATTEMPTED; |
} |
} |
Line 4761 sub getNext {
|
Line 4802 sub getNext {
|
my $to = $self->to(); |
my $to = $self->to(); |
foreach my $branch ( split(/,/, $to) ) { |
foreach my $branch ( split(/,/, $to) ) { |
my $choice = $self->{NAV_MAP}->getById($branch); |
my $choice = $self->{NAV_MAP}->getById($branch); |
if (!$choice->condition()) { next; } |
#if (!$choice->condition()) { next; } |
my $next = $choice->goesto(); |
my $next = $choice->goesto(); |
$next = $self->{NAV_MAP}->getById($next); |
$next = $self->{NAV_MAP}->getById($next); |
|
|