--- loncom/interface/lonnavmaps.pm 2005/12/29 18:09:32 1.356
+++ loncom/interface/lonnavmaps.pm 2006/03/02 19:45:22 1.365
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.356 2005/12/29 18:09:32 albertel Exp $
+# $Id: lonnavmaps.pm,v 1.365 2006/03/02 19:45:22 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -530,9 +530,8 @@ sub getDescription {
if ($status == $res->PAST_DUE_NO_ANSWER) {
return &mt("Was due")." " . timeToHumanString($res->duedate($part),'end');
}
- if ($status == $res->ANSWER_OPEN
- || ($status == $res->PARTIALLY_CORRECT
- && $res->handgrade($part) ne 'yes')) {
+ if (($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT)
+ && $res->handgrade($part) ne 'yes') {
return &mt("Answer available");
}
if ($status == $res->EXCUSED) {
@@ -1096,7 +1095,7 @@ sub render_resource {
if ($resource->is_problem()) {
if ($part eq '0' || $params->{'condensed'}) {
- $icon ='
';
+ $icon ='
';
} else {
$icon = $params->{'indentString'};
}
@@ -1113,11 +1112,12 @@ sub render_resource {
}
my $folderType = $resource->is_sequence() ? 'folder' : 'page';
-
+ my $title=$resource->title;
+ $title=~s/\"/\"/g;
if (!$params->{'resource_no_folder_link'}) {
$icon = "navmap.$folderType." . ($nowOpen ? 'closed' : 'open') . '.gif';
- $icon = "
";
+ $icon = "
";
$linkopen = "{'url'} . '?' .
$params->{'queryString'} . '&filter=';
@@ -1135,8 +1135,8 @@ sub render_resource {
# Don't allow users to manipulate folder
$icon = "navmap.$folderType." . ($nowOpen ? 'closed' : 'open') .
'.nomanip.gif';
- $icon = "
";
+ $icon = "
";
$linkopen = "";
$linkclose = "";
@@ -1144,10 +1144,10 @@ sub render_resource {
}
if ($resource->randomout()) {
- $nonLinkedText .= ' (hidden) ';
+ $nonLinkedText .= ' ('.&mt('hidden').') ';
}
if (!$resource->condval()) {
- $nonLinkedText .= ' (conditionally hidden) ';
+ $nonLinkedText .= ' ('.&mt('conditionally hidden').') ';
}
# We're done preparing and finally ready to start the rendering
@@ -1179,13 +1179,13 @@ sub render_resource {
if ($resource->is_problem() && $part ne '0' &&
!$params->{'condensed'}) {
my $displaypart=$resource->part_display($part);
- $partLabel = " (Part: $displaypart)";
+ $partLabel = " (".&mt('Part: [_1]', $displaypart).")";
if ($link!~/\#/) { $link.='#'.&Apache::lonnet::escape($part); }
$title = "";
}
if ($params->{'condensed'} && $resource->countParts() > 1) {
- $nonLinkedText .= ' (' . $resource->countParts() . ' parts)';
+ $nonLinkedText .= ' ('.&mt('[_1] parts', $resource->countParts()).')';
}
my $target;
@@ -1473,8 +1473,8 @@ sub render {
$navmap = Apache::lonnavmaps::navmap->new();
if (!defined($navmap)) {
# no londer in course
- return 'No course selected
- Select a course
';
+ return ''.&mt('No course selected').'
+ '.&mt('Select a course').'
';
}
}
@@ -2067,15 +2067,16 @@ In order of increasing complexity and po
=over 4
-=item * C<$navmap-EgetByX>, where X is B, B, B or B. This provides
+=item * C<$navmap-EgetByX>, where X is B, B or B and getResourceByUrl. This provides
various ways to obtain resource objects, based on various identifiers.
Use this when you want to request information about one object or
a handful of resources you already know the identities of, from some
other source. For more about Ids, Symbs, and MapPcs, see the
Resource documentation. Note that Url should be a B,
- not your first choice; it only works when there is only one
+ not your first choice; it only really works when there is only one
instance of the resource in the course, which only applies to
- maps, and even that may change in the future.
+ maps, and even that may change in the future (see the B
+ documentation for more details.)
=item * CretrieveResources(args)>. This
retrieves resources matching some criterion and returns them
@@ -2755,7 +2756,7 @@ sub usedVersion {
1;
package Apache::lonnavmaps::iterator;
-use WeakRef;
+use Scalar::Util qw(weaken);
use Apache::lonnet;
=pod
@@ -3236,7 +3237,7 @@ sub populateStack {
1;
package Apache::lonnavmaps::DFSiterator;
-use WeakRef;
+use Scalar::Util qw(weaken);
use Apache::lonnet;
# Not documented in the perldoc: This is a simple iterator that just walks
@@ -3420,7 +3421,7 @@ sub populateStack {
1;
package Apache::lonnavmaps::resource;
-use WeakRef;
+use Scalar::Util qw(weaken);
use Apache::lonnet;
=pod
@@ -3658,9 +3659,8 @@ sub 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 ($pathname,$filename) =
+ &Apache::lonnet::split_uri_for_cond($self->src());
my $match=($env{'acc.res.'.$env{'request.course.id'}.'.'.$pathname}=~
/\&\Q$filename\E\:([\d\|]+)\&/);
@@ -3731,10 +3731,21 @@ sub is_page {
return $self->navHash("is_map_", 1) &&
$self->navHash("map_type_" . $self->map_pc()) eq 'page';
}
+sub is_practice {
+ my $self=shift;
+ my ($part) = @_;
+ if ($self->parmval('type',$part) eq 'practice') {
+ return 1;
+ }
+ return 0;
+}
sub is_problem {
my $self=shift;
my $src = $self->src();
- return ($src =~ /\.(problem|exam|quiz|assess|survey|form|library|task)$/)
+ if ($src =~ /\.(problem|exam|quiz|assess|survey|form|library|task)$/) {
+ return !($self->is_practice());
+ }
+ return 0;
}
sub contains_problem {
my $self=shift;
@@ -3761,6 +3772,11 @@ sub is_survey {
}
return 0;
}
+sub is_task {
+ my $self=shift;
+ my $src = $self->src();
+ return ($src =~ /\.(task)$/)
+}
sub is_empty_sequence {
my $self=shift;
@@ -4274,7 +4290,8 @@ sub extractParts {
# where the part names begin and end, and even then, it is possible
# to construct ambiguous situations.
foreach (split /,/, $metadata) {
- if ($_ =~ /^([a-zA-Z]+)response_(.*)/) {
+ if ($_ =~ /^([a-zA-Z]+)response_(.*)/
+ || $_ =~ /^(Task)_(.*)/) {
my $responseType = $1;
my $partStuff = $2;
my $partIdSoFar = '';