Diff for /loncom/interface/lonsearchcat.pm between versions 1.299 and 1.304

version 1.299, 2008/08/27 19:50:46 version 1.304, 2009/02/10 09:30:16
Line 519  sub course_search { Line 519  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'}) {  
                                 $result .= $contrib{$id.':message'};  
                             }  
                             if ($contrib{$id,':attachmenturl'}) {  
                                 if ($contrib{$id,':attachmenturl'} =~ m-/([^/]+)$-) {  
                                     $result .= $1;  
                                 }                                  }
                                   if ($contrib{$id.':message'}) {
                                       $result .= $contrib{$id.':message'};
                                   }
                                   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 .= '&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>'.&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 699  sub print_basic_search_form { Line 704  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 794  sub setup_basic_search { Line 799  sub setup_basic_search {
              '<br />'.               '<br />'.
             '<font size="-1">'.&searchhelp().'</font>'.'</td>'.              '<font size="-1">'.&searchhelp().'</font>'.'</td>'.
             '<td><font size="-1">'.              '<td><font size="-1">'.
             '<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>'.               '</font></td>'.
             '</tr>'.$/;              '</tr>'.$/;
     #      #
Line 1154  Outputs: text for box with view options Line 1159  Outputs: text for box with view options
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub viewoptions {  sub viewoptions {
     my $scrout;      my $scrout = '<span class="LC_nobreak">';
     if (! defined($env{'form.viewselect'})) {       if (! defined($env{'form.viewselect'})) { 
         $env{'form.viewselect'}='detailed';           $env{'form.viewselect'}='detailed'; 
     }      }
Line 1167  sub viewoptions { Line 1172  sub viewoptions {
                                                   $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 .= ('&nbsp;'x2)
         '</nobr>'.$/;                .&mt('[_1] Records per Page',$countselect)
                 .'</span>'.$/;
     return $scrout;      return $scrout;
 }  }
   
Line 1394  sub parse_advanced_search { Line 1400  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 1639  sub parse_advanced_search { Line 1645  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 1702  sub parse_basic_search { Line 1708  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 1741  sub parse_basic_search { Line 1747  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 2894  sub display_results { Line 2900  sub display_results {
     ## Output links (if necessary) for 'prev' and 'next' pages.      ## Output links (if necessary) for 'prev' and 'next' pages.
     $r->print      $r->print
         ('<table width="100%"><tr><td width="25%" align="right">'.          ('<table width="100%"><tr><td width="25%" align="right">'.
          '<nobr>'.$sortform.'</nobr>'.           '<span class="LC_nobreak">'.$sortform.'</span>'.
          '</td><td width="25%" align="right">'.           '</td><td width="25%" align="right">'.
          &prev_next_buttons($min,$env{'form.show'},$total_results).           &prev_next_buttons($min,$env{'form.show'},$total_results).
          '</td><td align="right">'.           '</td><td align="right">'.

Removed from v.1.299  
changed lines
  Added in v.1.304


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