--- loncom/interface/lonindexer.pm 2001/06/15 19:05:26 1.10 +++ loncom/interface/lonindexer.pm 2002/05/09 23:01:41 1.41 @@ -1,46 +1,101 @@ # 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) +# +# $Id: lonindexer.pm,v 1.41 2002/05/09 23:01:41 www Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# +# 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 -# 05/31/2001 Scott Harrison -# 06/01/2001 Scott Harrison -# 06/02/2001 Scott Harrison -# 06/15/2001 Scott Harrison +# 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,11/29 Scott Harrison +# 11/30 Matthew Hall +# 12/11,12/13 Scott Harrison +# YEAR=2002 +# 1/17 Scott Harrison +# +### + +############################################################################### +## ## +## 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::loncommon(); use Apache::Constants qw(:common); use Apache::File; use GDBM_File; -my %hash; -my %dirs; -my %language; -my $hidden; -my $extrafield; -my $fnum; -sub BEGIN { - my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.'/language.tab'); - map { - $_=~/(\w+)\s+([\w\s\-]+)/; - $language{$1}=$2; - } <$fh>; -} +# ---------------------------------------- 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 + +# ----- Used to include or exclude files with certain extensions. +my @Only = (); +my @Omit = (); + +# ----------------------------- 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; + +# ------------------------------------- read in machine configuration variables my $iconpath= $r->dir_config('lonIconsURL') . "/"; my $domain = $r->dir_config('lonDefDomain'); my $role = $r->dir_config('lonRole'); @@ -50,120 +105,215 @@ sub handler { my $lonhost = $r->dir_config('lonHostID'); my $tabdir = $r->dir_config('lonTabDir'); -# my $iconpath='/res/adm/pages/indexericons/'; my $fileclr='#ffffe6'; -# -------------------------------------- see if called from an interactive mode - map { - my ($name, $value) = split(/=/,$_); - $value =~ tr/+/ /; - $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - if ($name eq 'catalogmode') { - $ENV{'form.'.$name}=$value; - } - } (split(/&/,$ENV{'QUERY_STRING'})); + my $line; + my (@attrchk,@openpath); + my $uri=$r->uri; - $hidden=''; my $closebutton=''; +# -------------------------------------- see if called from an interactive mode + # Get the parameters from the query string + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, + ['catalogmode','launch','acts','mode','form','element', + 'only','omit']); + #------------------------------------------------------------------- + my $closebutton=''; my $groupimportbutton=''; my $colspan=''; - if ($ENV{'form.catalogmode'} eq 'interactive') { - $extrafield='