From: Lebbeous Fogle-Weekley Date: Thu, 2 May 2013 03:30:43 +0000 (-0400) Subject: misc little stuff *AND* wholly untested qp has_browse_entry() filter X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=69e4aa8ebb05940b7ef5b86b767f0c49634e7495;p=evergreen%2Fequinox.git misc little stuff *AND* wholly untested qp has_browse_entry() filter Signed-off-by: Lebbeous Fogle-Weekley --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm index c202dac4b9..97d140f459 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm @@ -665,6 +665,8 @@ __PACKAGE__->add_search_filter( 'container' ); # Start from a list of record ids, either bre or metarecords, depending on the #metabib modifier __PACKAGE__->add_search_filter( 'record_list' ); +__PACKAGE__->add_search_filter( 'has_browse_entry' ); + # used internally, but generally not user-settable __PACKAGE__->add_search_filter( 'preferred_language' ); __PACKAGE__->add_search_filter( 'preferred_language_weight' ); @@ -1109,6 +1111,10 @@ sub flatten { $where .= "$key ${NOT}IN (" . join(',', map { $self->QueryParser->quote_value($_) } @{$filter->args}) . ')'; } + } elsif ($filter->name eq 'has_browse_entry') { + if (@{$filter->args} > 0) { + $from .= "\n" . $spc x 3 . sprintf("INNER JOIN metabib.browse_entry_def_map mbedm ON (mbedm.source = m.source AND mbedm.entry = %d)", $filter->args->[0]); + } } elsif ($filter->name eq 'edit_date' or $filter->name eq 'create_date') { # bre.create_date and bre.edit_date filtering my $datefilter = $filter->name; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Browse.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Browse.pm index 91888ce135..af129b1b11 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Browse.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Browse.pm @@ -37,8 +37,12 @@ sub prepare_browse_parameters { no warnings 'uninitialized'; - my $limit = int($self->cgi->param('limit') || 10); - my $offset = int($self->cgi->param('offset') || 0); + # XXX TODO add config.global_flag rows for browse limit limit and + # browse offset limit? large offsets (or really large limits) could be + # tortuous to the DB. + + my $limit = int($self->cgi->param('blimit') || 10); + my $offset = int($self->cgi->param('boffset') || 0); my @params = ( scalar($self->cgi->param('qtype')), @@ -60,6 +64,27 @@ sub prepare_browse_parameters { ); } +# This changes $results and returns 1 for success, undef for failure. +# $results must be an arrayref of result rows from the DB's metabib.browse(). +sub flesh_browse_results { + my ($self, $results) = @_; + + my @auth_ids = map { split /,/, $_->{authorities} } @$results; + + if (@auth_ids) { + # select ash.* + # from authority.record_entry are + # join authority.control_set acs on (are.control_set = acs.id) + # join authority.control_set_authority_field + # XXX wait what am I doing here? + my $authorities = $self->editor->json_query({ + "" + }) or return; + } + + return 1; +} + sub load_browse_impl { my ($self, $limit, $offset, @params) = @_; @@ -72,18 +97,20 @@ sub load_browse_impl { }); if (not $results) { # DB error, not empty result set. - # The choice of ->warn instead of ->error for the Apache - # logs is a conscious one. Let's save ->error for more - # process-ending stuff. We're not necessarily crashing - # in this case. - - $self->apache->log->warn( - "error in browse: " . $self->editor->event->{textcode} + $logger->warn( + "error in browse (direct): " . $self->editor->event->{textcode} ); $self->ctx->{browse_error} = 1; return; - } + }#elsif (not $self->flesh_browse_results($results)) { +# $logger->warn( +# "error in browse (flesh): " . $self->editor->event->{textcode} +# ); +# $self->ctx->{browse_error} = 1; +# +# return; +# } return $results; } diff --git a/Open-ILS/src/templates/opac/browse.tt2 b/Open-ILS/src/templates/opac/browse.tt2 index 227689c2c0..9edf2bc575 100644 --- a/Open-ILS/src/templates/opac/browse.tt2 +++ b/Open-ILS/src/templates/opac/browse.tt2 @@ -5,9 +5,10 @@ PROCESS "opac/parts/org_selector.tt2"; WRAPPER "opac/parts/base.tt2"; INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Browse the Catalog"); - limit = CGI.param('limit') || 10; - offset = CGI.param('offset') || 0; + blimit = CGI.param('blimit') || 10; + boffset = CGI.param('boffset') || 0; %]
@@ -25,8 +26,8 @@
- + @@ -50,20 +51,20 @@ [% BLOCK browse_pager %]
[% IF ctx.more_back %] - ← [%l ('Back') %] + ← [%l ('Back') %] [% END %] [% IF browse.english_pager; # XXX how to apply i18n here? current_qtype = CGI.param('qtype') || 'title' %] - - 0-9 + + 0-9 [% FOR letter IN ['A'..'Z'] %] - [% letter %] + [% letter %] [% END %] [% END %] [% IF ctx.more_forward %] - [%l ('Forward') %] → + [%l ('Forward') %] → [% END %]
[% END %] @@ -78,12 +79,16 @@ "to library staff.") %] [% ELSE %] +
    [% FOR result IN ctx.browse_results %] -
    - [% result.value | html %] - ([% result.sources %]) -
    +
  • + + [% result.value | html %] + + ([% result.sources %]) +
  • [% END %] +
[% END %]
diff --git a/Open-ILS/src/templates/opac/css/style.css.tt2 b/Open-ILS/src/templates/opac/css/style.css.tt2 index 12c92cbfc6..b3e497b039 100644 --- a/Open-ILS/src/templates/opac/css/style.css.tt2 +++ b/Open-ILS/src/templates/opac/css/style.css.tt2 @@ -1515,3 +1515,19 @@ a.preflib_change { #search-tools > span { margin: 0 1em; } +.browse-error { + font-weight: bold; + font-color: #c00; +} +.browse-result-sources { + margin-left: 1em; +} +.browse-pager { + margin: 2ex 0; +} +.browse-result-list { + list-style-type: square; +} +.browse-shortcuts { + font-size: 120%; +}