From 52eb04bf9d4c0b92ea9140ffecaf92d11959aa90 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Fri, 9 Nov 2012 15:16:52 +0100 Subject: [PATCH] Bug 9044: Provide item selection in record detail page (staff client) This patch add a column in the items table of catalogue/detail.pl that contains checkboxes for item selection and a drop-down list of actions that can be executed for the selection of items. Currently available actions are: - Delete selected items: redirect to batch items deletion - Modify selected items: redirect to batch items modification These actions replace the two menu entries corresponding to the same action. Item selection is only enabled if the new syspref StaffDetailItemSelection is ON. Actions are not displayed if user doesn't have the right permissions. Signed-off-by: Kyle M Hall --- catalogue/detail.pl | 20 ++++++- installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 11 ++++ .../intranet-tmpl/prog/en/includes/cat-toolbar.inc | 4 -- .../en/modules/admin/preferences/staff_client.pref | 6 ++ .../prog/en/modules/catalogue/detail.tt | 61 +++++++++++++++++++- .../prog/en/modules/tools/batchMod-del.tt | 4 +- .../prog/en/modules/tools/batchMod-edit.tt | 4 +- 8 files changed, 101 insertions(+), 10 deletions(-) diff --git a/catalogue/detail.pl b/catalogue/detail.pl index 72258fd..60ac611 100755 --- a/catalogue/detail.pl +++ b/catalogue/detail.pl @@ -49,7 +49,7 @@ my $query = CGI->new(); my $analyze = $query->param('analyze'); -my ( $template, $borrowernumber, $cookie ) = get_template_and_user( +my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( { template_name => 'catalogue/detail.tmpl', query => $query, @@ -411,5 +411,23 @@ if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->pref my ( $holdcount, $holds ) = C4::Reserves::GetReservesFromBiblionumber($biblionumber,1); $template->param( holdcount => $holdcount, holds => $holds ); +my $StaffDetailItemSelection = C4::Context->preference('StaffDetailItemSelection'); +if ($StaffDetailItemSelection) { + # Only enable item selection if user can execute at least one action + if ( + $flags->{superlibrarian} + || ( + ref $flags->{tools} eq 'HASH' && ( + $flags->{tools}->{items_batchmod} # Modify selected items + || $flags->{tools}->{items_batchdel} # Delete selected items + ) + ) + || ( ref $flags->{tools} eq '' && $flags->{tools} ) + ) + { + $template->param( + StaffDetailItemSelection => $StaffDetailItemSelection ); + } +} output_html_with_http_headers $query, $cookie, $template->output; diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 4b9c492..a389a90 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -347,6 +347,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('SpineLabelShowPrintOnBibDetails','0','','If turned on, a \"Print Label\" link will appear for each item on the bib details page in the staff interface.','YesNo'), ('StaffAuthorisedValueImages','1',NULL,'','YesNo'), ('staffClientBaseURL','',NULL,'Specify the base URL of the staff client','free'), +('StaffDetailItemSelection', '0', NULL, 'Enable item selection in record detail page', 'YesNo'); ('StaffSerialIssueDisplayCount','3','','Number of serial issues to display per subscription in the Staff client','Integer'), ('StaticHoldsQueueWeight','0',NULL,'Specify a list of library location codes separated by commas -- the list of codes will be traversed and weighted with first values given higher weight for holds fulfillment -- alternatively, if RandomizeHoldsQueueWeight is set, the list will be randomly selective','Integer'), ('SubfieldsToUseWhenPrefill','','','Define a list of subfields to use when prefilling items (separated by space)','Free'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 31f494a..e6a54de 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -7139,6 +7139,17 @@ if ( CheckVersion($DBversion) ) { SetVersion ($DBversion); } +$DBversion = "XXX"; +if (C4::Context->preference('Version') < TransformToNum($DBversion)) { + $dbh->do(qq{ + INSERT INTO systempreferences (variable, value, explanation, options, type) + VALUES ('StaffDetailItemSelection', '0', 'Enable item selection in record detail page', NULL, 'YesNo') + }); + print "Upgrade to $DBversion done (Add system preference StaffDetailItemSelection)\n"; + SetVersion($DBversion); +} + + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc index 553d9ae..2daacd3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc @@ -145,10 +145,6 @@ CAN_user_serials_create_subscription ) %]
  • Edit items
  • [% END %] - [% IF ( CAN_user_tools_items_batchmod ) %]
  • Edit items in batch
  • [% END %] - - [% IF ( CAN_user_tools_items_batchdel ) %]
  • Delete items in a batch
  • [% END %] - [% IF ( CAN_user_editcatalogue_edit_items ) %]
  • Attach item
  • [% END %] [% IF ( EasyAnalyticalRecords ) %][% IF ( CAN_user_editcatalogue_edit_items ) %]
  • Link to host item[% END %][% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref index 8c31c46..53cd72f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref @@ -128,3 +128,9 @@ Staff Client: yes: Show no: "Don't show" - the cart option in the staff client. + - + - pref: StaffDetailItemSelection + choices: + yes: Enable + no: Disable + - item selection in record detail page. diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt index d5a006b..062e413 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -70,7 +70,42 @@ function verify_images() { } - $(document).ready(function() { + [% IF StaffDetailItemSelection %] + function selectAllItems(div) { + $("input[name='itemnumber'][type='checkbox']", div).attr('checked', 'checked'); + } + + function deselectAllItems(div) { + $("input[name='itemnumber'][type='checkbox']", div).removeAttr('checked'); + } + + function itemSelectionExecuteAction(div) { + var itemnumbers = new Array(); + $("input[name='itemnumber'][type='checkbox']:checked", div).each(function() { + itemnumbers.push($(this).val()); + }); + if (itemnumbers.length > 0) { + var action = $('select[name="itemselection_action"]', div).val(); + var del = (action == 'delete') ? 1 : 0; + var url = '/cgi-bin/koha/tools/batchMod.pl?op=show'; + if (action == 'delete') { + url += '&del=1'; + } + url += '&itemnumber=' + itemnumbers.join('&itemnumber='); + url += '&src=' + '[% "/cgi-bin/koha/catalogue/detail.pl?biblionumber=$biblionumber" |uri %]'; + new_window = $("input[name='new_window']", div).attr('checked'); + if (new_window) { + window.open(url); + } else { + window.location.href = url; + } + } else { + alert(_("Please select at least one item.")); + } + } + [% END %] + + $(document).ready(function() { $('#bibliodetails').tabs(); $('#search-form').focus(); $('.thumbnails > li > a > span.remove').click(function() { @@ -402,9 +437,28 @@ function verify_images() { [% BLOCK items_table %] + [% IF (StaffDetailItemSelection) %] + Select all | + Deselect all | +
    + + + + + +
    + [% END %] + [% IF (StaffDetailItemSelection) %][% END %] [% IF ( item_level_itypes ) %][% END %] @@ -427,6 +481,11 @@ function verify_images() { [% FOREACH item IN items %] + [% IF (StaffDetailItemSelection) %] + + [% END %] [% IF ( item_level_itypes ) %]
    Item typeCurrent location Home library
    + + [% IF !noItemTypeImages && item.imageurl %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt index 292b81f..615582a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt @@ -180,8 +180,8 @@ for( x=0; x - [% IF ( src == 'CATALOGUING') %] - Done + [% IF src %] + Done [% ELSE %] Return to batch item deletion [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt index 29f2eab..d8f6f8a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt @@ -204,8 +204,8 @@ $(document).ready(function(){ [% END %] [% ELSE %]
    -[% IF ( src == 'CATALOGUING') %] - Done +[% IF src %] + Done [% ELSE %] Done [% END %] -- 1.7.10.4