version 1.224, 2003/09/08 19:53:09
|
version 1.225, 2003/09/08 22:44:36
|
Line 655 can't close or open folders when this is
|
Line 655 can't close or open folders when this is
|
|
|
=back |
=back |
|
|
=item B<Apache::lonnavmaps::communication_status>: |
=item * B<Apache::lonnavmaps::communication_status>: |
|
|
Whether there is discussion on the resource, email for the user, or |
Whether there is discussion on the resource, email for the user, or |
(lumped in here) perl errors in the execution of the problem. This is |
(lumped in here) perl errors in the execution of the problem. This is |
the second column in the main nav map. |
the second column in the main nav map. |
|
|
=item B<Apache::lonnavmaps::quick_status>: |
=item * B<Apache::lonnavmaps::quick_status>: |
|
|
An icon for the status of a problem, with five possible states: |
An icon for the status of a problem, with five possible states: |
Correct, incorrect, open, awaiting grading (for a problem where the |
Correct, incorrect, open, awaiting grading (for a problem where the |
Line 669 computer's grade is suppressed, or the c
|
Line 669 computer's grade is suppressed, or the c
|
essay problem), or none (not open yet, not a problem). The |
essay problem), or none (not open yet, not a problem). The |
third column of the standard navmap. |
third column of the standard navmap. |
|
|
=item B<Apache::lonnavmaps::long_status>: |
=item * B<Apache::lonnavmaps::long_status>: |
|
|
A text readout of the details of the current status of the problem, |
A text readout of the details of the current status of the problem, |
such as "Due in 22 hours". The fourth column of the standard navmap. |
such as "Due in 22 hours". The fourth column of the standard navmap. |
|
|
|
=item * B<Apache::lonnavmaps::part_status_summary>: |
|
|
|
A text readout summarizing the status of the problem. If it is a |
|
single part problem, will display "Correct", "Incorrect", |
|
"Not yet open", "Open", "Attempted", or "Error". If there are |
|
multiple parts, this will output a string that in HTML will show a |
|
status of how many parts are in each status, in color coding, trying |
|
to match the colors of the icons within reason. |
|
|
|
Note this only makes sense if you are I<not> showing parts. If |
|
C<showParts> is true (see below), this column will not output |
|
anything. |
|
|
=back |
=back |
|
|
If you add any others please be sure to document them here. |
If you add any others please be sure to document them here. |
Line 841 sub resource { return 0; }
|
Line 854 sub resource { return 0; }
|
sub communication_status { return 1; } |
sub communication_status { return 1; } |
sub quick_status { return 2; } |
sub quick_status { return 2; } |
sub long_status { return 3; } |
sub long_status { return 3; } |
|
sub part_status_summary { return 4; } |
# Data for render_resource |
|
|
|
sub render_resource { |
sub render_resource { |
my ($resource, $part, $params) = @_; |
my ($resource, $part, $params) = @_; |
Line 1081 sub render_long_status {
|
Line 1093 sub render_long_status {
|
return $result; |
return $result; |
} |
} |
|
|
|
my %statusColors = |
|
( |
|
$resObj->CLOSED => '#000000', |
|
$resObj->OPEN => '#000000', |
|
$resObj->CORRECT => '#000000', |
|
$resObj->INCORRECT => '#000000', |
|
$resObj->ATTEMPTED => '#000000', |
|
$resObj->ERROR => '#000000' |
|
); |
|
my %statusStrings = |
|
( |
|
$resObj->CLOSED => 'Not yet open', |
|
$resObj->OPEN => 'Open', |
|
$resObj->CORRECT => 'Correct', |
|
$resObj->INCORRECT => 'Incorrect', |
|
$resObj->ATTEMPTED => 'Attempted', |
|
$resObj->ERROR => 'Network Error' |
|
); |
|
my @statuses = ($resObj->CORRECT, $resObj->ATTEMPTED, $resObj->INCORRECT, $resObj->OPEN, $resObj->CLOSED, $resObj->ERROR); |
|
|
|
use Data::Dumper; |
|
sub render_parts_summary_status { |
|
my ($resource, $part, $params) = @_; |
|
if (!$resource->is_problem()) { return '<td></td>'; } |
|
if ($params->{showParts}) { |
|
return '<td></td>'; |
|
} |
|
|
|
my $td = "<td align='right'>\n"; |
|
my $endtd = "</td>\n"; |
|
|
|
# If there is a single part, just show the simple status |
|
if ($resource->singlepart()) { |
|
my $status = $resource->simpleStatus('0'); |
|
return $td . "<font color='" . $statusColors{$status} . "'>" |
|
. $statusStrings{$status} . "</font>" . $endtd; |
|
} |
|
|
|
# Now we can be sure the $part doesn't really matter. |
|
my $statusCount = $resource->simpleStatusCount(); |
|
my @counts; |
|
foreach my $status(@statuses) { |
|
# decouple display order from the simpleStatusCount order |
|
my $slot = Apache::lonnavmaps::resource::statusToSlot($status); |
|
if ($statusCount->[$slot]) { |
|
push @counts, "<font color='" . $statusColors{$status} . |
|
"'>" . $statusCount->[$slot] . ' ' |
|
. $statusStrings{$status} . "</font>"; |
|
} |
|
} |
|
|
|
return $td . join (', ', @counts) . $endtd; |
|
} |
|
|
my @preparedColumns = (\&render_resource, \&render_communication_status, |
my @preparedColumns = (\&render_resource, \&render_communication_status, |
\&render_quick_status, \&render_long_status); |
\&render_quick_status, \&render_long_status, |
|
\&render_parts_summary_status); |
|
|
sub setDefault { |
sub setDefault { |
my ($val, $default) = @_; |
my ($val, $default) = @_; |
Line 3464 sub multipart {
|
Line 3531 sub multipart {
|
return $self->countParts() > 1; |
return $self->countParts() > 1; |
} |
} |
|
|
|
sub singlepart { |
|
my $self = shift; |
|
return $self->countParts() == 1; |
|
} |
|
|
sub responseType { |
sub responseType { |
my $self = shift; |
my $self = shift; |
my $part = shift; |
my $part = shift; |
Line 3982 sub simpleStatus {
|
Line 4054 sub simpleStatus {
|
} |
} |
|
|
=pod |
=pod |
|
|
|
B<simpleStatusCount> will return an array reference containing, in |
|
this order, the number of OPEN, CLOSED, CORRECT, INCORRECT, ATTEMPTED, |
|
and ERROR parts the given problem has. |
|
|
|
=cut |
|
|
|
# This maps the status to the slot we want to increment |
|
my %statusToSlotMap = |
|
( |
|
OPEN() => 0, |
|
CLOSED() => 1, |
|
CORRECT() => 2, |
|
INCORRECT() => 3, |
|
ATTEMPTED() => 4, |
|
ERROR() => 5 |
|
); |
|
|
|
sub statusToSlot { return $statusToSlotMap{shift()}; } |
|
|
|
sub simpleStatusCount { |
|
my $self = shift; |
|
|
|
my @counts = (0, 0, 0, 0, 0, 0, 0); |
|
foreach my $part (@{$self->parts()}) { |
|
$counts[$statusToSlotMap{$self->simpleStatus($part)}]++; |
|
} |
|
|
|
return \@counts; |
|
} |
|
|
|
=pod |
|
|
B<Completable> |
B<Completable> |
|
|