From 96981a44d81977d8513901fb5c178c429fcf1fb9 Mon Sep 17 00:00:00 2001 From: Fridolyn SOMERS <fridolyn.somers@biblibre.com> Date: Tue, 6 Nov 2012 09:50:48 +0100 Subject: [PATCH] [SIGNED-OFF] Bug 8443: Suggestions publication year and copyright date Main patch correcting suggestions search : - allow filtering on copyrightdate, manageddate and accepteddate - entered dates remains in filter during search - empty and null values are in the same tab - null/empty values are not present in filers comboboxes Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> --- C4/Suggestions.pm | 6 +++--- .../prog/en/modules/suggestion/suggestion.tt | 20 ++++++++++---------- suggestion/suggestion.pl | 19 +++++++++++++++++-- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index 0cb484a..3489105 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -121,7 +121,7 @@ sub SearchSuggestion { push @sql_params,'%'.$s.'%'; " and suggestions.$_ like ? "; } else { () } - } qw( title author isbn publishercode collectiontitle ) + } qw( title author isbn publishercode copyrightdate collectiontitle ) ); my $userenv = C4::Context->userenv; @@ -137,7 +137,7 @@ sub SearchSuggestion { foreach my $field (grep { my $fieldname=$_; any {$fieldname eq $_ } qw< STATUS branchcode itemtype suggestedby managedby acceptedby - bookfundid biblionumber + budgetid biblionumber >} keys %$suggestion ) { if ($$suggestion{$field}){ @@ -155,7 +155,7 @@ sub SearchSuggestion { my $from = $_ . "_from"; my $to = $_ . "_to"; if ($$suggestion{$from} || $$suggestion{$to}) { - push @query, " AND suggestions.suggesteddate BETWEEN '" + push @query, " AND suggestions.$_ BETWEEN '" . (format_date_in_iso($$suggestion{$from}) || 0000-00-00) . "' AND '" . (format_date_in_iso($$suggestion{$to}) || $today) . "'"; } } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt index fb73fd1..d1b38ec 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt @@ -493,7 +493,7 @@ $(document).ready(function() { calcNewsuggTotal(); }); <li><label for="author"> Author:</label><input type="text" id="author" name="author" value="[% author %]" /></li> <li><label for="isbn"> ISBN:</label><input type="text" id="isbn" name="isbn" value="[% isbn %]" /></li> <li><label for="publishercode"> Publisher:</label><input type="text" id="publishercode" name="publishercode" value="[% publishercode %]" /></li> - <li><label for="publicationyear"> Publication year:</label><input type="text" id="publicationyear" name="publicationyear" value="[% publicationyear %]" /></li> + <li><label for="copyrightdate_filter"> Copyright date:</label><input type="text" id="copyrightdate_filter" name="copyrightdate" value="[% copyrightdate %]" /></li> <li><label for="collectiontitle"> Collection title:</label><input type="text" id="collectiontitle" name="collectiontitle" value="[% collectiontitle %]" /></li><li><input type="submit" value="Go" /></li></ol> </fieldset> <fieldset class="brief"><h4 class="collapse"><a href="#">Suggestion information</a></h4> @@ -511,39 +511,39 @@ $(document).ready(function() { calcNewsuggTotal(); }); <li><label for="suggestedby"> Suggested by:</label><select id="suggestedby" name="suggestedby"><option value="">Any</option> [% FOREACH suggestedby_loo IN suggestedby_loop %][% IF ( suggestedby_loo.selected ) %]<option value="[% suggestedby_loo.code %]" selected="selected">[% suggestedby_loo.desc %]</option>[% ELSE %]<option value="[% suggestedby_loo.code %]">[% suggestedby_loo.desc %]</option>[% END %][% END %] </select></li> - <li><label for="suggesteddate_from"> Suggested on:</label>[% suggesteddate %] + <li><label for="suggesteddate_from"> Suggested on:</label> <table class="invis"> <tr> - <td><label for="suggesteddate_from">from:</label></td><td><input type="text" id="suggesteddate_from" name="suggesteddate_from" style="width:80px;" /></td> + <td><label for="suggesteddate_from">from:</label></td><td><input type="text" id="suggesteddate_from" name="suggesteddate_from" value="[% suggesteddate_from %]" style="width:80px;" /></td> </tr> <tr> - <td><label for="suggesteddate_to">to:</label></td><td><input type="text" id="suggesteddate_to" name="suggesteddate_to" style="width:80px;" /></td> + <td><label for="suggesteddate_to">to:</label></td><td><input type="text" id="suggesteddate_to" name="suggesteddate_to" value="[% suggesteddate_to %]" style="width:80px;" /></td> </tr> </table> </li> <li><label for="managedby"> Managed by:</label><select id="managedby" name="managedby"><option value="">Any</option> [% FOREACH managedby_loo IN managedby_loop %][% IF ( managedby_loo.selected ) %]<option value="[% managedby_loo.code %]" selected="selected">[% managedby_loo.desc %]</option>[% ELSE %]<option value="[% managedby_loo.code %]">[% managedby_loo.desc %]</option>[% END %][% END %] </select></li> - <li><label for="manageddate_from"> Management date:</label>[% manageddate %] + <li><label for="manageddate_from"> Management date:</label> <table class="invis"> <tr> - <td><label for="manageddate_from">from:</label></td><td><input type="text" id="manageddate_from" name="manageddate_from" style="width:80px;" /></td> + <td><label for="manageddate_from">from:</label></td><td><input type="text" id="manageddate_from" name="manageddate_from" value="[% manageddate_from %]" style="width:80px;" /></td> </tr> <tr> - <td><label for="manageddate_to">to:</label></td><td><input type="text" id="manageddate_to" name="manageddate_to" style="width:80px;" /></td> + <td><label for="manageddate_to">to:</label></td><td><input type="text" id="manageddate_to" name="manageddate_to" value="[% manageddate_to %]" style="width:80px;" /></td> </tr> </table> </li> <li><label for="acceptedby"> Accepted by:</label><select id="acceptedby" name="acceptedby"><option value="">Any</option> [% FOREACH acceptedby_loo IN acceptedby_loop %][% IF ( acceptedby_loo.selected ) %] <option value="[% acceptedby_loo.code %]" selected="selected">[% acceptedby_loo.desc %]</option>[% ELSE %]<option value="[% acceptedby_loo.code %]">[% acceptedby_loo.desc %]</option>[% END %][% END %] </select></li> - <li><label for="accepteddate_from"> Accepted on:</label>[% accepteddate %] + <li><label for="accepteddate_from"> Accepted on:</label> <table class="invis"> <tr> - <td><label for="accepteddate_from">from:</label></td><td><input type="text" id="accepteddate_from" name="accepteddate_from" style="width:80px;" /></td> + <td><label for="accepteddate_from">from:</label></td><td><input type="text" id="accepteddate_from" name="accepteddate_from" value="[% accepteddate_from %]" style="width:80px;" /></td> </tr> <tr> - <td><label for="accepteddate_to">to:</label></td><td><input type="text" id="accepteddate_to" name="accepteddate_to" style="width:80px;" /></td> + <td><label for="accepteddate_to">to:</label></td><td><input type="text" id="accepteddate_to" name="accepteddate_to" value="[% accepteddate_to %]" style="width:80px;" /></td> </tr> </table> </li> diff --git a/suggestion/suggestion.pl b/suggestion/suggestion.pl index 99f38eb..717d5df 100755 --- a/suggestion/suggestion.pl +++ b/suggestion/suggestion.pl @@ -190,10 +190,22 @@ if ($op=~/else/) { $displayby||="STATUS"; delete $$suggestion_ref{'branchcode'} if($displayby eq "branchcode"); + # distinct values of display by my $criteria_list=GetDistinctValues("suggestions.".$displayby); + my (@criteria_dv, $criteria_has_empty); + foreach (@$criteria_list) { + if ($_->{value}) { + push @criteria_dv, $_->{value}; + } else { + $criteria_has_empty = 1; + } + } + # agregate null and empty values under empty value + push @criteria_dv, '' if $criteria_has_empty; + my @allsuggestions; my $reasonsloop = GetAuthorisedValues("SUGGEST"); - foreach my $criteriumvalue ( map { $$_{'value'} } @$criteria_list ) { + foreach my $criteriumvalue ( @criteria_dv ) { # By default, display suggestions from current working branch if(not defined $branchfilter) { $$suggestion_ref{'branchcode'} = C4::Context->userenv->{'branch'}; @@ -356,15 +368,18 @@ $template->param( total => sprintf("%.2f", $$suggestion_ref{'total'}||0), ); +# lists of distinct values (without empty) for filters my %hashlists; foreach my $field ( qw(managedby acceptedby suggestedby budgetid) ) { my $values_list; $values_list = GetDistinctValues( "suggestions." . $field ); my @codes_list = map { { 'code' => $$_{'value'}, - 'desc' => GetCriteriumDesc( $$_{'value'}, $field ), + 'desc' => GetCriteriumDesc( $$_{'value'}, $field ) || $$_{'value'}, 'selected' => ($$suggestion_ref{$field}) ? $$_{'value'} eq $$suggestion_ref{$field} : 0, } + } grep { + $$_{'value'} } @$values_list; $hashlists{ lc($field) . "_loop" } = \@codes_list; } -- 1.7.9.5