[LON-CAPA-cvs] cvs: loncom /interface lonindexer.pm

www lon-capa-cvs@mail.lon-capa.org
Tue, 30 Mar 2004 02:50:27 -0000


www		Mon Mar 29 21:50:27 2004 EDT

  Modified files:              
    /loncom/interface	lonindexer.pm 
  Log:
  Bug #479: View sequence containment history
  Be able to group import from sequences and nested sequences
  
  
Index: loncom/interface/lonindexer.pm
diff -u loncom/interface/lonindexer.pm:1.96 loncom/interface/lonindexer.pm:1.97
--- loncom/interface/lonindexer.pm:1.96	Mon Mar 29 16:18:00 2004
+++ loncom/interface/lonindexer.pm	Mon Mar 29 21:50:27 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Directory Indexer
 #
-# $Id: lonindexer.pm,v 1.96 2004/03/29 21:18:00 www Exp $
+# $Id: lonindexer.pm,v 1.97 2004/03/30 02:50:27 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -443,16 +443,20 @@
 <input type="hidden" name="acts" value="" />
 $closebutton $groupimportbutton
 END
+# -------------- Filter out sequence containment in crumbs and "recent folders"
+	my $storeuri=$uri;
+	$storeuri='/'.(split(/\.(page|sequence)\/\//,$uri))[-1];
+	$storeuri=~s/\/+/\//g;
 # ---------------------------------------------------------------- Bread crumbs
-        $r->print(&Apache::lonhtmlcommon::crumbs($uri,'','',
+        $r->print(&Apache::lonhtmlcommon::crumbs($storeuri,'','',
 				(($ENV{'form.catalogmode'} eq 'groupimport')?
 				 'document.forms.fileattr':'')).
 		  &Apache::lonhtmlcommon::select_recent('residx','resrecent',
 'this.form.action=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.submit();').
 		  '</form>');
 # ------------------------------------------------------ Remember where we were
-	&Apache::loncommon::storeresurl($uri);
-	&Apache::lonhtmlcommon::store_recent('residx',$uri,$uri);
+	&Apache::loncommon::storeresurl($storeuri);
+	&Apache::lonhtmlcommon::store_recent('residx',$storeuri,$storeuri);
 # ----------------- output starting row to the indexed file/directory hierarchy
         my $titleclr="#ddffff";
 #        $r->print(&initdebug());
@@ -610,7 +614,7 @@
 # --------------- get complete matched list based on the uri (returns an array)
 sub get_list {
     my ($r,$uri)=@_;
-    my @list;
+    my @list=();
     (my $luri = $uri) =~ s/\//_/g;
     if ($ENV{'form.updatedisplay'}) {
 	foreach (keys %hash) {
@@ -620,9 +624,15 @@
 
     if ($hash{'dirlist_files_'.$luri}) {
 	@list = split(/\n/,$hash{'dirlist_files_'.$luri});
-    } elsif ($uri=~/\.(page|sequence)$/) {
+    } elsif ($uri=~/\.(page|sequence)\/$/) {
 # is a page or a sequence
-	@list= &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$uri)); 
+	$uri=~s/\/$//;
+	$uri='/'.(split(/\.(page|sequence)\/\//,$uri))[-1];
+	$uri=~s/\/+/\//g;
+	foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$uri))) {
+	    my @ratpart=split(/\:/,$_);
+	    push @list,$ratpart[1];
+	} 
 	$hash{'dirlist_files_'.$luri} = join("\n",@list);
     } else {
 # is really a directory
@@ -688,6 +698,17 @@
 sub display_line {
     my ($r,$diropen,$line,$indent,$startdir,$hashref,@list)=@_;
     my (@pathfn, $fndir);
+# there could be relative paths (files actually belonging into this directory)
+# or absolute paths (for example, from sequences)
+    my $absolute;
+    my $pathprefix;
+    if ($line=~/^\/res\//) {
+	$absolute=1;
+	$pathprefix='';
+    } else {
+	$absolute=0;
+	$pathprefix=$startdir;
+    }
     my $dirptr=16384;
     my $fileclr="#ffffe6";
     my $iconpath= $r->dir_config('lonIconsURL') . '/';
@@ -728,8 +749,12 @@
 	$r->print(&mt("Up")." $tabtag</tr></form>\n");
 	return OK;
     }
-# Do we have permission to look at this? 
-    if($filecom[15] ne '1') { return OK if (!&Apache::lonnet::allowed('bre',$startdir.$filecom[0])); }
+# Do we have permission to look at this?
+
+    if($filecom[15] ne '1') { return OK if (!&Apache::lonnet::allowed('bre',$pathprefix.$filecom[0])); }
+
+# make absolute links appear on different background
+    if ($absolute) { $fileclr='#aaaa88'; }
 
 # display domain
     if ($filecom[1] eq 'domain') {
@@ -785,8 +810,8 @@
     }
 
 # display file
-    if ($fnptr == 0 and $filecom[3] ne '') {
-	my $filelink = $startdir.$filecom[0];
+    if (($fnptr == 0 and $filecom[3] ne '') or $absolute) {
+	my $filelink = $pathprefix.$filecom[0];
 	my @file_ext = split (/\./,$listname);
 	my $curfext = $file_ext[-1];
         if (@Omit) {