[LON-CAPA-cvs] cvs: loncom /interface lonnavmaps.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Fri, 02 Dec 2005 23:06:04 -0000
raeburn Fri Dec 2 18:06:04 2005 EDT
Modified files:
/loncom/interface lonnavmaps.pm
Log:
Modification to allow getResourceByUrl to return more than one resource object, if a resurce is used multiple times in a course. Former behavior - returning first resource s default. Will only return array if additional argument (multiple) is supplied when method is called.
Also added a method to return the version number for a supplied url, from the navhash.
Both used by lonwhatsnew.pm rev 1.33.
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.351 loncom/interface/lonnavmaps.pm:1.352
--- loncom/interface/lonnavmaps.pm:1.351 Tue Nov 22 11:39:45 2005
+++ loncom/interface/lonnavmaps.pm Fri Dec 2 18:06:02 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.351 2005/11/22 16:39:45 www Exp $
+# $Id: lonnavmaps.pm,v 1.352 2005/12/02 23:06:02 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2578,14 +2578,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):
@@ -2620,22 +2623,45 @@
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 (defined($multiple)) {
+ if ($multiple) {
+ my @resIds = $self->{NAV_HASH}->{'ids_' . $resUrl};
+ }
}
+ my $resId = $self->{NAV_HASH}->{'ids_' . $resUrl};
if (!$resId) { return ''; }
- return $self->getById($resId);
+ if ($multiple) {
+ my @resources = ();
+ my @resIds = split (/,/, $resId);
+ foreach my $id (@resIds) {
+ if ($id) {
+ push(@resources,$self->getById($id));
+ }
+ }
+ return @resources;
+ } else {
+ if ($resId =~ /,/) {
+ $resId = (split (/,/, $resId))[0];
+ }
+ return $self->getById($resId);
+ }
}
sub retrieveResources {
@@ -2703,6 +2729,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;