Diff for /loncom/homework/Attic/lonindexer.pm between versions 1.3 and 1.4

version 1.3, 2000/08/03 21:19:44 version 1.4, 2000/08/04 19:24:12
Line 3 Line 3
 # (Login Screen  # (Login Screen
 # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14 Gerd Kortemeyer)  # 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  # 11/23 Gerd Kortemeyer
   # 07/20-08/04 H.K. Ng
 #  #
 package Apache::lonindexer;  package Apache::lonindexer;
   
Line 40  ENDHEADER Line 41  ENDHEADER
     my $iconpath="/res/adm/pages/indexericons/";      my $iconpath="/res/adm/pages/indexericons/";
   
     $r->print("<h2>The LearningOnline Network Directory Browser</h2>\n");      $r->print("<h2>The LearningOnline Network Directory Browser</h2>\n");
 #    $r->print("<hr>Current uri=$uri<br>called uri=$ENV{'form.openuri'}<br>domain=$domain<hr>");  
   
     for (my $i=0; $i<=5; $i++) {      for (my $i=0; $i<=5; $i++) {
  $attrchk[$i] = "checked" if $ENV{'form.attr'.$i} == 1;   $attrchk[$i] = "checked" if $ENV{'form.attr'.$i} == 1;
Line 59  ENDHEADER Line 59  ENDHEADER
 </tr></table>  </tr></table>
 <input type=hidden name=openuri value="$ENV{'form.openuri'}">  <input type=hidden name=openuri value="$ENV{'form.openuri'}">
 <input type="submit" name="dirlistattr" value="Review">  <input type="submit" name="dirlistattr" value="Review">
   <input type="submit" name="dirlistattr" value="Refresh">
 </form>  </form>
 END  END
     my $titleclr="#ddffff";      my $titleclr="#ddffff";
Line 72  END Line 73  END
     $r->print("<td bgcolor=$titleclr><b>Last modified</b></td>\n") if ($ENV{'form.attr2'} == 1);      $r->print("<td bgcolor=$titleclr><b>Last modified</b></td>\n") if ($ENV{'form.attr2'} == 1);
     $r->print("</tr>");      $r->print("</tr>");
   
     if ($ENV{'dirlist.level'} eq "") {  
  my %dirlevel;  
  $dirlevel{'dirlist.level'}='-2';  
  &Apache::lonnet::appenv(%dirlevel);  
     } else {  
  $ENV{'dirlist.level'}='-2';  
     }  
     if ($ENV{'form.openuri'} =~ /$uri\&/) {      if ($ENV{'form.openuri'} =~ /$uri\&/) {
  my @pathcom = split(/\//,$uri);   my @pathcom = split(/\//,$uri);
  pop @pathcom;   pop @pathcom;
  my $splituri = join ('/',@pathcom);   my $splituri = join ('/',@pathcom);
  $uri = join ('',$splituri,"/");   $uri = join ('',$splituri,"/");
     }      }
   
   
       my $openuri = $ENV{'form.openuri'};
   #    $r->print ("<hr>openuri=$openuri<br>");
       $openuri =~ s/$uri(.*)\&//g;
   #    $r->print ("<hr>parsed openuri=$openuri<br>");
       @openpath = split(/\&/,$openuri);
   #    $r->print ("<hr>open path=@openpath<br>");
       push @openpath, $uri;
   #    $r->print ("<hr>append current uri to open path=@openpath<br>");
       @openpath = sort @openpath;
   #    $r->print ("<hr>sorted open path=@openpath<br>");
   
   
       my $indent = -1;
     &display_line ($r,1,"/res/".$domain."&domain");      &display_line ($r,1,"/res/".$domain."&domain");
 #    $domain="/res/".$domain."/";      &branch ($r,"/res/".$domain."/",$indent,@openpath);
     &branch($r,"/res/".$domain."/",$uri);  
   
     $r->print("</table>");      $r->print("</table>");
     $r->print("</td></tr></table>");      $r->print("</td></tr></table>");
Line 101  END Line 109  END
 #    print "Dir list<br>".join('<br>',@packlist)."<br>";      #    print "Dir list<br>".join('<br>',@packlist)."<br>";    
   
 sub branch {  sub branch {
     my ($r,$uri,$calluri)=@_;      my ($r,$uri,$indent,@openuri)=@_;
     my ($line,@list);      my ($calluri,$line,@list);
     my ($domusr,$foo,$strip,$testdir,$compuri,$chkdir,$diropen);      my ($domusr,$foo,$strip,$testdir,$compuri,$chkdir,$diropen);
     my $dirptr=16384;      my $dirptr=16384;
     $ENV{'dirlist.level'}++;      $indent++;
   
     @list=&get_list($r,$uri);      foreach $calluri (@openuri) {
     foreach $line (@list) {   @list=&get_list($r,$uri);
  chomp $line;   foreach $line (@list) {
       chomp $line;
  ($strip,$domusr,$foo,$testdir,$foo)=split(/\&/,$line,5);  
  $compuri=join("",$strip,"/");  
  $chkdir=$testdir&$dirptr;  
  if ($domusr eq "domain" or $domusr eq "user") {  
     $chkdir = $dirptr;  
     $testdir = $dirptr;  
  }  
  $diropen = 0;  
  $diropen = 1 if ($compuri eq $calluri);  
  &display_line($r,$diropen,$line);  
   
  &branch($r,$compuri,$calluri) if ($calluri =~ $compuri and $calluri=~/^$uri/ and $chkdir == $dirptr and $testdir ne "");      ($strip,$domusr,$foo,$testdir,$foo)=split(/\&/,$line,5);
       $compuri=join("",$strip,"/");
       $chkdir=$testdir&$dirptr;
       if ($domusr eq "domain" or $domusr eq "user") {
    $chkdir = $dirptr;
    $testdir = $dirptr;
       }
       $diropen = 0;
       $diropen = 1 if ($compuri eq $calluri);
       &display_line($r,$diropen,$line,$indent);
   
       my @securi;
       push @securi,$calluri;
       &branch($r,$compuri,$indent,@securi) if ($calluri =~ $compuri and $calluri=~/^$uri/ and $chkdir == $dirptr and $testdir ne "");
    }
     }      }
     $ENV{'dirlist.level'}--;      $indent--;
 }  }
   
 # ------ get complete list based on the uri ------  # ------ get complete list based on the uri ------
Line 133  sub get_list { Line 145  sub get_list {
     my @list;      my @list;
     my $luri=$uri;      my $luri=$uri;
     $luri=~s/\//_/g;      $luri=~s/\//_/g;
       unlink "/home/httpd/perl/tmp/$ENV{'user.name'}_dirlist*.tmp" if ($ENV{'form.dirlistattr'} eq "Refresh");
     my $dirlist = "/home/httpd/perl/tmp/$ENV{'user.name'}_dirlist$luri.tmp";      my $dirlist = "/home/httpd/perl/tmp/$ENV{'user.name'}_dirlist$luri.tmp";
     if (-e $dirlist) {      if (-e $dirlist) {
  my $FH = Apache::File->new($dirlist);   my $FH = Apache::File->new($dirlist);
Line 214  sub match_ext { Line 227  sub match_ext {
 }  }
   
 sub display_line{  sub display_line{
     my ($r,$diropen,$line)=@_;      my ($r,$diropen,$line,$indent)=@_;
     my (@pathfn, $fndir, $fnptr);      my (@pathfn, $fndir, $fnptr);
     my $dirptr=16384;      my $dirptr=16384;
     my $fileclr="#ffffe6";      my $fileclr="#ffffe6";
Line 224  sub display_line{ Line 237  sub display_line{
     my @pathcom = split (/\//,$filecom[0]);      my @pathcom = split (/\//,$filecom[0]);
     my $listname = $pathcom[scalar(@pathcom)-1];      my $listname = $pathcom[scalar(@pathcom)-1];
     my $fnptr = $filecom[3]&$dirptr;      my $fnptr = $filecom[3]&$dirptr;
     my $indent = $ENV{'dirlist.level'};  
   
     my $tabtag="</td>";      my $tabtag="</td>";
     my $nextline;      my $nextline;
Line 252  sub display_line{ Line 264  sub display_line{
  $r->print("<td bgcolor=$fileclr valign=bottom>\n");   $r->print("<td bgcolor=$fileclr valign=bottom>\n");
  &begin_form ($r,$filecom[0]);   &begin_form ($r,$filecom[0]);
  my $count = 0;   my $count = 0;
  while ($count <= $ENV{'dirlist.level'}) {   while ($count <= $indent) {
     $r->print("<img src=",$iconpath,"white_space_20_22.gif border=0>\n");      $r->print("<img src=",$iconpath,"white_space_20_22.gif border=0>\n");
     $count++;      $count++;
  }   }
  $r->print ("<input src=\"$iconpath");   $r->print ("<input src=\"$iconpath");
  $r->print ("right.gif\"") if $diropen == 0;   $r->print ("folder_pointer_closed.gif\"") if $diropen == 0;
  $r->print ("down.gif\"") if $diropen == 1;   $r->print ("folder_pointer_opened.gif\"") if $diropen == 1;
  $r->print (" name=\"submit\" height=\"22\" type=\"image\" border=\"0\">\n");   $r->print (" name=\"submit\" height=\"22\" type=\"image\" border=\"0\">\n");
  $r->print("<img src=",$iconpath,"quill.gif border=0>\n");   $r->print("<img src=",$iconpath,"quill.gif border=0>\n");
  $r->print("$listname $tabtag</tr></form>\n");   $r->print("$listname $tabtag</tr></form>\n");
Line 271  sub display_line{ Line 283  sub display_line{
  my $curfext = $file_ext[scalar(@file_ext)-1];   my $curfext = $file_ext[scalar(@file_ext)-1];
  my $count = 0;   my $count = 0;
  $r->print("<tr><td bgcolor=$fileclr>");   $r->print("<tr><td bgcolor=$fileclr>");
  while ($count <= $ENV{'dirlist.level'}) {   while ($count <= $indent) {
     $r->print("<img src=",$iconpath,"white_space_20_22.gif border=0>\n");      $r->print("<img src=",$iconpath,"white_space_20_22.gif border=0>\n");
     $count++;      $count++;
  }   }
Line 292  sub display_line{ Line 304  sub display_line{
  &begin_form ($r,$filecom[0]);   &begin_form ($r,$filecom[0]);
   
  my $count = 0;   my $count = 0;
  while ($count <= $ENV{'dirlist.level'}) {   while ($count <= $indent) {
     $r->print("<img src=",$iconpath,"white_space_20_22.gif border=0>\n");      $r->print("<img src=",$iconpath,"white_space_20_22.gif border=0>\n");
     $count++;      $count++;
  }   }
   
  $r->print ("<input src=\"$iconpath");   $r->print ("<input src=\"$iconpath");
  $r->print ("right.gif\"") if $diropen == 0;   $r->print ("folder_pointer_closed.gif\"") if $diropen == 0;
  $r->print ("down.gif\"") if $diropen == 1;   $r->print ("folder_pointer_opened.gif\"") if $diropen == 1;
  $r->print (" name=\"submit\" height=\"22\" type=\"image\" border=\"0\">\n");   $r->print (" name=\"submit\" height=\"22\" type=\"image\" border=\"0\">\n");
  $r->print("<img src=",$iconpath,"folder.gif border=0>\n") if $diropen == 0;   $r->print("<img src=",$iconpath,"folder_closed.gif border=0>\n") if $diropen == 0;
  $r->print("<img src=",$iconpath,"folder.open.gif border=0>\n") if $diropen == 1;   $r->print("<img src=",$iconpath,"folder_opened.gif border=0>\n") if $diropen == 1;
  $r->print("$listname $tabtag</tr></form>\n");   $r->print("$listname $tabtag</tr></form>\n");
     }      }
 }  }
Line 311  sub begin_form { Line 323  sub begin_form {
     my ($r,$uri) = @_;      my ($r,$uri) = @_;
     my $currenturi = $r->uri;      my $currenturi = $r->uri;
     my $openuri = $ENV{'form.openuri'};      my $openuri = $ENV{'form.openuri'};
     if ($ENV{'form.openuri'} =~ /$currenturi\&/) {      if ($ENV{'form.openuri'} =~ /$currenturi(.*)\&/) {
  $openuri =~ s/$currenturi\&//;   $openuri =~ s/$currenturi(.*)\&//g;
     } else {      } else {
  $currenturi = join ('',$currenturi,"&");   $currenturi = join ('',$currenturi,"&");
  $openuri = join ('&',$ENV{'form.openuri'},$currenturi);   $openuri = join ('&',$ENV{'form.openuri'},$currenturi);
Line 342  sub display_env { Line 354  sub display_env {
   
 1;  1;
 __END__  __END__
   
   
   
   

Removed from v.1.3  
changed lines
  Added in v.1.4


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