Diff for /loncom/interface/lonsearchcat.pm between versions 1.126 and 1.131

version 1.126, 2002/06/24 15:09:52 version 1.131, 2002/06/26 18:19:41
Line 67  search (on a server basis) is displayed Line 67  search (on a server basis) is displayed
 ###############################################################################  ###############################################################################
 ###############################################################################  ###############################################################################
   
   ###############################################################################
 ##                                                                           ##  ##                                                                           ##
 ## ORGANIZATION OF THIS PERL MODULE                                          ##  ## ORGANIZATION OF THIS PERL MODULE                                          ##
 ##                                                                           ##  ##                                                                           ##
 ## 1. Modules used by this module                                            ##  ## 1. Modules used by this module                                            ##
 ## 2. Choices for different output views (detailed, summary, xml, etc)       ##  ## 2. Variables used throughout the module                                   ##
 ## 3. BEGIN block (to be run once after compilation)                         ##  ## 3. handler subroutine called via Apache and mod_perl                      ##
 ## 4. Handling routine called via Apache and mod_perl                        ##  ## 4. Other subroutines                                                      ##
 ## 5. Other subroutines                                                      ##  
 ##                                                                           ##  ##                                                                           ##
 ###############################################################################  ###############################################################################
   
Line 101  use Apache::loncommon(); Line 101  use Apache::loncommon();
   
 =over 4  =over 4
   
 =item %hostdomains  
   
 matches host name to host domain  
   
 =item %hostips  
   
 matches host name to host ip  
   
 =item %hitcount  
   
 stores number of hits per host  
   
 =item $closebutton  =item $closebutton
   
 button that closes the search window  button that closes the search window
Line 137  used in &handler() and is also used in & Line 125  used in &handler() and is also used in &
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
   
 # -- information holders  
 my %hostdomains; # matches host name to host domain  
 my %hostips;     # matches host name to host ip  
 my %hitcount;    # stores number of hits per host  
   
 # -- dynamically rendered interface components  # -- dynamically rendered interface components
 my $closebutton;  # button that closes the search window  my $closebutton;  # button that closes the search window
 my $importbutton; # button to take the selected results and go to group sorting  my $importbutton; # button to take the selected results and go to group sorting
   
 # -- miscellaneous variables  # -- miscellaneous variables
 my $yourself; # allows for quickly limiting to oneself  
 my %hash;     # database hash  my %hash;     # database hash
   my $diropendb = "";    # db file
 # ------------------------------------------ choices for different output views  
 # Detailed Citation View ---> sub detailed_citation_view  
 # Summary View ---> sub summary_view  
 # Fielded Format ---> sub fielded_format_view  
 # XML/SGML ---> sub xml_sgml_view  
   
 #------------------------------------------------------------- global variables  
 my $diropendb = "";  
 my $domain = "";  
   
 # ----------------------------------------------------------------------- BEGIN  
   
 =pod  
   
 =item BEGIN block  
   
 Load %hostdomains and %hostips with data from lonnet.pm.  Only library  
 servers are considered.  
   
 =cut  
   
 BEGIN {  
     foreach (keys (%Apache::lonnet::libserv)) {  
         $hostdomains{$_}=$Apache::lonnet::hostdom{$_};  
         $hostips{$_}=$Apache::lonnet::hostip{$_};  
     }  
 }  
   
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
Line 268  END Line 223  END
     ##      ##
     if ($ENV{'form.basicsubmit'} eq 'SEARCH') {      if ($ENV{'form.basicsubmit'} eq 'SEARCH') {
         # Perform basic search and give results          # Perform basic search and give results
  return &basicsearch($r,\%ENV,$hidden);   return &basicsearch($r,$hidden);
     } elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') {      } elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') {
         # Perform advanced search and give results          # Perform advanced search and give results
  return &advancedsearch($r,\%ENV,$hidden);   return &advancedsearch($r,$hidden);
     } elsif ($ENV{'form.reqinterface'} eq 'advanced') {      } elsif ($ENV{'form.reqinterface'} eq 'advanced') {
         # Output the advanced interface          # Output the advanced interface
         $r->print(&advanced_search_form($closebutton,$hidden));          $r->print(&advanced_search_form($closebutton,$hidden));
Line 318  sub basic_search_form{ Line 273  sub basic_search_form{
 $hidden  $hidden
 <h3>Basic Search</h3>  <h3>Basic Search</h3>
 <p>  <p>
 Enter terms or phrases separated by AND, OR, or NOT then press SEARCH below.  Enter terms or phrases separated by AND, OR, or NOT 
   then press SEARCH below.
 </p>  </p>
 <p>  <p>
 <table>  <table>
Line 334  ENDDOCUMENT Line 290  ENDDOCUMENT
 <p>  <p>
 &nbsp;<input type="submit" name="basicsubmit" value='SEARCH' />&nbsp;  &nbsp;<input type="submit" name="basicsubmit" value='SEARCH' />&nbsp;
 $closebutton  $closebutton
 <!-- basic view selection -->  <!-- view selection -->
 <select name='basicviewselect'>  <select name="viewselect">
 <option value='Detailed Citation View' selected="true">  <option value="Detailed Citation View" selected="true" >Detailed Citation View</option>
 Detailed Citation View</option>  <option value="Summary View"  >Summary View</option>
 <option value='Summary View'>Summary View</option>  <option value="Fielded Format">Fielded Format</option>
 <option value='Fielded Format'>Fielded Format</option>  <option value="XML/SGML"      >XML/SGML</option>
 <option value='XML/SGML'>XML/SGML</option>  
 </select>  </select>
 <!-- end of basic view selection -->  <!-- end of view selection -->
 <input type="button" value="HELP" onClick="openhelp()" />  <input type="button" value="HELP" onClick="openhelp()" />
 </p>  </p>
 </form>  </form>
Line 367  Returns a scalar which holds html for th Line 322  Returns a scalar which holds html for th
   
 sub advanced_search_form{  sub advanced_search_form{
     my ($closebutton,$hidden) = @_;      my ($closebutton,$hidden) = @_;
       my $advanced_buttons = <<"END";
   <p>
   <input type="submit" name="advancedsubmit" value='SEARCH' />
   <input type="reset" name="reset" value='RESET' />
   $closebutton
   <input type="button" value="HELP" onClick="openhelp()" />
   </p>
   END
     my $scrout=<<"ENDHEADER";      my $scrout=<<"ENDHEADER";
 <html>  <html>
 <head>  <head>
Line 381  sub advanced_search_form{ Line 344  sub advanced_search_form{
 </head>  </head>
 <body bgcolor="#FFFFFF">  <body bgcolor="#FFFFFF">
 <img align='right' src='/adm/lonIcons/lonlogos.gif' />  <img align='right' src='/adm/lonIcons/lonlogos.gif' />
 <h1>Search Catalog</h1>  <h1>Advanced Catalog Search</h1>
   <hr />
   Enter terms or phrases separated by search operators 
   such as AND, OR, or NOT.<br />
 <form method="post" action="/adm/searchcat">  <form method="post" action="/adm/searchcat">
   $advanced_buttons
 $hidden  $hidden
 <hr />  <table>
 <h3>Advanced Search</h3>  <tr><td><font color="#800000" face="helvetica"><b>VIEW:</b></font></td>
   <td>
   <!-- view selection -->
   <select name="viewselect" size ="1">
       <option value="Detailed Citation View" selected="true">Detailed Citation View</option>
       <option value="Summary View">Summary View</option>
       <option value="Fielded Format">Fielded Format</option>
       <option value="XML/SGML">XML/SGML</option>
   </select>
   <!-- end of view selection -->
   </td></tr>
 ENDHEADER  ENDHEADER
     $scrout.=&searchphrasefield('Limit by title','title',      $scrout.=&searchphrasefield('title','title',
  $ENV{'form.title'});   $ENV{'form.title'});
     $scrout.=&searchphrasefield('Limit by author','author',      $scrout.=&searchphrasefield('author','author',
  $ENV{'form.author'});   $ENV{'form.author'});
     $scrout.=&searchphrasefield('Limit by subject','subject',      $scrout.=&searchphrasefield('subject','subject',
  $ENV{'form.subject'});   $ENV{'form.subject'});
     $scrout.=&searchphrasefield('Limit by keywords','keywords',      $scrout.=&searchphrasefield('keywords','keywords',
  $ENV{'form.keywords'});   $ENV{'form.keywords'});
     $scrout.=&searchphrasefield('Limit by URL','url',      $scrout.=&searchphrasefield('URL','url',
  $ENV{'form.url'});   $ENV{'form.url'});
 #    $scrout.=&searchphrasefield('Limit by version','version',  #    $scrout.=&searchphrasefield('Limit by version','version',
 # $ENV{'form.version'});  # $ENV{'form.version'});
     $scrout.=&searchphrasefield('Limit by notes','notes',      $scrout.=&searchphrasefield('notes','notes',
  $ENV{'form.notes'});   $ENV{'form.notes'});
     $scrout.=&searchphrasefield('Limit by abstract','abstract',      $scrout.=&searchphrasefield('abstract','abstract',
  $ENV{'form.abstract'});   $ENV{'form.abstract'});
     $ENV{'form.mime'}='any' unless length($ENV{'form.mime'});      # Hack - an empty table row.
     $scrout.=&selectbox('Limit by MIME type','mime',      $scrout.="<tr><td>&nbsp;</td><td>&nbsp;</td></tr>\n";
  $ENV{'form.mime'},      $scrout.=&searchphrasefield('file<br />extension','mime',
  'any','Any type',                          $ENV{'form.mime'});
  \&{Apache::loncommon::filedescriptionex},      $scrout.="<tr><td>&nbsp;</td><td>&nbsp;</td></tr>\n";
  (&Apache::loncommon::fileextensions));      $scrout.=&searchphrasefield('publisher<br />owner','owner',
    $ENV{'form.owner'});
       $scrout.="</table>\n";
       $ENV{'form.category'}='any' unless length($ENV{'form.category'});
       $scrout.=&selectbox('Limit by file category','category',
    $ENV{'form.category'},
    'any','Any category',
    undef,
    (&Apache::loncommon::filecategories()));
     $ENV{'form.language'}='any' unless length($ENV{'form.language'});      $ENV{'form.language'}='any' unless length($ENV{'form.language'});
     $scrout.=&selectbox('Limit by language','language',      $scrout.=&selectbox('Limit by language','language',
  $ENV{'form.language'},'any','Any Language',   $ENV{'form.language'},'any','Any Language',
Line 455  LASTREVISIONDATEEND Line 440  LASTREVISIONDATEEND
  $ENV{'form.lastrevisiondateend_year'},   $ENV{'form.lastrevisiondateend_year'},
  );   );
     $scrout.='</p>';      $scrout.='</p>';
     $scrout.=&searchphrasefield('Limit by publisher/owner','owner',  
  $ENV{'form.owner'});  
     $ENV{'form.copyright'}='any' unless length($ENV{'form.copyright'});      $ENV{'form.copyright'}='any' unless length($ENV{'form.copyright'});
     $scrout.=&selectbox('Limit by copyright/distribution','copyright',      $scrout.=&selectbox('Limit by copyright/distribution','copyright',
  $ENV{'form.copyright'},   $ENV{'form.copyright'},
Line 485  in a fielded listing for each record res Line 468  in a fielded listing for each record res
 CUSTOMSHOW  CUSTOMSHOW
     $scrout.=&simpletextfield('customshow',$ENV{'form.customshow'});      $scrout.=&simpletextfield('customshow',$ENV{'form.customshow'});
     $scrout.=<<ENDDOCUMENT;      $scrout.=<<ENDDOCUMENT;
 <p>  $advanced_buttons
 <input type="submit" name="advancedsubmit" value='SEARCH' />  
 <input type="reset" name="reset" value='RESET' />  
 $closebutton  
 <!-- advance view select -->  
 <select name='advancedviewselect'>  
 <option value='Detailed Citation View' selected="true">  
 Detailed Citation View</option>  
 <option value='Summary View'>Summary View</option>  
 <option value='Fielded Format'>Fielded Format</option>  
 <option value='XML/SGML'>XML/SGML</option>  
 </select>  
 <!-- end of advanced view select -->  
 <input type="button" value="HELP" onClick="openhelp()" />  
 </p>  
 </form>  </form>
 </body>  </body>
 </html>  </html>
Line 579  the day, month, and year. Line 548  the day, month, and year.
   
 =item &selectbox()  =item &selectbox()
   
 Returns html selection form.  Returns a scalar containing an html <select> form.  
   
   Inputs: 
   
   =over 4
   
   =item $title 
   
   Printed above the select box, in uppercase.
   
   =item $name 
   
   The name element of the <select> tag.
   
   =item $default 
   
   The default value of the form.  Can be $anyvalue or in @idlist.
   
   =item $anyvalue 
   
   The <option value="..."> used to indicate a default of 
   none of the values.
   
   =item $anytag 
   
   The text associate with $anyvalue above.
   
   =item $functionref 
   
   Each element in @idlist will be passed as a parameter 
   to the function referenced here.  The return value of the function should
   be a scalar description of the items.  If this value is undefined the 
   description of each item in @idlist will be the item name.
   
   =item @idlist 
   
   The items to be selected from.  One of these or $anyvalue will be the 
   value returned by the form element, $ENV{form.$name}.
   
   =back
   
 =back   =back 
   
Line 598  sub simpletextfield { Line 606  sub simpletextfield {
 sub simplecheckbox {  sub simplecheckbox {
     my ($name,$value)=@_;      my ($name,$value)=@_;
     my $checked='';      my $checked='';
     $checked="CHECKED" if $value eq 'on';      $checked="checked" if $value eq 'on';
     return '<input type="checkbox" name="'.$name.'" '. $checked . ' />';      return '<input type="checkbox" name="'.$name.'" '. $checked . ' />';
 }  }
   
 sub searchphrasefield {  sub searchphrasefield {
     my ($title,$name,$value)=@_;      my ($title,$name,$value)=@_;
     my $instruction=<<END;  
 Enter terms or phrases separated by search operators such as AND, OR, or NOT.  
 END  
     my $uctitle=uc($title);      my $uctitle=uc($title);
     return "\n".      return '<tr><td><font color="#800000" face="helvetica">'.
         '<p><font color="#800000" face="helvetica"><b>'.$uctitle.':</b>'.          '<b>'.$uctitle.':&nbsp;</b></font></td><td>'.
         "</FONT> $instruction<br />".&simpletextfield($name,$value,80);                  &simpletextfield($name,$value,50)."</td></tr>\n";
 }  }
   
 sub dateboxes {  sub dateboxes {
Line 658  END Line 663  END
 }  }
   
 sub selectbox {  sub selectbox {
     my ($title,$name,$value,$anyvalue,$anytag,$functionref,@idlist)=@_;      my ($title,$name,$default,$anyvalue,$anytag,$functionref,@idlist)=@_;
       if (! defined($functionref)) { $functionref = sub { $_[0]}; }
     my $uctitle=uc($title);      my $uctitle=uc($title);
     my $selout="\n".'<p><font color="#800000" face="helvetica">'.      my $selout="\n".'<p><font color="#800000" face="helvetica">'.
         '<b>'.$uctitle.':</b></font><br /><select name="'.$name.'">';          '<b>'.$uctitle.': </b></font><select name="'.$name.'">';
     foreach ($anyvalue,@idlist) {      foreach ($anyvalue,@idlist) {
         $selout.='<option value="'.$_.'"';          $selout.='<option value="'.$_.'"';
         if ($_ eq $value and !/^any$/) {          if ($_ eq $default and !/^any$/) {
     $selout.=' selected >'.&{$functionref}($_).'</option>';      $selout.=' selected >'.&{$functionref}($_).'</option>';
  }   }
  elsif ($_ eq $value and /^$anyvalue$/) {   elsif ($_ eq $default and /^$anyvalue$/) {
     $selout.=' selected >'.$anytag.'</option>';      $selout.=' selected >'.$anytag.'</option>';
  }   }
         else {$selout.='>'.&{$functionref}($_).'</option>';}          else {$selout.='>'.&{$functionref}($_).'</option>';}
     }      }
     return $selout.'</select>';      return $selout.'</select></p>';
 }  }
   
 ######################################################################  ######################################################################
Line 689  Parse advanced search results. Line 695  Parse advanced search results.
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub advancedsearch {  sub advancedsearch {
     my ($r,$envhash,$hidden)=@_;      my ($r,$hidden)=@_;
     my %ENV=%{$envhash};  
     my $fillflag=0;      my $fillflag=0;
     # Clean up fields for safety      # Clean up fields for safety
     for my $field ('title','author','subject','keywords','url','version',      for my $field ('title','author','subject','keywords','url','version',
Line 701  sub advancedsearch { Line 706  sub advancedsearch {
    'lastrevisiondatestart_year','lastrevisiondateend_month',     'lastrevisiondatestart_year','lastrevisiondateend_month',
    'lastrevisiondateend_day','lastrevisiondateend_year',     'lastrevisiondateend_day','lastrevisiondateend_year',
    'notes','abstract','mime','language','owner',     'notes','abstract','mime','language','owner',
    'custommetadata','customshow') {     'custommetadata','customshow','category') {
  $ENV{"form.$field"}=~s/[^\w\/\s\(\)\=\-\"\']//g;   $ENV{"form.$field"}=~s/[^\w\/\s\(\)\=\-\"\']//g;
     }      }
     foreach ('mode','form','element') {      foreach ('mode','form','element') {
Line 710  sub advancedsearch { Line 715  sub advancedsearch {
  $ENV{"form.$_"}=&Apache::lonnet::unescape($ENV{"form.$_"});   $ENV{"form.$_"}=&Apache::lonnet::unescape($ENV{"form.$_"});
  $ENV{"form.$_"}=~s/[^\w\/\s\(\)\=\-\"\']//g;   $ENV{"form.$_"}=~s/[^\w\/\s\(\)\=\-\"\']//g;
     }      }
       # Preprocess the category form element.
       if ($ENV{'form.category'} ne 'any') {
           my @extensions = &Apache::loncommon::filecategorytypes
               ($ENV{'form.category'});
           $ENV{'form.mime'} = join ' OR ',@extensions;
       }
     # Check to see if enough information was filled in      # Check to see if enough information was filled in
     for my $field ('title','author','subject','keywords','url','version',      for my $field ('title','author','subject','keywords','url','version',
    'notes','abstract','mime','language','owner',     'notes','abstract','mime','language','owner',
Line 727  sub advancedsearch { Line 738  sub advancedsearch {
     my @queries;      my @queries;
     # Evaluate logical expression AND/OR/NOT phrase fields.      # Evaluate logical expression AND/OR/NOT phrase fields.
     foreach my $field ('title','author','subject','notes','abstract','url',      foreach my $field ('title','author','subject','notes','abstract','url',
        'keywords','version','owner') {         'keywords','version','owner','mime') {
  if ($ENV{'form.'.$field}) {   if ($ENV{'form.'.$field}) {
     push @queries,&build_SQL_query($field,$ENV{'form.'.$field});      push @queries,&build_SQL_query($field,$ENV{'form.'.$field});
  }          }
     }      }
     # Evaluate option lists      # Evaluate option lists
     if ($ENV{'form.language'} and $ENV{'form.language'} ne 'any') {      if ($ENV{'form.language'} and $ENV{'form.language'} ne 'any') {
  push @queries,"(language like \"$ENV{'form.language'}\")";   push @queries,"(language like \"$ENV{'form.language'}\")";
     }      }
     if ($ENV{'form.mime'} and $ENV{'form.mime'} ne 'any') {  
  push @queries,"(mime like \"$ENV{'form.mime'}\")";  
     }  
     if ($ENV{'form.copyright'} and $ENV{'form.copyright'} ne 'any') {      if ($ENV{'form.copyright'} and $ENV{'form.copyright'} ne 'any') {
  push @queries,"(copyright like \"$ENV{'form.copyright'}\")";   push @queries,"(copyright like \"$ENV{'form.copyright'}\")";
     }      }
Line 792  sub advancedsearch { Line 800  sub advancedsearch {
     $reply=&Apache::lonnet::metadata_query($query,      $reply=&Apache::lonnet::metadata_query($query,
    $customquery,$customshow);     $customquery,$customshow);
  }   }
  &output_results('Advanced',$r,$envhash,$customquery,$reply,$hidden);   &output_results('Advanced',$r,$customquery,$reply,$hidden);
         return OK;          return OK;
     } elsif ($customquery) {      } elsif ($customquery) {
  my $reply; # reply hash reference   my $reply; # reply hash reference
  $reply=&Apache::lonnet::metadata_query('',   $reply=&Apache::lonnet::metadata_query('',
        $customquery,$customshow);         $customquery,$customshow);
  &output_results('Advanced',$r,$envhash,$customquery,$reply,$hidden);   &output_results('Advanced',$r,$customquery,$reply,$hidden);
         return OK;          return OK;
     }      }
     # should not get to this point      # should not get to this point
Line 819  Parse basic search form. Line 827  Parse basic search form.
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub basicsearch {  sub basicsearch {
     my ($r,$envhash,$hidden)=@_;      my ($r,$hidden)=@_;
     my %ENV=%{$envhash};  
     # Clean up fields for safety      # Clean up fields for safety
     for my $field ('basicexp') {      for my $field ('basicexp') {
  $ENV{"form.$field"}=~s/[^\w\s\(\)\-]//g;   $ENV{"form.$field"}=~s/[^\w\s\(\)\-]//g;
Line 853  sub basicsearch { Line 860  sub basicsearch {
 #    &Apache::lonnet::logthis("metadata query finished:".time);  #    &Apache::lonnet::logthis("metadata query finished:".time);
     # Output search results      # Output search results
   
     &output_results('Basic',$r,$envhash,$query,$reply,$hidden);      &output_results('Basic',$r,$query,$reply,$hidden);
   
     return OK;      return OK;
 }  }
Line 1045  contacted, etc.) Line 1052  contacted, etc.)
 sub output_results {  sub output_results {
 #    &Apache::lonnet::logthis("output_results:".time);  #    &Apache::lonnet::logthis("output_results:".time);
     my $fnum; # search result counter      my $fnum; # search result counter
     my ($mode,$r,$envhash,$query,$replyref,$hidden)=@_;      my ($mode,$r,$query,$replyref,$hidden)=@_;
     my %ENV=%{$envhash};  
     my %rhash=%{$replyref};      my %rhash=%{$replyref};
     my $compiledresult='';      my $compiledresult='';
     my $timeremain=300; # (seconds)      my $timeremain=300; # (seconds)
     my $elapsetime=0;      my $elapsetime=0;
     my $resultflag=0;      my $resultflag=0;
     my $tflag=1;      my $tflag=1;
       my $viewselect=$ENV{'form.viewselect'};
     #      #
     # make query information persistent to allow for subsequent revision      # make query information persistent to allow for subsequent revision
     my $persistent=&make_persistent();      my $persistent=&make_persistent();
     # spit out the generic header      # spit out the results header
     $r->print(&search_results_header());      $r->print(&search_results_header($mode));
     $r->rflush();      $r->rflush();
     # begin showing the cataloged results      # begin showing the cataloged results
     $r->print(<<CATALOGBEGIN);      my $action = "/adm/searchcat";
 </head>      if ($mode eq 'Basic') { 
 <body bgcolor="#ffffff">          $action .= "?reqinterface=basic";
 <img align=right src=/adm/lonIcons/lonlogos.gif>      } elsif ($mode eq 'Advanced') {
 <h1>Search Catalog</h1>          $action .= "?reqinterface=advanced";
 CATALOGBEGIN      }
         $r->print(<<CATALOGCONTROLS);      $r->print(<<CATALOGCONTROLS);
 <form name='results' method="post" action="/adm/searchcat">  <form name='results' method="post" action="$action">
 $hidden  $hidden
 <input type='hidden' name='acts' value='' />  <input type='hidden' name='acts' value='' />
 <input type='button' value='Revise search request'  <input type='button' value='Revise search request'
Line 1076  $importbutton Line 1083  $importbutton
 $closebutton  $closebutton
 $persistent  $persistent
 <hr />  <hr />
 <h3>Search Query</h3>  
 CATALOGCONTROLS  CATALOGCONTROLS
     #      #
     # Remind them what they searched for  
     #  
     if ($mode eq 'Basic') {  
  $r->print('<p><b>Basic search:</b> '.$ENV{'form.basicexp'}.'</p>');  
     } elsif ($mode eq 'Advanced') {  
  $r->print('<p><b>Advanced search</b> '.$query.'</p>');  
     }  
     $r->print('<h3>Search Results</h3>');  
     $r->rflush();  
     #  
     # make the pop-up window for status      # make the pop-up window for status
     #      #
     $r->print(&make_popwin(%rhash));      $r->print(&make_popwin(%rhash));
Line 1143  CATALOGCONTROLS Line 1139  CATALOGCONTROLS
                             return OK;                              return OK;
                         }                          }
                         @results=<$fh> if $fh;                          @results=<$fh> if $fh;
                         $hitcount{$rkey}=@results+0;                          my $hits =@results;
                         &popwin_js($r,'popwin.hc["'.$rkey.'"]='.                          &popwin_js($r,'popwin.hc["'.$rkey.'"]='.
                                    $hitcount{$rkey}.';');                                     $hits.';');
                         $hitcountsum+=$hitcount{$rkey};                          $hitcountsum+=$hits;
                         &popwin_js($r,'popwin.document.forms.popremain.'.                          &popwin_js($r,'popwin.document.forms.popremain.'.
                                    'numhits.value='.$hitcountsum.';');                                     'numhits.value='.$hitcountsum.';');
                     } else {                      } else {
Line 1192  CATALOGCONTROLS Line 1188  CATALOGCONTROLS
                         $Fields{'extrashow'}=~s/\<\!\-\- $field \-\-\>/ $value/g;                          $Fields{'extrashow'}=~s/\<\!\-\- $field \-\-\>/ $value/g;
                     }                      }
                 }                  }
                 if ($compiledresult or $servercount!=$servernum) {  
                     $compiledresult.="<hr align='left' width='200' noshade />";  
                 }  
                 $compiledresult.="\n<p>\n";                  $compiledresult.="\n<p>\n";
                 if ($ENV{'form.catalogmode'} eq 'interactive') {                  if ($ENV{'form.catalogmode'} eq 'interactive') {
                     my $titleesc=$Fields{'title'};                      my $titleesc=$Fields{'title'};
Line 1221  END Line 1214  END
 # <input type="hidden" name="url$fnum" value="$url" />  # <input type="hidden" name="url$fnum" value="$url" />
                     $fnum++;                      $fnum++;
  }   }
         my $viewselect;  
         if ($mode eq 'Basic') {  
     $viewselect=$ENV{'form.basicviewselect'};  
  }  
         elsif ($mode eq 'Advanced') {  
     $viewselect=$ENV{'form.advancedviewselect'};  
  }  
         if ($viewselect eq 'Detailed Citation View') {          if ($viewselect eq 'Detailed Citation View') {
     $compiledresult.=&detailed_citation_view      $compiledresult.=&detailed_citation_view
                         (%Fields, hostname => $rkey );                          (%Fields, hostname => $rkey );
Line 1244  END Line 1230  END
     $compiledresult.=&xml_sgml_view      $compiledresult.=&xml_sgml_view
                         (%Fields, hostname => $rkey );                          (%Fields, hostname => $rkey );
  }   }
                   if ($compiledresult or $servercount!=$servernum) {
                       $compiledresult.="<hr align='left' width='200' noshade />";
                   }
             }              }
             untie %hash;              untie %hash;
         }          }
Line 1392  sub handle_custom_fields { Line 1381  sub handle_custom_fields {
   
 =item &search_results_header  =item &search_results_header
   
 Output the proper javascript code to deal with different calling modes.  Output the proper html headers and javascript code to deal with different 
   calling modes.
   
 Takes inputs directly from from %ENV.  The following environment variables  Takes most inputs directly from %ENV, except $mode.  
 are checked:  
   =over 4
   
   =item $mode is either (at this writing) 'Basic' or 'Advanced'
   
   =back
   
   The following environment variables are checked:
   
 =over 4  =over 4
   
Line 1418  Checked for existance & 'edit' mode. Line 1415  Checked for existance & 'edit' mode.
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub search_results_header {  sub search_results_header {
       my ($mode) = @_;
       $mode = lc($mode);
       my $title;
       if ($mode eq 'advanced') {
           $title = "Advanced Search Results";
       } elsif ($mode eq 'basic') {
           $title = "Basic Search Results";
       }
     my $result = '';      my $result = '';
     # output beginning of search page      # output beginning of search page
     $result.=<<BEGINNING;      $result.=<<BEGINNING;
 <html>  <html>
 <head>  <head>
 <title>The LearningOnline Network with CAPA</title>  <title>$title</title>
 BEGINNING  BEGINNING
     # conditional output of script functions dependent on the mode in      # conditional output of script functions dependent on the mode in
     # which the search was invoked      # which the search was invoked
Line 1506  SCRIPT Line 1511  SCRIPT
     }      }
 </script>  </script>
 SCRIPT  SCRIPT
       $result.=<<END;
   </head>
   <body bgcolor="#ffffff">
   <img align=right src=/adm/lonIcons/lonlogos.gif>
   <h1>$title</h1>
   END
     return $result;      return $result;
 }  }
   
Line 1547  sub make_popwin { Line 1558  sub make_popwin {
     $hcinit.="hc[\"$sk\"]=\"not yet connected...\";";      $hcinit.="hc[\"$sk\"]=\"not yet connected...\";";
  }   }
  $grid.=" hitcount=".$hc;   $grid.=" hitcount=".$hc;
  $grid.=" domain=".$hostdomains{$sk};   $grid.=" domain=".$Apache::lonnet::hostdom{$sk};
  $grid.=" IP=".$hostips{$sk};   $grid.=" IP=".$Apache::lonnet::hostip{$sk};
  # '+"'"+'">'+   # '+"'"+'">'+
  $grid.="'+\"'\"+')\">'+";   $grid.="'+\"'\"+')\">'+";
  $grid.="\n";   $grid.="\n";
  $grid.="'<img border=\"0\" name=\"img_".$hostdomains{$sk}.'_'.$sk."\"".   $grid.="'<img border=\"0\" name=\"img_".$Apache::lonnet::hostdom{$sk}.
     " src=\"/adm/lonIcons/srvnull.gif\" alt=\"".$sk."\" /></a>'+\n";              '_'.$sk."\" src=\"/adm/lonIcons/srvnull.gif\" alt=\"".$sk.
                   "\" /></a>'+\n";
  $grid.="'<br />'+\n" unless $sn%10;   $grid.="'<br />'+\n" unless $sn%10;
         $sn++;          $sn++;
     }      }
Line 1628  extra custom metadata to show. Line 1640  extra custom metadata to show.
 sub detailed_citation_view {  sub detailed_citation_view {
     my %values = @_;      my %values = @_;
     my $result=<<END;      my $result=<<END;
 <i>$values{'owner'}</i>, last revised $values{'lastrevisiondate'}  
 <h3><a href="http://$ENV{'HTTP_HOST'}$values{'url'}"   <h3><a href="http://$ENV{'HTTP_HOST'}$values{'url'}" 
     target='search_preview'>$values{'title'}</a></h3>      target='search_preview'>$values{'title'}</a></h3>
 <h3>$values{'author'}</h3>  
 </p>  
 <p>  <p>
 <b>Subject:</b> $values{'subject'}<br />  <b>$values{'author'}</b>, <i>$values{'owner'}</i><br />
 <b>Keyword(s):</b> $values{'keywords'}<br />  
 <b>Notes:</b> $values{'notes'}<br />  <b>Subject:       </b> $values{'subject'}<br />
 <b>MIME Type:</b>  <b>Keyword(s):    </b> $values{'keywords'}<br />
 END  <b>Notes:         </b> $values{'notes'}<br />
     $result.=&Apache::loncommon::filedescription($values{'mime'});  <b>MIME Type:     </b> $values{'mimetag'}<br />
     $result.=<<END;  <b>Language:      </b> $values{'language'}<br />
 <br />  <b>Copyright/Distribution:</b> $values{'cprtag'}<br />
 <b>Language:</b>   
 END  
     $result.=&Apache::loncommon::languagedescription($values{'lang'});  
     $result.=<<END;  
 <br />  
 <b>Copyright/Distribution:</b>   
 END  
     $result.=&Apache::loncommon::copyrightdescription($values{'copyright'});  
     $result.=<<END;  
 <br />  
 </p>  </p>
 $values{'extrashow'}  $values{'extrashow'}
 <p>  <p>
Line 1943  input $r, loncapa server id, and an icon Line 1942  input $r, loncapa server id, and an icon
 ######################################################################  ######################################################################
 sub popwin_imgupdate {  sub popwin_imgupdate {
     my ($r,$server,$icon) = @_;      my ($r,$server,$icon) = @_;
     &popwin_js($r,'popwin.document.img_'.$hostdomains{$server}.'_'.$server.'.'.      &popwin_js($r,'popwin.document.img_'.$Apache::lonnet::hostdom{$server}.
        'src="/adm/lonIcons/'.$icon.'";');                 '_'.$server.'.'.'src="/adm/lonIcons/'.$icon.'";');
 }      }    
   
 1;  1;

Removed from v.1.126  
changed lines
  Added in v.1.131


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