--- loncom/interface/lonindexer.pm 2006/06/23 07:32:02 1.148
+++ loncom/interface/lonindexer.pm 2007/06/26 23:06:17 1.160
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Directory Indexer
#
-# $Id: lonindexer.pm,v 1.148 2006/06/23 07:32:02 www Exp $
+# $Id: lonindexer.pm,v 1.160 2007/06/26 23:06:17 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -54,6 +54,7 @@ use Apache::File;
use Apache::lonlocal;
use Apache::lonsource();
use GDBM_File;
+use LONCAPA qw(:match);
# ---------------------------------------- variables used throughout the module
my %hash; # global user-specific gdbm file
@@ -123,7 +124,11 @@ sub handler {
%hash = ();
{
my %dbfile;
- if (tie(%dbfile,'GDBM_File',$diropendb,&GDBM_READER(),0640)) {
+ if (tie(%dbfile,'GDBM_File',$diropendb,&GDBM_WRITER(),0640)) {
+ if ($env{'form.launch'} eq '1') {
+ &start_fresh_session(\%dbfile);
+ }
+
while(my($key,$value)=each(%dbfile)) {
$hash{$key}=$value;
}
@@ -131,9 +136,6 @@ sub handler {
}
}
{
- if ($env{'form.launch'} eq '1') {
- &start_fresh_session();
- }
#Hijack lonindexer to verify a title and be close down.
if ($env{'form.launch'} eq '2') {
&Apache::loncommon::content_type($r,'text/html');
@@ -171,7 +173,7 @@ ENDSUBM
# --------------------- define extra fields and buttons in case of special mode
if ($env{'form.catalogmode'} eq 'interactive') {
$extrafield='
'.
- ' | ';
$colspan=" colspan='2' ";
my $cl=&mt('Close');
@@ -181,7 +183,7 @@ END
}
elsif ($env{'form.catalogmode'} eq 'import') {
$extrafield=''.
- ' | ';
$colspan=" colspan='2' ";
my $cl=&mt('Close');
@@ -348,6 +350,20 @@ END
my $js = <<"ENDHEADER";
ENDHEADER
- my ($headerdom)=($uri=~/^\/res\/(\w+)\//);
+ my ($headerdom)=($uri=~m{^/res/($match_domain)/});
$r->print(&Apache::loncommon::start_page('Browse Resources',$js,
{'domain' => $headerdom,}));
# - Evaluate actions from previous page (both cumulatively and chronologically)
@@ -579,12 +595,13 @@ END
# -------- recursively go through all the directories and output as appropriate
&scanDir ($r,$toplevel,$indent,\%hash);
-# ---------------------------- embed hidden information useful for group import
- $r->print("");
# -------------------------------------------------------------- end the tables
$r->print('');
+# ---------------------------- embed hidden information useful for group import
+ $r->print("");
+# -------------------------------------------------------------- end the tables
$r->print('');
# --------------------------------------------------- end the output and return
@@ -677,7 +694,7 @@ sub get_list {
$uri=~s/\/+/\//g;
foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$uri))) {
my @ratpart=split(/\:/,$_);
- push @list,$ratpart[1];
+ push(@list,&LONCAPA::map::qtescape($ratpart[1]));
}
$hash{'dirlist_files_'.$luri} = join("\n",@list);
} else {
@@ -686,7 +703,7 @@ sub get_list {
$hash{'dirlist_files_'.$luri} = join("\n",@list);
$hash{'dirlist_timestamp_files_'.$luri} = time;
}
- return @list=&match_ext($r,@list);
+ return @list=&match_ext($r,@list);
}
sub dynmetaread {
@@ -796,7 +813,8 @@ sub display_line {
my $i=0;
while ($i<=11) {
$tabtag=join('',$tabtag," | ")
- if $hash{'display_attrs_'.$i} == 1;
+ if ($i != 9 &&
+ $hash{'display_attrs_'.$i} == 1);
$i++;
}
my $valign = ($hash{'display_attrs_7'} == 1 ? 'top' : 'bottom');
@@ -808,7 +826,7 @@ sub display_line {
$updir='/'.(split(/\.(page|sequence)\/\//,$startdir))[-1];
$updir=~s/\/+/\//g;
- $r->print("$extrafield");
+ $r->print("
$extrafield");
$r->print("\n");
$r->print (' |
');
}
}
@@ -1162,6 +1184,9 @@ sub coursecontext {
sub showpreview {
my ($filelink)=@_;
+ if ($filelink=~m-^(/ext/|http://)-) {
+ return &mt('External Resource, preview not enabled');
+ }
my ($curfext)=($filelink=~/\.(\w+)$/);
my $output='';
my $embstyle=&Apache::loncommon::fileembstyle($curfext);
@@ -1192,10 +1217,10 @@ sub showpreview {
}
$output=''.$output.'';
} elsif ($embstyle eq 'img') {
- $output='
';
- } elsif ($filelink=~/^\/res\/(\w+)\/(\w+)\//) {
- $output='
';
+ } elsif ($filelink=~m{^/res/($match_domain)/($match_username)/}) {
+ $output='
';
}
return $output;
@@ -1231,14 +1256,15 @@ sub begin_form {
# --------- settings whenever the user causes the indexer window to be launched
sub start_fresh_session {
- delete $hash{'form.catalogmode'};
- delete $hash{'form.mode'};
- delete $hash{'form.form'};
- delete $hash{'form.element'};
- delete $hash{'form.omit'};
- delete $hash{'form.only'};
- foreach (keys %hash) {
- delete $hash{$_} if (/^(pre_|store)/);
+ my ($hash) = @_;
+ delete $hash->{'form.catalogmode'};
+ delete $hash->{'form.mode'};
+ delete $hash->{'form.form'};
+ delete $hash->{'form.element'};
+ delete $hash->{'form.omit'};
+ delete $hash->{'form.only'};
+ foreach (keys %{$hash}) {
+ delete $hash->{$_} if (/^(pre_|store)/);
}
}