Diff for /loncom/interface/lonindexer.pm between versions 1.24 and 1.30

version 1.24, 2001/11/29 20:31:45 version 1.30, 2001/12/13 13:59:22
Line 39 Line 39
 # 8/6,8/7,8/10 Scott Harrison  # 8/6,8/7,8/10 Scott Harrison
 # 8/14 H. K. Ng  # 8/14 H. K. Ng
 # 8/28,10/15,11/28,11/29 Scott Harrison  # 8/28,10/15,11/28,11/29 Scott Harrison
   # 11/30 Matthew Hall
   # 12/11,12/13 Scott Harrison
 #  #
 ###  ###
   
Line 60  package Apache::lonindexer; Line 62  package Apache::lonindexer;
 # ------------------------------------------------- modules used by this module  # ------------------------------------------------- modules used by this module
 use strict;  use strict;
 use Apache::lonnet();  use Apache::lonnet();
   use Apache::loncommon();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::File;  use Apache::File;
 use GDBM_File;  use GDBM_File;
Line 77  my $dnum; # directory counter Line 80  my $dnum; # directory counter
   
 # ---------------------------------------------------------------------- BEGIN  # ---------------------------------------------------------------------- BEGIN
 sub BEGIN {  sub BEGIN {
     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  # ----------------------------- Handling routine called via Apache and mod_perl
Line 238  ENDHEADER Line 235  ENDHEADER
     my %achash;      my %achash;
     my $ac=0;      my $ac=0;
     # some initial hashes for working with data      # some initial hashes for working with data
     map {      foreach (@Acts) {
  my ($state,$ref)=split(/a/);   my ($state,$ref)=split(/a/);
  $ahash{$ref}=$state;   $ahash{$ref}=$state;
  $achash{$ref}=$ac;   $achash{$ref}=$ac;
  $ac++;   $ac++;
     } (@Acts);      }
     # sorting through the actions and changing the tied database hash      # sorting through the actions and changing the tied database hash
     map {      foreach (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) {
  my $key=$_;   my $key=$_;
  if ($ahash{$key} eq '1') {   if ($ahash{$key} eq '1') {
     $hash{'store_'.$hash{'pre_'.$key.'_link'}}=      $hash{'store_'.$hash{'pre_'.$key.'_link'}}=
Line 259  ENDHEADER Line 256  ENDHEADER
  delete $hash{'store_'.$hash{'pre_'.$key.'_link'}};   delete $hash{'store_'.$hash{'pre_'.$key.'_link'}};
     }      }
  }   }
     } sort {$achash{$a}<=>$achash{$b}} (keys %ahash);      }
     # deleting the previously cached listing      # deleting the previously cached listing
     map {      foreach (keys %hash) {
  if ($_ =~ /^pre_/ && $_ =~/link$/) {   if ($_ =~ /^pre_/ && $_ =~/link$/) {
     my $key = $_;      my $key = $_;
     $key =~ s/^pre_//;      $key =~ s/^pre_//;
Line 269  ENDHEADER Line 266  ENDHEADER
     delete $hash{'pre_'.$key.'_title'};      delete $hash{'pre_'.$key.'_title'};
     delete $hash{'pre_'.$key.'_link'};      delete $hash{'pre_'.$key.'_link'};
  }   }
     } keys %hash;      }
  }   }
   
 # ---------------------------------------------------------------- output title  # ---------------------------------------------------------------- output title
Line 334  END Line 331  END
  $r->print("</tr>");   $r->print("</tr>");
   
 # ----------------- read in what directories have previously been set to "open"  # ----------------- read in what directories have previously been set to "open"
  map {   foreach (keys %hash) {
     if ($_ =~ /^diropen_status_/) {      if ($_ =~ /^diropen_status_/) {
  my $key = $_;   my $key = $_;
  $key =~ s/^diropen_status_//;   $key =~ s/^diropen_status_//;
  $dirs{$key} = $hash{$_};   $dirs{$key} = $hash{$_};
     }      }
  } keys %hash;   }
   
  if ($ENV{'form.openuri'}) {  # take care of review and refresh options   if ($ENV{'form.openuri'}) {  # take care of review and refresh options
     my $uri=$ENV{'form.openuri'};      my $uri=$ENV{'form.openuri'};
Line 456  sub get_list { Line 453  sub get_list {
     $luri =~ s/\//_/g;      $luri =~ s/\//_/g;
   
     if ($ENV{'form.attrs'} eq "Refresh") {      if ($ENV{'form.attrs'} eq "Refresh") {
  map {   foreach (keys %hash) {
     delete $hash{$_} if ($_ =~ /^dirlist_files_/);      delete $hash{$_} if ($_ =~ /^dirlist_files_/);
     } keys %hash;      }
     }      }
   
     if ($hash{'dirlist_files'.$luri}) {      if ($hash{'dirlist_files'.$luri}) {
Line 478  sub match_ext { Line 475  sub match_ext {
     my @fileext;      my @fileext;
     my $dirptr=16384;      my $dirptr=16384;
   
     my $tabdir  = $r->dir_config('lonTabDir');  
     my $fn = $tabdir.'/filetypes.tab';  
     if (-e $fn) {  
  my $FH=Apache::File->new($fn);  
  my @content=<$FH>;  
  foreach my $line (@content) {  
     (my $ext,my $foo) = split /\s+/,$line;  
     push @fileext,$ext;  
  }  
     }  
     foreach my $line (@packlist) {      foreach my $line (@packlist) {
  chomp $line;   chomp $line;
  $line =~ s/^\/home\/httpd\/html//;   $line =~ s/^\/home\/httpd\/html//;
Line 498  sub match_ext { Line 485  sub match_ext {
  my $fext = pop(@filecom);   my $fext = pop(@filecom);
  my $fnptr = $unpackline[3]&$dirptr;   my $fnptr = $unpackline[3]&$dirptr;
   if ($fnptr == 0 and $unpackline[3] ne "") {    if ($fnptr == 0 and $unpackline[3] ne "") {
     foreach my $nextline (@fileext) {      my $embstyle = &Apache::loncommon::fileembstyle($fext);
  push @trimlist,$line if $nextline eq $fext;              push @trimlist,$line if (defined($embstyle) && 
     }       $embstyle ne 'hdn' );
  } else {   } else {
     push @trimlist,$line;      push @trimlist,$line;
  }   }
Line 600  sub display_line { Line 587  sub display_line {
 # display file  # display file
     if ($fnptr == 0 and $filecom[3] ne "") {      if ($fnptr == 0 and $filecom[3] ne "") {
  my @file_ext = split (/\./,$listname);   my @file_ext = split (/\./,$listname);
  my $curfext = $file_ext[scalar(@file_ext)-1];   my $curfext = $file_ext[-1];
    # Set the icon for the file
    my $iconname = "unknown.gif";
    my $embstyle = &Apache::loncommon::fileembstyle($curfext);
    # The unless conditional that follows is a bit of overkill
    $iconname = $curfext.".gif" unless
       (!defined($embstyle) || $embstyle eq 'unk' || $embstyle eq 'hdn');
    #
  my $filelink = $startdir.$filecom[0];   my $filelink = $startdir.$filecom[0];
  $r->print("<tr><td nowrap valign='bottom' bgcolor=$fileclr>");   $r->print("<tr><td nowrap valign='bottom' bgcolor=$fileclr>");
  my $metafile = grep /^$filecom[0]\.meta\&/, @list;   my $metafile = grep /^$filecom[0]\.meta\&/, @list;
Line 654  sub display_line { Line 648  sub display_line {
       ".gif border='0' />\n") if $rem > 0;        ".gif border='0' />\n") if $rem > 0;
  }   }
   
  $r->print("<img src=$iconpath$curfext.gif border='0' />\n");   $r->print("<img src=$iconpath$iconname border='0' />\n");
  $r->print (" <a href=\"javascript:openWindow('".$filelink.   $r->print (" <a href=\"javascript:openWindow('".$filelink.
    "', 'metadatafile', '450', '500', 'no', 'yes')\";".     "', 'metadatafile', '450', '500', 'no', 'yes')\";".
    " TARGET=_self>$listname</a> ");     " TARGET=_self>$listname</a> ");
Line 691  sub display_line { Line 685  sub display_line {
  if ($hash{'display_attrs_5'} == 1) {   if ($hash{'display_attrs_5'} == 1) {
     my $lang = &Apache::lonnet::metadata($filelink,'language')      my $lang = &Apache::lonnet::metadata($filelink,'language')
  if ($metafile == 1);   if ($metafile == 1);
     $lang = $language{$lang};      $lang = &Apache::loncommon::languagedescription($lang);
     $lang = '&nbsp;' if (!$lang);      $lang = '&nbsp;' if (!$lang);
     $r->print("<td bgcolor=$fileclr valign=bottom> ".$lang.      $r->print("<td bgcolor=$fileclr valign=bottom> ".$lang.
       " </td>\n");        " </td>\n");
Line 755  sub begin_form { Line 749  sub begin_form {
   
 # ----------- grab unprocessed CGI variables that may have been appended to URL  # ----------- grab unprocessed CGI variables that may have been appended to URL
 sub get_unprocessed_cgi {  sub get_unprocessed_cgi {
     map {      foreach (split(/&/,$ENV{'QUERY_STRING'})) {
        my ($name, $value) = split(/=/,$_);         my ($name, $value) = split(/=/,$_);
        $value =~ tr/+/ /;         $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;         $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
        if ($name eq 'catalogmode' or $name eq 'launch' or $name eq 'acts') {         if ($name eq 'catalogmode' or $name eq 'launch' or $name eq 'acts') {
            $ENV{'form.'.$name}=$value;             $ENV{'form.'.$name}=$value;
        }         }
     } (split(/&/,$ENV{'QUERY_STRING'}));      }
 }  }
   
 # --------- settings whenever the user causes the indexer window to be launched  # --------- settings whenever the user causes the indexer window to be launched
 sub start_fresh_session {  sub start_fresh_session {
     delete $hash{'mode_catalog'};      delete $hash{'mode_catalog'};
     map {      foreach (keys %hash) {
  if ($_ =~ /^pre_/) {   if ($_ =~ /^pre_/) {
     delete $hash{$_};      delete $hash{$_};
  }   }
  if ($_ =~ /^store/) {   if ($_ =~ /^store/) {
     delete $hash{$_};      delete $hash{$_};
  }   }
     } keys %hash;          }
 }  }
   
 1;  1;

Removed from v.1.24  
changed lines
  Added in v.1.30


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>