Diff for /loncom/interface/lonsearchcat.pm between versions 1.100 and 1.101

version 1.100, 2001/08/28 12:12:38 version 1.101, 2001/10/16 17:12:51
Line 7 Line 7
 # Scott Harrison: 03/12/2001, 03/13/2001, 03/14/2001, 03/15/2001, 03/19/2001  # Scott Harrison: 03/12/2001, 03/13/2001, 03/14/2001, 03/15/2001, 03/19/2001
 # Scott Harrison: 03/20/2001, 03/21/2001, 03/22/2001, 03/26/2001, 03/27/2001  # Scott Harrison: 03/20/2001, 03/21/2001, 03/22/2001, 03/26/2001, 03/27/2001
 # Scott Harrison: 04/02/2001, 08/15/2001, 08/24/2001, 08/25/2001  # Scott Harrison: 04/02/2001, 08/15/2001, 08/24/2001, 08/25/2001
   # 10/12,10/14,10/15 Scott Harrison
   
 ###############################################################################  ###############################################################################
 ##                                                                           ##  ##                                                                           ##
Line 110  use Apache::lonnet(); Line 111  use Apache::lonnet();
 use Apache::File();  use Apache::File();
 use CGI qw(:standard);  use CGI qw(:standard);
 use Text::Query;  use Text::Query;
   use GDBM_File;
   
 # ---------------------------------------- variables used throughout the module  # ---------------------------------------- variables used throughout the module
   
Line 127  my $importbutton; # button to take the s Line 129  my $importbutton; # button to take the s
   
 # -- miscellaneous variables  # -- miscellaneous variables
 my $scrout; # string that holds portions of the screen output  my $scrout; # string that holds portions of the screen output
 my $fnum; # search result counter  
 my $yourself; # allows for quickly limiting to oneself  my $yourself; # allows for quickly limiting to oneself
   my %hash;
   
 # ------------------------------------------ choices for different output views  # ------------------------------------------ choices for different output views
 # Detailed Citation View ---> sub detailed_citation_view  # Detailed Citation View ---> sub detailed_citation_view
Line 195  sub BEGIN { Line 197  sub BEGIN {
     }      }
 }  }
   
   my $diropendb = "";
   my $domain = "";
   
 # ----------------------------- Handling routine called via Apache and mod_perl  # ----------------------------- Handling routine called via Apache and mod_perl
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 205  sub handler { Line 210  sub handler {
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
       $domain  = $r->dir_config('lonDefDomain');
   
       $diropendb = "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";
   
       if ($ENV{'form.launch'} eq '1') {
    if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) {
       &start_fresh_session();
       untie %hash;
    }
    else {
       $r->print('<html><head></head><body>Unable to tie hash to db '.
         'file</body></html>');
       return OK;
    }
       }
   
 # ----------------------------------- configure dynamic components of interface  # ----------------------------------- configure dynamic components of interface
     my $hidden='';      my $hidden='';
     if ($ENV{'form.catalogmode'} eq 'interactive') {      if ($ENV{'form.catalogmode'} eq 'interactive') {
Line 236  END Line 257  END
   
 # ----------------------------------- See if a search invocation should be done  # ----------------------------------- See if a search invocation should be done
     if ($ENV{'form.basicsubmit'} eq 'SEARCH') {      if ($ENV{'form.basicsubmit'} eq 'SEARCH') {
  return &basicsearch($r,\%ENV);   untie %hash; return &basicsearch($r,\%ENV);
     }      }
     elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') {      elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') {
  return &advancedsearch($r,\%ENV);   untie %hash; return &advancedsearch($r,\%ENV);
     }      }
   
 # ----------------------------- Else, begin building search interface to output  # ----------------------------- Else, begin building search interface to output
Line 417  sub get_unprocessed_cgi { Line 438  sub get_unprocessed_cgi {
        my ($name, $value) = split(/=/,$_);         my ($name, $value) = split(/=/,$_);
        $value =~ tr/+/ /;         $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;         $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
        if ($name eq 'catalogmode') {         if ($name eq 'catalogmode' or $name eq 'launch' or $name eq 'acts') {
    $ENV{'form.'.$name}=$value;     $ENV{'form.'.$name}=$value;
        }         }
     } (split(/&/,$ENV{'QUERY_STRING'}));      } (split(/&/,$ENV{'QUERY_STRING'}));
Line 641  sub advancedsearch { Line 662  sub advancedsearch {
    'lastrevisiondateend_day','lastrevisiondateend_year',     'lastrevisiondateend_day','lastrevisiondateend_year',
    'notes','abstract','mime','language','owner',     'notes','abstract','mime','language','owner',
    'custommetadata','customshow') {     'custommetadata','customshow') {
  $ENV{"form.$field"}=~s/[^\w\s\(\)\=\-\"\']//g;   $ENV{"form.$field"}=~s/[^\w\/\s\(\)\=\-\"\']//g;
     }      }
   
     # Check to see if enough information was filled in      # Check to see if enough information was filled in
Line 891  sub build_date_queries { Line 912  sub build_date_queries {
 # gives the status of the network search (time elapsed, number of machines  # gives the status of the network search (time elapsed, number of machines
 # contacted, etc.)  # contacted, etc.)
 sub output_results {  sub output_results {
       my $fnum; # search result counter
     my ($mode,$r,$envhash,$query,$replyref)=@_;      my ($mode,$r,$envhash,$query,$replyref)=@_;
     my %ENV=%{$envhash};      my %ENV=%{$envhash};
     my %rhash=%{$replyref};      my %rhash=%{$replyref};
Line 934  SCRIPT Line 956  SCRIPT
         $r->print(<<SCRIPT) if $ENV{'form.catalogmode'} eq 'groupsearch';          $r->print(<<SCRIPT) if $ENV{'form.catalogmode'} eq 'groupsearch';
 <script type="text/javascript">  <script type="text/javascript">
     function select_data(title,url) {      function select_data(title,url) {
  alert('DEBUG: Should be storing '+title+' and '+url);  // alert('DEBUG: Should be storing '+title+' and '+url);
     }      }
     function queue(val) {      function queue(val) {
  if (eval("document.forms."+val+".filelink.checked")) {   if (eval("document.forms.results.returnvalues["+val+"].checked")) {
     document.forms.results.acts.value+='1a'+val+'b';      document.forms.results.acts.value+='1a'+val+'b';
  }   }
  else {   else {
Line 945  SCRIPT Line 967  SCRIPT
  }   }
     }      }
     function select_group() {      function select_group() {
  alert('DEBUG: Should be moving on to group sorting stage'+' acts');   window.location="/adm/groupsort?catalogmode=groupsearch&acts="+
       document.forms.results.acts.value;
     }      }
 </script>  </script>
 SCRIPT  SCRIPT
Line 1202  ENDPOP Line 1225  ENDPOP
  $customhash{$k}=$v;   $customhash{$k}=$v;
     }      }
  }   }
  foreach my $result (@results) {   if (keys %hash) {
     next if $result=~/^custom\=/;      untie %hash;
     chomp $result;   }
     next unless $result;   if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) {
     my @fields=map      if ($ENV{'form.launch'} eq '1') {
     {&Apache::lonnet::unescape($_)}   &start_fresh_session();
     (split(/\,/,$result));      }
     my ($title,$author,$subject,$url,$keywords,$version,      foreach my $result (@results) {
  $notes,$abstract,$mime,$lang,   next if $result=~/^custom\=/;
  $creationdate,$lastrevisiondate,$owner,$copyright)=@fields;   chomp $result;
     my $shortabstract=$abstract;   next unless $result;
     $shortabstract=substr($abstract,0,200) if length($abstract)>200;   my @fields=map
     $fields[7]=$shortabstract;   {&Apache::lonnet::unescape($_)}
     my $extrashow2=$extrashow;   (split(/\,/,$result));
     if ($extrashow) {   my ($title,$author,$subject,$url,$keywords,$version,
  foreach my $field (@customfields) {      $notes,$abstract,$mime,$lang,
     my $value='';      $creationdate,$lastrevisiondate,$owner,$copyright)=@fields;
     if ($customhash{$url}=~/\<${field}[^\>]*\>(.*?)\<\/${field}[^\>]*\>/s) {   my $shortabstract=$abstract;
         $value=$1;   $shortabstract=substr($abstract,0,200) if length($abstract)>200;
     }   $fields[7]=$shortabstract;
             $extrashow2=~s/\<\!\-\- $field \-\-\>/ $value/g;   my $extrashow2=$extrashow;
         }   if ($extrashow) {
             }      foreach my $field (@customfields) {
    my $value='';
    if ($customhash{$url}=~/\<${field}[^\>]*\>(.*?)\<\/${field}[^\>]*\>/s) {
               $value=$1;
    }
           $extrashow2=~s/\<\!\-\- $field \-\-\>/ $value/g;
               }
                   }
   
             $compiledresult.=<<END if $compiledresult or $servercount!=$servernum;          $compiledresult.=<<END if $compiledresult or $servercount!=$servernum;
 <hr align='left' width='200' noshade />  <hr align='left' width='200' noshade />
 END  END
             $compiledresult.=<<END;                  $compiledresult.=<<END;
 <p>  <p>
 END  END
             $compiledresult.=<<END if $ENV{'form.catalogmode'} eq 'interactive';                  $compiledresult.=<<END if $ENV{'form.catalogmode'} eq 'interactive';
 <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>
 <br />  <br />
 END  END
             $compiledresult.=<<END if $ENV{'form.catalogmode'} eq 'groupsearch';                  $hash{"HELLOWORLD"}='123';
                   if ($ENV{'form.catalogmode'} eq 'groupsearch') {
       $fnum+=0;
       $hash{"pre_${fnum}_link"}=$url;
       $hash{"pre_${fnum}_title"}=$title;
       $compiledresult.=<<END;
 <font size='-1'><input type="checkbox" name="returnvalues" value="SELECT"  <font size='-1'><input type="checkbox" name="returnvalues" value="SELECT"
 onClick="javascript:queue($fnum)" />  onClick="javascript:queue($fnum)" />
 </font>  </font>
 <input type="hidden" name="title$fnum" value="$title" />  
 <input type="hidden" name="url$fnum" value="$url" />  
 <br />  <br />
 END  END
             my $httphost=$ENV{'HTTP_HOST'};  # <input type="hidden" name="title$fnum" value="$title" />
   # <input type="hidden" name="url$fnum" value="$url" />
             my $viewselect;                      $fnum++;
             if ($mode eq 'Basic') {   }
  $viewselect=$ENV{'form.basicviewselect'};          my $httphost=$ENV{'HTTP_HOST'};
     }  
             elsif ($mode eq 'Advanced') {          my $viewselect;
         $viewselect=$ENV{'form.advancedviewselect'};          if ($mode eq 'Basic') {
             }      $viewselect=$ENV{'form.basicviewselect'};
    }
           elsif ($mode eq 'Advanced') {
       $viewselect=$ENV{'form.advancedviewselect'};
    }
   
             if ($viewselect eq 'Detailed Citation View') {          if ($viewselect eq 'Detailed Citation View') {
         $compiledresult.=&detailed_citation_view(@fields,      $compiledresult.=&detailed_citation_view(@fields,
  $hostname,$httphost,   $hostname,$httphost,
  $extrashow2);   $extrashow2);
     }   }
             elsif ($viewselect eq 'Summary View') {                  elsif ($viewselect eq 'Summary View') {
  $compiledresult.=&summary_view(@fields,$hostname,$httphost,      $compiledresult.=&summary_view(@fields,$hostname,$httphost,
        $extrashow2);         $extrashow2);
     }          }
             elsif ($viewselect eq 'Fielded Format') {                  elsif ($viewselect eq 'Fielded Format') {
  $compiledresult.=&fielded_format_view(@fields,$hostname,      $compiledresult.=&fielded_format_view(@fields,$hostname,
       $httphost,$extrashow2);        $httphost,$extrashow2);
     }          }
             elsif ($viewselect eq 'XML/SGML') {                  elsif ($viewselect eq 'XML/SGML') {
  $compiledresult.=&xml_sgml_view(@fields,$hostname,$httphost,      $compiledresult.=&xml_sgml_view(@fields,$hostname,$httphost,
  $extrashow2);   $extrashow2);
     }   }
           
         }              }
   
               untie %hash;
           }
           else {
       $r->print('<html><head></head><body>Unable to tie hash to db '.
     'file</body></html>');
    }
  if ($compiledresult) {   if ($compiledresult) {
     $resultflag=1;      $resultflag=1;
  }   }
Line 1482  $message Line 1525  $message
 RESULTS  RESULTS
 }  }
   
   # --------- settings whenever the user causes the indexer window to be launched
   sub start_fresh_session {
       delete $hash{'mode_catalog'};
       map {
           if ($_ =~ /^pre_/) {
               delete $hash{$_};
           }
           if ($_ =~ /^store/) {
       delete $hash{$_};
    }
       } keys %hash;
   }
   
 1;  1;
   
 __END__  __END__

Removed from v.1.100  
changed lines
  Added in v.1.101


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