[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) {