--- loncom/interface/lonindexer.pm 2001/12/04 18:35:47 1.26
+++ loncom/interface/lonindexer.pm 2002/01/17 14:10:44 1.34
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Directory Indexer
#
-# $Id: lonindexer.pm,v 1.26 2001/12/04 18:35:47 matthew Exp $
+# $Id: lonindexer.pm,v 1.34 2002/01/17 14:10:44 harris41 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -40,6 +40,9 @@
# 8/14 H. K. Ng
# 8/28,10/15,11/28,11/29 Scott Harrison
# 11/30 Matthew Hall
+# 12/11,12/13 Scott Harrison
+# YEAR=2002
+# 1/17 Scott Harrison
#
###
@@ -61,6 +64,7 @@ package Apache::lonindexer;
# ------------------------------------------------- modules used by this module
use strict;
use Apache::lonnet();
+use Apache::loncommon();
use Apache::Constants qw(:common);
use Apache::File;
use GDBM_File;
@@ -76,16 +80,6 @@ my $extrafield; # default extra table ce
my $fnum; # file counter
my $dnum; # directory counter
-# ---------------------------------------------------------------------- BEGIN
-sub BEGIN {
- my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
- '/language.tab');
- map {
- $_=~/(\w+)\s+([\w\s\-]+)/;
- $language{$1}=$2;
- } <$fh>;
-}
-
# ----------------------------- Handling routine called via Apache and mod_perl
sub handler {
my $r = shift;
@@ -239,14 +233,14 @@ ENDHEADER
my %achash;
my $ac=0;
# some initial hashes for working with data
- map {
+ foreach (@Acts) {
my ($state,$ref)=split(/a/);
$ahash{$ref}=$state;
$achash{$ref}=$ac;
$ac++;
- } (@Acts);
+ }
# sorting through the actions and changing the tied database hash
- map {
+ foreach (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) {
my $key=$_;
if ($ahash{$key} eq '1') {
$hash{'store_'.$hash{'pre_'.$key.'_link'}}=
@@ -260,9 +254,9 @@ ENDHEADER
delete $hash{'store_'.$hash{'pre_'.$key.'_link'}};
}
}
- } sort {$achash{$a}<=>$achash{$b}} (keys %ahash);
+ }
# deleting the previously cached listing
- map {
+ foreach (keys %hash) {
if ($_ =~ /^pre_/ && $_ =~/link$/) {
my $key = $_;
$key =~ s/^pre_//;
@@ -270,7 +264,7 @@ ENDHEADER
delete $hash{'pre_'.$key.'_title'};
delete $hash{'pre_'.$key.'_link'};
}
- } keys %hash;
+ }
}
# ---------------------------------------------------------------- output title
@@ -335,13 +329,13 @@ END
$r->print("");
# ----------------- read in what directories have previously been set to "open"
- map {
+ foreach (keys %hash) {
if ($_ =~ /^diropen_status_/) {
my $key = $_;
$key =~ s/^diropen_status_//;
$dirs{$key} = $hash{$_};
}
- } keys %hash;
+ }
if ($ENV{'form.openuri'}) { # take care of review and refresh options
my $uri=$ENV{'form.openuri'};
@@ -457,9 +451,9 @@ sub get_list {
$luri =~ s/\//_/g;
if ($ENV{'form.attrs'} eq "Refresh") {
- map {
+ foreach (keys %hash) {
delete $hash{$_} if ($_ =~ /^dirlist_files_/);
- } keys %hash;
+ }
}
if ($hash{'dirlist_files'.$luri}) {
@@ -489,9 +483,9 @@ sub match_ext {
my $fext = pop(@filecom);
my $fnptr = $unpackline[3]&$dirptr;
if ($fnptr == 0 and $unpackline[3] ne "") {
- my $embstyle = &Apache::lonnet::fileembstyle($fext);
+ my $embstyle = &Apache::loncommon::fileembstyle($fext);
push @trimlist,$line if (defined($embstyle) &&
- $embstyle ne 'hdn' );
+ ($embstyle ne 'hdn' or $fext eq 'meta'));
} else {
push @trimlist,$line;
}
@@ -594,7 +588,7 @@ sub display_line {
my $curfext = $file_ext[-1];
# Set the icon for the file
my $iconname = "unknown.gif";
- my $embstyle = &Apache::lonnet::fileembstyle($curfext);
+ my $embstyle = &Apache::loncommon::fileembstyle($curfext);
# The unless conditional that follows is a bit of overkill
$iconname = $curfext.".gif" unless
(!defined($embstyle) || $embstyle eq 'unk' || $embstyle eq 'hdn');
@@ -608,8 +602,10 @@ sub display_line {
$title = &Apache::lonnet::metadata($filelink,'title')
if ($metafile == 1);
$title=$listname unless $title;
- $r->print("");
+ my $titleesc=$title;
+ $titleesc=~s/\'/\\'/;
+ $r->print("");
$r->print("".
"\n");
$r->print("