next unless $query =~ /\S/;
+ # Hack for journal title
+ my $q = $qtype;
+ if ($q eq 'jtitle') {
+ $qtype = 'title';
+ }
+
# This stuff probably will need refined or rethought to better handle
# the weird things Real Users will surely type in.
$contains = "" unless defined $contains; # silence warning
}
$query = "$qtype:$query" unless $qtype eq 'keyword' and $i == 0;
+ # Hack for journal title - completed!
+ if ($q eq 'jtitle') {
+ $query = "bib_level:s $query";
+ }
+
$bool = ($bool and $bool eq 'or') ? '||' : '&&';
$full_query = $full_query ? "($full_query $bool $query)" : $query;
}
my $query = _prepare_biblio_search_basics($cgi) || '';
+ $query .= ' ' . $ctx->{global_search_filter} if $ctx->{global_search_filter};
+
foreach ($cgi->param('modifier')) {
# The unless bit is to avoid stacking modifiers.
$query = ('#' . $_ . ' ' . $query) unless $query =~ qr/\#\Q$_/;
$query .= " $1($term)" if length $term;
}
+ # filter group entries. Entries from like filters are grouped into a single
+ # filter_group_entry() filter (ORed). Each collection is ANDed together.
+ # fg:foo_group=foo_entry_id
+ foreach (grep /^fg:/, $cgi->param) {
+ /:(-?\w+)$/ or next;
+ my $term = join(",", $cgi->param($_));
+ $query .= " filter_group_entry($term)" if length $term;
+ }
+
if ($cgi->param("bookbag")) {
$query .= " container(bre,bookbag," . int($cgi->param("bookbag")) . ")";
}
return $stat if $stat;
}
+ # load temporary_list settings for user and ou:
+ $self->_load_lists_and_settings if ($ctx->{user});
+
# shove recs into context in search results order
for my $rec_id (@$rec_ids) {
push(
my $base_url = sprintf(
'%s://%s%s/record/%s',
- $ctx->{proto},
- $self->apache->hostname,
+ $self->ctx->{proto},
+ $self->ctx->{hostname},
$self->ctx->{opac_root},
$$rec_ids[0],
);
# If we get here from the same record detail page to which we
# now wish to redirect, do not perform the redirect. This
# approach seems to work well, with the rare exception of
- # performing a new serach directly from the detail page that
+ # performing a new search directly from the detail page that
# happens to result in the same single hit. In this case, the
# user will be left on the search results page. This could be
# overcome w/ additional CGI, etc., but I'm not sure it's necessary.
$self->ctx->{search_facets} = {};
$self->ctx->{hit_count} = scalar @data;
$self->ctx->{page_size} = $self->ctx->{hit_count};
+ # load temporary_list settings for user and ou:
+ $self->_load_lists_and_settings if ($self->ctx->{user});
return Apache2::Const::OK;
} {
}
$self->timelog("Searching for MARC expert");
+ my $method = 'open-ils.search.biblio.marc';
+ $method .= '.staff' if $self->ctx->{is_staff};
my $timeout = 120;
my $ses = OpenSRF::AppSession->create('open-ils.search');
my $req = $ses->request(
- 'open-ils.search.biblio.marc',
+ $method,
{searches => $query, org_unit => $self->ctx->{search_ou}},
$limit, $offset, $timeout);
);
$self->timelog("Returned from calling get_records_and_facets() for MARC expert");
+ # load temporary_list settings for user and ou:
+ $self->_load_lists_and_settings if ($self->ctx->{user});
+
$self->ctx->{records} = [@data];
return Apache2::Const::OK;
if (my $cnfrag = $self->cgi->param("query")) {
my $url = sprintf(
- 'http%s://%s%s/cnbrowse?cn=%s',
- $self->cgi->https ? "s" : "",
- $self->apache->hostname,
+ '%s://%s%s/cnbrowse?cn=%s',
+ $self->ctx->{proto},
+ $self->ctx->{hostname},
$self->ctx->{opac_root},
$cnfrag # XXX some kind of escaping needed here?
);
+ $url .= '&locg=' . $self->_get_search_lib() if ($self->_get_search_lib());
return $self->generic_redirect($url);
} else {
return $self->generic_redirect; # return to search page