--- loncom/interface/lonindexer.pm 2001/05/21 18:11:31 1.5 +++ loncom/interface/lonindexer.pm 2001/11/28 16:47:25 1.23 @@ -1,40 +1,80 @@ # The LearningOnline Network with CAPA +# # Directory Indexer -# (Login Screen -# 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14 Gerd Kortemeyer) +# +# YEAR=1999 +# 5/21/99, 5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14 Gerd Kortemeyer) # 11/23 Gerd Kortemeyer +# YEAR=2000 # 07/20-08/04 H.K. Ng -# +# YEAR=2001 # 05/9-05/19/2001 H. K. Ng # 05/21/2001 H. K. Ng +# 05/23/2001 H. K. Ng +# 5/31,6/1,6/2,6/15 Scott Harrison +# 6/26,7/8 H. K. Ng +# 8/6,8/7,8/10 Scott Harrison +# 8/14 H. K. Ng +# 8/28,10/15,11/28 Scott Harrison # +# $Id: lonindexer.pm,v 1.23 2001/11/28 16:47:25 harris41 Exp $ +### + +############################################################################### +## ## +## ORGANIZATION OF THIS PERL MODULE ## +## ## +## 1. Description of functions ## +## 2. Modules used by this module ## +## 3. Choices for different output views (detailed, summary, xml, etc) ## +## 4. BEGIN block (to be run once after compilation) ## +## 5. Handling routine called via Apache and mod_perl ## +## 6. Other subroutines ## +## ## +############################################################################### + package Apache::lonindexer; +# ------------------------------------------------- modules used by this module use strict; use Apache::lonnet(); use Apache::Constants qw(:common); use Apache::File; use GDBM_File; -my %hash; -my %dirs; -my %language; +# ---------------------------------------- variables used throughout the module +my %hash; # tied to a user-specific gdbm file +my %dirs; # keys are directories, values are the open/close status +my %language; # has the reference information present in language.tab + +# ----- Values which are set by the handler subroutine and are accessible to +# ----- other methods. +my $extrafield; # default extra table cell +my $fnum; # file counter +my $dnum; # directory counter +# ---------------------------------------------------------------------- BEGIN sub BEGIN { - my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.'/language.tab'); + 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; $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; + $fnum=0; + $dnum=0; + untie %hash; - my $iconpath= $r->dir_config('lonIconsURL'); +# ------------------------------------- read in machine configuration variables + my $iconpath= $r->dir_config('lonIconsURL') . "/"; my $domain = $r->dir_config('lonDefDomain'); my $role = $r->dir_config('lonRole'); my $loadlim = $r->dir_config('lonLoadLim'); @@ -43,13 +83,115 @@ sub handler { my $lonhost = $r->dir_config('lonHostID'); my $tabdir = $r->dir_config('lonTabDir'); + my $fileclr='#ffffe6'; + my $line; + my (@attrchk,@openpath); + my $uri=$r->uri; + +# -------------------------------------- see if called from an interactive mode + &get_unprocessed_cgi(); + + my $closebutton=''; + my $groupimportbutton=''; + my $colspan=''; + + $extrafield=''; + my $diropendb = + "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db"; + + if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) { + if ($ENV{'form.launch'} eq '1') { + &start_fresh_session(); + } + +# -------------------- refresh environment with user database values (in %hash) + if ($hash{'mode_catalog'} eq 'interactive') { + $ENV{'form.catalogmode'}='interactive'; + } + if ($hash{'mode_catalog'} eq 'groupimport') { + $ENV{'form.catalogmode'}='groupimport'; + } + +# --------------------- define extra fields and buttons in case of special mode + if ($ENV{'form.catalogmode'} eq 'interactive') { + $hash{'mode_catalog'}='interactive'; + $extrafield='