--- loncom/interface/lonindexer.pm 2001/06/21 20:57:12 1.11 +++ loncom/interface/lonindexer.pm 2004/06/12 04:44:31 1.110 @@ -1,46 +1,93 @@ # 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) -# 11/23 Gerd Kortemeyer -# 07/20-08/04 H.K. Ng -# -# 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 +# +# $Id: lonindexer.pm,v 1.110 2004/06/12 04:44:31 albertel 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/ +# +### + +############################################################################### +## ## +## 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::lonhtmlcommon(); +use Apache::lonsequence(); use Apache::Constants qw(:common); +use Apache::lonmeta; use Apache::File; +use Apache::lonlocal; +use Apache::lonsource(); 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; # global 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'); + my $c = $r->connection(); + &Apache::loncommon::content_type($r,'text/html'); + &Apache::loncommon::no_cache($r); $r->send_http_header; return OK if $r->header_only; $fnum=0; + $dnum=0; + + # Deal with stupid global variables (is there a way around making + # these global to this package? It is just so wrong....) + undef (@Only); + undef (@Omit); + +# ------------------------------------- read in machine configuration variables my $iconpath= $r->dir_config('lonIconsURL') . "/"; my $domain = $r->dir_config('lonDefDomain'); my $role = $r->dir_config('lonRole'); @@ -51,194 +98,434 @@ sub handler { my $tabdir = $r->dir_config('lonTabDir'); 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','titleelement']); + #------------------------------------------------------------------- + my $closebutton=''; my $groupimportbutton=''; my $colspan=''; - if ($ENV{'form.catalogmode'} eq 'interactive') { - $extrafield='