[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;