version 1.26, 2001/12/04 18:35:47
|
version 1.33, 2002/01/17 14:02:47
|
Line 40
|
Line 40
|
# 8/14 H. K. Ng |
# 8/14 H. K. Ng |
# 8/28,10/15,11/28,11/29 Scott Harrison |
# 8/28,10/15,11/28,11/29 Scott Harrison |
# 11/30 Matthew Hall |
# 11/30 Matthew Hall |
|
# 12/11,12/13 Scott Harrison |
|
# YEAR=2002 |
|
# 1/17 Scott Harrison |
# |
# |
### |
### |
|
|
Line 61 package Apache::lonindexer;
|
Line 64 package Apache::lonindexer;
|
# ------------------------------------------------- modules used by this module |
# ------------------------------------------------- modules used by this module |
use strict; |
use strict; |
use Apache::lonnet(); |
use Apache::lonnet(); |
|
use Apache::loncommon(); |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::File; |
use Apache::File; |
use GDBM_File; |
use GDBM_File; |
Line 76 my $extrafield; # default extra table ce
|
Line 80 my $extrafield; # default extra table ce
|
my $fnum; # file counter |
my $fnum; # file counter |
my $dnum; # directory 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 |
# ----------------------------- Handling routine called via Apache and mod_perl |
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Line 239 ENDHEADER
|
Line 233 ENDHEADER
|
my %achash; |
my %achash; |
my $ac=0; |
my $ac=0; |
# some initial hashes for working with data |
# some initial hashes for working with data |
map { |
foreach (@Acts) { |
my ($state,$ref)=split(/a/); |
my ($state,$ref)=split(/a/); |
$ahash{$ref}=$state; |
$ahash{$ref}=$state; |
$achash{$ref}=$ac; |
$achash{$ref}=$ac; |
$ac++; |
$ac++; |
} (@Acts); |
} |
# sorting through the actions and changing the tied database hash |
# sorting through the actions and changing the tied database hash |
map { |
foreach (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) { |
my $key=$_; |
my $key=$_; |
if ($ahash{$key} eq '1') { |
if ($ahash{$key} eq '1') { |
$hash{'store_'.$hash{'pre_'.$key.'_link'}}= |
$hash{'store_'.$hash{'pre_'.$key.'_link'}}= |
Line 260 ENDHEADER
|
Line 254 ENDHEADER
|
delete $hash{'store_'.$hash{'pre_'.$key.'_link'}}; |
delete $hash{'store_'.$hash{'pre_'.$key.'_link'}}; |
} |
} |
} |
} |
} sort {$achash{$a}<=>$achash{$b}} (keys %ahash); |
} |
# deleting the previously cached listing |
# deleting the previously cached listing |
map { |
foreach (keys %hash) { |
if ($_ =~ /^pre_/ && $_ =~/link$/) { |
if ($_ =~ /^pre_/ && $_ =~/link$/) { |
my $key = $_; |
my $key = $_; |
$key =~ s/^pre_//; |
$key =~ s/^pre_//; |
Line 270 ENDHEADER
|
Line 264 ENDHEADER
|
delete $hash{'pre_'.$key.'_title'}; |
delete $hash{'pre_'.$key.'_title'}; |
delete $hash{'pre_'.$key.'_link'}; |
delete $hash{'pre_'.$key.'_link'}; |
} |
} |
} keys %hash; |
} |
} |
} |
|
|
# ---------------------------------------------------------------- output title |
# ---------------------------------------------------------------- output title |
Line 335 END
|
Line 329 END
|
$r->print("</tr>"); |
$r->print("</tr>"); |
|
|
# ----------------- read in what directories have previously been set to "open" |
# ----------------- read in what directories have previously been set to "open" |
map { |
foreach (keys %hash) { |
if ($_ =~ /^diropen_status_/) { |
if ($_ =~ /^diropen_status_/) { |
my $key = $_; |
my $key = $_; |
$key =~ s/^diropen_status_//; |
$key =~ s/^diropen_status_//; |
$dirs{$key} = $hash{$_}; |
$dirs{$key} = $hash{$_}; |
} |
} |
} keys %hash; |
} |
|
|
if ($ENV{'form.openuri'}) { # take care of review and refresh options |
if ($ENV{'form.openuri'}) { # take care of review and refresh options |
my $uri=$ENV{'form.openuri'}; |
my $uri=$ENV{'form.openuri'}; |
Line 457 sub get_list {
|
Line 451 sub get_list {
|
$luri =~ s/\//_/g; |
$luri =~ s/\//_/g; |
|
|
if ($ENV{'form.attrs'} eq "Refresh") { |
if ($ENV{'form.attrs'} eq "Refresh") { |
map { |
foreach (keys %hash) { |
delete $hash{$_} if ($_ =~ /^dirlist_files_/); |
delete $hash{$_} if ($_ =~ /^dirlist_files_/); |
} keys %hash; |
} |
} |
} |
|
|
if ($hash{'dirlist_files'.$luri}) { |
if ($hash{'dirlist_files'.$luri}) { |
Line 489 sub match_ext {
|
Line 483 sub match_ext {
|
my $fext = pop(@filecom); |
my $fext = pop(@filecom); |
my $fnptr = $unpackline[3]&$dirptr; |
my $fnptr = $unpackline[3]&$dirptr; |
if ($fnptr == 0 and $unpackline[3] ne "") { |
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) && |
push @trimlist,$line if (defined($embstyle) && |
$embstyle ne 'hdn' ); |
($embstyle ne 'hdn' or $fext eq 'meta')); |
} else { |
} else { |
push @trimlist,$line; |
push @trimlist,$line; |
} |
} |
Line 594 sub display_line {
|
Line 588 sub display_line {
|
my $curfext = $file_ext[-1]; |
my $curfext = $file_ext[-1]; |
# Set the icon for the file |
# Set the icon for the file |
my $iconname = "unknown.gif"; |
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 |
# The unless conditional that follows is a bit of overkill |
$iconname = $curfext.".gif" unless |
$iconname = $curfext.".gif" unless |
(!defined($embstyle) || $embstyle eq 'unk' || $embstyle eq 'hdn'); |
(!defined($embstyle) || $embstyle eq 'unk' || $embstyle eq 'hdn'); |
Line 608 sub display_line {
|
Line 602 sub display_line {
|
$title = &Apache::lonnet::metadata($filelink,'title') |
$title = &Apache::lonnet::metadata($filelink,'title') |
if ($metafile == 1); |
if ($metafile == 1); |
$title=$listname unless $title; |
$title=$listname unless $title; |
|
my $titleesc=$title; |
|
$titleesc=~s/\'/\\'/; |
$r->print("<a href='javascript:select_data(\"", |
$r->print("<a href='javascript:select_data(\"", |
$title,'","',$filelink,"\")'>"); |
$titleesc,'","',$filelink,"\")'>"); |
$r->print("<img src='",$iconpath,"select.gif' border='0' /></a>". |
$r->print("<img src='",$iconpath,"select.gif' border='0' /></a>". |
"\n"); |
"\n"); |
$r->print("</td><td valign='bottom' nowrap bgcolor=$fileclr>"); |
$r->print("</td><td valign='bottom' nowrap bgcolor=$fileclr>"); |
Line 689 sub display_line {
|
Line 685 sub display_line {
|
if ($hash{'display_attrs_5'} == 1) { |
if ($hash{'display_attrs_5'} == 1) { |
my $lang = &Apache::lonnet::metadata($filelink,'language') |
my $lang = &Apache::lonnet::metadata($filelink,'language') |
if ($metafile == 1); |
if ($metafile == 1); |
$lang = $language{$lang}; |
$lang = &Apache::loncommon::languagedescription($lang); |
$lang = ' ' if (!$lang); |
$lang = ' ' if (!$lang); |
$r->print("<td bgcolor=$fileclr valign=bottom> ".$lang. |
$r->print("<td bgcolor=$fileclr valign=bottom> ".$lang. |
" </td>\n"); |
" </td>\n"); |
Line 753 sub begin_form {
|
Line 749 sub begin_form {
|
|
|
# ----------- grab unprocessed CGI variables that may have been appended to URL |
# ----------- grab unprocessed CGI variables that may have been appended to URL |
sub get_unprocessed_cgi { |
sub get_unprocessed_cgi { |
map { |
foreach (split(/&/,$ENV{'QUERY_STRING'})) { |
my ($name, $value) = split(/=/,$_); |
my ($name, $value) = split(/=/,$_); |
$value =~ tr/+/ /; |
$value =~ tr/+/ /; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
if ($name eq 'catalogmode' or $name eq 'launch' or $name eq 'acts') { |
if ($name eq 'catalogmode' or $name eq 'launch' or $name eq 'acts') { |
$ENV{'form.'.$name}=$value; |
$ENV{'form.'.$name}=$value; |
} |
} |
} (split(/&/,$ENV{'QUERY_STRING'})); |
} |
} |
} |
|
|
# --------- settings whenever the user causes the indexer window to be launched |
# --------- settings whenever the user causes the indexer window to be launched |
sub start_fresh_session { |
sub start_fresh_session { |
delete $hash{'mode_catalog'}; |
delete $hash{'mode_catalog'}; |
map { |
foreach (keys %hash) { |
if ($_ =~ /^pre_/) { |
if ($_ =~ /^pre_/) { |
delete $hash{$_}; |
delete $hash{$_}; |
} |
} |
if ($_ =~ /^store/) { |
if ($_ =~ /^store/) { |
delete $hash{$_}; |
delete $hash{$_}; |
} |
} |
} keys %hash; |
} |
} |
} |
|
|
1; |
1; |