[Koha-patches] [PATCH] bug_7398: Replaced OPACDisplayRequestPriority syspref with OPACShowHoldQueueDetails

Marc Balmer marc at msys.ch
Fri Mar 30 08:40:24 CEST 2012


Am 30.03.2012 02:04, schrieb Srdjan:
> New syspref is Choice, options being:
> - None
> - Holds number only
> - Holds number and priority
>
> Show holds count on OPAC detail

This patch is wrong.  It contains MySQLisms (backquotes).  Please change 
the code to not introduce MySQLisms, thus supporting the efforts to make 
Koha run on PostgreSQL, too.

> ---
>   admin/systempreferences.pl                         |    2 +-
>   installer/data/mysql/sysprefs.sql                  |    2 +-
>   installer/data/mysql/updatedatabase.pl             |   15 +++++
>   .../prog/en/modules/admin/preferences/opac.pref    |    9 ++-
>   koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt |   17 ++++++
>   .../opac-tmpl/prog/en/modules/opac-reserve.tt      |   52 +++++++++--------
>   opac/opac-detail.pl                                |   21 +++++++
>   opac/opac-reserve.pl                               |   60 +++++++++++---------
>   opac/opac-user.pl                                  |   11 ++-
>   9 files changed, 127 insertions(+), 62 deletions(-)
>
> diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl
> index f4069ae..ebc52de 100755
> --- a/admin/systempreferences.pl
> +++ b/admin/systempreferences.pl
> @@ -348,7 +348,7 @@ $tabsysprefs{OPACViewOthersSuggestions}  = "OPAC";
>   $tabsysprefs{URLLinkText}                = "OPAC";
>   $tabsysprefs{OPACSearchForTitleIn}       = "OPAC";
>   $tabsysprefs{OPACShelfBrowser}           = "OPAC";
> -$tabsysprefs{OPACDisplayRequestPriority} = "OPAC";
> +$tabsysprefs{OPACShowHoldQueueDetails}   = "OPAC";
>   $tabsysprefs{OPACAllowHoldDateInFuture}  = "OPAC";
>   $tabsysprefs{OPACPatronDetails}  = "OPAC";
>   $tabsysprefs{OPACFinesTab}  = "OPAC";
> diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
> index e8c22ee..8fd371c 100644
> --- a/installer/data/mysql/sysprefs.sql
> +++ b/installer/data/mysql/sysprefs.sql
> @@ -233,7 +233,7 @@ INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES
>   INSERT INTO `systempreferences` (variable,value,options,explanation,type)  VALUES ('CurrencyFormat','US','US|FR','Determines the display format of currencies. eg: \'36000\' is displayed as \'360 000,00\'  in \'FR\' or \'360,000.00\'  in \'US\'.','Choice');
>   INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('AcqCreateItem','ordering','ordering|receiving|cataloguing','Define when the item is created : when ordering, when receiving, or in cataloguing module','Choice');
>   INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowRenewalLimitOverride', '0', 'if ON, allows renewal limits to be overridden on the circulation screen',NULL,'YesNo');
> -INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('OPACDisplayRequestPriority','0','','Show patrons the priority level on holds in the OPAC','YesNo');
> +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('OPACShowHoldQueueDetails','none','none|holds|holds_priority','Show holds details in OPAC','Choice');

This should read as

INSERT INTO systempreferences (variable,value,options,explanation,type) 
VALUES 
('OPACShowHoldQueueDetails','none','none|holds|holds_priority','Show 
holds details in OPAC','Choice');

i.e. without the non-portable back quotes.

>   INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, Koha will will use the rules defined in branch_transfer_limits to decide if an item transfer should be allowed.', 'YesNo');
>   INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldPolicyOverride', '0', 'Allow staff to override hold policies when placing holds',NULL,'YesNo');
>   INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'BranchTransferLimitsType', 'ccode', 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit by itemtype or collection code.', 'Choice');
> diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
> index ddc288c..19cc808 100755
> --- a/installer/data/mysql/updatedatabase.pl
> +++ b/installer/data/mysql/updatedatabase.pl
> @@ -5109,6 +5109,21 @@ if (C4::Context->preference("Version")<  TransformToNum($DBversion)) {
>       SetVersion ($DBversion);
>   }
>
> +
> +
> +$DBversion = "3.07.00.XXX";
> +if ( C4::Context->preference("Version")<  TransformToNum($DBversion) ) {
> +    $dbh->do("UPDATE systempreferences SET
> +                variable = 'OPACShowHoldQueueDetails',
> +                value = CASE value WHEN '1' THEN 'holds_priority' ELSE 'none' END,
> +                options = 'none|holds|holds_priority',
> +                explanation = 'Show holds details in OPAC',
> +                type = 'Choice'
> +              WHERE variable = 'OPACDisplayRequestPriority'");
> +    print "Upgrade to $DBversion done (Changed system preference OPACDisplayRequestPriority ->  OPACShowHoldQueueDetails)\n";
> +    SetVersion($DBversion);
> +}
> +
>   =head1 FUNCTIONS
>
>   =head2 DropAllForeignKeys($table)
> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
> index ae6b620..d6f4457 100644
> --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
> +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
> @@ -73,11 +73,12 @@ OPAC:
>                     no: "Don't include"
>               - "COinS / OpenURL / Z39.88 in OPAC search results.<br/>Warning: Enabling this feature will slow OPAC search response times."
>           -
> -            - pref: OPACDisplayRequestPriority
> +            - pref: OPACShowHoldQueueDetails
>                 choices:
> -                  yes: Show
> -                  no: "Don't show"
> -            - patrons the priority level of their holds in the OPAC.
> +                  none: "Don't show any hold details"
> +                  holds: "Show holds"
> +                  holds_priority: "Show holds and their priority level"
> +            - to patrons in the OPAC.
>           -
>               - pref: OPACShowCheckoutName
>                 default: 0
> diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
> index a5be324..c72ab82 100644
> --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
> +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
> @@ -629,6 +629,9 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
>               <th id="item_status">Status</th>
>               [% IF ( itemdata_itemnotes ) %]<th id="item_notes">Notes</th>[% END %]
>               <th id="item_datedue">Date Due</th>
> +        [% IF holds_count.defined %]
> +<th>Holds</th>
> +        [% END %]
>           </tr></thead>
>   	<tbody>[% FOREACH ITEM_RESULT IN ITEM_RESULTS %]
>   	<tr>[% IF ( item_level_itypes ) %]<td>[% UNLESS ( noItemTypeImages ) %][% IF ( ITEM_RESULT.imageurl ) %]<img src="[% ITEM_RESULT.imageurl %]" title="[% ITEM_RESULT.description %]" alt="[% ITEM_RESULT.description %]" />[% END %][% END %] [% ITEM_RESULT.description %]</td>[% END %]
> @@ -653,10 +656,24 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
>   		<td>[% INCLUDE 'item-status.inc' item = ITEM_RESULT %]</td>
>   		[% IF ( itemdata_itemnotes ) %]<td>[% ITEM_RESULT.itemnotes %]</td>[% END %]
>   		<td>[% ITEM_RESULT.datedue | $KohaDates %]</td>
> +        [% IF holds_count.defined %]
> +		<td>[% ITEM_RESULT.holds_count %]
> +            [% IF ITEM_RESULT.priority %]
> +                    (priority [% ITEM_RESULT.priority %])
> +            [% END %]
> +</td>
> +        [% END %]
>   	</tr>
>   	[% END %]</tbody>
>   	</table>
>       [% END %]
> +    [% IF holds_count.defined %]
> +	<div id="bib_holds">Holds: [% holds_count %]
> +        [% IF priority %]
> +            (priority [% priority %])
> +        [% END %]
> +</div>
> +    [% END %]
>   [% ELSE %]
>       [% IF ( ALTERNATEHOLDINGS ) %]
>       [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
> diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
> index 7597a4a..43e4e36 100644
> --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
> +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
> @@ -242,8 +242,12 @@
>                     [% UNLESS ( item_level_itypes ) %]
>                       <th>Item Type</th>
>                     [% END %]
> -                  [% IF ( showpriority ) %]
> -<th>Priority</th>
> +                  [% IF ( showholds ) %]
> +<th>Holds
> +                      [% IF ( showpriority ) %]
> +                      and priority
> +                      [% END %]
> +</th>
>                     [% END %]
>   		  [% IF ( reserve_in_future ) %]
>   		<th>Hold Starts on Date</th>
> @@ -297,19 +301,21 @@
>                           [% END %]
>
>                       </td>
> -                    [% IF ( bibitemloo.holdable ) %][% UNLESS ( item_level_itypes ) %]
> -<td>
> -                                            [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
> -                                [% bibitemloo.description %]
> -</td>
> -                                        [% END %][% END %]
>                       [% IF ( bibitemloo.holdable ) %]
> -                    [% IF ( showpriority ) %]
> -<td>
> -                    [% bibitemloo.rank %] out of [% bibitemloo.reservecount %]
> -</td>[% END %][% END %]
> -		    [% IF ( reserve_in_future ) %]
> -		    [% IF ( bibitemloo.holdable ) %]<td>
> +		<!-- HOLDABLE -->
> +                        [% UNLESS ( item_level_itypes ) %]
> +<td>
> +                            [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
> +                            [% bibitemloo.description %]
> +</td>
> +                        [% END %]
> +                        [% IF showholds %]
> +<td>
> +                        [% IF ( showpriority ) %] [% bibitemloo.rank %] out of [% END %][% bibitemloo.reservecount %]
> +</td>
> +                        [% END %]
> +		        [% IF ( reserve_in_future ) %]
> +<td>
>                 <input name="reserve_date_[% bibitemloo.biblionumber %]" id="reserve_date_[% bibitemloo.biblionumber %]" size="10">
>                 <script language="JavaScript" type="text/javascript">
>                 //<![CDATA[
> @@ -348,10 +354,9 @@
>                 </script>
>         <p style="margin:.3em 2em;">
>         <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('reserve_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear Date</a></p>
> -</td>[% END %]
> -
> -		    [% END %]
> -	[% IF ( bibitemloo.holdable ) %]<td>
> +</td>
> +                        [% END %]
> +	<td>
>           <input name="expiration_date_[% bibitemloo.biblionumber %]" id="expiration_date_[% bibitemloo.biblionumber %]" size="10" readonly="readonly" />
>           <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="CalendarExpirationDate_[% bibitemloo.biblionumber %]" style="cursor: pointer;" />
>           <script language="JavaScript" type="text/javascript">
> @@ -381,13 +386,10 @@
>           </script>
>         <p style="margin:.3em 2em;">
>         <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('expiration_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear Date</a></p>
> -</td>[% END %]
> -
> -                    [% IF ( bibitemloo.holdable ) %]
> -		<!-- HOLD ABLE -->
> -		    [% IF ( OPACItemHolds ) %]
> -		<!-- ITEM HOLDS -->
> -<td class="place_on_type" style="display:none">
> +</td>
> +		        [% IF ( OPACItemHolds ) %]
> +		<!-- ITEM HOLDS -->
> +<td class="place_on_type" style="display:none">
>                                               <ul>
>                                                   <li>
>                                                     [% UNLESS ( bibitemloo.holdable ) %]
> diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
> index 923f3ff..843e666 100755
> --- a/opac/opac-detail.pl
> +++ b/opac/opac-detail.pl
> @@ -479,10 +479,31 @@ if ($dat->{'count'}>= 50&&  !$viewallitems) {
>
>   my $biblio_authorised_value_images = C4::Items::get_authorised_value_images( C4::Biblio::get_biblio_authorised_values( $biblionumber, $record ) );
>
> +my (%item_reserves, %priority);
> +my ($show_holds_count, $show_priority);
> +for ( C4::Context->preference("OPACShowHoldQueueDetails") ) {
> +    m/holds/o and $show_holds_count = 1;
> +    m/priority/ and $show_priority = 1;
> +}
> +if ( $show_holds_count ) {
> +    my ($reserve_count,$reserves) = GetReservesFromBiblionumber($biblionumber);
> +    $template->param( holds_count  =>  $reserve_count );
> +    foreach (@$reserves) {
> +        $item_reserves{ $_->{itemnumber} }++ if $_->{itemnumber};
> +        if ($show_priority&&  $_->{borrowernumber} == $borrowernumber) {
> +            $_->{itemnumber}
> +                ? ($priority{ $_->{itemnumber} } = $_->{priority})
> +                : ($template->param( priority =>  $_->{priority} ));
> +        }
> +    }
> +}
> +
>   my $norequests = 1;
>   my $branches = GetBranches();
>   my %itemfields;
>   for my $itm (@items) {
> +    $itm->{holds_count} = $item_reserves{ $itm->{itemnumber} };
> +    $itm->{priority} = $priority{ $itm->{itemnumber} };
>       $norequests = 0
>          if ( (not $itm->{'wthdrawn'} )
>            &&  (not $itm->{'itemlost'} )
> diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl
> index 4e4d440..3844bc1 100755
> --- a/opac/opac-reserve.pl
> +++ b/opac/opac-reserve.pl
> @@ -47,7 +47,13 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
>           debug           =>  1,
>       }
>   );
> -my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0;
> +
> +my ($show_holds_count, $show_priority);
> +for ( C4::Context->preference("OPACShowHoldQueueDetails") ) {
> +    m/holds/o and $show_holds_count = 1;
> +    m/priority/ and $show_priority = 1;
> +}
> +
>   sub get_out ($$$) {
>   	output_html_with_http_headers(shift,shift,shift); # $query, $cookie, $template->output;
>   	exit;
> @@ -113,12 +119,8 @@ $template->param( choose_branch =>  $OPACChooseBranch);
>   #
>   #
>
> -# Hash of biblionumber to biblio/biblioitems record.
> -my %biblioDataHash;
> -
> -# Hash of itemnumber to item info.
> -my %itemInfoHash;
> -
> +my %biblioDataHash; # Hash of biblionumber to biblio/biblioitems record.
> +my %itemInfoHash; # Hash of itemnumber to item info.
>   foreach my $biblioNumber (@biblionumbers) {
>
>       my $biblioData = GetBiblioData($biblioNumber);
> @@ -128,33 +130,36 @@ foreach my $biblioNumber (@biblionumbers) {
>
>       my $marcrecord= GetMarcBiblio($biblioNumber);
>
> -	# flag indicating existence of at least one item linked via a host record
> -	my $hostitemsflag;
> -	# adding items linked via host biblios
> -	my @hostitemInfos = GetHostItemsInfo($marcrecord);
> -	if (@hostitemInfos){
> -		$hostitemsflag =1;
> -	        push (@itemInfos, at hostitemInfos);
> -	}
> -
> -
> +    # flag indicating existence of at least one item linked via a host record
> +    my $hostitemsflag;
> +    # adding items linked via host biblios
> +    my @hostitemInfos = GetHostItemsInfo($marcrecord);
> +    if (@hostitemInfos){
> +        $hostitemsflag =1;
> +        push (@itemInfos, at hostitemInfos);
> +    }
>
>       $biblioData->{itemInfos} = \@itemInfos;
>       foreach my $itemInfo (@itemInfos) {
>           $itemInfoHash{$itemInfo->{itemnumber}} = $itemInfo;
>       }
>
> -    # Compute the priority rank.
> -    my ( $rank, $reserves ) = GetReservesFromBiblionumber($biblioNumber,1);
> -    $biblioData->{reservecount} = $rank;
> -    foreach my $res (@$reserves) {
> -        my $found = $res->{'found'};
> -        if ( $found&&  ($found eq 'W') ) {
> -            $rank--;
> +    if ($show_holds_count) {
> +        # Compute the priority rank.
> +        my ( $rank, $reserves ) = GetReservesFromBiblionumber($biblioNumber,1);
> +        $biblioData->{reservecount} = 1; # new reserve
> +        foreach my $res (@$reserves) {
> +            my $found = $res->{'found'};
> +            if ( $found&&  ($found eq 'W') ) {
> +                $rank--;
> +            }
> +            else {
> +                $biblioData->{reservecount}++;
> +            }
>           }
> +        $rank++;
> +        $biblioData->{rank} = $rank;
>       }
> -    $rank++;
> -    $biblioData->{rank} = $rank;
>   }
>
>   #
> @@ -528,7 +533,8 @@ $template->param(itemtable_colspan =>  $itemTableColspan);
>
>   # display infos
>   $template->param(bibitemloop =>  $biblioLoop);
> -$template->param( showpriority=>1 ) if $OPACDisplayRequestPriority;
> +$template->param( showholds=>$show_holds_count);
> +$template->param( showpriority=>$show_priority);
>   # can set reserve date in future
>   if (
>       C4::Context->preference( 'AllowHoldDateInFuture' )&&
> diff --git a/opac/opac-user.pl b/opac/opac-user.pl
> index a9a6305..aba6877 100755
> --- a/opac/opac-user.pl
> +++ b/opac/opac-user.pl
> @@ -65,7 +65,10 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
>       }
>   );
>
> -my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0;
> +my $show_priority;
> +for ( C4::Context->preference("OPACShowHoldQueueDetails") ) {
> +    m/priority/ and $show_priority = 1;
> +}
>   my $patronupdate = $query->param('patronupdate');
>   my $canrenew = 1;
>
> @@ -260,8 +263,8 @@ foreach my $res (@reserves) {
>       $res->{'branch'} = $branches->{ $res->{'branchcode'} }->{'branchname'};
>       my $biblioData = GetBiblioData($res->{'biblionumber'});
>       $res->{'reserves_title'} = $biblioData->{'title'};
> -    if ($OPACDisplayRequestPriority) {
> -        $res->{'priority'} = '' if $res->{'priority'} eq '0';
> +    if ($show_priority) {
> +        $res->{'priority'} ||= '';
>       }
>       $res->{'suspend_until'} = C4::Dates->new( $res->{'suspend_until'}, "iso")->output("syspref") if ( $res->{'suspend_until'} );
>   }
> @@ -271,7 +274,7 @@ foreach my $res (@reserves) {
>
>   $template->param( RESERVES       =>  \@reserves );
>   $template->param( reserves_count =>  $#reserves+1 );
> -$template->param( showpriority=>1 ) if $OPACDisplayRequestPriority;
> +$template->param( showpriority=>$show_priority );
>
>   my @waiting;
>   my $wcount = 0;



More information about the Koha-patches mailing list