--- loncom/interface/lonindexer.pm 2000/08/28 21:07:32 1.1
+++ loncom/interface/lonindexer.pm 2001/06/02 16:57:35 1.9
@@ -5,18 +5,41 @@
# 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
+
package Apache::lonindexer;
use strict;
use Apache::lonnet();
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>;
+}
sub handler {
my $r = shift;
$r->content_type('text/html');
$r->send_http_header;
return OK if $r->header_only;
-
+ $fnum=0;
my $iconpath= $r->dir_config('lonIconsURL');
my $domain = $r->dir_config('lonDefDomain');
my $role = $r->dir_config('lonRole');
@@ -26,11 +49,130 @@ 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'}));
+
+ $hidden=''; my $closebutton='';
+ my $groupimportbutton='';
+ my $colspan='';
+ if ($ENV{'form.catalogmode'} eq 'interactive') {
+ $extrafield='
'.
+ ' | ';
+ $colspan=" colspan='2' ";
+ $hidden=<
+END
+ $closebutton=<
+END
+ }
+ elsif ($ENV{'form.catalogmode'} eq 'groupimport') {
+ $extrafield=''.
+ ' | ';
+ $colspan=" colspan='2' ";
+ $hidden=<
+END
+ $closebutton=<
+END
+ $groupimportbutton=<
+END
+ }
+
+ my $catalogmodefunctions='';
+ if ($ENV{'form.catalogmode'} eq 'interactive' or
+ $ENV{'form.catalogmode'} eq 'groupimport') {
+ $catalogmodefunctions=<print(<
-The LearningOnline Network Directory Browser
+The LearningOnline Network With CAPA Directory Browser
+
+
+
ENDHEADER
@@ -38,159 +180,158 @@ ENDHEADER
my $line;
my (@attrchk,@openpath);
my $uri=$r->uri;
- my $iconpath="/res/adm/pages/indexericons/";
- $r->print("The LearningOnline Network Directory Browser
\n");
+ $r->print("The LearningOnline With CAPA Network Directory Browser
\n");
- for (my $i=0; $i<=5; $i++) {
- $attrchk[$i] = "checked" if $ENV{'form.attr'.$i} == 1;
- }
+ my $diropen = "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";
+
+ if (tie(%hash,'GDBM_File',$diropen,&GDBM_WRCREAT,0640)) {
+
+ if ($ENV{'form.attrs'} ne "") {
+ for (my $i=0; $i<=5; $i++) {
+ delete $hash{'display_attrs_'.$i};
+ if ($ENV{'form.attr'.$i} == 1) {
+ $attrchk[$i] = "checked";
+ $hash{'display_attrs_'.$i} = 1;
+ }
+ }
+ } else {
+ for (my $i=0; $i<=5; $i++) {
+ $attrchk[$i] = "checked" if $hash{'display_attrs_'.$i} == 1;
+ }
+ }
$r->print(<Display file attributes
+Display file attributes
END
- my $titleclr="#ddffff";
- my $fileclr="#ffffdd";
+ my $titleclr="#ddffff";
$r->print("\n");
$r->print("\n");
- $r->print("Name | \n");
- $r->print("Size (bytes) | \n") if ($ENV{'form.attr0'} == 1);
- $r->print("Last accessed | \n") if ($ENV{'form.attr1'} == 1);
- $r->print("Last modified | \n") if ($ENV{'form.attr2'} == 1);
+ $r->print("Name | \n");
+ $r->print("Size (bytes) | \n") if ($hash{'display_attrs_0'} == 1);
+ $r->print("Last accessed | \n") if ($hash{'display_attrs_1'} == 1);
+ $r->print("Last modified | \n") if ($hash{'display_attrs_2'} == 1);
+ $r->print("Author(s) | \n") if ($hash{'display_attrs_3'} == 1);
+ $r->print("Keywords | \n") if ($hash{'display_attrs_4'} == 1);
+ $r->print("Language | \n") if ($hash{'display_attrs_5'} == 1);
$r->print(" ");
- if ($ENV{'form.openuri'} =~ /$uri\&/) {
- my @pathcom = split(/\//,$uri);
- pop @pathcom;
- my $splituri = join ('/',@pathcom);
- $uri = join ('',$splituri,"/");
- }
-
+ map {
+ if ($_ =~ /^diropen_status_/) {
+ my $key = $_;
+ $key =~ s/^diropen_status_//;
+ $dirs{$key} = $hash{$_};
+ }
+ } keys %hash;
- my $openuri = $ENV{'form.openuri'};
-# $r->print (" openuri=$openuri ");
- $openuri =~ s/$uri(.*)\&//g;
-# $r->print (" parsed openuri=$openuri ");
- @openpath = split(/\&/,$openuri);
-# $r->print (" open path=@openpath ");
- push @openpath, $uri;
-# $r->print (" append current uri to open path=@openpath ");
- @openpath = sort @openpath;
-# $r->print (" sorted open path=@openpath ");
-
-
- my $indent = -1;
- &display_line ($r,1,"/res/".$domain."&domain");
- &branch ($r,"/res/".$domain."/",$indent,@openpath);
-
- $r->print(" ");
- $r->print(" |
");
- $r->print("