Diff for /loncom/interface/lonsearchcat.pm between versions 1.288 and 1.318

version 1.288, 2007/07/11 20:32:15 version 1.318, 2009/10/23 16:55:15
Line 191  sub handler { Line 191  sub handler {
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
        ({href=>'/adm/searchcat?'.         ({href=>'/adm/searchcat?'.
        &Apache::loncommon::inhibit_menu_check().         &Apache::loncommon::inhibit_menu_check().
                '&catalogmode='.$env{'form.catalogmode'}.                 '&catalogmode='.$env{'form.catalogmode'}.
                '&launch='.$env{'form.launch'}.                 '&launch='.$env{'form.launch'}.
                '&mode='.$env{'form.mode'},                 '&mode='.$env{'form.mode'},
               text=>"$crumb_text",                text=>"$crumb_text",
               target=>'_top',                target=>'_top',
               bug=>'Searching',});                bug=>'Searching',});
Line 266  sub handler { Line 266  sub handler {
     ## Configure dynamic components of interface      ## Configure dynamic components of interface
     ##      ##
     if ($env{'form.catalogmode'} eq 'interactive') {      if ($env{'form.catalogmode'} eq 'interactive') {
         $closebutton="<input type='button' name='close' value='CLOSE' ";          $closebutton="<input type='button' name='close' value='".&mt('Close')."' ";
         if ($env{'form.phase'} =~ /(results|run_search)/) {          if ($env{'form.phase'} =~ /(results|run_search)/) {
     $closebutton .="onClick='parent.close()'";              $closebutton .="onclick='parent.close()'";
         } else {          } else {
             $closebutton .="onClick='self.close()'";              $closebutton .="onclick='self.close()'";
         }          }
         $closebutton .=">\n";          $closebutton .=" />\n";
     } elsif ($env{'form.catalogmode'} eq 'import') {      } elsif ($env{'form.catalogmode'} eq 'import') {
         $closebutton="<input type='button' name='close' value='CLOSE' ";          $closebutton="<input type='button' name='close' value='".&mt('Close')."' ";
         if ($env{'form.phase'} =~ /(results|run_search)/) {          if ($env{'form.phase'} =~ /(results|run_search)/) {
     $closebutton .="onClick='parent.close()'";              $closebutton .="onclick='parent.close()'";
         } else {          } else {
             $closebutton .="onClick='self.close()'";              $closebutton .="onclick='self.close()'";
         }          }
         $closebutton .= ">";          $closebutton .= " />";
           my $txt_import = &mt('IMPORT');
         $importbutton=<<END;          $importbutton=<<END;
 <input type='button' name='import' value='IMPORT'  <input type='button' name='import' value='$txt_import'
 onClick='javascript:select_group()'>  onclick='javascript:select_group()' />
 END  END
     } else {      } else {
         $closebutton = '';          $closebutton = '';
Line 313  END Line 314  END
         }          }
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/searchcat?'.&Apache::loncommon::inhibit_menu_check().              ({href=>'/adm/searchcat?'.&Apache::loncommon::inhibit_menu_check().
   '&phase=disp_adv'.                    '&amp;phase=disp_adv'.
                   '&catalogmode='.$env{'form.catalogmode'}.                    '&amp;catalogmode='.$env{'form.catalogmode'}.
                   '&launch='.$env{'form.launch'}.                    '&amp;launch='.$env{'form.launch'}.
                   '&mode='.$env{'form.mode'},                    '&amp;mode='.$env{'form.mode'},
                   text=>"Advanced $srchtype Search",                    text=>"Advanced $srchtype Search",
                   bug=>'Searching',});                    bug=>'Searching',});
     } elsif ($env{'form.searchmode'} eq 'course search') {      } elsif ($env{'form.searchmode'} eq 'course search') {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/searchcat?'.&Apache::loncommon::inhibit_menu_check().              ({href=>'/adm/searchcat?'.&Apache::loncommon::inhibit_menu_check().
   '&phase=disp_adv'.                    '&amp;phase=disp_adv'.
                   'catalogmode='.$env{'form.catalogmode'}.                    'catalogmode='.$env{'form.catalogmode'}.
                   '&launch='.$env{'form.launch'}.                    '&amp;launch='.$env{'form.launch'}.
                   '&mode='.$env{'form.mode'},                    '&amp;mode='.$env{'form.mode'},
                   text=>"Course Search",                    text=>"Course Search",
                   bug=>'Searching',});                    bug=>'Searching',});
     }      }
Line 487  sub course_search { Line 488  sub course_search {
     my $discuss=$env{'form.crsdiscuss'};      my $discuss=$env{'form.crsdiscuss'};
     my @allwords=($search_string,@New_Words);      my @allwords=($search_string,@New_Words);
     $totalfound=0;      $totalfound=0;
     $r->print(&Apache::loncommon::start_page('Course Search').  
       &Apache::lonhtmlcommon::add_breadcrumb
           ({href=>'/adm/searchcat?'.&Apache::loncommon::inhibit_menu_check().
                 '&amp;phase=disp_adv'.
                 'catalogmode='.$env{'form.catalogmode'}.
                 '&amp;launch='.$env{'form.launch'}.
                 '&amp;mode='.$env{'form.mode'},
                 text=>"Course Search",
                 bug=>'Searching',});
       $r->print(&Apache::loncommon::start_page('Course Search'));
       $r->print(&Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',
                           $env{'form.catalogmode'} ne 'import'));
   
       $r->print(
       '<hr /><center><font size="+2" face="arial">'.        '<hr /><center><font size="+2" face="arial">'.
       $pretty_search_string.'</font></center>'.        $pretty_search_string.'</font></center>'.
       '<hr /><b>'.&mt('Course content').':</b><br />');        '<hr /><b>'.&mt('Course content').':</b><br />');
Line 510  sub course_search { Line 524  sub course_search {
         untie(%hash);          untie(%hash);
     }      }
     unless ($totalfound) {      unless ($totalfound) {
  $r->print('<p>'.&mt('No matches found in resources').'.</p>');   $r->print('<p class="LC_info">'.&mt('No matches found in resources.').'</p>');
     }      }
   
 # Check discussions if requested  # Check discussions if requested
Line 518  sub course_search { Line 532  sub course_search {
         my $totaldiscussions = 0;          my $totaldiscussions = 0;
         $r->print('<br /><br /><b>'.&mt('Discussion postings').':</b><br />');           $r->print('<br /><br /><b>'.&mt('Discussion postings').':</b><br />'); 
         my $navmap = Apache::lonnavmaps::navmap->new();          my $navmap = Apache::lonnavmaps::navmap->new();
         my @allres=$navmap->retrieveResources();          if (defined($navmap)) {
         my %discussiontime = &Apache::lonnet::dump('discussiontimes',              my @allres=$navmap->retrieveResources();
                                $env{'course.'.$env{'request.course.id'}.'.domain'},              my %discussiontime = &Apache::lonnet::dump('discussiontimes',
                                $env{'course.'.$env{'request.course.id'}.'.num'});                                     $env{'course.'.$env{'request.course.id'}.'.domain'},
         foreach my $resource (@allres) {                                     $env{'course.'.$env{'request.course.id'}.'.num'});
             my $result = '';              foreach my $resource (@allres) {
             my $applies = 0;                  my $result = '';
             my $symb = $resource->symb();                  my $applies = 0;
             my $ressymb = $symb;                  my $symb = $resource->symb();
             if ($symb =~ m#(___adm/$LONCAPA::domain_re/$LONCAPA::username_re)/(\d+)/bulletinboard$#) {                  my $ressymb = $symb;
                 $ressymb = 'bulletin___'.$2.$1.'/'.$2.'/bulletinboard';                  if ($symb =~ m#(___adm/$LONCAPA::domain_re/$LONCAPA::username_re)/(\d+)/bulletinboard$#) {
                 unless ($ressymb =~ m#bulletin___\d+___adm/wrapper#) {                      $ressymb = 'bulletin___'.$2.$1.'/'.$2.'/bulletinboard';
                     $ressymb=~s#(bulletin___\d+___)#$1adm/wrapper/#;                      unless ($ressymb =~ m#bulletin___\d+___adm/wrapper#) {
                           $ressymb=~s#(bulletin___\d+___)#$1adm/wrapper/#;
                       }
                 }                  }
             }                  if (defined($discussiontime{$ressymb})) { 
             if (defined($discussiontime{$ressymb})) {                       my %contrib = &Apache::lonnet::restore($ressymb,$env{'request.course.id'},
                 my %contrib = &Apache::lonnet::restore($ressymb,$env{'request.course.id'},                           $env{'course.'.$env{'request.course.id'}.'.domain'},
                      $env{'course.'.$env{'request.course.id'}.'.domain'},                           $env{'course.'.$env{'request.course.id'}.'.num'});
                      $env{'course.'.$env{'request.course.id'}.'.num'});                      if ($contrib{'version'}) {
                 if ($contrib{'version'}) {                          for (my $id=1;$id<=$contrib{'version'};$id++) {
                     for (my $id=1;$id<=$contrib{'version'};$id++) {                              unless (($contrib{'hidden'}=~/\.$id\./) || ($contrib{'deleted'}=~/\.$id\./)) { 
                         unless (($contrib{'hidden'}=~/\.$id\./) || ($contrib{'deleted'}=~/\.$id\./)) {                                   if ($contrib{$id.':subject'}) {
                             if ($contrib{$id.':subject'}) {                                      $result .= $contrib{$id.':subject'};
                                 $result .= $contrib{$id.':subject'};                                  }
                             }                                  if ($contrib{$id.':message'}) {
                             if ($contrib{$id.':message'}) {                                      $result .= $contrib{$id.':message'};
                                 $result .= $contrib{$id.':message'};  
                             }  
                             if ($contrib{$id,':attachmenturl'}) {  
                                 if ($contrib{$id,':attachmenturl'} =~ m-/([^/]+)$-) {  
                                     $result .= $1;  
                                 }                                  }
                                   if ($contrib{$id,':attachmenturl'}) {
                                       if ($contrib{$id,':attachmenturl'} =~ m-/([^/]+)$-) {
                                           $result .= $1;
                                       }
                                   }
                                   $applies = &checkwords($result,$applies,@allwords);
                             }                              }
                             $applies = &checkwords($result,$applies,@allwords);  
                         }                          }
                     }                      }
                 }                  }
             }  
 # Does this discussion apply?  # Does this discussion apply?
             if ($applies) {                  if ($applies) {
                 my ($map,$ind,$url)=&Apache::lonnet::decode_symb($ressymb);                      my ($map,$ind,$url)=&Apache::lonnet::decode_symb($ressymb);
                 my $disctype = &mt('resource');                      my $disctype = &mt('resource');
                 if ($url =~ m#/bulletinboard$#) {                      if ($url =~ m#/bulletinboard$#) {
                     if ($url =~m#^adm/wrapper/adm/.*/bulletinboard$#) {                          if ($url =~m#^adm/wrapper/adm/.*/bulletinboard$#) {
                         $url =~s#^adm/wrapper##;                              $url =~s#^adm/wrapper##;
                           }
                           $disctype = &mt('discussion board');
                       } else {
                           $url = '/res/'.$url;
                     }                      }
                     $disctype = &mt('bulletin board');                      if ($url =~ /\?/) {
                 } else {                          $url .= '&amp;symb=';
                     $url = '/res/'.$url;                      } else {
                 }                          $url .= '?symb=';
                 if ($url =~ /\?/) {                      }
                     $url .= '&symb=';                      $url .= &escape($resource->symb());
                       my $title = $resource->compTitle();
                       $r->print('<br /><a href="'.$url.'" target="cat">'.
                            ($title?$title:$url).'</a>&nbsp;&nbsp;-&nbsp;'.
                            $disctype.'<br />');
                       $totaldiscussions++;
                 } else {                  } else {
                     $url .= '?symb=';                      $r->print(' .');
                 }                  }
                 $url .= &escape($resource->symb());  
                 my $title = $resource->compTitle();  
                 $r->print('<br /><a href="'.$url.'" target="cat">'.  
                      ($title?$title:$url).'</a>&nbsp;&nbsp;-&nbsp;'.$disctype.'<br />');  
                 $totaldiscussions++;  
             } else {  
                 $r->print(' .');  
             }              }
         }              unless ($totaldiscussions) {
         unless ($totaldiscussions) {                  $r->print('<p class="LC_info">'.&mt('No matches found in postings.').'</p>');
             $r->print('<p>'.&mt('No matches found in postings').'.</p>');              }
           } else {
               $r->print('<div class="LC_error">'.&mt('An error occurred retrieving information about resources in the course.').'<br />'.&mt('It is recommended that you [_1]re-initialize the course[_2] and then try your search again.','<a href="/adm/roles">','</a>').'</div>');
         }          }
     }      }
     
Line 684  sub print_basic_search_form { Line 703  sub print_basic_search_form {
     my $bread_crumb =      my $bread_crumb =
         &Apache::lonhtmlcommon::breadcrumbs('Searching','Search_Basic',          &Apache::lonhtmlcommon::breadcrumbs('Searching','Search_Basic',
     $env{'form.catalogmode'} ne 'import');      $env{'form.catalogmode'} ne 'import');
     my $scrout = &Apache::loncommon::start_page('Search').$bread_crumb;      my $scrout = &Apache::loncommon::start_page('Content Library').$bread_crumb;
 # Search form for resource space   # Search form for resource space 
     if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'})) {      if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'})) {
         $scrout .= &setup_basic_search($r,'res',$hidden_fields,$closebutton);          $scrout .= &setup_basic_search($r,'res',$hidden_fields,$closebutton);
Line 698  sub print_basic_search_form { Line 717  sub print_basic_search_form {
  'note' => 'Enter terms or phrases, then press "Search" below',   'note' => 'Enter terms or phrases, then press "Search" below',
  'use' => 'use related words',   'use' => 'use related words',
  'full' =>'fulltext search (time consuming)',   'full' =>'fulltext search (time consuming)',
          'disc' => 'search discussion postings (resources and bulletin boards)',           'disc' => 'search discussion postings (resources and discussion boards)',
    );     );
         $scrout.=(<<ENDCOURSESEARCH);          $scrout.=(<<ENDCOURSESEARCH);
 <form name="loncapa_search" method="post" action="/adm/searchcat">  <form name="loncapa_search" method="post" action="/adm/searchcat">
Line 710  $hidden_fields Line 729  $hidden_fields
 <p>  <p>
 $lt{'note'}.  $lt{'note'}.
 </p>  </p>
 <p>  
 <table>  <table>
 <tr><td>  <tr><td>
 ENDCOURSESEARCH  ENDCOURSESEARCH
Line 731  ENDCOURSESEARCH Line 749  ENDCOURSESEARCH
 <tr><td><label>$relcheckbox $lt{'use'}</label></td><td></td></tr>  <tr><td><label>$relcheckbox $lt{'use'}</label></td><td></td></tr>
 <tr><td><label>$crscheckbox $lt{'full'}</label></td><td></td></tr>  <tr><td><label>$crscheckbox $lt{'full'}</label></td><td></td></tr>
 <tr><td><label>$discheckbox $lt{'disc'}</label></td><td></td></tr>  <tr><td><label>$discheckbox $lt{'disc'}</label></td><td></td></tr>
 </table><p>  </table>
 &nbsp;<input type="submit" name="coursesubmit" value='$lt{'srch'}' />  <p>
   <input type="submit" name="coursesubmit" value='$lt{'srch'}' />
 </p>  </p>
 </center>  </center>
 </form>  </form>
Line 751  sub setup_basic_search { Line 770  sub setup_basic_search {
                               portfolio => 'Portfolio Search',                                portfolio => 'Portfolio Search',
     );      );
     my ($userelatedwords,$onlysearchdomain,$inclext,$adv_search_link,$scrout);      my ($userelatedwords,$onlysearchdomain,$inclext,$adv_search_link,$scrout);
     $userelatedwords = '<label>'.&mt('[_1] use related words',  
       &Apache::lonhtmlcommon::checkbox('related',$env{'form.related'},'related')).      $userelatedwords = '<label>'
                        '</label>';                        .&Apache::lonhtmlcommon::checkbox(
     $onlysearchdomain = '<label>'.&mt('[_1] only search domain [_2]',                             'related',
       &Apache::lonhtmlcommon::checkbox('domains',$env{'form.domains'},                             $env{'form.related'},
                                        $r->dir_config('lonDefDomain')),                             'related')
       $r->dir_config('lonDefDomain')).                        .' '
                         '</label>';                       .&mt('use related words')
     if ($area eq 'res') {                       .'</label>';
         $inclext= '<label>'.&mt('[_1] include external resources',  
              &Apache::lonhtmlcommon::checkbox('inclext',$env{'form.inclext'})).      $onlysearchdomain = '<label>'
                   '</label>';                         .&Apache::lonhtmlcommon::checkbox(
     }                             'domains',
                              $env{'form.domains'},
                              $r->dir_config('lonDefDomain'))
                          .' '
                          .&mt('only search domain [_1]'
                                  ,'<b>'.$r->dir_config('lonDefDomain').'</b>')
                          .'</label>';
   
     $adv_search_link = '<a href="/adm/searchcat?'.      $adv_search_link = '<a href="/adm/searchcat?'.
                &Apache::loncommon::inhibit_menu_check().                 &Apache::loncommon::inhibit_menu_check().
        '&phase=disp_adv'.         '&amp;phase=disp_adv'.
                        '&catalogmode='.$env{'form.catalogmode'}.                         '&amp;catalogmode='.$env{'form.catalogmode'}.
                        '&launch='.$env{'form.launch'}.                         '&amp;launch='.$env{'form.launch'}.
                        '&mode='.$env{'form.mode'}.                         '&amp;mode='.$env{'form.mode'}.
                        '&area='.$area.                         '&amp;area='.$area.
                        '&form='.$env{'form.form'}.                         '&amp;form='.$env{'form.form'}.
                        '&titleelement='.$env{'form.titleelement'}.                         '&amp;titleelement='.$env{'form.titleelement'}.
                        '&element='.$env{'form.element'}.                         '&amp;element='.$env{'form.element'}.
                        '">'.&mt('Advanced Search').'</a>';                         '">'.&mt('Advanced Search').'</a>';
     #      #
     $scrout.='<form name="loncapa_search" method="post" '.      $scrout.='<form name="loncapa_search" method="post" '.
Line 784  sub setup_basic_search { Line 810  sub setup_basic_search {
                  $scrout .= '<input type="hidden" name="area" value="'.$area.'" />';                   $scrout .= '<input type="hidden" name="area" value="'.$area.'" />';
              }               }
     #      #
     $scrout .= '<center>'.$/;      $scrout .= '<div align="center">'.$/;
 #    if ($env{'request.course.id'}) {  #    if ($env{'request.course.id'}) {
         $scrout .= '<h1>'.$lt{$area}.'</h1>';          $scrout .= '<h1>'.$lt{$area}.'</h1>';
 #    } else {  #    } else {
Line 796  sub setup_basic_search { Line 822  sub setup_basic_search {
              &Apache::lonhtmlcommon::textbox('basicexp',               &Apache::lonhtmlcommon::textbox('basicexp',
                                              $env{'form.basicexp'},50).                                               $env{'form.basicexp'},50).
              '<br />'.               '<br />'.
             '<font size="-1">'.&searchhelp().'</font>'.'</td>'.              '<span class="LC_fontsize_small">'.&searchhelp().'</span>'.'</td>'.
             '<td><font size="-1">'.              '<td>'.
             '<nobr>'.('&nbsp;'x3).$adv_search_link.'</nobr>'.'<br />'.              '<span class="LC_nobreak">'.('&nbsp;'x3).$adv_search_link.'</span>'.'<br />'.
             '<nobr>'.('&nbsp;'x1).$userelatedwords.'</nobr>'.'<br />'.              '<span class="LC_nobreak">'.('&nbsp;'x1).$userelatedwords.'</span>'.'<br />'.
             '<nobr>'.('&nbsp;'x1).$onlysearchdomain.'</nobr>'.'<br />'.              '<span class="LC_nobreak">'.('&nbsp;'x1).$onlysearchdomain.'</span>'.'<br />'.
             '<nobr>'.('&nbsp;'x1).$inclext.'</nobr>'.'<br />'.              '<span class="LC_nobreak">'.('&nbsp;'x1).$inclext.'</span>'.'<br />'.
              '</font></td>'.               '</td>'.
             '</tr>'.$/;              '</tr>'.
     #              '</table>'.$/;
     $scrout .= '<tr><td align="center" colspan="2">'.      #
                '<font size="-1">'.      $scrout .= '<p>'
                '<input type="submit" name="basicsubmit" '.                .&viewoptions()
                'value="'.&mt('Search').'" />'.                .'</p>'
                ('&nbsp;'x2).$closebutton.('&nbsp;'x2). &viewoptions().                .'<p>'
                '</font>'.                .'<input type="submit" name="basicsubmit" '
                '</td></tr>'.$/;                .'value="'.&mt('Search').'" />'
     $scrout .= '</table>'.$/.'</center>'.'</form>';                .' '
                 .$closebutton
                 .'</p>';
       #
       $scrout .= '</div>'.'</form>';
     return $scrout;      return $scrout;
 }   } 
   
Line 838  sub print_advanced_search_form{ Line 868  sub print_advanced_search_form{
        'reset' => 'Reset',         'reset' => 'Reset',
        'help' => 'Help');         'help' => 'Help');
     my $advanced_buttons=<<"END";      my $advanced_buttons=<<"END";
   <p>
 <input type="submit" name="advancedsubmit" value='$lt{"srch"}' />  <input type="submit" name="advancedsubmit" value='$lt{"srch"}' />
 <input type="reset" name="reset" value='$lt{"reset"}' />  <input type="reset" name="reset" value='$lt{"reset"}' />
 $closebutton  $closebutton
   </p>
 END  END
     my $srchtype = 'Catalog';      my $srchtype = 'Catalog';
     my $jscript;      my $jscript;
     if ($env{'form.area'} eq 'portfolio') {      if ($env{'form.area'} eq 'portfolio') {
         $srchtype = 'Portfolio';          $srchtype = 'Portfolio';
         $jscript = '<script type="text/javascript">          $jscript = '<script type="text/javascript">
   // <![CDATA[
 function additional_metadata() {  function additional_metadata() {
     if (document.advsearch.newfield.checked) {      if (document.advsearch.newfield.checked) {
         document.advsearch.phase.value = "disp_adv";          document.advsearch.phase.value = "disp_adv";
Line 854  function additional_metadata() { Line 887  function additional_metadata() {
         document.advsearch.submit();          document.advsearch.submit();
     }      }
 }  }
   // ]]>
 </script>';  </script>';
     }      }
     my $scrout= &Apache::loncommon::start_page("Advanced $srchtype Search",      my $scrout= &Apache::loncommon::start_page("Advanced $srchtype Search",
                                                $jscript);                                                 $jscript);
     $scrout .= <<"ENDHEADER";      $scrout .= $bread_crumb;
 $bread_crumb  
 <form method="post" action="/adm/searchcat" name="advsearch">      $scrout .= '<form method="post" action="/adm/searchcat" name="advsearch">'
 <p>                .$hidden_fields 
 $advanced_buttons                .'<input type="hidden" name="phase" value="adv_search" />';
 ENDHEADER  
     $scrout.=('&nbsp;'x2).&viewoptions().'</p>'.$hidden_fields.       $scrout .= '<fieldset>'."\n"
         '<input type="hidden" name="phase" value="adv_search" />';                .'<legend>'.&mt('Display Options').'</legend>'."\n"
                 .&viewoptions()
                 .'</fieldset>';
   
       $scrout .= $advanced_buttons;
   
       $scrout .= &Apache::lonhtmlcommon::start_pick_box();
   
     my %fields=&Apache::lonmeta::fieldnames();      my %fields=&Apache::lonmeta::fieldnames();
     #  
     $scrout .= '<h3>'.&mt('Standard [_1] Metadata',$srchtype).'</h3>';      # Standard Metadata
     $scrout .= "<table>\n";      $scrout .= &Apache::lonhtmlcommon::row_headline()
     $scrout .= '<tr><td>&nbsp;</td><td colspan="2"><font size="-1">'.                .'<h3>'.&mt("Standard $srchtype Metadata").'</h3>'
         ('&nbsp;'x2).&searchhelp()."</font></td></tr>\n";                .&searchhelp()
                 .&Apache::lonhtmlcommon::row_closure();
     my %related_word_search =       my %related_word_search = 
         ('title'    => 1,          ('title'    => 1,
          'author'   => 0,           'author'   => 0,
Line 883  ENDHEADER Line 925  ENDHEADER
          'abstract' => 1,           'abstract' => 1,
          'standards'=> 1,           'standards'=> 1,
          'mime'     => 1,           'mime'     => 1,
  'subject'  => 1,           'subject'  => 1,
          );           );
     #      #
     foreach my $field ('title','author','subject','owner','authorspace',      foreach my $field ('title','author','subject','owner','authorspace',
        'modifyinguser','keywords','notes','abstract',                         'modifyinguser','keywords','notes','abstract',
        'standards','mime') {                         'standards','mime') {
  $scrout.='<tr><td align="right">'.&titlefield($fields{$field}).'</td><td>'.          $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field}))
     &Apache::lonmeta::prettyinput($field,                    .&Apache::lonmeta::prettyinput($field,
                                           $env{'form.'.$field},                                            $env{'form.'.$field},
                                           $field,                                            $field,
                                           'advsearch',                                            'advsearch',
   $related_word_search{$field},                                            $related_word_search{$field},
                                           '</td><td align="left">',                                            '',
                                           $env{'form.'.$field.'_related'},                                            $env{'form.'.$field.'_related'},
                                           50);                                            50);
         if ($related_word_search{$field}) {          if ($related_word_search{$field}) {
             $scrout .= 'related words';              $scrout .= &mt('related words');
         } else {          } else {
             $scrout .= '</td><td>&nbsp;';              $scrout .= '';
         }          }
         $scrout .= '</td></tr>'.$/;          $scrout .= &Apache::lonhtmlcommon::row_closure();
     }      }
     foreach my $field ('lowestgradelevel','highestgradelevel') {      foreach my $field ('lowestgradelevel','highestgradelevel') {
  $scrout.='<tr>'.          $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field}))
             '<td align="right">'.&titlefield($fields{$field}).'</td>'.                    .&Apache::lonmeta::prettyinput($field,
             '<td colspan="2">'.  
     &Apache::lonmeta::prettyinput($field,  
                                           $env{'form.'.$field},                                            $env{'form.'.$field},
                                           $field,                                            $field,
                                           'advsearch',                                            'advsearch',
   0).                                            0)
                                           '</td></tr>'.$/;                    .&Apache::lonhtmlcommon::row_closure();
     }      }
     $scrout.='<tr><td align="right">'.  
  &titlefield(&mt('MIME Type Category')).'</td><td colspan="2">'.       $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('MIME Type Category')))
     &Apache::loncommon::filecategoryselect('category',                .&Apache::loncommon::filecategoryselect('category',
    $env{'form.category'}).                     $env{'form.category'})
     '</td></tr>'.$/;                .&Apache::lonhtmlcommon::row_closure();
     $scrout.='<tr><td align="right" valign="top">'.  
  &titlefield(&mt('Domains')).'</td><td colspan="2">'.       $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Domains')))
     &Apache::loncommon::domain_select('domains',                .&Apache::loncommon::domain_select('domains',
    $env{'form.domains'},1).                     $env{'form.domains'},1)
    '<br /><label>';                .&Apache::lonhtmlcommon::row_closure();
             if ($env{'form.area'} ne 'portfolio') {  
                 $scrout .= &mt('[_1] include external resources',  
                            &Apache::lonhtmlcommon::checkbox  
                            ('inclext',$env{'form.inclext'})).'</label>'  
             }  
      $scrout .= '</td></tr>'.$/;  
     #  
     # Misc metadata      # Misc metadata
     if ($env{'form.area'} ne 'portfolio') {      if ($env{'form.area'} ne 'portfolio') {
         $scrout.='<tr><td align="right" valign="top">'.          $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Copyright/Distribution')))
          &titlefield(&mt('Copyright/Distribution')).                    .&Apache::lonmeta::selectbox('copyright',
                  '</td><td colspan="2">'.  
                  &Apache::lonmeta::selectbox('copyright',  
                                              $env{'form.copyright'},                                               $env{'form.copyright'},
                                 \&Apache::loncommon::copyrightdescription,                                  \&Apache::loncommon::copyrightdescription,
                                        ( undef,                                         ( undef,
                                         &Apache::loncommon::copyrightids)                                          &Apache::loncommon::copyrightids)
                                 ).'</td></tr>'.$/;                                  )
                     .&Apache::lonhtmlcommon::row_closure();
     }      }
     $scrout.='<tr><td align="right" valign="top">'.  
  &titlefield(&mt('Language')).'</td><td colspan="2">'.      $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Language')))
         &Apache::lonmeta::selectbox('language',                .&Apache::lonmeta::selectbox('language',
                                     $env{'form.language'},                                      $env{'form.language'},
                                     \&Apache::loncommon::languagedescription,                                      \&Apache::loncommon::languagedescription,
                                     ('any',&Apache::loncommon::languageids)                                      ('any',&Apache::loncommon::languageids)
                                     ).'</td></tr>';                                      )
     $scrout .= "</table>\n";                .&Apache::lonhtmlcommon::row_closure();
   
           
       # Portfolio Metadata
     if ($env{'form.area'} eq 'portfolio') {      if ($env{'form.area'} eq 'portfolio') {
         # Added fields          # Added fields
         my $curnumadd = $env{'form.numaddedfields'};          my $curnumadd = $env{'form.numaddedfields'};
         if ($curnumadd eq '') {          if ($curnumadd eq '') {
             $curnumadd = 1;              $curnumadd = 1;
         }          }
         $scrout .= '<h3>'.&mt('Custom Metadata fields').'</h3>';          $scrout .= &Apache::lonhtmlcommon::row_headline()
         $scrout .= "<table>\n";                    .'<h3>'.&mt('Custom Metadata fields').'</h3>'
         $scrout .= '<tr><td>&nbsp;</td><td align="center">'.                    .&Apache::lonhtmlcommon::row_closure()
                    &mt('Field Name').'</td>'.'<td align="center">'.                    .&Apache::lonhtmlcommon::row_title('')
                    &mt('Field Value(s)').'</td></tr>';                    .&mt('Field Name').' | '.&mt('Field Value(s)')
                     .&Apache::lonhtmlcommon::row_closure();
   
         for (my $j=0; $j<$curnumadd; $j++) {          for (my $j=0; $j<$curnumadd; $j++) {
             my $num = $j+1;              my $num = $j+1;
             $scrout .= '<tr><td>'.&mt('Custom metadata [_1]: ',$num).              $scrout .= &Apache::lonhtmlcommon::row_title(&mt('Custom metadata [_1]',$num))
                        '</td><td align="center">'.                        .'<input type="text"'
                        '<input type="text" name="addedfield_'.$j.                        .' name="addedfield_'.$j.'" size="10"'
                        '" size="10" value="'.$env{'form.addedfield_'.$j}.                        .' value="'.$env{'form.addedfield_'.$j}.'" />'
                        '" /></td>'.                        .' '
                        '<td align="center"><input type="text" '.                        .'<input type="text" '
                        'name="addedvalues_'.$j.'" size="15" value="'.                        .'name="addedvalues_'.$j.'" size="15"'
                        $env{'form.addedvalues_'.$j}.'" /></td></tr>';                        .' value="'.$env{'form.addedvalues_'.$j}.'" />'
         }                        .&Apache::lonhtmlcommon::row_closure();
         $scrout .= '<tr><td align="left" colspan="3"><label>'.          }
                    '<input type="checkbox" name="newfield" '.          $scrout .= &Apache::lonhtmlcommon::row_title('')
                    'value="1" onclick="javascript:additional_metadata()" />'.                    .'<label>'
                    &mt('Another custom field/value pair?').'</label>'.                    .'<input type="checkbox" name="newfield"'
                    '<input type="hidden" name="numaddedfields" value="'.                    .' value="1" onclick="javascript:additional_metadata()" />'
                    $curnumadd.'" /></td></tr></table>';                    .&mt('Another custom field/value pair?').'</label>'
     } else {                    .'<input type="hidden" name="numaddedfields"'
                     .' value="'.$curnumadd.'" />'
                     .&Apache::lonhtmlcommon::row_closure();
   } else {
         #          #
         # Dynamic metadata          # Dynamic metadata
         $scrout .= '<h3>'.&mt('Problem Statistics').'</h3>';          $scrout .= &Apache::lonhtmlcommon::row_headline()
         $scrout .= "<table>\n";                    .'<h3>'.&mt('Problem Statistics').'</h3>'
         $scrout .= '<tr><td>&nbsp;</td><td align="center">'.                    .&Apache::lonhtmlcommon::row_closure();
                    &mt('Minimum').'</td>'.'<td align="center">'.          $scrout .= &Apache::lonhtmlcommon::row_title('')
                    &mt('Maximum').'</td></tr>'."\n";                    .&mt('Minimum').' | '.&mt('Maximum')
                     .&Apache::lonhtmlcommon::row_closure();
         foreach my $statistic           foreach my $statistic 
             ({ name=>'count',              ({ name=>'count',
                description=>'Network-wide number of accesses (hits)',},                 description=>'Network-wide number of accesses (hits)',},
Line 1004  ENDHEADER Line 1042  ENDHEADER
                description=>'Degree of difficulty',},                 description=>'Degree of difficulty',},
              { name => 'disc',               { name => 'disc',
                description=>'Degree of discrimination'}) {                 description=>'Degree of discrimination'}) {
               $scrout .= '<tr><td align="right">'.                $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt($statistic->{'description'})))
                          &titlefield(&mt($statistic->{'description'})).                          .'<input type="text" name="'.$statistic->{'name'}
                          '</td><td align="center">'.                          .'_min" value="" size="6" />'
                          '<input type="text" name="'.$statistic->{'name'}.                          .' '
                          '_min" value="" size="6" /></td><td align="center">'.                          .'<input type="text" name="'.$statistic->{'name'}
                          '<input type="text" name="'.$statistic->{'name'}.                          .'_max" value="" size="6" />'
                          '_max" value="" size="6" /></td></tr>'.$/;                          .&Apache::lonhtmlcommon::row_closure();
         }          }
         $scrout .= "</table>\n";  
         $scrout .= '<h3>'.&mt('Evaluation Data').'</h3>';          $scrout .= &Apache::lonhtmlcommon::row_headline()
         $scrout .= "<table>\n";                    .'<h3>'.&mt('Evaluation Data').'</h3>'
         $scrout .= '<tr><td>&nbsp;</td><td align="center">'.                    .&Apache::lonhtmlcommon::row_closure();
                    &mt('Minimum').'</td>'.'<td align="center">'.          $scrout .= &Apache::lonhtmlcommon::row_title('')
                    &mt('Maximum').'</td></tr>'."\n";                    .&mt('Minimum').' | '.&mt('Maximum')
                     .&Apache::lonhtmlcommon::row_closure();
         foreach my $evaluation          foreach my $evaluation
             ( { name => 'clear',              ( { name => 'clear',
                 description => 'Material presented in clear way'},                  description => 'Material presented in clear way'},
Line 1029  ENDHEADER Line 1068  ENDHEADER
                 description => 'Material appears to be correct'},                  description => 'Material appears to be correct'},
               { name => 'technical',                { name => 'technical',
                 description => 'Resource is technically correct'}){                  description => 'Resource is technically correct'}){
             $scrout .= '<tr><td align="right">'.              $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt($evaluation->{'description'})))
                        &titlefield(&mt($evaluation->{'description'})).                        .'<input type="text" name="'
                        '</td><td align="center">'.                        .$evaluation->{'name'}.'_min" value="" size="6" />'
                        '<input type="text" name="'.                        .' '
                        $evaluation->{'name'}.'_min" value="" size="6" />'.                        .'<input type="text" name="'
                        '</td><td align="center"><input type="text" name="'.                        .$evaluation->{'name'}.'_max" value="" size="6" />'
                        $evaluation->{'name'}.'_max" value="" size="6" />'.                        .&Apache::lonhtmlcommon::row_closure();
                        '</td></tr>'.$/;  
         }          }
         $scrout .= "</table>\n";  
     }      }
     #      #
     # Creation/Modification date limits      # Creation/Modification date limits
     $scrout .= '<h3>'.&mt('Creation and Modification dates').'</h3>';      $scrout .= &Apache::lonhtmlcommon::row_headline()
     $scrout .= "\n<table>\n";                .'<h3>'.&mt('Creation and Modification dates').'</h3>'
                 .&Apache::lonhtmlcommon::row_closure();
       $scrout .= &Apache::lonhtmlcommon::row_title('')
                 .&mt('Month[_1]Day[_2]Year','&nbsp;'x14,'&nbsp;'x6)
                 .&Apache::lonhtmlcommon::row_closure();
   
     my $cafter =       my $cafter = 
         &Apache::lonhtmlcommon::date_setter('advsearch',         # formname          &Apache::lonhtmlcommon::date_setter('advsearch',         # formname
                                             'creationdate1', # fieldname                                              'creationdate1', # fieldname
Line 1062  ENDHEADER Line 1104  ENDHEADER
                                             '',          # state                                              '',          # state
                                             1,           # no_hh_mm_ss                                              1,           # no_hh_mm_ss
                                             );                                              );
     $scrout .= &mt('<tr><td align="right">Created between</td>'.      $scrout .= &Apache::lonhtmlcommon::row_title(&mt('Created between'))
                    '<td>[_1]</td></tr>'.                .$cafter
                    '<tr><td align="right">and </td>'.                .&Apache::lonhtmlcommon::row_closure(1)
                    '<td>[_2]</td></tr>',$cafter,$cbefore);                .&Apache::lonhtmlcommon::row_title(&mt('and'))
                 .$cbefore
                 .&Apache::lonhtmlcommon::row_closure();
   
     my $lafter =       my $lafter = 
         &Apache::lonhtmlcommon::date_setter('advsearch',          &Apache::lonhtmlcommon::date_setter('advsearch',
                                             'revisiondate1',                                               'revisiondate1', 
Line 1084  ENDHEADER Line 1129  ENDHEADER
                                             '',          # state                                              '',          # state
                                             1,           # no_hh_mm_ss                                              1,           # no_hh_mm_ss
                                             );                                              );
     $scrout .= &mt('<tr><td align="right">Last modified between </td>'.      $scrout .= &Apache::lonhtmlcommon::row_title(&mt('Last modified between'))
                    '<td>[_1]</td></tr>'.                .$lafter
                    '<tr><td align="right">and</td>'.                .&Apache::lonhtmlcommon::row_closure(1)
                    '<td>[_2]</td></tr>',$lafter,$lbefore);                .&Apache::lonhtmlcommon::row_title(&mt('and'))
     $scrout.="</table>\n";                .$lbefore
     $scrout.=<<ENDDOCUMENT;                .&Apache::lonhtmlcommon::row_closure(1); # Last row of total pick_box
 $advanced_buttons  
 </form>      $scrout .= &Apache::lonhtmlcommon::end_pick_box();
 ENDDOCUMENT  
       $scrout .= $advanced_buttons
                 .'</form>';
   
     $scrout .= &Apache::loncommon::end_page();      $scrout .= &Apache::loncommon::end_page();
     $r->print($scrout);      $r->print($scrout);
     return;      return;
Line 1166  sub viewoptions { Line 1214  sub viewoptions {
     if (! defined($env{'form.viewselect'})) {       if (! defined($env{'form.viewselect'})) { 
         $env{'form.viewselect'}='detailed';           $env{'form.viewselect'}='detailed'; 
     }      }
     $scrout.=&Apache::lonmeta::selectbox('viewselect',      $scrout .= '<span class="LC_nobreak">'
  $env{'form.viewselect'},                .&mt('Type:').' '
  \&viewoptiontext,                .&Apache::lonmeta::selectbox('viewselect',
  sort(keys(%Views)));                     $env{'form.viewselect'},
     $scrout.= '&nbsp;&nbsp;';                     \&viewoptiontext,
                      sort(keys(%Views)))
                 .'</span>';
     my $countselect = &Apache::lonmeta::selectbox('show',      my $countselect = &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 .= ('&nbsp;'x2).&mt('[_1] Records per Page',$countselect).      $scrout .= ' <span class="LC_nobreak">'
         '</nobr>'.$/;                .&mt('Records per Page:').' '.$countselect
                 .'</span>'.$/;
     return $scrout;      return $scrout;
 }  }
   
Line 1402  sub parse_advanced_search { Line 1453  sub parse_advanced_search {
    'lastrevisiondatestart_month','lastrevisiondatestart_day',     'lastrevisiondatestart_month','lastrevisiondatestart_day',
    'lastrevisiondatestart_year','lastrevisiondateend_month',     'lastrevisiondatestart_year','lastrevisiondateend_month',
    'lastrevisiondateend_day','lastrevisiondateend_year') {     'lastrevisiondateend_day','lastrevisiondateend_year') {
  $env{'form.'.$field}=~s/[^\w\/\s\(\)\=\-\"\'.]//g;   $env{'form.'.$field}=~s/[^\w\/\s\(\)\=\-\"\'.\*]//g;
     }      }
     foreach ('mode','form','element') {      foreach ('mode','form','element') {
  # is this required?  Hmmm.   # is this required?  Hmmm.
Line 1647  sub parse_advanced_search { Line 1698  sub parse_advanced_search {
     #      #
     if (@queries) {      if (@queries) {
         if ($env{'form.area'} eq 'portfolio') {          if ($env{'form.area'} eq 'portfolio') {
             $query ="SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa, portfolio_addedfields pf WHERE (pm.url = pa.url AND pf.url = pm.url AND (pa.start < NOW() AND (pa.end IS NULL OR pa.end > NOW())) AND (".join(') AND (',@queries).'))';              $query ="SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa, portfolio_addedfields pf WHERE (pm.url = pa.url AND pf.url = pm.url AND (pa.start < UTC_TIMESTAMP() AND (pa.end IS NULL OR pa.end > UTC_TIMESTAMP())) AND (".join(') AND (',@queries).'))';
         } else {          } else {
     $query="SELECT * FROM metadata WHERE (".join(") AND (",@queries).')';      $query="SELECT * FROM metadata WHERE (".join(") AND (",@queries).')';
         }          }
Line 1710  sub parse_basic_search { Line 1761  sub parse_basic_search {
     #      #
     # 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;
     }      }
     foreach ('mode','form','element') {      foreach ('mode','form','element') {
  # is this required?  Hmmm.   # is this required?  Hmmm.
Line 1749  sub parse_basic_search { Line 1800  sub parse_basic_search {
     #}      #}
     my $final_query;      my $final_query;
     if ($env{'form.area'} eq 'portfolio') {      if ($env{'form.area'} eq 'portfolio') {
         $final_query = 'SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa  WHERE (pm.url = pa.url AND (pa.start < NOW() AND (pa.end IS NULL OR pa.end > NOW())) AND '.join(" AND ",@Queries).')';          $final_query = 'SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa  WHERE (pm.url = pa.url AND (pa.start < UTC_TIMESTAMP() AND (pa.end IS NULL OR pa.end > UTC_TIMESTAMP())) AND '.join(" AND ",@Queries).')';
     } else {      } else {
         $final_query = 'SELECT * FROM metadata WHERE '.join(" AND ",@Queries);          $final_query = 'SELECT * FROM metadata WHERE '.join(" AND ",@Queries);
     }      }
Line 2125  sub copyright_check { Line 2176  sub copyright_check {
         ($env{'user.domain'} ne $resdom)) {          ($env{'user.domain'} ne $resdom)) {
         return 0;          return 0;
     }      }
       # Check for custom rights
       if ($Metadata->{'copyright'} eq 'custom') {
          return &Apache::lonnet::customaccess('bre',$Metadata->{'url'});
       }
     return 1;      return 1;
 }  }
   
Line 2152  sub ensure_db_and_table { Line 2207  sub ensure_db_and_table {
     ## Sanity check the table id.      ## Sanity check the table id.
     ##      ##
     if (! defined($table) || $table eq '' || $table =~ /\D/ ) {      if (! defined($table) || $table eq '' || $table =~ /\D/ ) {
         $r->print("Unable to retrieve search results.  ".          $r->print(&Apache::loncommon::start_page(&mt('Error'))
                   "Unable to determine the table results were saved in.  ".  . '<p>table: |'.$table.'|</p>' # SB
   &Apache::loncommon::end_page());                   .'<p class="LC_error">'
                    .&mt('Unable to retrieve search results. '
                        .'Unable to determine the table results were saved in.')
                    .&Apache::loncommon::end_page()
           );
         return undef;          return undef;
     }      }
     ##      ##
Line 2236  sub print_sort_form { Line 2295  sub print_sort_form {
     }      }
     my $js =<<END;      my $js =<<END;
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
     function change_sort() {      function change_sort() {
         var newloc = "/adm/searchcat?phase=results";          var newloc = "/adm/searchcat?phase=results";
         newloc += "&persistent_db_id=$env{'form.persistent_db_id'}";          newloc += "&amp;persistent_db_id=$env{'form.persistent_db_id'}";
         newloc += "&sortby=";          newloc += "&amp;sortby=";
         newloc += document.forms.statusform.elements.sortby.value;          newloc += document.forms.statusform.elements.sortby.value;
         parent.resultsframe.location= newloc;          parent.resultsframe.location= newloc;
     }      }
   // ]]>
 </script>  </script>
 END  END
   
     my $start_page = &Apache::loncommon::start_page('Results',$js,      my $start_page = &Apache::loncommon::start_page('Results',$js);
     {'no_title' => 1});  
     my $breadcrumbs=      my $breadcrumbs=
         &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',          &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',
     $env{'form.catalogmode'} ne 'import');      $env{'form.catalogmode'} ne 'import');
Line 2272  END Line 2332  END
 #    }  #    }
 #    $result.="</select>\n";  #    $result.="</select>\n";
     my $revise = &revise_button();      my $revise = &revise_button();
     $result.=<<END;      $result.='<p>'
 <p>              .&mt('There are [_1] matches to your query.',$total_results)
 There are $total_results matches to your query. $revise              .' '.$revise.'</p>'
 </p><p>              .'<p>'.&mt('Search: ').$pretty_query_string
 Search: $pretty_query_string              .'</p></form>';
 </p>  
 </form>  
 END  
     $r->print($result.&Apache::loncommon::end_page());      $r->print($result.&Apache::loncommon::end_page());
     return;      return;
 }  }
Line 2389  Returns: Nothing. Line 2446  Returns: Nothing.
 sub update_count_status {  sub update_count_status {
     my ($r,$text) = @_;      my ($r,$text) = @_;
     $text =~ s/\'/\\\'/g;      $text =~ s/\'/\\\'/g;
     $r->print      $r->print(<<SCRIPT);
         ("<script>document.statusform.count.value = ' $text'</script>\n");  <script type="text/javascript">
   // <![CDATA[
   document.statusform.count.value = ' $text'
   // ]]>
   </script>
   SCRIPT
   
     $r->rflush();      $r->rflush();
 }  }
   
 sub update_status {  sub update_status {
     my ($r,$text) = @_;      my ($r,$text) = @_;
     $text =~ s/\'/\\\'/g;      $text =~ s/\'/\\\'/g;
     $r->print      $r->print(<<SCRIPT);
         ("<script>document.statusform.status.value = ' $text'</script>\n");  <script type="text/javascript">
   // <![CDATA[
   document.statusform.status.value = ' $text'
   // ]]>
   </script>
   SCRIPT
   
     $r->rflush();      $r->rflush();
 }  }
   
Line 2425  sub update_seconds { Line 2494  sub update_seconds {
     my ($r) = @_;      my ($r) = @_;
     my $time = &time_left();      my $time = &time_left();
     if (($last_time-$time) > 0) {      if (($last_time-$time) > 0) {
         $r->print("<script>".          $r->print(<<SCRIPT);
                   "document.statusform.seconds.value = '$time'".  <script type="text/javascript">
                   "</script>\n");  // <![CDATA[
   document.statusform.seconds.value = '$time'
   // ]]>
   </script>
   SCRIPT
   
         $r->rflush();          $r->rflush();
     }      }
     $last_time = $time;      $last_time = $time;
Line 2451  Returns: html string for a 'revise searc Line 2525  Returns: html string for a 'revise searc
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub revise_button {  sub revise_button {
       my $revisetext = &mt('Revise search');
     my $revise_phase = 'disp_basic';      my $revise_phase = 'disp_basic';
     $revise_phase = 'disp_adv' if ($env{'form.searchmode'} eq 'advanced');      $revise_phase = 'disp_adv' if ($env{'form.searchmode'} eq 'advanced');
     my $newloc = '/adm/searchcat'.      my $newloc = '/adm/searchcat'.
         '?persistent_db_id='.$env{'form.persistent_db_id'}.          '?persistent_db_id='.$env{'form.persistent_db_id'}.
             '&cleargroupsort=1'.              '&amp;cleargroupsort=1'.
             '&phase='.$revise_phase;              '&amp;phase='.$revise_phase;
     my $result = qq{<input type="button" value="Revise search" name="revise"} .      my $result = qq{<input type="button" value="$revisetext" name="revise"} .
         qq{ onClick="parent.location='$newloc';" /> };          qq{ onclick="parent.location='$newloc';" /> };
     return $result;      return $result;
 }  }
   
Line 2487  sub run_search { Line 2562  sub run_search {
     #      #
     # Print run_search header      # Print run_search header
     #      #
     my $start_page = &Apache::loncommon::start_page('Search Status',undef,      my $start_page = &Apache::loncommon::start_page('Search Status',undef);
     {'no_title' => 1});  
     my $breadcrumbs =      my $breadcrumbs =
  &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',   &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',
     $env{'form.catalogmode'} ne 'import');      $env{'form.catalogmode'} ne 'import');
     $r->print(<<END);      $r->print(<<END);
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
 <form name="statusform" action="" method="post">  
 <input type="hidden" name="acts" value="" />  
 END  END
     # Remove leading and trailing <br />      # Remove leading and trailing <br />
     $pretty_string =~ s:^\s*<br />::i;      $pretty_string =~ s:^\s*<br />::i;
Line 2507  END Line 2579  END
         pop(@Lines);          pop(@Lines);
     }      }
     if (@Lines > 2) {      if (@Lines > 2) {
         $pretty_string = join '<br />',(@Lines[0..2],'....<br />');          $pretty_string = join '<br />',(@Lines[0..2],'...<br />');
     }      }
     $r->print(&mt("Search: [_1]",$pretty_string));      $r->print(&mt("Search: [_1]",$pretty_string));
     $r->rflush();      $r->rflush();
Line 2562  END Line 2634  END
     my $server;       my $server; 
     my $status;      my $status;
     my $revise = &revise_button();      my $revise = &revise_button();
     $r->print(<<END);      $r->print('<form name="statusform" action="" method="post">'."\n".
 <table>                '<input type="hidden" name="acts" value="" />'."\n".
 <tr><th>Status</th><th>Total Matches</th><th>Time Remaining</th><th></th></tr>                '<table border="0"><tr><td>'."\n".
 <tr>                &Apache::loncommon::start_data_table());
 <td><input type="text" name="status"  value="" size="50" /></td>      $r->print(&Apache::loncommon::start_data_table_header_row()
 <td><input type="text" name="count"   value="" size="10" /></td>               .'<th>'.&mt('Status').'</th>'
 <td><input type="text" name="seconds" value="" size="8" /></td>               .'<th>'.&mt('Total Matches').'</th>'
 <td>$revise</td>               .'<th>'.&mt('Time Remaining').'</th>'
 </tr>               .&Apache::loncommon::end_data_table_header_row()
 </table>               .&Apache::loncommon::start_data_table_row()
 </form>               .'<td><input type="text" name="status"  value="" size="50" readonly="readonly" /></td>'
 END               .'<td><input type="text" name="count"   value="" size="10" readonly="readonly" /></td>'
                .'<td><input type="text" name="seconds" value="" size="8" readonly="readonly" /></td>'
                .&Apache::loncommon::end_data_table_row()
                .&Apache::loncommon::end_data_table()
                .'</td><td>&nbsp;</td><td>'.$revise.'</td></tr></table></form>');
     $r->rflush();      $r->rflush();
     &reset_timing();      &reset_timing();
     &update_seconds($r);      &update_seconds($r);
Line 2645  END Line 2721  END
                     my %Fields = &parse_raw_result($result,$server,$tabletype);                      my %Fields = &parse_raw_result($result,$server,$tabletype);
                     $Fields{'hostname'} = $server;                      $Fields{'hostname'} = $server;
                     #                      #
                     # Skip if external and we did not want that  
                     next if ((! $env{'form.inclext'}) && ($Fields{'url'}=~/^\/ext\//));  
                     # Skip based on copyright                      # Skip based on copyright
                     next if (! &copyright_check(\%Fields));                      next if (! &copyright_check(\%Fields));
   
Line 2680  END Line 2754  END
         last if ($connection->aborted());          last if ($connection->aborted());
         &update_seconds($r);          &update_seconds($r);
     }      }
     &update_status($r,&mt('Search Complete [_1]',$server));      &update_status($r,&mt('Search Complete on Server [_1]',$server));
     &update_seconds($r);      &update_seconds($r);
     #      #
     &Apache::lonmysql::disconnect_from_db(); # This is unneccessary      &Apache::lonmysql::disconnect_from_db(); # This is unneccessary
Line 2690  END Line 2764  END
     # loaded from /adm/searchcat      # loaded from /adm/searchcat
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
 #    if ($env{'form.catalogmode'} ne 'import') {  #    if ($env{'form.catalogmode'} ne 'import') {
         $r->print("<script>".           $r->print(<<SCRIPT);
                       "window.location='/adm/searchcat?".  <script>
                       "phase=sort&".  window.location='/adm/searchcat?phase=sort&persistent_db_id=$env{'form.persistent_db_id'}';
                       "persistent_db_id=$env{'form.persistent_db_id'}';".  </script>
                   "</script>");  SCRIPT
 #    }  #    }
     return;      return;
 }  }
Line 2717  sub prev_next_buttons { Line 2791  sub prev_next_buttons {
     return '' if ($show eq 'all'); # No links if you get them all at once.      return '' if ($show eq 'all'); # No links if you get them all at once.
     #      #
     # Create buttons      # Create buttons
     my $buttons = '<input type="submit" name="prev" value="'.&mt('Prev').'" ';      return '<p class="LC_nobreak">'
     $buttons .= '/>';            .'<input type="submit" name="prev" value="&lt;"'
     $buttons .= '&nbsp;'x3;            .' title="'.&mt('Previous').'" />'
     $buttons .= '<input type="submit" name="reload" '.            .' '
         'value="'.&mt('Reload').'" />';            .'<input type="submit" name="reload" value="'.&mt('Reload').'" />'
     $buttons .= '&nbsp;'x3;            .' '
     $buttons .= '<input type="submit" name="next" value="'.&mt('Next').'" ';            .'<input type="submit" name="next" value="&gt;"'
     $buttons .= '/>';            .' title="'.&mt('Next').'" />'
     return $buttons;            .'</p>';
 }  }
   
 ######################################################################  ######################################################################
Line 2750  sub display_results { Line 2824  sub display_results {
     ##      ##
     my $viewfunction = $Views{$env{'form.viewselect'}};      my $viewfunction = $Views{$env{'form.viewselect'}};
     if (!defined($viewfunction)) {      if (!defined($viewfunction)) {
         $r->print("Internal Error - Bad view selected.\n");          $r->print('<p class="LC_error">'
                    .&mt('Internal Error - Bad view selected.')
                    .'</p>'."\n");
         $r->rflush();          $r->rflush();
         return;          return;
     }      }
Line 2767  sub display_results { Line 2843  sub display_results {
     if ($env{'form.catalogmode'} eq 'import') {      if ($env{'form.catalogmode'} eq 'import') {
         if (! tie(%groupsearch_db,'GDBM_File',$diropendb,          if (! tie(%groupsearch_db,'GDBM_File',$diropendb,
                   &GDBM_WRCREAT(),0640)) {                    &GDBM_WRCREAT(),0640)) {
             $r->print('Unable to save import results.</form>'.              $r->print('<p class="LC_error">'.
                 &mt('Unable to save import results.').
                 '</p>'.
                 '</form>'.
       &Apache::loncommon::end_page());        &Apache::loncommon::end_page());
             $r->rflush();              $r->rflush();
             return;              return;
Line 2781  sub display_results { Line 2860  sub display_results {
     ## Get the number of results       ## Get the number of results 
     my $total_results = &Apache::lonmysql::number_of_rows($table);      my $total_results = &Apache::lonmysql::number_of_rows($table);
     if (! defined($total_results)) {      if (! defined($total_results)) {
         $r->print("A MySQL error has occurred.</form>".          $r->print('<p class="LC_error">'.
             &mt('A MySQL error has occurred.').
             '</p>'.
             '</form>'.
   &Apache::loncommon::end_page());    &Apache::loncommon::end_page());
         &Apache::lonnet::logthis("lonmysql was unable to determine the number".          &Apache::lonnet::logthis("lonmysql was unable to determine the number".
                                  " of rows in table ".$table);                                   " of rows in table ".$table);
Line 2886  sub display_results { Line 2968  sub display_results {
     $env{'form.sortorder'}='asc';      $env{'form.sortorder'}='asc';
  }   }
     }      }
     my $sortform = &mt('Sort by [_1] [_2]',      my $sortform = '<span class="LC_nobreak">'
                        &Apache::loncommon::select_form($env{'form.sortfield'},                    .&mt('Sort by:').' '
                     .&Apache::loncommon::select_form($env{'form.sortfield'},
                                                       'sortfield',                                                        'sortfield',
                                                       %sort_fields),                                                        %sort_fields)
                        &Apache::loncommon::select_form($env{'form.sortorder'},                    .' '
                     .&Apache::loncommon::select_form($env{'form.sortorder'},
                                                       'sortorder',                                                        'sortorder',
                                                       (asc =>&mt('Ascending'),                                                        (asc =>&mt('Ascending'),
                                                        desc=>&mt('Descending')                                                         desc=>&mt('Descending')
                                                        ))                                                         ))
                        );                    .'</span>';
     ##      ##
     ## Output links (if necessary) for 'prev' and 'next' pages.      ## Display links for 'prev' and 'next' pages (if necessary) and Display Options
     $r->print      $r->print('<fieldset>'."\n"
         ('<table width="100%"><tr><td width="25%" align="right">'.               .'<legend>'.&mt('Display Options').'</legend>'."\n"
          '<nobr>'.$sortform.'</nobr>'.               .$sortform
          '</td><td width="25%" align="right">'.               .' '
          &prev_next_buttons($min,$env{'form.show'},$total_results).               .&viewoptions()
          '</td><td align="right">'.               .'</fieldset>'
          &viewoptions().'</td></tr></table>'               .&prev_next_buttons($min,$env{'form.show'},$total_results)
          );      );
   
     if ($total_results == 0) {      if ($total_results == 0) {
         $r->print('<meta HTTP-EQUIV="Refresh" CONTENT="2" />'.          $r->print('<meta HTTP-EQUIV="Refresh" CONTENT="2" />'.
                   '<h3>'.&mt('There are currently no results').'.</h3>'.                    '<p class="LC_info">'.&mt('There are currently no results.').'</p>'.
                   "</form>".                    "</form>".
   &Apache::loncommon::end_page());    &Apache::loncommon::end_page());
         return;          return;
     } else {      } else {
         $r->print('<center>'.          $r->print('<div>'.
                   mt('Results [_1] to [_2] out of [_3]',                    mt('Results [_1] to [_2] out of [_3]',
                      $min,$max,$total_results).                       $min,$max,$total_results).
                   "</center>\n");                    "</div>\n");
     }      }
     ##      ##
     ## Get results from MySQL table      ## Get results from MySQL table
Line 2946  sub display_results { Line 3031  sub display_results {
     if ($area eq 'portfolio') {      if ($area eq 'portfolio') {
         $tabletype = 'portfolio_search';          $tabletype = 'portfolio_search';
     }      }
       $r->print(&Apache::loncommon::start_data_table());
     foreach my $row (@Results) {      foreach my $row (@Results) {
         if ($connection->aborted()) {          if ($connection->aborted()) {
             &cleanup();              &cleanup();
             return;              return;
         }          }
         my %Fields = %{&parse_row($tabletype,@$row)};          my %Fields = %{&parse_row($tabletype,@$row)};
         my $output="<p>\n";          my $output;
         if (! defined($Fields{'title'}) || $Fields{'title'} eq '') {          if (! defined($Fields{'title'}) || $Fields{'title'} eq '') {
             $Fields{'title'} = 'Untitled';              $Fields{'title'} = 'Untitled';
         }          }
Line 2961  sub display_results { Line 3047  sub display_results {
         # Render the result into html          # Render the result into html
         $output.= &$viewfunction($prefix,%Fields);          $output.= &$viewfunction($prefix,%Fields);
         # Print them out as they come in.          # Print them out as they come in.
         $r->print($output);          $r->print(&Apache::loncommon::start_data_table_row()
                    .'<td>'
                    .$output
                    .'</td>'
                    .&Apache::loncommon::end_data_table_row()
           );
         $r->rflush();          $r->rflush();
     }      }
       $r->print(&Apache::loncommon::end_data_table());
     if (@Results < 1) {      if (@Results < 1) {
         $r->print(&mt("There were no results matching your query"));          $r->print('<p class="LC_info">'
                    .&mt('There were no results matching your query.')
                    .'</p>');
     } else {      } else {
         $r->print          $r->print(
             ('<center>'.              &prev_next_buttons($min,$env{'form.show'},$total_results,
              &prev_next_buttons($min,$env{'form.show'},$total_results,  
                                 "table=".$env{'form.table'}.                                  "table=".$env{'form.table'}.
                                 "&phase=results".                                  "&amp;phase=results".
                                 "&persistent_db_id=".                                  "&amp;persistent_db_id=".
                                 $env{'form.persistent_db_id'})                                  $env{'form.persistent_db_id'})
              ."</center>\n"          );
              );  
     }      }
     $r->print("</form>".&Apache::loncommon::end_page());      $r->print("</form>".&Apache::loncommon::end_page());
     $r->rflush();      $r->rflush();
Line 3005  sub catalogmode_output { Line 3097  sub catalogmode_output {
         if ($env{'form.catalogmode'} eq 'interactive') {          if ($env{'form.catalogmode'} eq 'interactive') {
             $output.=<<END               $output.=<<END 
 <font size='-1'><input type="button" name="returnvalues" value="select"  <font size='-1'><input type="button" name="returnvalues" value="select"
 onClick="javascript:select_data('$title','$url')" />  onclick="javascript:select_data('$title','$url')" />
 </font>  </font>
 END  END
         }          }
Line 3015  END Line 3107  END
         $output.=<<END;          $output.=<<END;
 <font size='-1'>  <font size='-1'>
 <input type="checkbox" name="returnvalues" value="select"  <input type="checkbox" name="returnvalues" value="select"
 onClick="javascript:queue($checkbox_num,$fnum)" />  onclick="javascript:queue($checkbox_num,$fnum)" />
 </font>  </font>
 END  END
     }      }
Line 3184  sub search_results_header { Line 3276  sub search_results_header {
  if (! exists($env{'form.mode'}) || $env{'form.mode'} ne 'edit') {   if (! exists($env{'form.mode'}) || $env{'form.mode'} ne 'edit') {
             $js.=<<SCRIPT;              $js.=<<SCRIPT;
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
     function select_data(title,url) {      function select_data(title,url) {
  changeTitle(title);   changeTitle(title);
  changeURL(url);   changeURL(url);
Line 3199  sub search_results_header { Line 3292  sub search_results_header {
     parent.opener.inf.document.forms.resinfo.elements.u.value=val;      parent.opener.inf.document.forms.resinfo.elements.u.value=val;
  }   }
     }      }
   // ]]>
 </script>  </script>
 SCRIPT  SCRIPT
         } elsif ($env{'form.mode'} eq 'edit') {          } elsif ($env{'form.mode'} eq 'edit') {
Line 3223  END Line 3317  END
   
             $js.=<<SCRIPT;              $js.=<<SCRIPT;
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 function select_data(title,url) {  function select_data(title,url) {
     changeURL(url);      changeURL(url);
     changeTitle(title);      changeTitle(title);
Line 3237  function changeURL(val) { Line 3332  function changeURL(val) {
         alert("Unable to transfer data to "+url);          alert("Unable to transfer data to "+url);
     }      }
 }  }
   // ]]>
 </script>  </script>
 SCRIPT  SCRIPT
         }          }
Line 3244  SCRIPT Line 3340  SCRIPT
     my $inhibit_menu = "&".&Apache::loncommon::inhibit_menu_check();      my $inhibit_menu = "&".&Apache::loncommon::inhibit_menu_check();
     $js.=<<SCRIPT if $env{'form.catalogmode'} eq 'import';      $js.=<<SCRIPT if $env{'form.catalogmode'} eq 'import';
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
     function queue(checkbox_num,val) {      function queue(checkbox_num,val) {
         if (document.forms.results.returnvalues.length != "undefined" &&          if (document.forms.results.returnvalues.length != "undefined" &&
             typeof(document.forms.results.returnvalues.length) == "number") {              typeof(document.forms.results.returnvalues.length) == "number") {
Line 3262  SCRIPT Line 3359  SCRIPT
     }      }
     function select_group() {      function select_group() {
  parent.window.location=   parent.window.location=
     "/adm/groupsort?mode=$env{'form.mode'}&catalogmode=import$inhibit_menu&acts="+      "/adm/groupsort?mode=$env{'form.mode'}&amp;catalogmode=import$inhibit_menu&amp;acts="+
     parent.statusframe.document.forms.statusform.elements.acts.value;      parent.statusframe.document.forms.statusform.elements.acts.value;
     }      }
   // ]]>
 </script>  </script>
 SCRIPT  SCRIPT
   
Line 3279  END Line 3377  END
 }  }
   
 sub results_link {  sub results_link {
     my $basic_link   = "/adm/searchcat?"."&table=".$env{'form.table'}.      my $basic_link   = "/adm/searchcat?"."&amp;table=".$env{'form.table'}.
         "&persistent_db_id=".$env{'form.persistent_db_id'};          "&amp;persistent_db_id=".$env{'form.persistent_db_id'};
     my $results_link = $basic_link."&phase=results".      my $results_link = $basic_link."&amp;phase=results".
         "&pause=1"."&start=1";          "&amp;pause=1"."&amp;start=1";
     return $results_link;      return $results_link;
 }  }
   
Line 3290  sub results_link { Line 3388  sub results_link {
 ######################################################################  ######################################################################
 sub print_frames_interface {  sub print_frames_interface {
     my $r = shift;      my $r = shift;
     my $basic_link = "/adm/searchcat?"."&table=".$env{'form.table'}.      my $basic_link = "/adm/searchcat?"."&amp;table=".$env{'form.table'}.
         "&persistent_db_id=".$env{'form.persistent_db_id'};          "&amp;persistent_db_id=".$env{'form.persistent_db_id'};
     my $run_search_link = $basic_link."&phase=run_search";      my $run_search_link = $basic_link."&amp;phase=run_search";
     my $results_link = &results_link();      my $results_link = &results_link();
     my $js = <<JS;      my $js = <<JS;
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 var targetwin = opener;  var targetwin = opener;
 var queue = '';  var queue = '';
   // ]]>
 </script>  </script>
 JS  JS
   
Line 3384  sub detailed_citation_view { Line 3484  sub detailed_citation_view {
     my $jumpurl=$values{'url'};      my $jumpurl=$values{'url'};
     $jumpurl=~s|^/ext/|http://|;      $jumpurl=~s|^/ext/|http://|;
     $result .= '<b>'.$prefix.      $result .= '<b>'.$prefix.
         '<img src="'.&Apache::loncommon::icon($values{'url'}).'" />'.'&nbsp;'.          '<img src="'.&Apache::loncommon::icon($values{'url'}).'" alt="" />'.'&nbsp;'.
         '<a href="'.$jumpurl.'?inhibitmenu=yes" '.          '<a href="'.$jumpurl.'?inhibitmenu=yes" '.
         'target="preview">'.$values{'title'}."</a></b>\n";          'target="preview">'.$values{'title'}."</a></b>\n";
     $result .= "<p>\n";      $result .= "<p>\n";
Line 3476  sub detailed_citation_view { Line 3576  sub detailed_citation_view {
     if (exists($values{'shortabstract'}) && $values{'shortabstract'} ne '') {      if (exists($values{'shortabstract'}) && $values{'shortabstract'} ne '') {
         $result .= '<p>'.$values{'shortabstract'}.'</p>';          $result .= '<p>'.$values{'shortabstract'}.'</p>';
     }      }
     $result .= '<hr align="left" width="200" noshade />'."\n";  
     return $result;      return $result;
 }  }
   
 sub detailed_citation_preview {  sub detailed_citation_preview {
     my ($prefix,%values)=@_;      my ($prefix,%values)=@_;
     return '<table><tr><td>'.      return &detailed_citation_view($prefix,%values).
            &detailed_citation_view($prefix,%values).  
            '</td><td>'.             '</td><td>'.
            &Apache::lonindexer::showpreview($values{'url'}).             &Apache::lonindexer::showpreview($values{'url'});
            '</td></tr></table><hr />';  
 }  }
   
   
Line 3503  sub detailed_citation_preview { Line 3600  sub detailed_citation_preview {
 sub summary_view {  sub summary_view {
     my ($prefix,%values) = @_;      my ($prefix,%values) = @_;
     my $icon=&Apache::loncommon::icon($values{'url'});      my $icon=&Apache::loncommon::icon($values{'url'});
     my $result=qq{$prefix<img src="$icon" />};      my $result=qq{$prefix<img src="$icon" alt="" />};
     if (exists($env{'form.sortfield'}) &&       if (exists($env{'form.sortfield'}) && 
         $env{'form.sortfield'} !~ /^(default|          $env{'form.sortfield'} !~ /^(default|
                                      author|                                       author|
Line 3522  sub summary_view { Line 3619  sub summary_view {
   
     $result.=<<END;      $result.=<<END;
 <a href="$jumpurl?inhibitmenu=yes"   <a href="$jumpurl?inhibitmenu=yes" 
    target='preview'>$values{'title'}</a> <br />     target="preview">$values{'title'}</a><br />
 $link <br />  $link<br />
 $values{'author'}, $values{'owner'} -- $values{'lastrevisiondate'}<br />  $values{'author'}, $values{'owner'} -- $values{'lastrevisiondate'}<br />
 $values{'copyrighttag'}<br />  $values{'copyrighttag'}<br />
 $values{'extrashow'}  $values{'extrashow'}
 </p>  
 <hr align='left' width='200' noshade />  
 END  END
     return $result;      return $result;
 }  }
   
 sub summary_preview {  sub summary_preview {
     my ($prefix,%values)=@_;      my ($prefix,%values)=@_;
     return '<table><tr><td>'.      return &summary_view($prefix,%values).
            &summary_view($prefix,%values).  
            '</td><td>'.             '</td><td>'.
            &Apache::lonindexer::showpreview($values{'url'}).             &Apache::lonindexer::showpreview($values{'url'});
            '</td></tr></table><hr />';  
 }  }
   
 ######################################################################  ######################################################################
Line 3561  sub compact_view { Line 3654  sub compact_view {
     my $link = &display_url($jumpurl,[1,1,1]);      my $link = &display_url($jumpurl,[1,1,1]);
           
     my $result =       my $result = 
         $prefix.'<img src="'.&Apache::loncommon::icon($values{'url'}).'">';          $prefix.'<img src="'.&Apache::loncommon::icon($values{'url'}).'" alt="" />';
     if (exists($env{'form.sortfield'}) &&       if (exists($env{'form.sortfield'}) && 
         $env{'form.sortfield'} !~ /^(default|author|url|title)$/) {          $env{'form.sortfield'} !~ /^(default|author|url|title)$/) {
         my $tmp = $values{$env{'form.sortfield'}};          my $tmp = $values{$env{'form.sortfield'}};
Line 3572  sub compact_view { Line 3665  sub compact_view {
     $result.=' <span class="LC_nobreak">'.      $result.=' <span class="LC_nobreak">'.
  '<a href="'.$jumpurl.'?inhibitmenu=yes" target="preview">'.   '<a href="'.$jumpurl.'?inhibitmenu=yes" target="preview">'.
         &HTML::Entities::encode($values{'title'},'<>&"').'</a></span> '.          &HTML::Entities::encode($values{'title'},'<>&"').'</a></span> '.
  $link.' <b>'.$values{'author'}.'</b> ('.$values{'domain'}.')<br />';   $link.' <b>'.$values{'author'}.'</b> ('.$values{'domain'}.')';
     return $result;      return $result;
 }  }
   
Line 3612  sub fielded_format_view { Line 3705  sub fielded_format_view {
     $jumpurl=~s|^/ext/|http://|;      $jumpurl=~s|^/ext/|http://|;
   
     my $result=<<END;      my $result=<<END;
 $prefix <img src="$icon" />  $prefix <img src="$icon" alt="" />
 <dl>  <dl>
 <dt>URL:</dt>  <dt>URL:</dt>
     <dd><a href="$jumpurl?inhibitmenu=yes"       <dd><a href="$jumpurl?inhibitmenu=yes" 
Line 3638  END Line 3731  END
     }      }
     $result .= "</dl>\n";      $result .= "</dl>\n";
     $result .= $values{'extrashow'};      $result .= $values{'extrashow'};
     $result .= '<hr align="left" width="200" noshade />'."\n";  
     return $result;      return $result;
 }  }
   
Line 3712  $prefix Line 3804  $prefix
 $xml  $xml
 </pre>  </pre>
 $values{'extrashow'}  $values{'extrashow'}
 <hr align='left' width='200' noshade />  
 END  END
     return $result;      return $result;
 }  }
Line 3752  sub output_unparsed_phrase_error { Line 3843  sub output_unparsed_phrase_error {
     my ($r,$closebutton,$parms,$hidden_fields,$field)=@_;      my ($r,$closebutton,$parms,$hidden_fields,$field)=@_;
     my $errorstring;      my $errorstring;
     if ($field eq 'basicexp') {      if ($field eq 'basicexp') {
         $errorstring = &mt('Unable to understand the search phrase <i>[_1]</i>.  Please modify your search.',$env{'form.basicexp'});          $errorstring = &mt('Unable to understand the search phrase [_1]. Please modify your search.'
                              ,'<i>'.$env{'form.basicexp'}.'</i>');
     } else {      } else {
         $errorstring = &mt('Unable to understand the search phrase <b>[_1]</b>:<i>[_2]</i>.',$field,$env{'form.'.$field});          $errorstring = &mt('Unable to understand the search phrase [_1]: [_2]'
                              ,'<i>'.$field.'</i>'
                              ,$env{'form.'.$field});
     }      }
     my $heading = &mt('Unparsed Field');      my $heading = &mt('Unparsed Field');
     my $revise  = &mt('Revise search request');      my $revise  = &mt('Revise search request');
Line 3768  $hidden_fields Line 3862  $hidden_fields
 $closebutton  $closebutton
 <hr />  <hr />
 <h2>$heading</h2>  <h2>$heading</h2>
 <p>  <p class="LC_warning">
 $errorstring  $errorstring
 </p>  </p>
 <p>  <p>
 <a href="/adm/searchcat?$parms&persistent_db_id=$env{'form.persistent_db_id'}">$revise</a>  <a href="/adm/searchcat?$parms&amp;persistent_db_id=$env{'form.persistent_db_id'}">$revise</a>
 </p>  </p>
 $end_page  $end_page
 ENDPAGE  ENDPAGE
Line 3800  $parms is extra information to include i Line 3894  $parms is extra information to include i
 ######################################################################  ######################################################################
 sub output_blank_field_error {  sub output_blank_field_error {
     my ($r,$closebutton,$parms,$hidden_fields)=@_;      my ($r,$closebutton,$parms,$hidden_fields)=@_;
     my $errormsg = &mt('You did not fill in enough information for the search to be started.  You need to fill in relevant fields on the search page in order for a query to be processed.');      my $errormsg = &mt('You did not fill in enough information for the search to be started. You need to fill in relevant fields on the search page in order for a query to be processed.');
     my $revise = &mt('Revise Search Request');      my $revise = &mt('Revise Search Request');
     my $heading = &mt('Unactionable Search Queary');      my $heading = &mt('Unactionable Search Query');
     my $start_page = &Apache::loncommon::start_page('Search');      my $start_page = &Apache::loncommon::start_page('Search');
     my $end_page   = &Apache::loncommon::end_page();      my $end_page   = &Apache::loncommon::end_page();
       if ($closebutton) {
           $closebutton = '<p>'.$closebutton.'</p><hr />';
       } else {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'',
                 text=>$heading,});
           $start_page .= &Apache::lonhtmlcommon::breadcrumbs();
       }
   
     $r->print(<<ENDPAGE);      $r->print(<<ENDPAGE);
 $start_page  $start_page
 <form method="post" action="/adm/searchcat">  <form method="post" action="/adm/searchcat">
 $hidden_fields  $hidden_fields
 $closebutton  $closebutton
 <hr />  </form>
 <h2>$heading</h2>  <h2>$heading</h2>
 <p>  <p class="LC_warning">
 $errormsg  $errormsg
 </p>  </p>
 <p>  <p>
 <a href="/adm/searchcat?$parms&persistent_db_id=$env{'form.persistent_db_id'}">$revise</a>&nbsp;  <a href="/adm/searchcat?$parms&amp;persistent_db_id=$env{'form.persistent_db_id'}">$revise</a>
 </p>  </p>
 $end_page  $end_page
 ENDPAGE  ENDPAGE
Line 3847  sub output_date_error { Line 3950  sub output_date_error {
     # make query information persistent to allow for subsequent revision      # make query information persistent to allow for subsequent revision
     my $start_page = &Apache::loncommon::start_page('Search');      my $start_page = &Apache::loncommon::start_page('Search');
     my $end_page   = &Apache::loncommon::end_page();      my $end_page   = &Apache::loncommon::end_page();
       my $heading = &mt('Error');
     $r->print(<<RESULTS);      $r->print(<<RESULTS);
 $start_page  $start_page
 <form method="post" action="/adm/searchcat">  <form method="post" action="/adm/searchcat">
 $hidden_fields  $hidden_fields
 <input type='button' value='Revise search request'  <input type='button' value='Revise search request'
 onClick='this.form.submit();' />  onclick='this.form.submit();' />
 $closebutton  $closebutton
   </form>
 <hr />  <hr />
 <h3>Error</h3>  <h3>$heading</h3>
 <p>  <p class="LC_error">
 $message  $message
 </p>  </p>
 $end_page  $end_page

Removed from v.1.288  
changed lines
  Added in v.1.318


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