Diff for /loncom/interface/lonsearchcat.pm between versions 1.348 and 1.358

version 1.348, 2016/04/22 17:22:29 version 1.358, 2023/12/22 20:11:55
Line 176  sub handler { Line 176  sub handler {
     }       } 
     my $crumb_text = 'Portfolio Search';      my $crumb_text = 'Portfolio Search';
     if (@allowed_searches ==2) {      if (@allowed_searches ==2) {
        $crumb_text = 'Portfolio and Catalog Search';          $crumb_text = 'Portfolio and Content Library 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?'.
Line 185  sub handler { Line 194  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=>'_top',                target=>$target,
               bug=>'Searching',});                bug=>'Searching',});
     #      #
     if ($env{'form.phase'} !~ m/(basic|adv|course)_search/) {      if ($env{'form.phase'} !~ m/(basic|adv|course)_search/) {
Line 328  END Line 337  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);              &print_sort_form($r,$pretty_string,$target);
         } 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);                          $libraries,$pretty_string,$env{'form.area'},$domainsref,$target);
         }          }
     } 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 465  sub setup_basic_search { Line 474  sub setup_basic_search {
     my ($r,$area,$hidden_fields,$closebutton) = @_;      my ($r,$area,$hidden_fields,$closebutton) = @_;
     # Define interface components      # Define interface components
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                               res => 'LON-CAPA Catalog Search',                                res => 'Content Library Search',
                               portfolio => 'Portfolio Search',                                portfolio => 'Portfolio Search',
     );      );
     my ($userelatedwords,$onlysearchdomain,$inclext,$adv_search_link,$scrout);      my ($userelatedwords,$onlysearchdomain,$inclext,$adv_search_link,$scrout);
Line 479  sub setup_basic_search { Line 488  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',                             'domains',$checked,
                            $env{'form.domains'},                             $singledom,$disabled)
                            $r->dir_config('lonDefDomain'))  
                        .' '                         .' '
                        .&mt('only search domain [_1]'                         .&mt('only search domain [_1]'
                                ,'<b>'.$r->dir_config('lonDefDomain').'</b>')                                 ,'<b>'.$singledom.'</b>')
                        .'</label>';                         .'</label>';
   
     $adv_search_link = '<a href="/adm/searchcat?'.      $adv_search_link = '<a href="/adm/searchcat?'.
Line 632  function additional_metadata() { Line 658  function additional_metadata() {
                        'standards','mime') {                         'standards','mime') {
         $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field}))          $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field}))
                   .&Apache::lonmeta::prettyinput($field,                    .&Apache::lonmeta::prettyinput($field,
                                           $env{'form.'.$field},                                            $env{'form.'.$field},'',
                                           $field,                                            $field,
                                           'advsearch',                                            'advsearch',
                                           $related_word_search{$field},                                            $related_word_search{$field},
Line 649  function additional_metadata() { Line 675  function additional_metadata() {
     foreach my $field ('lowestgradelevel','highestgradelevel') {      foreach my $field ('lowestgradelevel','highestgradelevel') {
         $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field}))          $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field}))
                   .&Apache::lonmeta::prettyinput($field,                    .&Apache::lonmeta::prettyinput($field,
                                           $env{'form.'.$field},                                            $env{'form.'.$field},'',
                                           $field,                                            $field,
                                           'advsearch',                                            'advsearch',
                                           0)                                            0)
Line 661  function additional_metadata() { Line 687  function additional_metadata() {
                    $env{'form.category'})                     $env{'form.category'})
               .&Apache::lonhtmlcommon::row_closure();                .&Apache::lonhtmlcommon::row_closure();
   
     $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Domains')))      my $anydomain = 1;
               .&Apache::loncommon::domain_select('domains',      if ($env{'form.area'} ne 'portfolio') {
                    $env{'form.domains'},1)          unless (&Apache::lonnet::allowed('bre','/res/')) {
               .&Apache::lonhtmlcommon::row_closure();              $anydomain = 0; 
           }
       }
   
       $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Domains')));
       if ($anydomain) {
           my $defdom = &Apache::lonnet::default_login_domain();
           my ($trusted,$untrusted) = &Apache::lonnet::trusted_domains('shared',$defdom);
           $scrout .= &Apache::loncommon::domain_select('domains',
                      $env{'form.domains'},1,$trusted,$untrusted);
       } 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') {
         $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Copyright/Distribution')))          $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Copyright/Distribution')))
                   .&Apache::lonmeta::selectbox('copyright',                    .&Apache::lonmeta::selectbox('copyright',
                                              $env{'form.copyright'},                                               $env{'form.copyright'},'',
                                 \&Apache::loncommon::copyrightdescription,                                  \&Apache::loncommon::copyrightdescription,
                                        ( undef,                                         ( undef,
                                         &Apache::loncommon::copyrightids)                                          &Apache::loncommon::copyrightids)
Line 680  function additional_metadata() { Line 720  function additional_metadata() {
   
     $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Language')))      $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Language')))
               .&Apache::lonmeta::selectbox('language',                .&Apache::lonmeta::selectbox('language',
                                     $env{'form.language'},                                      $env{'form.language'},'',
                                     \&Apache::loncommon::languagedescription,                                      \&Apache::loncommon::languagedescription,
                                     ('any',&Apache::loncommon::languageids)                                      ('any',&Apache::loncommon::languageids)
                                     )                                      )
Line 916  sub viewoptions { Line 956  sub viewoptions {
     $scrout .= '<span class="LC_nobreak">'      $scrout .= '<span class="LC_nobreak">'
               .&mt('Type:').' '                .&mt('Type:').' '
               .&Apache::lonmeta::selectbox('viewselect',                .&Apache::lonmeta::selectbox('viewselect',
                    $env{'form.viewselect'},                     $env{'form.viewselect'},'',
                    \&viewoptiontext,                     \&viewoptiontext,
                    sort(keys(%Views)))                     sort(keys(%Views)))
               .'</span>';                .'</span>';
     my $countselect = &Apache::lonmeta::selectbox('show',      my $countselect = &Apache::lonmeta::selectbox('show',
                                                   $env{'form.show'},                                                    $env{'form.show'},'',
                                                   undef,                                                    undef,
                                                   (10,20,50,100,1000,10000));                                                    (10,20,50,100,1000,10000));
     $scrout .= ' <span class="LC_nobreak">'      $scrout .= ' <span class="LC_nobreak">'
Line 1852  sub build_date_queries { Line 1892  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 1870  sub build_date_queries { Line 1912  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 2019  a link to change the search query. Line 2063  a link to change the search query.
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub print_sort_form {  sub print_sort_form {
     my ($r,$pretty_query_string) = @_;      my ($r,$pretty_query_string,$target) = @_;
   
     ##      ##
     my %SortableFields=&Apache::lonlocal::texthash(       my %SortableFields=&Apache::lonlocal::texthash( 
Line 2052  sub print_sort_form { Line 2096  sub print_sort_form {
         &Apache::lonnet::logthis(&Apache::lonmysql::get_error());          &Apache::lonnet::logthis(&Apache::lonmysql::get_error());
         return;          return;
     }      }
     my $start_page = &Apache::loncommon::start_page('Results',undef);      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="_top">  <form name="statusform" action="" method="post" target="$target">
 <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 2311  results into MySQL. Line 2360  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) = @_;          $pretty_string,$area,$domainsref,$target) = @_;
     my $tabletype = 'metadata';      my $tabletype = 'metadata';
     if ($area eq 'portfolio') {      if ($area eq 'portfolio') {
         $tabletype = 'portfolio_search';          $tabletype = 'portfolio_search';
Line 2320  sub run_search { Line 2369  sub run_search {
     #      #
     # Print run_search header      # Print run_search header
     #      #
     my $start_page = &Apache::loncommon::start_page('Search Status',undef);      my $args;
       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 2371  END Line 2425  END
         %all_library_servers = (%library_servers,%older_library_servers);          %all_library_servers = (%library_servers,%older_library_servers);
         @Servers_to_contact = sort(keys(%all_library_servers));          @Servers_to_contact = sort(keys(%all_library_servers));
         foreach my $server (@Servers_to_contact) {          foreach my $server (@Servers_to_contact) {
             my %possdoms;  
             map { $possdoms{$_}=1;  } &Apache::lonnet::machine_domains($all_library_servers{$server});  
             $domains_by_server{$server} =              $domains_by_server{$server} =
                 join(',',sort(&Apache::lonnet::machine_domains($all_library_servers{$server})));                  join(',',sort(&Apache::lonnet::machine_domains($all_library_servers{$server})));
         }          }
Line 2412  END Line 2464  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 2536  END Line 2589  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 3528  sub display_url { Line 3583  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).' ';                    $skiplast,$onclick).' ';
         # 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.348  
changed lines
  Added in v.1.358


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