--- loncom/interface/lonindexer.pm 2000/08/28 21:07:32 1.1 +++ loncom/interface/lonindexer.pm 2001/10/16 17:04:31 1.21 @@ -1,23 +1,61 @@ # 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 Scott Harrison + package Apache::lonindexer; use strict; use Apache::lonnet(); use Apache::Constants qw(:common); +use Apache::File; +use GDBM_File; +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'); + map { + $_=~/(\w+)\s+([\w\s\-]+)/; + $language{$1}=$2; + } <$fh>; +} + +# ---------------------------------------------------------------- Main Handler sub handler { my $r = shift; $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; + $fnum=0; + $dnum=0; - my $iconpath= $r->dir_config('lonIconsURL'); +# --------------------------------------------- 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'); @@ -26,254 +64,496 @@ 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='