Diff for /loncom/interface/lonsearchcat.pm between versions 1.217 and 1.221

version 1.217, 2004/04/27 15:24:09 version 1.221, 2004/05/04 15:20:17
Line 117  sub handler { Line 117  sub handler {
   
     my $loaderror=&Apache::lonnet::overloaderror($r);      my $loaderror=&Apache::lonnet::overloaderror($r);
     if ($loaderror) { return $loaderror; }      if ($loaderror) { return $loaderror; }
       #
     my $closebutton;  # button that closes the search window       my $closebutton;  # button that closes the search window 
                       # This button is different for the RAT compared to                        # This button is different for the RAT compared to
                       # normal invocation.                        # normal invocation.
Line 185  sub handler { Line 185  sub handler {
               bug=>'Searching',});                bug=>'Searching',});
     }      }
     #      #
     if (! &get_persistent_form_data($persistent_db_file)) {      if ($ENV{'form.phase'} !~ m/(basic|adv|course)_search/) {
         if ($ENV{'form.phase'} =~ /(run_search|results)/) {          if (! &get_persistent_form_data($persistent_db_file)) {
             &Apache::lonnet::logthis("lonsearchcat:Unable to recover data ".              if ($ENV{'form.phase'} =~ /(run_search|results)/) {
                                      "from $persistent_db_file");                  &Apache::lonnet::logthis('lonsearchcat:'.
             $r->print(<<END);                                           'Unable to recover data from '.
                                            $persistent_db_file);
                   $r->print(<<END);
 <html>  <html>
 <head><title>LON-CAPA Search Error</title></head>  <head><title>LON-CAPA Search Error</title></head>
 $bodytag  $bodytag
Line 198  error and has been logged.  Please alert Line 200  error and has been logged.  Please alert
 </body>  </body>
 </html>  </html>
 END  END
             return OK;                  return OK;
               }
         }          }
       } else {
           &clean_up_environment();
     }      }
     ##      ##
     ## Clear out old values from groupsearch database      ## Clear out old values from groupsearch database
Line 286  END Line 291  END
     $ENV{'form.phase'} = 'disp_basic' if (! exists($ENV{'form.phase'}));      $ENV{'form.phase'} = 'disp_basic' if (! exists($ENV{'form.phase'}));
     $ENV{'form.show'} = 20 if (! exists($ENV{'form.show'}));      $ENV{'form.show'} = 20 if (! exists($ENV{'form.show'}));
     #      #
     $ENV{'form.searchmode'} = 'basic';      $ENV{'form.searchmode'} = 'basic' if (! exists($ENV{'form.searchmode'}));
     if ($ENV{'form.phase'} eq 'adv_search' ||      if ($ENV{'form.phase'} eq 'adv_search' ||
         $ENV{'form.phase'} eq 'disp_adv') {          $ENV{'form.phase'} eq 'disp_adv') {
         $ENV{'form.searchmode'} = 'advanced';          $ENV{'form.searchmode'} = 'advanced';
Line 389  END Line 394  END
     return OK;      return OK;
 }   } 
   
   #
   # The mechanism used to store values away and retrieve them does not
   # handle the case of missing environment variables being significant.
   #
   # This routine sets non existant checkbox form elements to ''.
   #
   sub clean_up_environment {
       if ($ENV{'form.phase'} eq 'basic_search') {
           if (! exists($ENV{'form.related'})) {
               $ENV{'form.related'} = '';
           }
           if (! exists($ENV{'form.domains'})) {
               $ENV{'form.domains'} = '';
           }
       } elsif ($ENV{'form.phase'} eq 'adv_search') {
           foreach my $field ('title','keywords','notes',
                              'abstract','standards','mime') {
               if (! exists($ENV{'form.'.$field.'_related'})) {
                   $ENV{'form.'.$field.'_related'} = '';
               }
           }
       } elsif ($ENV{'form.phase'} eq 'course_search') {
           if (! exists($ENV{'form.crsrelated'})) {
               $ENV{'form.crsrelated'} = '';
           }
       }
   }
   
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 ##  ##
Line 532  sub print_basic_search_form { Line 565  sub print_basic_search_form {
         my $userelatedwords=          my $userelatedwords=
             &mt('[_1] use related words',              &mt('[_1] use related words',
                 &Apache::lonhtmlcommon::checkbox                  &Apache::lonhtmlcommon::checkbox
                 ('related',$ENV{'form.related'}));                  ('related',$ENV{'form.related'},'related'));
         my $onlysearchdomain=          my $onlysearchdomain=
             &mt('[_1] only search domain [_2]',              &mt('[_1] only search domain [_2]',
                 &Apache::lonhtmlcommon::checkbox                  &Apache::lonhtmlcommon::checkbox('domains',
                 ('domains',$ENV{'form.domains'}),                                                   $ENV{'form.domains'},
                 $r->dir_config('lonDefDomain'));                                                   $r->dir_config('lonDefDomain')
                                                    ),
                   $r->dir_config('lonDefDomain')
                   );
         my $adv_search_link =           my $adv_search_link = 
             '<a href="/adm/searchcat?'.              '<a href="/adm/searchcat?'.
             'phase=disp_adv&'.              'phase=disp_adv&'.
Line 1150  sub parse_advanced_search { Line 1186  sub parse_advanced_search {
                        'modifyinguser','standards','mime');                         'modifyinguser','standards','mime');
     my @StatsFields = ('stdno','avetries','difficulty','disc');      my @StatsFields = ('stdno','avetries','difficulty','disc');
     my @EvalFields = ('clear','depth','helpful','correct','technical');      my @EvalFields = ('clear','depth','helpful','correct','technical');
     my @ContextFields = ('courses','dependencies');  
     my $fillflag=0;      my $fillflag=0;
     my $pretty_search_string = "<br />\n";      my $pretty_search_string = "<br />\n";
     # Clean up fields for safety      # Clean up fields for safety
Line 1162  sub parse_advanced_search { Line 1197  sub parse_advanced_search {
    '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;
           $ENV{'form.'.$field}=~s/(not\s*$|^\s*(and|or)|)//gi;
     }      }
     foreach ('mode','form','element') {      foreach ('mode','form','element') {
  # is this required?  Hmmm.   # is this required?  Hmmm.
Line 1361  sub parse_domain_restrictions { Line 1397  sub parse_domain_restrictions {
     my $libraries_to_query = undef;      my $libraries_to_query = undef;
     # $ENV{'form.domains'} can be either a scalar or an array reference.      # $ENV{'form.domains'} can be either a scalar or an array reference.
     # We need an array.      # We need an array.
     if (! exists($ENV{'form.domains'})) {      if (! exists($ENV{'form.domains'}) || $ENV{'form.domains'} eq '') {
         return (undef,'');          return (undef,'');
     }      }
     my @allowed_domains;      my @allowed_domains;
Line 1426  sub parse_basic_search { Line 1462  sub parse_basic_search {
         &parse_domain_restrictions();          &parse_domain_restrictions();
     #      #
     # Check to see if enough of a query is filled in      # Check to see if enough of a query is filled in
     unless (&filled($ENV{'form.basicexp'})) {      my $search_string = $ENV{'form.basicexp'};
       $search_string =~ s/(not\s*$|^\s*(and|or)|)//gi;
       if (! &filled($search_string)) {
  &output_blank_field_error($r,$closebutton,'phase=disp_basic');   &output_blank_field_error($r,$closebutton,'phase=disp_basic');
  return OK;   return OK;
     }      }
     my $pretty_search_string = '<b>'.$ENV{'form.basicexp'}.'</b>';      my $pretty_search_string = '<b>'.$ENV{'form.basicexp'}.'</b>';
     my $search_string = $ENV{'form.basicexp'};  
     if ($ENV{'form.related'}) {      if ($ENV{'form.related'}) {
         my @New_Words;          my @New_Words;
         ($search_string,@New_Words) = &related_version($ENV{'form.basicexp'});          ($search_string,@New_Words) = &related_version($ENV{'form.basicexp'});
Line 2783  extra custom metadata to show. Line 2820  extra custom metadata to show.
 ######################################################################  ######################################################################
 sub detailed_citation_view {  sub detailed_citation_view {
     my ($prefix,%values) = @_;      my ($prefix,%values) = @_;
     my $icon=&Apache::loncommon::icon($values{'url'});      my $icon=
     my $result=<<END;      my $result;
 <b>$prefix<img src="$icon" /><a href="http://$ENV{'HTTP_HOST'}$values{'url'}"       $result .= '<b>'.$prefix.
     target='search_preview'>$values{'title'}</a></b>          '<img src="'.&Apache::loncommon::icon($values{'url'}).' " />'.
 <p>          '<a href="http://'.$ENV{'HTTP_HOST'}.$values{'url'}.'" '.
 <b>$values{'author'}</b>, <i>$values{'owner'}</i><br />          'target="search_preview">'.$values{'title'}."</a></b>\n";
       $result .= "<p>\n";
 <b>Subject:       </b> $values{'subject'}<br />      $result .= '<b>'.$values{'author'}.'</b>,'.
 <b>Keyword(s):    </b> $values{'keywords'}<br />          ' <i>'.$values{'owner'}.'</i><br />';
 <b>Notes:         </b> $values{'notes'}<br />      foreach my $field 
 <b>MIME Type:     </b> $values{'mimetag'}<br />          (
 <b>Language:      </b> $values{'language'}<br />           { name=>'subject',
 <b>Copyright/Distribution:</b> $values{'copyrighttag'}<br />             translate => '<b>Subject:</b>&nbsp;[_1]',},
 </p>           { name=>'keywords',
 $values{'extrashow'}             translate => '<b>Keywords:</b>&nbsp;[_1]',},
 <p>           { name=>'notes',
 $values{'shortabstract'}             translate => '<b>Notes:</b>&nbsp;[_1]',},
 </p>           { name=>'mimetag',
 <hr align='left' width='200' noshade />             translate => '<b>MIME Type:</b>&nbsp;[_1]',},
 END           { name=>'standards',
              translate => '<b>Standards:</b>[_1]',},
            { name=>'copyrighttag',
              translate => '<b>Copyright/Distribution:</b>&nbsp;[_1]',},
            { name=>'stdno',
              translate => '<b>Number of Students:</b>&nbsp;[_1]',},
            { name=>'avetries',
              translate => '<b>Average Tries:</b>&nbsp;[_1]',},
            { name=>'disc',
              translate => '<b>Degree of Discrimination:</b>&nbsp;[_1]',},
            { name=>'difficulty',
              translate => '<b>Degree of Difficulty:</b>&nbsp;[_1]',},
            { name=>'clear',
              translate => '<b>Clear:</b>&nbsp;[_1]',},
            { name=>'depth',
              translate => '<b>Depth:</b>&nbsp;[_1]',},
            { name=>'helpful',
              translate => '<b>Helpful:</b>&nbsp;[_1]',},
            { name=>'correct',
              translate => '<b>Correcy:</b>&nbsp;[_1]',},
            { name=>'technical',
              translate => '<b>Technical:</b>&nbsp;[_1]',},
            ) {
           $result.= &mt($field->{'translate'},$values{$field->{'name'}}).
               "<br />\n";
       }
       $result .= "</p>".$values{'extrashow'}.
           '<p>'.$values{'shortabstract'}.'</p>';
       $result .= '<hr align="left" width="200" noshade />'."\n";
     return $result;      return $result;
 }  }
   

Removed from v.1.217  
changed lines
  Added in v.1.221


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