Diff for /loncom/interface/lonindexer.pm between versions 1.115 and 1.129

version 1.115, 2004/06/18 01:09:24 version 1.129, 2005/02/17 08:29:42
Line 60  my %hash; # global user-specific gdbm fi Line 60  my %hash; # global user-specific gdbm fi
 my %dirs; # keys are directories, values are the open/close status  my %dirs; # keys are directories, values are the open/close status
 my %language; # has the reference information present in language.tab  my %language; # has the reference information present in language.tab
 my %dynhash; # hash of hashes for dynamic metadata  my %dynhash; # hash of hashes for dynamic metadata
   my %dynread; # hash of directories already read for dynamic metadata
 my %fieldnames; # Metadata fieldnames  my %fieldnames; # Metadata fieldnames
 # ----- Values which are set by the handler subroutine and are accessible to  # ----- Values which are set by the handler subroutine and are accessible to
 # -----     other methods.  # -----     other methods.
Line 72  my @Only = (); Line 73  my @Only = ();
 my @Omit = ();  my @Omit = ();
   
   
   
   
 # ----------------------------- Handling routine called via Apache and mod_perl  # ----------------------------- Handling routine called via Apache and mod_perl
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 135  sub handler { Line 138  sub handler {
    if ($ENV{'form.launch'} eq '2') {     if ($ENV{'form.launch'} eq '2') {
        $r->content_type('text/html');         $r->content_type('text/html');
        my $extra='';         my $extra='';
        if (defined($ENV{'form.titleelement'})) {         if (defined($ENV{'form.titleelement'}) && 
      $ENV{'form.titleelement'} ne '') {
    my $verify_title = &Apache::lonnet::gettitle($ENV{'form.acts'});     my $verify_title = &Apache::lonnet::gettitle($ENV{'form.acts'});
 #   &Apache::lonnet::logthis("Hrrm $ENV{'form.acts'} -- $verify_title");  #   &Apache::lonnet::logthis("Hrrm $ENV{'form.acts'} -- $verify_title");
    $verify_title=~s/'/\\'/g;     $verify_title=~s/'/\\'/g;
    $extra='window.opener.document.forms["'.$ENV{'form.form'}.'"].elements["'.$ENV{'form.titleelement'}.'"].value=\''.$verify_title.'\';';     $extra='window.opener.document.forms["'.$ENV{'form.form'}.'"].elements["'.$ENV{'form.titleelement'}.'"].value=\''.$verify_title.'\';';
        }         }
          my $html=&Apache::lonxml::xmlbegin();
        $r->print(<<ENDSUBM);         $r->print(<<ENDSUBM);
  <html>     $html
  <script type="text/javascript">       <!-- Generated by lonindexer.pm -->
        <head>
          <script type="text/javascript">
  function load() {   function load() {
  window.opener.document.forms["$ENV{'form.form'}"].elements["$ENV{'form.element'}"].value='$ENV{'form.acts'}';   window.opener.document.forms["$ENV{'form.form'}"]
       .elements["$ENV{'form.element'}"]
       .value='$ENV{'form.acts'}';
  $extra   $extra
  window.close();   window.close();
  }   }
     </script>            </script>
     <body onLoad=load();>       </head>
       <body onLoad="load();">
       </body>        </body>
     </html>      </html>
 ENDSUBM  ENDSUBM
Line 177  END Line 187  END
  ' border="0" /></td>';   ' border="0" /></td>';
     $colspan=" colspan='2' ";      $colspan=" colspan='2' ";
     my $cl=&mt('Close');      my $cl=&mt('Close');
             my $gi=&mt('Group Import');              my $gi=&mt('Import');
             $closebutton=<<END;              $closebutton=<<END;
 <input type="button" name="close" value='$cl' onClick="self.close()">  <input type="button" name="close" value='$cl' onClick="self.close()">
 END  END
Line 337  END Line 347  END
  }   }
   
 # ---------------------------------------------------------------- Print Header  # ---------------------------------------------------------------- Print Header
    my $html=&Apache::lonxml::xmlbegin();
  $r->print(<<ENDHEADER);   $r->print(<<ENDHEADER);
 <html>  $html
 <head>  <head>
 <title>The LearningOnline Network With CAPA Directory Browser</title>  <title>The LearningOnline Network With CAPA Directory Browser</title>
   
   <!-- Generated by lonindexer.pm -->
   
 <script type="text/javascript">  <script type="text/javascript">
 $catalogmodefunctions  $catalogmodefunctions
 function openWindow(url, wdwName, w, h, toolbar,scrollbar,locationbar) {  function openWindow(url, wdwName, w, h, toolbar,scrollbar,locationbar) {
Line 443  $r->print(&Apache::loncommon::bodytag('B Line 456  $r->print(&Apache::loncommon::bodytag('B
  $r->print(<<END);   $r->print(<<END);
 <form method="post" name="fileattr" action="$uri"  <form method="post" name="fileattr" action="$uri"
  enctype="application/x-www-form-urlencoded">   enctype="application/x-www-form-urlencoded">
 <input type="checkbox" name="attr9" value="1" $attrchk[9] onClick="this.form.submit();" /> $lt{'av'}  <label><input type="checkbox" name="attr9" value="1" $attrchk[9] onClick="this.form.submit();" /> $lt{'av'}</label>
 <table border="0">  <table border="0">
 <tr>  <tr>
 <td><input type="checkbox" name="attr0" value="1" $attrchk[0] onClick="this.form.submit();" /> $lt{'ti'}</td>  <td><label><input type="checkbox" name="attr0" value="1" $attrchk[0] onClick="this.form.submit();" /> $lt{'ti'}</label></td>
 <td><input type="checkbox" name="attr4" value="1" $attrchk[4] onClick="this.form.submit();" /> $lt{'au'}</td>  <td><label><input type="checkbox" name="attr4" value="1" $attrchk[4] onClick="this.form.submit();" /> $lt{'au'}</label></td>
 <td><input type="checkbox" name="attr5" value="1" $attrchk[5] onClick="this.form.submit();" /> $lt{'kw'}</td>  <td><label><input type="checkbox" name="attr5" value="1" $attrchk[5] onClick="this.form.submit();" /> $lt{'kw'}</label></td>
 <td><input type="checkbox" name="attr6" value="1" $attrchk[6] onClick="this.form.submit();" /> $lt{'ln'}</td>  <td><label><input type="checkbox" name="attr6" value="1" $attrchk[6] onClick="this.form.submit();" /> $lt{'ln'}</label></td>
 </tr>  </tr>
 <tr>  <tr>
 <td><input type="checkbox" name="attr1" value="1" $attrchk[1] onClick="this.form.submit();" /> $lt{'si'}</td>  <td><label><input type="checkbox" name="attr1" value="1" $attrchk[1] onClick="this.form.submit();" /> $lt{'si'}</label></td>
 <td><input type="checkbox" name="attr2" value="1" $attrchk[2] onClick="this.form.submit();" /> $lt{'la'}</td>  <td><label><input type="checkbox" name="attr2" value="1" $attrchk[2] onClick="this.form.submit();" /> $lt{'la'}</label></td>
 <td><input type="checkbox" name="attr3" value="1" $attrchk[3] onClick="this.form.submit();" /> $lt{'lm'}</td>  <td><label><input type="checkbox" name="attr3" value="1" $attrchk[3] onClick="this.form.submit();" /> $lt{'lm'}</label></td>
 <td><input type="checkbox" name="attr10" value="1" $attrchk[10] onClick="this.form.submit();" /> $lt{'sa'}</td>  <td><label><input type="checkbox" name="attr10" value="1" $attrchk[10] onClick="this.form.submit();" /> $lt{'sa'}</label></td>
 </tr>  </tr>
 <tr>  <tr>
 <td><input type="checkbox" name="attr8" value="1" $attrchk[8] onClick="this.form.submit();" /> $lt{'st'}</td>  <td><label><input type="checkbox" name="attr8" value="1" $attrchk[8] onClick="this.form.submit();" /> $lt{'st'}</label></td>
 <td><input type="checkbox" name="attr11" value="1" $attrchk[11] onClick="this.form.submit();" /> $lt{'li'}</td>  <td><label><input type="checkbox" name="attr11" value="1" $attrchk[11] onClick="this.form.submit();" /> $lt{'li'}</label></td>
 <td><input type="checkbox" name="attr7" value="1" $attrchk[7] onClick="this.form.submit();" /> $lt{'sr'}</td>  <td><label><input type="checkbox" name="attr7" value="1" $attrchk[7] onClick="this.form.submit();" /> $lt{'sr'}</label></td>
 <td>&nbsp;</td>  <td>&nbsp;</td>
 </tr>  </tr>
 </table>  </table>
Line 478  END Line 491  END
  (($ENV{'form.catalogmode'} eq 'groupimport')?   (($ENV{'form.catalogmode'} eq 'groupimport')?
  'document.forms.fileattr':'')).   'document.forms.fileattr':'')).
   &Apache::lonhtmlcommon::select_recent('residx','resrecent',    &Apache::lonhtmlcommon::select_recent('residx','resrecent',
 'this.form.action=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.submit();'));  'window.status=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.action=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.submit();'));
 # -------------------------------------------------------- Resource Home Button  # -------------------------------------------------------- Resource Home Button
  my $reshome=$ENV{'course.'.$ENV{'request.course.id'}.'.reshome'};   my $reshome=$ENV{'course.'.$ENV{'request.course.id'}.'.reshome'};
  if ($reshome) {   if ($reshome) {
Line 496  END Line 509  END
  &Apache::lonhtmlcommon::store_recent('residx',$storeuri,$storeuri);   &Apache::lonhtmlcommon::store_recent('residx',$storeuri,$storeuri);
 # ----------------- output starting row to the indexed file/directory hierarchy  # ----------------- output starting row to the indexed file/directory hierarchy
         my $titleclr="#ddffff";          my $titleclr="#ddffff";
 #        $r->print(&initdebug());          #$r->print(&initdebug());
 #        $r->print(&writedebug("Omit:@Omit")) if (@Omit);          #$r->print(&writedebug("Omit:@Omit")) if (@Omit);
 #        $r->print(&writedebug("Only:@Only")) if (@Only);          #$r->print(&writedebug("Only:@Only")) if (@Only);
         $r->print("<table width='100\%' border=0><tr><td bgcolor=#777777>\n");          $r->print('<table width="100%" border="0"><tr><td bgcolor="#777777">'."\n");
  $r->print("<table width='100\%' border=0><tr bgcolor=$titleclr>\n");   $r->print('<table width="100%" border="0"><tr bgcolor="'.$titleclr.'">'."\n");
  $r->print("<td $colspan><b>".&mt('Name')."</b></td>\n");   $r->print("<td $colspan><b>".&mt('Name')."</b></td>\n");
  $r->print("<td><b>".&mt('Title')."</b></td>\n")    $r->print("<td><b>".&mt('Title')."</b></td>\n") 
     if ($hash{'display_attrs_0'} == 1);      if ($hash{'display_attrs_0'} == 1);
Line 517  END Line 530  END
  $r->print("<td><b>".&mt("Language")."</b></td>\n")   $r->print("<td><b>".&mt("Language")."</b></td>\n")
     if ($hash{'display_attrs_6'} == 1);      if ($hash{'display_attrs_6'} == 1);
  $r->print("<td><b>".&mt("Usage Statistics")." <br />(".   $r->print("<td><b>".&mt("Usage Statistics")." <br />(".
   &mt("Courses/Network Hits").")</b></td>\n")    &mt("Courses/Network Hits").")</b> ".&mt('updated periodically')."</td>\n")
     if ($hash{'display_attrs_8'} == 1);      if ($hash{'display_attrs_8'} == 1);
  $r->print("<td><b>".&mt("Source Available")."</b></td>\n")   $r->print("<td><b>".&mt("Source Available")."</b></td>\n")
     if ($hash{'display_attrs_10'} == 1);      if ($hash{'display_attrs_10'} == 1);
Line 660  sub get_list { Line 673  sub get_list {
     if ($ENV{'form.updatedisplay'}) {      if ($ENV{'form.updatedisplay'}) {
  foreach (keys %hash) {   foreach (keys %hash) {
     delete $hash{$_} if ($_ =~ /^dirlist_files_/);      delete $hash{$_} if ($_ =~ /^dirlist_files_/);
       delete $hash{$_} if ($_ =~ /^dirlist_timestamp_files_/);
  }   }
     }      }
   
     if ($hash{'dirlist_files_'.$luri}) {      if (defined($hash{'dirlist_files_'.$luri}) &&
    $hash{'dirlist_timestamp_files_'.$luri}+600 > (time)) {
  @list = split(/\n/,$hash{'dirlist_files_'.$luri});   @list = split(/\n/,$hash{'dirlist_files_'.$luri});
     } elsif ($uri=~/\.(page|sequence)\/$/) {      } elsif ($uri=~/\.(page|sequence)\/$/) {
 # is a page or a sequence  # is a page or a sequence
Line 679  sub get_list { Line 694  sub get_list {
 # is really a directory  # is really a directory
  @list = &Apache::lonnet::dirlist($uri);   @list = &Apache::lonnet::dirlist($uri);
  $hash{'dirlist_files_'.$luri} = join("\n",@list);   $hash{'dirlist_files_'.$luri} = join("\n",@list);
  &dynmetaread($uri);   $hash{'dirlist_timestamp_files_'.$luri} = time;
     }      }
     return @list=&match_ext($r,@list);      return @list=&match_ext($r,@list);
 }  }
Line 687  sub get_list { Line 702  sub get_list {
 sub dynmetaread {  sub dynmetaread {
     my $uri=shift;      my $uri=shift;
     if (($hash{'display_attrs_8'}==1) || ($hash{'display_attrs_11'}==1)) {      if (($hash{'display_attrs_8'}==1) || ($hash{'display_attrs_11'}==1)) {
   # We don't want the filename
    $uri=~s/\/[^\/]+$//;
   # Did we already see this?
    my $builddir=$uri;
    while ($builddir) {
       if ($dynread{$builddir}) {
    return 0;
       }
       $builddir=~s/\/[^\/]+$//;
    }
   # Actually get the data
  %dynhash=   %dynhash=
     (%dynhash,&Apache::lonmeta::get_dynamic_metadata_from_sql($uri));      (%dynhash,&Apache::lonmeta::get_dynamic_metadata_from_sql($uri));
   # Remember that we got it
    $dynread{$uri}=1;
     }       } 
 }  }
   
 sub initdebug {  sub initdebug {
       my $html=&Apache::lonxml::xmlbegin();
     return <<ENDJS;      return <<ENDJS;
 <script>  <script>
 var debugging = true;  var debugging = true;
Line 705  function output(text) { Line 734  function output(text) {
         debuggingWindow.document.writeln(text);          debuggingWindow.document.writeln(text);
     }      }
 }  }
 output("<html><head><title>Debugging Window</title></head><body><pre>");     output('$html<head><title>Debugging Window</title><!-- for lonindexer.pm --></head><body><pre>');   
 </script>  </script>
 ENDJS  ENDJS
 }  }
Line 825  sub display_line { Line 854  sub display_line {
    $diropen.'.gif"');      $diropen.'.gif"'); 
  $r->print (' name="'.$msg.'" height="22" type="image" border="0">'.   $r->print (' name="'.$msg.'" height="22" type="image" border="0">'.
    "\n");     "\n");
  $r->print ('<a href="javascript:gothere(\''.$filecom[0].   my $quotable_filecom = &Apache::loncommon::escape_single($filecom[0]);
    $r->print ('<a href="javascript:gothere(\''.$quotable_filecom.
    '\')"><img src="'.$iconpath.'server.gif"');     '\')"><img src="'.$iconpath.'server.gif"');
  $r->print (' border="0" /></a>'."\n");   $r->print (' border="0" /></a>'."\n");
  $r->print (&mt("Domain")." - $listname ");   $r->print (&mt("Domain")." - $listname ");
Line 852  sub display_line { Line 882  sub display_line {
    '.gif"');      '.gif"'); 
  $r->print (' name="'.$msg.'" height="22" type="image" border="0">'.   $r->print (' name="'.$msg.'" height="22" type="image" border="0">'.
    "\n");     "\n");
  $r->print ('<a href="javascript:gothere(\''.$curdir.'\')"><img src='.   my $quotable_curdir = &Apache::loncommon::escape_single($curdir);
    $r->print ('<a href="javascript:gothere(\''.$quotable_curdir
      .'\')"><img src='.
    $iconpath.'quill.gif border="0" name="'.$msg.     $iconpath.'quill.gif border="0" name="'.$msg.
    '" height="22" /></a>');     '" height="22" /></a>');
  my $domain=(split(m|/|,$startdir))[2];   my $domain=(split(m|/|,$startdir))[2];
Line 880  sub display_line { Line 912  sub display_line {
  my $iconname = &Apache::loncommon::icon($listname);   my $iconname = &Apache::loncommon::icon($listname);
  $r->print("<tr valign='$valign' bgcolor=$fileclr><td nowrap='1' align='top'>");   $r->print("<tr valign='$valign' bgcolor=$fileclr><td nowrap='1' align='top'>");
   
  my $metafile = $Apache::lonnet::perlvar{'lonDocRoot'}.$pathprefix.  
     $filecom[0].'.meta';  
  if (-e $metafile) {  
     $metafile=1;  
  } else {  
     $metafile=0;  
  }  
         if ($ENV{'form.catalogmode'} eq 'interactive') {          if ($ENV{'form.catalogmode'} eq 'interactive') {
       my $quotable_filelink = &Apache::loncommon::escape_single($filelink);
             $r->print("<a href=\"javascript:select_data(\'",              $r->print("<a href=\"javascript:select_data(\'",
                       $filelink,"')\">");                        $quotable_filelink,"')\">");
     $r->print("<img src='",$iconpath,"select.gif' border='0' /></a>".      $r->print("<img src='",$iconpath,"select.gif' border='0' /></a>".
       "\n");        "\n");
     $r->print("</td><td nowrap>");      $r->print("</td><td nowrap>");
Line 948  sub display_line { Line 974  sub display_line {
  if ($filelink=~/\.(page|sequence)$/) {   if ($filelink=~/\.(page|sequence)$/) {
     $r->print('</form>');      $r->print('</form>');
  }   }
  $r->print (" <a href=\"javascript:openWindow('".$filelink.   my $quotable_filelink = &Apache::loncommon::escape_single($filelink);
   
   
    $r->print (" <a href=\"javascript:openWindow('".$quotable_filelink.
    "', 'previewfile', '450', '500', 'no', 'yes','yes')\";".     "', 'previewfile', '450', '500', 'no', 'yes','yes')\";".
    " TARGET=_self>$listname</a> ");     " TARGET=_self>$listname</a> ");
   
  $r->print (" (<a href=\"javascript:openWindow('".$filelink.   $r->print (" (<a href=\"javascript:openWindow('".$quotable_filelink.
    ".meta', 'metadatafile', '500', '550', 'no', 'yes','no')\"; ".     ".meta', 'metadatafile', '500', '550', 'no', 'yes','no')\"; ".
    "TARGET=_self>metadata</a>) ");     "TARGET=_self>metadata</a>) ");
  $r->print("</td>\n");   $r->print("</td>\n");
Line 992  sub display_line { Line 1021  sub display_line {
  }   }
  if ($hash{'display_attrs_8'} == 1) {   if ($hash{'display_attrs_8'} == 1) {
 # statistics  # statistics
       &dynmetaread($filelink);
     $r->print("<td>");      $r->print("<td>");
     &dynmetaprint($r,$filelink,'count');      &dynmetaprint($r,$filelink,'count');
     &dynmetaprint($r,$filelink,'course');      &dynmetaprint($r,$filelink,'course');
Line 1010  sub display_line { Line 1040  sub display_line {
  if ($hash{'display_attrs_10'} == 1) {   if ($hash{'display_attrs_10'} == 1) {
     my $source = &Apache::lonnet::metadata($filelink,'sourceavail');      my $source = &Apache::lonnet::metadata($filelink,'sourceavail');
     if($source eq 'open') {      if($source eq 'open') {
  my $sourcelink = &Apache::lonsource::make_link($filelink);   my $sourcelink = &Apache::lonsource::make_link($filelink,$listname);
  $r->print('<td>'."<a href=\"javascript:openWindow('".$sourcelink.   my $quotable_sourcelink = &Apache::loncommon::escape_single($sourcelink);
    $r->print('<td>'."<a href=\"javascript:openWindow('"
     .$quotable_sourcelink.
   "', 'previewsource', '700', '700', 'no', 'yes','yes')\";".    "', 'previewsource', '700', '700', 'no', 'yes','yes')\";".
   " TARGET=_self>Yes</a> "."</td>\n");    " TARGET=_self>Yes</a> "."</td>\n");
     } else { #A cuddled else. :P      } else { #A cuddled else. :P
Line 1020  sub display_line { Line 1052  sub display_line {
  }   }
  if ($hash{'display_attrs_11'} == 1) {   if ($hash{'display_attrs_11'} == 1) {
 # links  # links
      &dynmetaread($filelink);
    $r->print('<td>');     $r->print('<td>');
    &dynmetaprint($r,$filelink,'goto_list');     &dynmetaprint($r,$filelink,'goto_list');
    &dynmetaprint($r,$filelink,'comefrom_list');     &dynmetaprint($r,$filelink,'comefrom_list');
Line 1087  sub display_line { Line 1120  sub display_line {
    'folder_pointer_'.$diropen.'.gif"');     'folder_pointer_'.$diropen.'.gif"');
  $r->print (' name="'.$msg.'" height="22" type="image" border="0">'.   $r->print (' name="'.$msg.'" height="22" type="image" border="0">'.
    "\n");     "\n");
  $r->print ('<a href="javascript:gothere(\''.$curdir.'\')"><img src="'.   my $quotable_curdir = &Apache::loncommon::escape_single($curdir);
    $r->print ('<a href="javascript:gothere(\''
      .$quotable_curdir.'\')"><img src="'.
    $iconpath.'folder_'.$diropen.'.gif" border="0" /></a>'.     $iconpath.'folder_'.$diropen.'.gif" border="0" /></a>'.
    "\n");     "\n");
  $r->print ("$listname</td>\n");   $r->print ("$listname</td>\n");
Line 1205  sub cleanup { Line 1240  sub cleanup {
     }      }
 }  }
   
   
   
   
   
 =head1 NAME  =head1 NAME
   
 Apache::lonindexer - mod_perl module for cross server filesystem browsing  Apache::lonindexer - mod_perl module for cross server filesystem browsing

Removed from v.1.115  
changed lines
  Added in v.1.129


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