--- loncom/interface/lonindexer.pm 2004/03/29 21:18:00 1.96 +++ loncom/interface/lonindexer.pm 2004/05/10 08:34:50 1.103 @@ -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.103 2004/05/10 08:34:50 taceyjo1 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -443,16 +443,31 @@ $r->print(&Apache::loncommon::bodytag('B $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();'). - ''); +'this.form.action=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.submit();')); +# -------------------------------------------------------- Resource Home Button + my $reshome=$ENV{'course.'.$ENV{'request.course.id'}.'.reshome'}; + if ($reshome) { + $r->print("print('javascript:document.forms.fileattr.action="'.$reshome.'";document.forms.fileattr.submit();'); + } else { + $r->print($reshome); + } + $r->print("'>".&mt('Home').''); + } + $r->print(''); # ------------------------------------------------------ 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 +625,7 @@ sub scanDir { # --------------- 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 +635,15 @@ sub get_list { 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 +709,17 @@ sub match_ext { 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') . '/'; @@ -711,9 +743,14 @@ sub display_line { # display uplink arrow if ($filecom[1] eq 'viewOneUp') { + my $updir=$startdir; +# -------------- Filter out sequence containment in crumbs and "recent folders" + $updir='/'.(split(/\.(page|sequence)\/\//,$startdir))[-1]; + $updir=~s/\/+/\//g; + $r->print("