[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonsearchcat.pm
raeburn
raeburn at source.lon-capa.org
Thu Aug 4 17:23:57 EDT 2016
raeburn Thu Aug 4 21:23:57 2016 EDT
Modified files: (Branch: version_2_11_X)
/loncom/interface lonsearchcat.pm
Log:
- For 2.11
- Backport 1.345, 1.346, 1.347, 1.348, 1.349.
-------------- next part --------------
Index: loncom/interface/lonsearchcat.pm
diff -u loncom/interface/lonsearchcat.pm:1.331.4.11 loncom/interface/lonsearchcat.pm:1.331.4.12
--- loncom/interface/lonsearchcat.pm:1.331.4.11 Thu Mar 12 03:04:45 2015
+++ loncom/interface/lonsearchcat.pm Thu Aug 4 21:23:57 2016
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.331.4.11 2015/03/12 03:04:45 raeburn Exp $
+# $Id: lonsearchcat.pm,v 1.331.4.12 2016/08/04 21:23:57 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -78,6 +78,7 @@
use Apache::lonindexer();
use Apache::lonwishlist();
use LONCAPA;
+use Time::HiRes qw(sleep);
######################################################################
######################################################################
@@ -143,7 +144,7 @@
## this once, so the pause indicator is deleted
##
if (exists($env{'form.pause'})) {
- sleep(1);
+ sleep(0.1);
delete($env{'form.pause'});
}
##
@@ -1911,10 +1912,11 @@
my (undef,undef,$resdom,$resname) = split('/',
$Metadata->{'url'});
# Check for priv
- if (($Metadata->{'copyright'} eq 'priv') &&
- (($env{'user.name'} ne $resname) &&
- ($env{'user.domain'} ne $resdom))) {
- return 0;
+ if ($Metadata->{'copyright'} eq 'priv') {
+ unless (($env{'user.name'} eq $resname) &&
+ ($env{'user.domain'} eq $resdom)) {
+ return 0;
+ }
}
# Check for domain
if (($Metadata->{'copyright'} eq 'domain') &&
@@ -2064,7 +2066,7 @@
</script>
END
- my $start_page = &Apache::loncommon::start_page('Results',$js);
+ my $start_page = &Apache::loncommon::start_page('Results');
my $breadcrumbs=
&Apache::lonhtmlcommon::breadcrumbs('Searching','Searching',
$env{'form.catalogmode'} ne 'import');
@@ -2228,8 +2230,21 @@
$r->rflush();
}
+sub reload_result_frame {
+ my ($r) = @_;
+ my $newloc = '/adm/searchcat?phase=results&persistent_db_id='.
+ $env{'form.persistent_db_id'};
+ $r->print(<<SCRIPT);
+<script type="text/javascript">
+ parent.update_results("$newloc");
+</script>
+SCRIPT
+
+ $r->rflush();
+}
+
{
- my $max_time = 300; # seconds for the search to complete
+ my $max_time = 60; # seconds for the search to complete
my $start_time = 0;
my $last_time = 0;
@@ -2410,6 +2425,7 @@
##
## Prepare for the big loop.
my $hitcountsum;
+ my $oldhitcountsum;
my %matches;
my $server;
my $status;
@@ -2456,7 +2472,7 @@
&update_status($r,
&mt('waiting on [_1]',join(' ',keys(%Server_status))));
}
- sleep(1);
+ sleep(0.1);
}
#
# Loop through the servers we have contacted but do not
@@ -2532,7 +2548,13 @@
delete($Server_status{$server});
}
last if ($connection->aborted());
- &update_count_status($r,$hitcountsum);
+ if ($oldhitcountsum < $hitcountsum) {
+ &update_count_status($r,$hitcountsum);
+ if ($hitcountsum <= $env{'form.show'}) {
+ reload_result_frame($r);
+ }
+ $oldhitcountsum = $hitcountsum;
+ }
}
last if ($connection->aborted());
&update_seconds($r);
@@ -2626,6 +2648,8 @@
if ($env{'form.catalogmode'} eq 'import') {
if (! tie(%groupsearch_db,'GDBM_File',$diropendb,
&GDBM_WRCREAT(),0640)) {
+ # NOTE: this can happen when a previous request to searchcat?phase=results gets interrupted
+ # (%groupsearch_db is not untied)
$r->print('<p class="LC_error">'.
&mt('Unable to save import results.').
'</p>'.
@@ -2633,7 +2657,11 @@
&Apache::loncommon::end_page());
$r->rflush();
return;
- }
+ }
+ # untie %groupsearch_db if the connection gets aborted before the end
+ $r->register_cleanup(sub {
+ untie %groupsearch_db if (tied(%groupsearch_db));
+ });
}
##
## Prepare the table for querying
@@ -2775,8 +2803,7 @@
);
if ($total_results == 0) {
- $r->print('<meta HTTP-EQUIV="Refresh" CONTENT="2" />'.
- '<p class="LC_info">'.&mt('There are currently no results.').'</p>'.
+ $r->print('<p class="LC_info">'.&mt('There are currently no results.').'</p>'.
"</form>".
&Apache::loncommon::end_page());
return;
@@ -3149,6 +3176,14 @@
</script>
SCRIPT
+ $js.=<<SCRIPT;
+<script type="text/javascript">
+ \$(document).ready(function() {
+ parent.done_loading_results();
+ });
+</script>
+SCRIPT
+
my $start_page = &Apache::loncommon::start_page(undef,$js,
{'only_body' =>1,
'add_wishlist' =>1,
@@ -3182,6 +3217,26 @@
// <![CDATA[
var targetwin = opener;
var queue = '';
+
+var loading_results = true;
+var need_reloading = false;
+var new_location;
+function update_results(newloc) {
+ if (loading_results) {
+ need_reloading = true;
+ new_location = newloc;
+ } else {
+ loading_results = true;
+ resultsframe.location = newloc;
+ }
+}
+function done_loading_results() {
+ loading_results = false;
+ if (need_reloading) {
+ need_reloading = false;
+ update_results(new_location);
+ }
+}
// ]]>
</script>
JS
@@ -3294,7 +3349,7 @@
'<b>'.$prefix.
'<img src="'.&Apache::loncommon::icon($values{'url'}).'" alt="" />'.' '.
'<a href="'.$jumpurl.'?inhibitmenu=yes" '.
- 'target="preview">'.$values{'title'}."</a></b>\n".
+ 'target="preview" onclick="openMyModal(this.href, 500, 500, \'yes\');return false;">'.$values{'title'}."</a></b>\n".
&display_tools($values{'title'}, $jumpurl).
"<p>\n".
'<b>'.$values{'author'}.'</b>,'.
@@ -3427,7 +3482,7 @@
my $link = '<br />'.&display_url($jumpurl,1).'<br />';
$result .=
'<a href="'.$jumpurl.'?inhibitmenu=yes"'.
- ' target="preview">'.$values{'title'}.'</a>'.
+ ' target="preview" onclick="openMyModal(this.href, 500, 500, \'yes\');return false;">'.$values{'title'}.'</a>'.
&display_tools($values{'title'}, $jumpurl).<<END;
<br />
$link<br />
@@ -3473,7 +3528,7 @@
}
$jumpurl = &HTML::Entities::encode($jumpurl,'<>&"');
$result.=' <span class="LC_nobreak">'.
- '<a href="'.$jumpurl.'?inhibitmenu=yes" target="preview">'.
+ '<a href="'.$jumpurl.'?inhibitmenu=yes" target="preview" onclick="openMyModal(this.href, 500, 500, \'yes\');return false;">'.
&HTML::Entities::encode($values{'title'},'<>&"').'</a></span> '.
&display_tools($values{'title'}, $jumpurl).
$link.' <b>'.$values{'author'}.'</b> ('.$values{'domain'}.')';
@@ -3489,12 +3544,22 @@
} elsif ($url=~m{^(http://|/uploaded/)}) {
$link='<span class="LC_filename">'.$url.'</span>';
} 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(
$url,
'preview',
'',
(($env{'form.catalogmode'} eq 'import')?'parent.statusframe.document.forms.statusform':''),
- $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;
}
More information about the LON-CAPA-cvs
mailing list