[LON-CAPA-cvs] cvs: loncom(version_2_1_X) /interface lonnavmaps.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Mon, 05 Dec 2005 21:37:20 -0000
albertel Mon Dec 5 16:37:20 2005 EDT
Modified files: (Branch: version_2_1_X)
/loncom/interface lonnavmaps.pm
Log:
- backport 1.352 1.353
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.349.2.1 loncom/interface/lonnavmaps.pm:1.349.2.2
--- loncom/interface/lonnavmaps.pm:1.349.2.1 Tue Nov 22 13:58:37 2005
+++ loncom/interface/lonnavmaps.pm Mon Dec 5 16:37:19 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.349.2.1 2005/11/22 18:58:37 albertel Exp $
+# $Id: lonnavmaps.pm,v 1.349.2.2 2005/12/05 21:37:19 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2562,14 +2562,17 @@
=pod
-=item * B<getResourceByUrl>(url):
+=item * B<getResourceByUrl>(url,multiple):
-Retrieves a resource object by URL of the resource. If passed a
-resource object, it will simply return it, so it is safe to use this
-method in code like "$res = $navmap->getResourceByUrl($res)", if
-you're not sure if $res is already an object, or just a URL. If the
-resource appears multiple times in the course, only the first instance
-will be returned. As a result, this is probably useful only for maps.
+Retrieves a resource object by URL of the resource, unless the optional
+multiple parameter is included in wahich caes an array of resource
+objects is returned. If passed a resource object, it will simply return
+it, so it is safe to use this method in code like
+"$res = $navmap->getResourceByUrl($res)"
+if you're not sure if $res is already an object, or just a URL. If the
+resource appears multiple times in the course, only the first instance
+will be returned (useful for maps), unless the multiple parameter has
+been included, in which case all instances are returned in an array.
=item * B<retrieveResources>(map, filterFunc, recursive, bailout, showall):
@@ -2604,22 +2607,41 @@
which will tell whether the map has resources matching the description
in the filter function.
+=item * B<usedVersion>(url):
+
+Retrieves version infomation for a url. Returns the version (a number, or
+the string "mostrecent") for resources which have version information in
+the big hash.
+
=cut
sub getResourceByUrl {
my $self = shift;
my $resUrl = shift;
+ my $multiple = shift;
if (ref($resUrl)) { return $resUrl; }
$resUrl = &Apache::lonnet::clutter($resUrl);
my $resId = $self->{NAV_HASH}->{'ids_' . $resUrl};
- if ($resId =~ /,/) {
- $resId = (split (/,/, $resId))[0];
- }
if (!$resId) { return ''; }
- return $self->getById($resId);
+ if ($multiple) {
+ my @resources = ();
+ my @resIds = split (/,/, $resId);
+ foreach my $id (@resIds) {
+ my $resourceId = $self->getById($id);
+ if ($resourceId) {
+ push(@resources,$resourceId);
+ }
+ }
+ return @resources;
+ } else {
+ if ($resId =~ /,/) {
+ $resId = (split (/,/, $resId))[0];
+ }
+ return $self->getById($resId);
+ }
}
sub retrieveResources {
@@ -2687,6 +2709,12 @@
return scalar($self->retrieveResources($map, $filterFunc, $recursive, 1, $showall)) > 0;
}
+sub usedVersion {
+ my $self = shift;
+ my $linkurl = shift;
+ return $self->navhash("version_$linkurl");
+}
+
1;
package Apache::lonnavmaps::iterator;