Diff for /loncom/interface/lonsearchcat.pm between versions 1.331.4.16.2.1 and 1.347

version 1.331.4.16.2.1, 2022/05/29 21:59:55 version 1.347, 2015/06/18 15:10:52
Line 178  sub handler { Line 178  sub handler {
     if (@allowed_searches ==2) {      if (@allowed_searches ==2) {
        $crumb_text = 'Portfolio and Catalog Search';          $crumb_text = 'Portfolio and Catalog Search'; 
     }      }
     my $target = '_top';  
     if ((($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) ||  
         (($env{'request.deeplink.login'}) && ($env{'request.deeplink.target'} eq '_self'))) {  
         if ($env{'form.phase'} =~ /^(sort|run_search)$/) {  
             $target = '_parent';  
         } else {  
             $target = '_self';  
         }  
     }  
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
        ({href=>'/adm/searchcat?'.         ({href=>'/adm/searchcat?'.
        &Apache::loncommon::inhibit_menu_check().         &Apache::loncommon::inhibit_menu_check().
Line 194  sub handler { Line 185  sub handler {
                '&launch='.$env{'form.launch'}.                 '&launch='.$env{'form.launch'}.
                '&mode='.$env{'form.mode'},                 '&mode='.$env{'form.mode'},
               text=>"$crumb_text",                text=>"$crumb_text",
               target=>$target,                target=>'_top',
               bug=>'Searching',});                bug=>'Searching',});
     #      #
     if ($env{'form.phase'} !~ m/(basic|adv|course)_search/) {      if ($env{'form.phase'} !~ m/(basic|adv|course)_search/) {
Line 337  END Line 328  END
                  ['query','customquery','customshow',                   ['query','customquery','customshow',
                   'libraries','pretty_string','domains']);                    'libraries','pretty_string','domains']);
         if ($env{'form.phase'} eq 'sort') {          if ($env{'form.phase'} eq 'sort') {
             &print_sort_form($r,$pretty_string,$target);              &print_sort_form($r,$pretty_string);
         } elsif ($env{'form.phase'} eq 'run_search') {          } elsif ($env{'form.phase'} eq 'run_search') {
             &run_search($r,$query,$customquery,$customshow,              &run_search($r,$query,$customquery,$customshow,
                         $libraries,$pretty_string,$env{'form.area'},$domainsref,$target);                          $libraries,$pretty_string,$env{'form.area'},$domainsref);
         }          }
     } elsif(($env{'form.phase'} eq 'basic_search') ||      } elsif(($env{'form.phase'} eq 'basic_search') ||
             ($env{'form.phase'} eq 'adv_search')) {              ($env{'form.phase'} eq 'adv_search')) {
Line 442  sub hidden_field { Line 433  sub hidden_field {
 =pod  =pod
   
 =over 4  =over 4
    
 =item &print_basic_search_form()   =item &print_basic_search_form() 
   
 Prints the form for the basic search.  Sorry the name is so cryptic.  Prints the form for the basic search.  Sorry the name is so cryptic.
Line 488  sub setup_basic_search { Line 479  sub setup_basic_search {
                      .&mt('use related words')                       .&mt('use related words')
                      .'</label>';                       .'</label>';
   
     my $anydom = 1;  
     if ($area eq 'res') {  
         unless (&Apache::lonnet::allowed('bre','/res/') eq 'F') {  
             $anydom = 0;  
         }  
     }  
     my $singledom;  
     my ($disabled,$checked);  
     if ($anydom) {  
        $singledom = $r->dir_config('lonDefDomain');  
        if ($env{'form.domains'} eq $singledom) {  
            $checked = 1;  
        }  
     } else {  
        $singledom = $env{'user.domain'};  
        $disabled = ' disabled="disabled"';  
        $checked = 1;  
     }  
     $onlysearchdomain = '<label>'      $onlysearchdomain = '<label>'
                        .&Apache::lonhtmlcommon::checkbox(                         .&Apache::lonhtmlcommon::checkbox(
                            'domains',$checked,                             'domains',
                            $singledom,$disabled)                             $env{'form.domains'},
                              $r->dir_config('lonDefDomain'))
                        .' '                         .' '
                        .&mt('only search domain [_1]'                         .&mt('only search domain [_1]'
                                ,'<b>'.$singledom.'</b>')                                 ,'<b>'.$r->dir_config('lonDefDomain').'</b>')
                        .'</label>';                         .'</label>';
   
     $adv_search_link = '<a href="/adm/searchcat?'.      $adv_search_link = '<a href="/adm/searchcat?'.
Line 687  function additional_metadata() { Line 661  function additional_metadata() {
                    $env{'form.category'})                     $env{'form.category'})
               .&Apache::lonhtmlcommon::row_closure();                .&Apache::lonhtmlcommon::row_closure();
   
     my $anydomain = 1;      $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Domains')))
     if ($env{'form.area'} ne 'portfolio') {                .&Apache::loncommon::domain_select('domains',
         unless (&Apache::lonnet::allowed('bre','/res/')) {                     $env{'form.domains'},1)
             $anydomain = 0;                .&Apache::lonhtmlcommon::row_closure();
         }  
     }  
   
     $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Domains')));  
     if ($anydomain) {  
         $scrout .= &Apache::loncommon::domain_select('domains',  
                    $env{'form.domains'},1);  
     } else {  
         $scrout .= &Apache::loncommon::select_dom_form($env{'user.domain'},  
                                                        'domains','','','',[$env{'user.domain'}],'',1);  
     }  
     $scrout .= &Apache::lonhtmlcommon::row_closure();  
   
     # Misc metadata      # Misc metadata
     if ($env{'form.area'} ne 'portfolio') {      if ($env{'form.area'} ne 'portfolio') {
Line 1890  sub build_date_queries { Line 1852  sub build_date_queries {
             my (undef,undef,undef,$cbday,$cbmon,$cbyear) = localtime($cbefore);              my (undef,undef,undef,$cbday,$cbmon,$cbyear) = localtime($cbefore);
             # Correct for year being relative to 1900              # Correct for year being relative to 1900
             $cayear+=1900; $cbyear+=1900;              $cayear+=1900; $cbyear+=1900;
             # Correct month; localtime gives month 0..11 but MySQL expects 1..12  
             $camon++; $cbmon++;  
             my $cquery=              my $cquery=
                 '(creationdate BETWEEN '.                  '(creationdate BETWEEN '.
                 "'".$cayear.'-'.$camon.'-'.$caday."'".                  "'".$cayear.'-'.$camon.'-'.$caday."'".
Line 1910  sub build_date_queries { Line 1870  sub build_date_queries {
             my (undef,undef,undef,$mbday,$mbmon,$mbyear) = localtime($mbefore);              my (undef,undef,undef,$mbday,$mbmon,$mbyear) = localtime($mbefore);
             # Correct for year being relative to 1900              # Correct for year being relative to 1900
             $mayear+=1900; $mbyear+=1900;              $mayear+=1900; $mbyear+=1900;
             # Correct month; localtime gives month 0..11 but MySQL expects 1..12  
             $mamon++; $mbmon++;  
             my $mquery=              my $mquery=
                 '(lastrevisiondate BETWEEN '.                  '(lastrevisiondate BETWEEN '.
                 "'".$mayear.'-'.$mamon.'-'.$maday."'".                  "'".$mayear.'-'.$mamon.'-'.$maday."'".
Line 1954  sub copyright_check { Line 1912  sub copyright_check {
     my (undef,undef,$resdom,$resname) = split('/',      my (undef,undef,$resdom,$resname) = split('/',
                                               $Metadata->{'url'});                                                $Metadata->{'url'});
     # Check for priv      # Check for priv
     if ($Metadata->{'copyright'} eq 'priv') {      if (($Metadata->{'copyright'} eq 'priv') && 
         unless (($env{'user.name'} eq $resname) &&          (($env{'user.name'} ne $resname) &&
                 ($env{'user.domain'} eq $resdom)) {           ($env{'user.domain'} ne $resdom))) {
             return 0;          return 0;
         }  
     }      }
     # Check for domain      # Check for domain
     if (($Metadata->{'copyright'} eq 'domain') &&      if (($Metadata->{'copyright'} eq 'domain') &&
Line 2061  a link to change the search query. Line 2018  a link to change the search query.
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub print_sort_form {  sub print_sort_form {
     my ($r,$pretty_query_string,$target) = @_;      my ($r,$pretty_query_string) = @_;
   
     ##      ##
     my %SortableFields=&Apache::lonlocal::texthash(       my %SortableFields=&Apache::lonlocal::texthash( 
Line 2094  sub print_sort_form { Line 2051  sub print_sort_form {
         &Apache::lonnet::logthis(&Apache::lonmysql::get_error());          &Apache::lonnet::logthis(&Apache::lonmysql::get_error());
         return;          return;
     }      }
     my $js =<<END;      my $start_page = &Apache::loncommon::start_page('Results',undef);
 <script type="text/javascript">  
 // <![CDATA[  
     function change_sort() {  
         var newloc = "/adm/searchcat?phase=results";  
         newloc += "&persistent_db_id=$env{'form.persistent_db_id'}";  
         newloc += "&sortby=";  
         newloc += document.forms.statusform.elements.sortby.value;  
         parent.resultsframe.location= newloc;  
     }  
 // ]]>  
 </script>  
 END  
   
     my $args;  
     if ($target eq '_parent') {  
         $args = {'links_target' => $target};  
     }  
     my $start_page = &Apache::loncommon::start_page('Results',undef,$args);  
     my $breadcrumbs=      my $breadcrumbs=
         &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',          &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',
     $env{'form.catalogmode'} ne 'import',      $env{'form.catalogmode'} ne 'import');
                                             '','','','','','',$target);  
   
     my $result = <<END;      my $result = <<END;
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
 <form name="statusform" action="" method="post" target="$target">  <form name="statusform" action="" method="post" target="_top">
 <input type="hidden" name="catalogmode" value="import" />  <input type="hidden" name="catalogmode" value="import" />
 <input type="hidden" name="acts" value="" />  <input type="hidden" name="acts" value="" />
 END  END
Line 2372  results into MySQL. Line 2310  results into MySQL.
 ######################################################################  ######################################################################
 sub run_search {  sub run_search {
     my ($r,$query,$customquery,$customshow,$serverlist,      my ($r,$query,$customquery,$customshow,$serverlist,
         $pretty_string,$area,$domainsref,$target) = @_;          $pretty_string,$area,$domainsref) = @_;
     my $tabletype = 'metadata';      my $tabletype = 'metadata';
     if ($area eq 'portfolio') {      if ($area eq 'portfolio') {
         $tabletype = 'portfolio_search';          $tabletype = 'portfolio_search';
Line 2381  sub run_search { Line 2319  sub run_search {
     #      #
     # Print run_search header      # Print run_search header
     #      #
     my $args;      my $start_page = &Apache::loncommon::start_page('Search Status',undef);
     if ($target eq '_parent') {  
         $args = {'links_target' => $target};  
     }  
     my $start_page = &Apache::loncommon::start_page('Search Status',undef,$args);  
     my $breadcrumbs =      my $breadcrumbs =
  &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',   &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',
     $env{'form.catalogmode'} ne 'import',      $env{'form.catalogmode'} ne 'import');
                                             '','','','','','',$target);  
     $r->print(<<END);      $r->print(<<END);
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
Line 2478  END Line 2411  END
     ## Prepare for the big loop.      ## Prepare for the big loop.
     my $hitcountsum;      my $hitcountsum;
     my $oldhitcountsum;      my $oldhitcountsum;
     my $displaycount;  
     my %matches;      my %matches;
     my $server;       my $server; 
     my $status;      my $status;
Line 2525  END Line 2457  END
                 &update_status($r,                  &update_status($r,
                        &mt('waiting on [_1]',join(' ',keys(%Server_status))));                         &mt('waiting on [_1]',join(' ',keys(%Server_status))));
             }              }
             sleep(0.1);               sleep(0.1);
         }          }
         #          #
         # Loop through the servers we have contacted but do not          # Loop through the servers we have contacted but do not
Line 2603  END Line 2535  END
             last if ($connection->aborted());              last if ($connection->aborted());
             if ($oldhitcountsum < $hitcountsum) {              if ($oldhitcountsum < $hitcountsum) {
                 &update_count_status($r,$hitcountsum);                  &update_count_status($r,$hitcountsum);
                 if (($hitcountsum <= $env{'form.show'}) ||                  if ($hitcountsum <= $env{'form.show'}) {
                     (!$displaycount && $hitcountsum)) {  
                     reload_result_frame($r);                      reload_result_frame($r);
                     $displaycount = $hitcountsum;  
                 }                  }
                 $oldhitcountsum = $hitcountsum;                  $oldhitcountsum = $hitcountsum;
             }              }
Line 2712  sub display_results { Line 2642  sub display_results {
       &Apache::loncommon::end_page());        &Apache::loncommon::end_page());
             $r->rflush();              $r->rflush();
             return;              return;
         }          } 
         # untie %groupsearch_db if the connection gets aborted before the end          # untie %groupsearch_db if the connection gets aborted before the end
         $r->register_cleanup(sub {          $r->register_cleanup(sub {
             untie %groupsearch_db if (tied(%groupsearch_db));              untie %groupsearch_db if (tied(%groupsearch_db));
         });           });
     }      }
     ##      ##
     ## Prepare the table for querying      ## Prepare the table for querying
Line 3269  sub print_frames_interface { Line 3199  sub print_frames_interface {
     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 = '';
   
Line 3292  function done_loading_results() { Line 3221  function done_loading_results() {
         update_results(new_location);          update_results(new_location);
     }      }
 }  }
 // ]]>  
 </script>  </script>
 JS  JS
   
Line 3599  sub display_url { Line 3527  sub display_url {
     } elsif ($url=~m{^(http://|/uploaded/)}) {      } elsif ($url=~m{^(http://|/uploaded/)}) {
  $link='<span class="LC_filename">'.$url.'</span>';   $link='<span class="LC_filename">'.$url.'</span>';
     } else {      } else {
         # replace the links to open in a new window  
         # (because the search opens in a new window, it gets  
         # confusing when the links open a tab in the  
         # parent window; ideally we should not force windows)  
         my $onclick = " onclick=\"window.open(this.href, '_blank', 'toolbar=1,location=1,menubar=0');return false;\"";  
         $link=&Apache::lonhtmlcommon::crumbs(          $link=&Apache::lonhtmlcommon::crumbs(
                   $url,                    $url,
                   'preview',                    'preview',
                   '',                    '',
                   '',                    '',
                   $skiplast,$onclick).' ';                    $skiplast).' ';
           # replace the links to open in a new window
           # (because the search opens in a new window, it gets
           # confusing when the links open a tab in the
           # parent window; ideally we should not force windows)
           $link =~ s/(href="[^"]*")/\1 onclick="window.open(this.href, '_blank', 'toolbar=1,location=1,menubar=0');return false;"/g;
     }      }
     return $link;      return $link;
 }  }

Removed from v.1.331.4.16.2.1  
changed lines
  Added in v.1.347


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