version 1.206, 2003/06/17 21:04:00
|
version 1.212, 2003/06/25 18:32:06
|
Line 92 my %colormap =
|
Line 92 my %colormap =
|
$resObj->TRIES_LEFT => '', |
$resObj->TRIES_LEFT => '', |
$resObj->INCORRECT => '', |
$resObj->INCORRECT => '', |
$resObj->OPEN => '', |
$resObj->OPEN => '', |
$resObj->NOTHING_SET => '' ); |
$resObj->NOTHING_SET => '', |
|
$resObj->ATTEMPTED => '', |
|
$resObj->ANSWER_SUBMITTED => '' |
|
); |
# And a special case in the nav map; what to do when the assignment |
# 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 |
# is not yet done and due in less then 24 hours |
my $hurryUpColor = "#FF0000"; |
my $hurryUpColor = "#FF0000"; |
Line 413 sub dueInLessThen24Hours {
|
Line 416 sub dueInLessThen24Hours {
|
my $part = shift; |
my $part = shift; |
my $status = $res->status($part); |
my $status = $res->status($part); |
|
|
return ($status == $res->OPEN() || $status == $res->ATTEMPTED() || |
return ($status == $res->OPEN() || |
$status == $res->TRIES_LEFT()) && |
$status == $res->TRIES_LEFT()) && |
$res->duedate() && $res->duedate() < time()+(24*60*60) && |
$res->duedate() && $res->duedate() < time()+(24*60*60) && |
$res->duedate() > time(); |
$res->duedate() > time(); |
Line 1018 sub render_long_status {
|
Line 1021 sub render_long_status {
|
$params->{'multipart'} && $part eq "0"; |
$params->{'multipart'} && $part eq "0"; |
|
|
my $color; |
my $color; |
if ($resource->is_problem() && ($resource->countParts() <= 1 || $part ne '') ) { |
if ($resource->is_problem()) { |
$color = $colormap{$resource->status}; |
$color = $colormap{$resource->status}; |
|
|
if (dueInLessThen24Hours($resource, $part) || |
if (dueInLessThen24Hours($resource, $part) || |
Line 1037 sub render_long_status {
|
Line 1040 sub render_long_status {
|
if ($resource->is_map() && advancedUser() && $resource->randompick()) { |
if ($resource->is_map() && advancedUser() && $resource->randompick()) { |
$result .= '(randomly select ' . $resource->randompick() .')'; |
$result .= '(randomly select ' . $resource->randompick() .')'; |
} |
} |
|
|
|
$result .= "</td>\n"; |
|
|
return $result; |
return $result; |
} |
} |
Line 1496 sub render {
|
Line 1501 sub render {
|
} |
} |
} continue { |
} continue { |
$curRes = $it->next(); |
$curRes = $it->next(); |
|
|
|
if ($r) { |
|
# If we have the connection, make sure the user is still connected |
|
my $c = $r->connection; |
|
if ($c->aborted()) { |
|
Apache::lonnet::logthis("navmaps aborted"); |
|
# Who cares what we do, nobody will see it anyhow. |
|
return ''; |
|
} |
|
} |
} |
} |
|
|
# Print out the part that jumps to #curloc if it exists |
# Print out the part that jumps to #curloc if it exists |
Line 1551 You must obtain resource objects through
|
Line 1566 You must obtain resource objects through
|
=over 4 |
=over 4 |
|
|
=item * B<new>(navHashFile, parmHashFile, genCourseAndUserOptions, |
=item * B<new>(navHashFile, parmHashFile, genCourseAndUserOptions, |
genMailDiscussStatus): |
genMailDiscussStatus, getUserData): |
|
|
Binds a new navmap object to the compiled nav map hash and parm hash |
Binds a new navmap object to the compiled nav map hash and parm hash |
given as filenames. genCourseAndUserOptions is a flag saying whether |
given as filenames. genCourseAndUserOptions is a flag saying whether |
Line 1562 documentation. genMailDiscussStatus caus
|
Line 1577 documentation. genMailDiscussStatus caus
|
information about the email and discussion status of |
information about the email and discussion status of |
resources. Returns the navmap object if this is successful, or |
resources. Returns the navmap object if this is successful, or |
B<undef> if not. You must check for undef; errors will occur when you |
B<undef> if not. You must check for undef; errors will occur when you |
try to use the other methods otherwise. |
try to use the other methods otherwise. getUserData, if true, will |
|
retreive the user's performance data for various problems. |
|
|
=item * B<getIterator>(first, finish, filter, condition): |
=item * B<getIterator>(first, finish, filter, condition): |
|
|
Line 1583 sub new {
|
Line 1599 sub new {
|
$self->{PARM_HASH_FILE} = shift; |
$self->{PARM_HASH_FILE} = shift; |
$self->{GENERATE_COURSE_USER_OPT} = shift; |
$self->{GENERATE_COURSE_USER_OPT} = shift; |
$self->{GENERATE_EMAIL_DISCUSS_STATUS} = shift; |
$self->{GENERATE_EMAIL_DISCUSS_STATUS} = shift; |
|
$self->{GET_USER_DATA} = shift; |
|
|
# Resource cache stores navmap resources as we reference them. We generate |
# Resource cache stores navmap resources as we reference them. We generate |
# them on-demand so we don't pay for creating resources unless we use them. |
# them on-demand so we don't pay for creating resources unless we use them. |
Line 1720 sub init {
|
Line 1737 sub init {
|
$self->{DISCUSSION_TIME} = \%discussiontime; |
$self->{DISCUSSION_TIME} = \%discussiontime; |
$self->{EMAIL_STATUS} = \%emailstatus; |
$self->{EMAIL_STATUS} = \%emailstatus; |
|
|
} |
} |
|
|
|
if ($self->{GET_USER_DATA}) { |
|
# Retreive performance data on problems |
|
my %student_data = Apache::lonnet::currentdump($ENV{'request.course.id'}, |
|
$ENV{'user.domain'}, |
|
$ENV{'user.name'}); |
|
$self->{STUDENT_DATA} = \%student_data; |
|
} |
|
|
$self->{PARM_CACHE} = {}; |
$self->{PARM_CACHE} = {}; |
$self->{INITED} = 1; |
$self->{INITED} = 1; |
Line 2213 sub min {
|
Line 2238 sub min {
|
if ($a < $b) { return $a; } else { return $b; } |
if ($a < $b) { return $a; } else { return $b; } |
} |
} |
|
|
# In the CVS repository, documentation of this algorithm is included |
|
# in /doc/lonnavdocs, as a PDF and .tex source. Markers like **1** |
|
# will reference the same location in the text as the part of the |
|
# algorithm is running through. |
|
|
|
sub new { |
sub new { |
# magic invocation to create a class instance |
# magic invocation to create a class instance |
my $proto = shift; |
my $proto = shift; |
Line 2273 sub new {
|
Line 2293 sub new {
|
# that isn't just a redirector. |
# that isn't just a redirector. |
my $resource; my $resourceCount = 0; |
my $resource; my $resourceCount = 0; |
|
|
|
# Documentation on this algorithm can be found in the CVS repository at |
|
# /docs/lonnavdocs; these "**#**" markers correspond to documentation |
|
# in that file. |
# **1** |
# **1** |
|
|
foreach my $pass (@iterations) { |
foreach my $pass (@iterations) { |
Line 3075 Get the Client IP/Name Access Control in
|
Line 3098 Get the Client IP/Name Access Control in
|
|
|
Get the answer-reveal date for the problem. |
Get the answer-reveal date for the problem. |
|
|
|
=item * B<awarded>: |
|
|
|
Gets the awarded value for the problem part. Requires genUserData set to |
|
true when the navmap object was created. |
|
|
=item * B<duedate>: |
=item * B<duedate>: |
|
|
Get the due date for the problem. |
Get the due date for the problem. |
Line 3128 sub answerdate {
|
Line 3156 sub answerdate {
|
} |
} |
return $self->parmval("answerdate", $part); |
return $self->parmval("answerdate", $part); |
} |
} |
sub awarded { my $self = shift; return $self->queryRestoreHash('awarded', shift); } |
sub awarded { |
|
my $self = shift; my $part = shift; |
|
if (!defined($part)) { $part = '0'; } |
|
return $self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.awarded'}; |
|
} |
sub duedate { |
sub duedate { |
(my $self, my $part) = @_; |
(my $self, my $part) = @_; |
return $self->parmval("duedate", $part); |
return $self->parmval("duedate", $part); |
Line 3169 sub type {
|
Line 3201 sub type {
|
} |
} |
sub weight { |
sub weight { |
my $self = shift; my $part = shift; |
my $self = shift; my $part = shift; |
return $self->parmval("weight", $part); |
if (!defined($part)) { $part = '0'; } |
|
return &Apache::lonnet::EXT('resource.'.$part.'.weight', |
|
$self->symb(), $ENV{'user.domain'}, |
|
$ENV{'user.name'}, |
|
$ENV{'request.course.sec'}); |
|
|
} |
} |
|
|
# Multiple things need this |
# Multiple things need this |