Diff for /loncom/interface/lonsearchcat.pm between versions 1.207 and 1.211

version 1.207, 2004/04/19 13:51:36 version 1.211, 2004/04/19 17:44:47
Line 164  sub handler { Line 164  sub handler {
             '_'.&Apache::lonnet::escape($ENV{'user.name'}).              '_'.&Apache::lonnet::escape($ENV{'user.name'}).
                 '_'.$ENV{'form.persistent_db_id'}.'_persistent_search.db';                  '_'.$ENV{'form.persistent_db_id'}.'_persistent_search.db';
     ##      ##
       &Apache::lonhtmlcommon::clear_breadcrumbs();
       if (exists($ENV{'request.course.id'}) && $ENV{'request.course.id'} ne '') {
           &Apache::lonhtmlcommon::add_breadcrumb
                ({href=>'/adm/searchcat?'.
                      'catalogmode='.$ENV{'form.catalogmode'}.
                      '&launch='.$ENV{'form.launch'}.
                      '&mode='.$ENV{'form.mode'},
                 text=>"Course and Catalog Search",
                 bug=>'Searching',});
       } else {
           &Apache::lonhtmlcommon::add_breadcrumb
                ({href=>'/adm/searchcat?'.
                      'catalogmode='.$ENV{'form.catalogmode'}.
                      '&launch='.$ENV{'form.launch'}.
                      '&mode='.$ENV{'form.mode'},
                 text=>"Catalog Search",
                 bug=>'Searching',});
       }
       #
     if (! &get_persistent_form_data($persistent_db_file)) {      if (! &get_persistent_form_data($persistent_db_file)) {
         if ($ENV{'form.phase'} =~ /(run_search|results)/) {          if ($ENV{'form.phase'} =~ /(run_search|results)/) {
             &Apache::lonnet::logthis("lonsearchcat:Unable to recover data ".              &Apache::lonnet::logthis("lonsearchcat:Unable to recover data ".
Line 264  END Line 283  END
     }      }
     $ENV{'form.phase'} = 'disp_basic' if (! exists($ENV{'form.phase'}));      $ENV{'form.phase'} = 'disp_basic' if (! exists($ENV{'form.phase'}));
     $ENV{'form.show'} = 20 if (! exists($ENV{'form.show'}));      $ENV{'form.show'} = 20 if (! exists($ENV{'form.show'}));
       #
       $ENV{'form.searchmode'} = 'basic';
       if ($ENV{'form.phase'} eq 'adv_search' ||
           $ENV{'form.phase'} eq 'disp_adv') {
           $ENV{'form.searchmode'} = 'advanced';
       } elsif ($ENV{'form.phase'} eq 'course_search') {
           $ENV{'form.searchmode'} = 'course_search';
       }
       #
       if ($ENV{'form.searchmode'} eq 'advanced') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/searchcat?phase=disp_adv&'.
                     'catalogmode='.$ENV{'form.catalogmode'}.
                     '&launch='.$ENV{'form.launch'}.
                     '&mode='.$ENV{'form.mode'},
                     text=>"Advanced Search",
                     bug=>'Searching',});
       } elsif ($ENV{'form.searchmode'} eq 'course search') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/searchcat?phase=disp_adv&'.
                     'catalogmode='.$ENV{'form.catalogmode'}.
                     '&launch='.$ENV{'form.launch'}.
                     '&mode='.$ENV{'form.mode'},
                     text=>"Course Search",
                     bug=>'Searching',});
       }
     ##      ##
     ## Switch on the phase      ## Switch on the phase
     ##      ##
Line 288  END Line 333  END
         &course_search($r);          &course_search($r);
     } elsif(($ENV{'form.phase'} eq 'basic_search') ||      } elsif(($ENV{'form.phase'} eq 'basic_search') ||
             ($ENV{'form.phase'} eq 'adv_search')) {              ($ENV{'form.phase'} eq 'adv_search')) {
         $ENV{'form.searchmode'} = 'basic';  
         if ($ENV{'form.phase'} eq 'adv_search') {  
             $ENV{'form.searchmode'} = 'advanced';  
         }  
         # Set up table          # Set up table
         if (! defined(&create_results_table())) {          if (! defined(&create_results_table())) {
     my $errorstring=&Apache::lonmysql::get_error();      my $errorstring=&Apache::lonmysql::get_error();
               &Apache::lonnet::logthis('lonsearchcat.pm: Unable to create '.
                                        'needed table.  lonmysql error:'.
                                        $errorstring);
             $r->print(<<END);              $r->print(<<END);
 <html><head><title>Search Error</title></head>  <html><head><title>Search Error</title></head>
 $bodytag  $bodytag
 Unable to create table in which to store search results.    Unable to create table in which to store search results.  
 The search has been aborted.  The search has been aborted.
 <br />$errorstring  
 </body>  </body>
 </html>  </html>
 END  END
Line 487  Prints the form for the basic search.  S Line 530  Prints the form for the basic search.  S
 sub print_basic_search_form {  sub print_basic_search_form {
     my ($r,$closebutton,$hidden_fields) = @_;      my ($r,$closebutton,$hidden_fields) = @_;
     my $bodytag=&Apache::loncommon::bodytag('Search').      my $bodytag=&Apache::loncommon::bodytag('Search').
  &Apache::loncommon::help_open_topic('Finding_Resources').          &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Finding_Resources',
  &Apache::loncommon::help_open_bug('Searching');                                              undef,undef,! $ENV{'form.launch'});
     my $scrout = &search_html_header().$bodytag;      my $scrout = &search_html_header().$bodytag;
     if (&Apache::lonnet::allowed('bre',$ENV{'request.role.domain'})) {      if (&Apache::lonnet::allowed('bre',$ENV{'request.role.domain'})) {
         my $CatalogSearch=&mt('Catalog Search');  
         my $Statement=&searchhelp();          my $Statement=&searchhelp();
         $scrout.=(<<ENDDOCUMENT);          $scrout.=(<<ENDDOCUMENT);
 <h1>$CatalogSearch</h1>  
 <form name="loncapa_search" method="post" action="/adm/searchcat">  <form name="loncapa_search" method="post" action="/adm/searchcat">
 <input type="hidden" name="phase" value="basic_search" />  <input type="hidden" name="phase" value="basic_search" />
 $hidden_fields  $hidden_fields
Line 506  $Statement. Line 547  $Statement.
 <tr><td>  <tr><td>
 ENDDOCUMENT  ENDDOCUMENT
         $scrout.='&nbsp;'.          $scrout.='&nbsp;'.
         &Apache::lonhtmlcommon::textbox('basicexp',              &Apache::lonhtmlcommon::textbox('basicexp',
                                         $ENV{'form.basicexp'},40).                                          $ENV{'form.basicexp'},40).
                                         '&nbsp;';                                          '&nbsp;';
         my $relatedcheckbox =           my $relatedcheckbox = 
Line 609  sub print_advanced_search_form{ Line 650  sub print_advanced_search_form{
 <input type="reset" name="reset" value='$lt{"reset"}' />  <input type="reset" name="reset" value='$lt{"reset"}' />
 $closebutton  $closebutton
 <input type="button" value="$lt{'help'}" onClick="openhelp()" />  <input type="button" value="$lt{'help'}" onClick="openhelp()" />
 </p>  
 END  END
     my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search');      my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search').
           &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching',
                                               'Finding_Resources',
                                               undef,undef,
                                               ! $ENV{'form.launch'});
     my $searchhelp=&searchhelp();      my $searchhelp=&searchhelp();
     my $scrout=&search_html_header();      my $scrout=&search_html_header();
     $scrout .= <<"ENDHEADER";      $scrout .= <<"ENDHEADER";
 $bodytag  $bodytag
 $searchhelp  
 <form method="post" action="/adm/searchcat" name="advsearch">  <form method="post" action="/adm/searchcat" name="advsearch">
 $advanced_buttons  $advanced_buttons
 $hidden_fields  
 <input type="hidden" name="phase" value="adv_search" />  
 ENDHEADER  ENDHEADER
     $scrout.=&viewoptions();      $scrout.=('&nbsp;'x2).&viewoptions().'</p>'.$hidden_fields. 
           '<input type="hidden" name="phase" value="adv_search" />';
     my %fields=&Apache::lonmeta::fieldnames();      my %fields=&Apache::lonmeta::fieldnames();
       #
     $scrout.='<table>';      $scrout.= '<p>'.$searchhelp.'</p>'.
     $scrout.="<tr><th>".&mt('Field').'</th><th>'.&mt('Value').'</th><th>'          "<table>\n";
  .&mt('Related').'<br />'.&mt('Words')."</td></tr>\n";      my %related_word_search = 
     foreach ('title','author','owner','authorspace','modifyinguser',          ('title'=>1,
      'keywords','notes','abstract','standards',           'author'=>0,
      'lowestgradelevel','highestgradelevel','mime') {           'owner'=>0,
  $scrout.='<tr><td>'.&titlefield($fields{$_}).'</td><td>'.           'authorspace'=>0,
     &Apache::lonmeta::prettyinput($_,$ENV{'form.'.$_},$_,'advsearch',           'modifyinguser'=>0,
   1,'</td><td>',$ENV{'form.'.$_.'_related'}).           'keywords'=>1,
     '</td></tr>';           'notes'=>1,
            'abstract'=>1,
            'standards'=>1,
            'mime'=>1,
            );
       #
       foreach my $field ('title','author','owner','authorspace','modifyinguser',
        'keywords','notes','abstract','standards','mime') {
    $scrout.='<tr><td align="right">'.&titlefield($fields{$field}).'</td><td>'.
       &Apache::lonmeta::prettyinput($field,
                                             $ENV{'form.'.$field},
                                             $field,
                                             'advsearch',
     $related_word_search{$field},
                                             '</td><td align="left">',
                                             $ENV{'form.'.$field.'_related'},
                                             50);
           if ($related_word_search{$field}) {
               $scrout .= 'related words';
           } else {
               $scrout .= '</td><td>&nbsp;';
           }
           $scrout .= '</td></tr>'.$/;
     }      }
     $scrout.='<tr><td>'.      foreach my $field ('lowestgradelevel','highestgradelevel') {
  &titlefield(&mt('MIME Type Category')).'</td><td>'.    $scrout.='<tr>'.
               '<td align="right">'.&titlefield($fields{$field}).'</td>'.
               '<td colspan="2">'.
       &Apache::lonmeta::prettyinput($field,
                                             $ENV{'form.'.$field},
                                             $field,
                                             'advsearch',
     0).
                                             '</td></tr>'.$/;
       }
       $scrout.='<tr><td align="right">'.
    &titlefield(&mt('MIME Type Category')).'</td><td colspan="2">'. 
     &Apache::loncommon::filecategoryselect('category',      &Apache::loncommon::filecategoryselect('category',
    $ENV{'form.category'}).     $ENV{'form.category'}).
     '</td><td>&nbsp;</td></td></tr>';      '</td></tr>'.$/;
     $scrout.='<tr><td>'.      $scrout.='<tr><td align="right" valign="top">'.
  &titlefield(&mt('Limit Search to Domains')).'</td><td>'.    &titlefield(&mt('Domains')).'</td><td colspan="2">'. 
     &Apache::loncommon::domain_select('domains',      &Apache::loncommon::domain_select('domains',
    $ENV{'form.domains'},1).     $ENV{'form.domains'},1).
     '</td><td>&nbsp;</td></td></tr>';      '</td></tr>'.$/;
       $scrout .= "</table>\n<br />\n<table>\n";
     my %dates=&Apache::lonlocal::texthash      my %dates=&Apache::lonlocal::texthash
         ('creationdatestart'     => 'Creation Date After',          ('creationdatestart'     => 'Creation Date After',
          'creationdateend'       => 'Creation Date Before',           'creationdateend'       => 'Creation Date Before',
          'lastrevisiondatestart' => 'Last Revision Date After',           'lastrevisiondatestart' => 'Last Revision Date After',
          'lastrevisiondateend'   => 'Last Revision Date Before');           'lastrevisiondateend'   => 'Last Revision Date Before');
     foreach (sort keys %dates) {      foreach my $field (sort keys %dates) {
  $scrout.='<tr>'.   $scrout.='<tr>'.
             '<td>'.&titlefield($dates{$_}).'</td><td>'.               '<td align="right">'.&titlefield($dates{$field}).'</td><td>'. 
     &Apache::lonhtmlcommon::date_setter('advsearch',$_,0,'',1).      &Apache::lonhtmlcommon::date_setter('advsearch',$field,0,'',1).
     '</td><td>&nbsp;</td></td>'.      '</td></tr>'.$/;
             '</tr>';  
     }      }
   
     $scrout.="</table>\n";      $scrout.="</table>\n";
     $scrout.=<<ENDDOCUMENT;      $scrout.=<<ENDDOCUMENT;
 $advanced_buttons  $advanced_buttons
Line 687  Outputs: titletext with font wrapper Line 761  Outputs: titletext with font wrapper
 ######################################################################  ######################################################################
 sub titlefield {  sub titlefield {
     my $title=shift;      my $title=shift;
     return '<font face="arial" color="#800000">'.$title.'</font>';      return $title;
 }  }
   
 ######################################################################  ######################################################################
Line 732  Outputs: text for box with view options Line 806  Outputs: text for box with view options
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub viewoptions {  sub viewoptions {
     my $scrout="\n\n".'<table>'.      my $scrout="\n".'<nobr>';
         '<tr><th>'.&mt('View Options').'</th><th>'.      if (! defined($ENV{'form.viewselect'})) { 
  &mt('Records per Page').'</th></tr><tr><td>';          $ENV{'form.viewselect'}='detailed'; 
     unless ($ENV{'form.viewselect'}) { $ENV{'form.viewselect'}='detailed'; }      }
     $scrout.=&Apache::lonmeta::selectbox('viewselect',      $scrout.=&Apache::lonmeta::selectbox('viewselect',
  $ENV{'form.viewselect'},   $ENV{'form.viewselect'},
  \&viewoptiontext,   \&viewoptiontext,
  sort(keys(%Views)));   sort(keys(%Views)));
     $scrout.='</td><td>';      $scrout.= '&nbsp;&nbsp;';
     $scrout.=&Apache::lonmeta::selectbox('show',      $scrout.=&Apache::lonmeta::selectbox('show',
  $ENV{'form.show'},   $ENV{'form.show'},
  undef,   undef,
  (10,20,50,100,1000,10000));   (10,20,50,100,1000,10000));
     $scrout.="</td></tr></table>\n\n";      $scrout .= ('&nbsp;'x2).&mt('Records per Page').'</nobr>'.$/;
     return $scrout;      return $scrout;
 }  }
   
Line 1846  END Line 1920  END
 END  END
     $r->rflush();      $r->rflush();
     my $time_remaining = $max_time - (time - $starttime) ;      my $time_remaining = $max_time - (time - $starttime) ;
       $time_remaining = 0 if ($time_remaining <0);
     my $last_time = $time_remaining;      my $last_time = $time_remaining;
     &update_seconds($r,$time_remaining);      &update_seconds($r,$time_remaining);
     &update_status($r,'contacting '.$Servers_to_contact[0]);      &update_status($r,'contacting '.$Servers_to_contact[0]);
     while (($time_remaining > 0) &&      while (($time_remaining > 0) &&
            ((@Servers_to_contact) || keys(%Server_status))) {             ((@Servers_to_contact) || keys(%Server_status))) {
           &update_seconds($r,$time_remaining);
         # Send out a search request if it needs to be done.          # Send out a search request if it needs to be done.
         if (@Servers_to_contact) {          if (@Servers_to_contact) {
             # Contact one server              # Contact one server
Line 1876  END Line 1952  END
         # have results from yet, looking for results.          # have results from yet, looking for results.
         while (my ($server,$status) = each(%Server_status)) {          while (my ($server,$status) = each(%Server_status)) {
             last if ($connection->aborted());              last if ($connection->aborted());
               $time_remaining = $max_time - (time - $starttime) ;
               $time_remaining = 0 if ($time_remaining < 0);
               if ($last_time - $time_remaining > 0) {
                   $last_time = $time_remaining;
                   &update_seconds($r,$time_remaining);
               }
             if ($status eq 'con_lost') {              if ($status eq 'con_lost') {
                 delete ($Server_status{$server});                  delete ($Server_status{$server});
                 next;                  next;
Line 1918  END Line 2000  END
                     # $r->print(&Apache::lonmysql::get_debug());                      # $r->print(&Apache::lonmysql::get_debug());
                     $hitcountsum ++;                      $hitcountsum ++;
                     $time_remaining = $max_time - (time - $starttime) ;                      $time_remaining = $max_time - (time - $starttime) ;
                       $time_remaining = 0 if ($time_remaining < 0);
                     if ($last_time - $time_remaining > 0) {                      if ($last_time - $time_remaining > 0) {
                         &update_seconds($r,$time_remaining);                          &update_seconds($r,$time_remaining);
                         $last_time = $time_remaining;                          $last_time = $time_remaining;
Line 2113  sub display_results { Line 2196  sub display_results {
         }          }
         my %Fields = %{&parse_row(@$row)};          my %Fields = %{&parse_row(@$row)};
         my $output="<p>\n";          my $output="<p>\n";
           if (! defined($Fields{'title'}) || $Fields{'title'} eq '') {
               $Fields{'title'} = 'Untitled';
           }
         my $prefix=&catalogmode_output($Fields{'title'},$Fields{'url'},          my $prefix=&catalogmode_output($Fields{'title'},$Fields{'url'},
                                        $Fields{'id'},$checkbox_num++);                                         $Fields{'id'},$checkbox_num++);
         # Render the result into html          # Render the result into html

Removed from v.1.207  
changed lines
  Added in v.1.211


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