Browse Source

Bug 10855: search with exact match if linked to an AV

If a field is linked to an AV, the search should be an exact match.

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
3.22.x
Jonathan Druart 11 years ago
committed by Tomas Cohen Arazi
parent
commit
750601ac5b
  1. 2
      Koha/AdditionalField.pm
  2. 4
      koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt
  3. 9
      serials/serials-search.pl

2
Koha/AdditionalField.pm

@ -230,7 +230,7 @@ sub get_matching_record_ids {
) AS values$i |;
$subquery .= ' USING (record_id)' if $i > 1;
push @subqueries, $subquery;
push @args, $field->{name}, $tablename, ( $exact_match ? $field->{value} : "%$field->{value}%" );
push @args, $field->{name}, $tablename, ( ( $exact_match or $field->{authorised_value_category} ) ? $field->{value} : "%$field->{value}%" );
}
$query .= join( ' LEFT JOIN ', @subqueries ) . ' WHERE 1';
for my $j ( 1 .. $i ) {

4
koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt

@ -445,7 +445,7 @@
<select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
<option value="">All</option>
[% FOREACH av IN field.authorised_value_choices %]
[% IF av.authorised_value == additional_field_filters.${field.name} %]
[% IF av.authorised_value == additional_field_filters.${field.name}.value %]
<option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
[% ELSE %]
<option value="[% av.authorised_value %]">[% av.lib %]</option>
@ -453,7 +453,7 @@
[% END %]
</select>
[% ELSE %]
<input id="additional_field_[% field.id %]" type="text" value="[% additional_field_filters.${field.name} %]" name="additional_field_[% field.id %]_filter" />
<input id="additional_field_[% field.id %]" type="text" value="[% additional_field_filters.${field.name}.value %]" name="additional_field_[% field.id %]_filter" />
[% END %]
</li>
[% END %]

9
serials/serials-search.pl

@ -82,8 +82,11 @@ my $additional_fields = Koha::AdditionalField->all( { tablename => 'subscription
my $additional_field_filters;
for my $field ( @$additional_fields ) {
my $filter_value = $query->param('additional_field_' . $field->{id} . '_filter');
if ( defined ( $filter_value ) ) {
$additional_field_filters->{ $field->{name} } = $filter_value;
if ( defined $filter_value and $filter_value ne q|| ) {
$additional_field_filters->{ $field->{name} } = {
value => $filter_value,
authorised_value_category => $field->{authorised_value_category},
};
}
if ( $field->{authorised_value_category} ) {
$field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} );
@ -103,7 +106,7 @@ if ($searched){
publisher => $publisher,
bookseller => $bookseller,
branch => $branch,
additional_fields => [ map{ { name => $_, value => $additional_field_filters->{$_}} } keys %$additional_field_filters ],
additional_fields => [ map{ { name => $_, value => $additional_field_filters->{$_}{value}, authorised_value_category => $additional_field_filters->{$_}{authorised_value_category} } } keys %$additional_field_filters ],
location => $location,
expiration_date => $expiration_date_dt,
}

Loading…
Cancel
Save