Diff for /loncom/interface/lonsearchcat.pm between versions 1.43 and 1.46

version 1.43, 2001/03/20 12:21:56 version 1.46, 2001/03/21 01:01:43
Line 51  my $scrout; Line 51  my $scrout;
 my %metadatafields;  my %metadatafields;
 my %cprtag;  my %cprtag;
 my %mimetag;  my %mimetag;
   my $closebutton;
   my $viewselect=<<END;
   <select name='view'>
   <option value='Detailed View'>Detailed View</option>
   <option value='Brief View'>Brief View</option>
   </select>
   END
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 76  sub handler { Line 83  sub handler {
 <input type='hidden' name='catalogmode' value='interactive'>  <input type='hidden' name='catalogmode' value='interactive'>
 END  END
   
       $closebutton=<<END if $ENV{'form.catalogmode' eq 'interactive';
   <input type="button" name="close" value="CLOSE" onClick="self.close()">
   END
   
 # ------------------------------------------------ First, check out environment  # ------------------------------------------------ First, check out environment
     $metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'};      $metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'};
   
Line 248  ENDDOCUMENT Line 259  ENDDOCUMENT
 <br>  <br>
 <input type="submit" name="basicsubmit" value="SEARCH">  <input type="submit" name="basicsubmit" value="SEARCH">
 <input type="reset" name="reset" value="RESET">  <input type="reset" name="reset" value="RESET">
 <input type="button" name="close" value="CLOSE" onClick="self.close()">  $closebutton
   $viewselect
 </p>  </p>
 <hr>  <hr>
 <h3>Advanced Search</h3>  <h3>Advanced Search</h3>
Line 256  $scrout Line 268  $scrout
 <p>  <p>
 <input type="submit" name="advancedsubmit" value="SEARCH">  <input type="submit" name="advancedsubmit" value="SEARCH">
 <input type="reset" name="reset" value="RESET">  <input type="reset" name="reset" value="RESET">
 <input type="button" name="close" value="CLOSE" onClick="self.close()">  $closebutton
   $viewselect
 </p>  </p>
 </form>  </form>
 </body>  </body>
Line 448  sub selectbox { Line 461  sub selectbox {
     return $selout.'</select>';      return $selout.'</select>';
 }  }
   
 # ------------------------------------------------ Performing a advanced search  # ----------------------------------------------- Performing an advanced search
 sub advancedsearch {  sub advancedsearch {
     my ($r,$envhash)=@_;      my ($r,$envhash)=@_;
     my %ENV=%{$envhash};      my %ENV=%{$envhash};
Line 468  sub advancedsearch { Line 481  sub advancedsearch {
     }      }
   
     my $query='';      my $query='';
 #    my $concatarg=join(',"    ",',  
 #       ('title', 'author', 'subject', 'notes', 'abstract'));  
   
     $query="select * from metadata where concat(title) like '\%$ENV{'form.title'}\%'";  
     my $reply=&Apache::lonnet::metadata_query($query);  
   
     &output_results('Advanced',$r,$envhash,$reply);      my @queries;
       # Go through logical expression AND/OR/NOT phrase fields.
       foreach my $field ('title','author','subject','notes','abstract') {
    if ($ENV{'form.'.$field}) {
       push @queries,&build_SQL_query($field,$ENV{'form.'.$field});
    }
       }
       if (@queries) {
    $query="(" . (join(") and ("),@queries) . ")";
    $query="select * from metadata where $query";
    my $reply=&Apache::lonnet::metadata_query($query);
    &output_results('Advanced',$r,$envhash,$query,$reply);
       }
       else {
    &output_results('Advanced',$r,$envhash,$query);
       }
     return OK;      return OK;
 }  }
   
Line 505  sub basicsearch { Line 528  sub basicsearch {
   
     $query="select * from metadata where concat($concatarg) like '\%$ENV{'form.basicexp'}\%'";      $query="select * from metadata where concat($concatarg) like '\%$ENV{'form.basicexp'}\%'";
     my $reply=&Apache::lonnet::metadata_query($query);      my $reply=&Apache::lonnet::metadata_query($query);
     &output_results('Basic',$r,$envhash,$reply);      &output_results('Basic',$r,$envhash,$query,$reply);
     return OK;      return OK;
 }  }
   
   # ---------------- Message to output when there are not enough fields filled in
 sub output_blank_field_error {  sub output_blank_field_error {
     my ($r)=@_;      my ($r)=@_;
     # make query information persistent to allow for subsequent revision      # make query information persistent to allow for subsequent revision
Line 538  BEGINNING Line 562  BEGINNING
 $persistent  $persistent
 <input type='button' value='Revise search request'  <input type='button' value='Revise search request'
 onClick='this.form.submit();'>  onClick='this.form.submit();'>
 <input type='button' value='CLOSE'  $closebutton
 onClick='self.close();'>  
 <hr>  <hr>
 <h3>Helpful Message</h3>  <h3>Helpful Message</h3>
 <p>  <p>
Line 555  RESULTS Line 578  RESULTS
   
 # ----------------------------- format and output results based on a reply list  # ----------------------------- format and output results based on a reply list
 sub output_results {  sub output_results {
     my ($mode,$r,$envhash,@replylist)=@_;      my ($mode,$r,$envhash,$query,@replylist)=@_;
     my %ENV=%{$envhash};      my %ENV=%{$envhash};
       my $compiledresult='';
   
     foreach my $reply (@replylist) {      foreach my $reply (@replylist) {
   
  my @results;   my @results;
Line 579  sub output_results { Line 604  sub output_results {
     @results=<$fh>;      @results=<$fh>;
  }   }
   
  my $compiledresult='';  
   
  foreach my $result (@results) {   foreach my $result (@results) {
     my ($title,$author,$subject,$url,$keywords,$version,      my ($title,$author,$subject,$url,$keywords,$version,
  $notes,$abstract,$mime,$lang,   $notes,$abstract,$mime,$lang,
Line 665  SCRIPT Line 688  SCRIPT
 <form method="post" action="/adm/searchcat">  <form method="post" action="/adm/searchcat">
 <input type='button' value='Revise search request'  <input type='button' value='Revise search request'
 onClick='this.form.submit();'>  onClick='this.form.submit();'>
 <input type='button' value='CLOSE'  $closebutton
 onClick='self.close();'>  
 $persistent  $persistent
 <hr>  <hr>
 <h3>Search Query</h3>  <h3>Search Query</h3>
Line 677  RESULTS Line 699  RESULTS
 <b>Basic search:</b> $ENV{'form.basicexp'}  <b>Basic search:</b> $ENV{'form.basicexp'}
 </p>  </p>
 RESULTS  RESULTS
       }
     elsif ($mode eq 'Advanced') {      elsif ($mode eq 'Advanced') {
  $r->print(<<RESULTS);   $r->print(<<RESULTS);
 <p>  <p>
 <b>Advanced search</b>  <b>Advanced search</b>
   $query
 </p>  </p>
 RESULTS  RESULTS
     }      }
    $r->print(<<RESULTS);
 <h3>Search Results</h3>  <h3>Search Results</h3>
 $compiledresult  $compiledresult
 </body>  </body>
Line 698  sub build_SQL_query { Line 723  sub build_SQL_query {
     my $q=new Text::Query('abc',      my $q=new Text::Query('abc',
   -parse => 'Text::Query::ParseAdvanced',    -parse => 'Text::Query::ParseAdvanced',
   -build => 'Text::Query::Build');    -build => 'Text::Query::Build');
     $q->prepare($statement);      $q->prepare($logic_statement);
     my $matchexp=${$q}{'matchexp'}; chomp $matchexp;      my $matchexp=${$q}{'matchexp'}; chomp $matchexp;
     my $sql_query=&recursive_SQL_query_build($field_name,$matchexp);      my $sql_query=&recursive_SQL_query_build($field_name,$matchexp);
       return $sql_query;
 }  }
   
 # - Recursively parse a reverse notation expression into a SQL query expression  # - Recursively parse a reverse notation expression into a SQL query expression
Line 710  sub recursive_SQL_query_build { Line 736  sub recursive_SQL_query_build {
     return $pattern unless @matches;      return $pattern unless @matches;
     foreach my $match (@matches) {      foreach my $match (@matches) {
  $match=~/\[ (\w+)\s(.*) \]/;   $match=~/\[ (\w+)\s(.*) \]/;
  ($key,$value)=($1,$2);   my ($key,$value)=($1,$2);
  my $replacement='';   my $replacement='';
  if ($key eq 'literal') {   if ($key eq 'literal') {
     $replacement="($dkey like \"\%$value\%\")";      $replacement="($dkey like \"\%$value\%\")";

Removed from v.1.43  
changed lines
  Added in v.1.46


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