From b4ef2014b418734f00a70570e87826bf1724fc20 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 6 Jan 2016 16:40:55 +0000 Subject: [PATCH] Bug 15498: Let the user choose the CSV profile to export circ history The way the export options are displayed at the bottom of the checkouts table was not consistent. Prior to this patch set, they are display if ExportRemoveFields or ExportWithCsvProfile is set. It does not make any sense, the user could want to export the checkouts in iso2709 format without having to define a csv profile and fill the pref. Moreover the behavior of this pref did not match its description: it's used as a default CSV profile when exporting records from the export tools or the command line. This patch set adds a new pref ExportCircHistory and remove ExportWithCsvProfile. The new pref is set if ExportWithCsvProfile or ExportRemoveFields were set. A new dropdown list with the CSV profile list will be displayed in the export area, at the bottom of the checkouts table. Note that now --csv_profile_id is mandatory for the export command line (misc/export_records.pl) if the export format is csv. Test plan: 0/ Do not execute the DB entry 1/ Clear both ExportWithCsvProfile and ExportRemoveFields prefs 2/ Execute the DB entry 3/ ExportCircHistory should not be set and the export options should not be displayed at the bottom of the checkouts table. 4/ Remove the pref DELETE FROM systempreferences WHERE variable='ExportCircHistory'; and reinsert the previous one, with a value: INSERT INTO systempreferences (variable, value) VALUES ('ExportWithCsvProfile', 'something'); Execute the DB entry again => The now pref should be now set 5/ Export some checkouts using the CSV entry 6/ Note that the export tool and commandline script still work using the csv format. You have to provide a --csv_profile_id option to make it work. --- Koha/Exporter/Record.pm | 10 +++------- circ/circulation.pl | 6 +++++- koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc | 11 +++++++++-- koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js | 10 ++++++++++ koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt | 5 +---- .../intranet-tmpl/prog/en/modules/help/circ/circulation.tt | 2 +- koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt | 5 +---- members/moremember.pl | 5 +++++ misc/export_records.pl | 9 +++------ tools/export.pl | 6 ------ 10 files changed, 38 insertions(+), 31 deletions(-) diff --git a/Koha/Exporter/Record.pm b/Koha/Exporter/Record.pm index 442ccb2..34fc09c 100644 --- a/Koha/Exporter/Record.pm +++ b/Koha/Exporter/Record.pm @@ -134,12 +134,8 @@ sub export { print MARC::File::XML::footer(); print "\n"; } elsif ( $format eq 'csv' ) { - unless ( $csv_profile_id ) { - # FIXME export_format.profile should be a unique key - my $csv_profiles = Koha::CsvProfiles->search({ profile => C4::Context->preference('ExportWithCsvProfile') }); - die "The ExportWithCsvProfile system preference is not defined or does not match a valid csv profile" unless $csv_profiles->count; - $csv_profile_id = $csv_profiles->next->export_format_id; - } + die 'There is no valid csv profile defined for this export' + unless Koha::CsvProfiles->find( $csv_profile_id ); print marc2csv( $record_ids, $csv_profile_id, $itemnumbers ); } @@ -199,7 +195,7 @@ It will displays on STDOUT the generated file. =item csv_profile_id - If the format is csv, a csv_profile_id can be provide to overwrite the default value (syspref ExportWithCsvProfile). + If the format is csv, you have to define a csv_profile_id. =cut diff --git a/circ/circulation.pl b/circ/circulation.pl index ab2b088..3b4a15a 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -46,6 +46,7 @@ use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Borrower::Debarments qw(GetDebarments IsDebarred); use Koha::DateUtils; use Koha::Database; +use Koha::CsvProfiles; use Date::Calc qw( Today @@ -630,8 +631,11 @@ $template->param( my ($picture, $dberror) = GetPatronImage($borrower->{'borrowernumber'}); $template->param( picture => 1 ) if $picture; -# get authorised values with type of BOR_NOTES +if ( C4::Context->preference("ExportCircHistory") ) { + $template->param(csv_profiles => [ Koha::CsvProfiles->search ]); +} +# get authorised values with type of BOR_NOTES my $canned_notes = GetAuthorisedValues("BOR_NOTES"); $template->param( diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc index 88d4e5c..1b67a83 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc @@ -47,17 +47,24 @@ [% END %] - [% IF ( exports_enabled ) %] + [% IF Koha.Preference('ExportCircHistory') %]
+ [% IF csv_profiles.size %] + + [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js b/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js index 3c07960..f8da1be 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js @@ -36,6 +36,16 @@ $(document).ready(function() { } }); + $("#output_format > option:first-child").attr("selected", "selected"); + $("select[name='csv_profile']").hide(); + $(document).on("change", '#output_format', function(){ + if ( $(this).val() == 'csv' ) { + $("select[name='csv_profile']").show(); + } else { + $("select[name='csv_profile']").hide(); + } + }); + // Clicking the table cell checks the checkbox inside it $(document).on("click", 'td', function(e){ if(e.target.tagName.toLowerCase() == 'td'){ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index 7c5573a..d84d90f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -3,9 +3,6 @@ [% USE KohaDates %] [% USE ColumnsSettings %] [% USE ItemTypes %] -[% IF Koha.Preference('ExportRemoveFields') OR Koha.Preference('ExportWithCsvProfile') %] - [% SET exports_enabled = 1 %] -[% END %] [% USE AuthorisedValues %] [% INCLUDE 'doc-head-open.inc' %] [% SET destination = "circ" %] @@ -36,7 +33,7 @@ var interface = "[% interface %]"; var theme = "[% theme %]"; var borrowernumber = "[% borrowernumber %]"; var branchcode = "[% branch %]"; -var exports_enabled = "[% exports_enabled %]"; +var exports_enabled = "[% ExportCircHistory %]"; var AllowRenewalLimitOverride = [% (CAN_user_circulate_override_renewals && AllowRenewalLimitOverride)? 1: 0 %]; var AllowCirculate = [% (CAN_user_circulate_circulate_remaining_permissions)? 1 : 0 %]; var script = "circulation"; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/help/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/help/circ/circulation.tt index ec54f40..643d3cf 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/help/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/help/circ/circulation.tt @@ -32,7 +32,7 @@

If you checked out an item for on site use you will see that highlighted in red in the checkout summary.

-

If you have set your ExportWithCsvProfile preference, you will also see the option to export the patron's current checkout information using a CSV Profile or ISO2709 (MARC21) format.

+

If you have set your ExportCircHistory preference, you will also see the option to export the patron's current checkout information using a CSV Profile or ISO2709 (MARC21) format.

Also at the bottom of the page is the list of items the patron has on hold

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt index 802eeaf..229ff1e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -1,9 +1,6 @@ [% USE Koha %] [% USE KohaDates %] [% USE ColumnsSettings %] -[% IF Koha.Preference('ExportRemoveFields') OR Koha.Preference('ExportWithCsvProfile') %] - [% SET exports_enabled = 1 %] -[% END %] [% INCLUDE 'doc-head-open.inc' %] Koha › Patrons › [% IF ( unknowuser ) %] @@ -32,7 +29,7 @@ var interface = "[% interface %]"; var theme = "[% theme %]"; var borrowernumber = "[% borrowernumber %]"; var branchcode = "[% branch %]"; -var exports_enabled = "[% exports_enabled %]"; +var exports_enabled = "[% ExportCircHistory %]"; var AllowCirculate = [% (CAN_user_circulate_circulate_remaining_permissions)? 1 : 0 %] var AllowRenewalLimitOverride = [% (CAN_user_circulate_override_renewals && AllowRenewalLimitOverride)? 1: 0 %]; var script = "moremember"; diff --git a/members/moremember.pl b/members/moremember.pl index 6198d87..7649ad2 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -61,6 +61,7 @@ if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preferen use DateTime; use Koha::DateUtils; use Koha::Database; +use Koha::CsvProfiles; use vars qw($debug); @@ -328,6 +329,10 @@ if (C4::Context->preference('EnhancedMessagingPreferences')) { $template->param(TalkingTechItivaPhone => C4::Context->preference("TalkingTechItivaPhoneNotification")); } +if ( C4::Context->preference("ExportCircHistory") ) { + $template->param(csv_profiles => [ Koha::CsvProfiles->search ]); +} + # in template <TMPL_IF name="I"> => instutitional (A for Adult, C for children) $template->param( $data->{'categorycode'} => 1 ); $template->param( diff --git a/misc/export_records.pl b/misc/export_records.pl index 3290144..272193b 100755 --- a/misc/export_records.pl +++ b/misc/export_records.pl @@ -71,6 +71,9 @@ if ( $output_format eq 'csv' and $record_type eq 'auths' ) { pod2usage(q|CSV output is only available for biblio records|); } +if ( $output_format eq 'csv' and not $csv_profile_id ) { + pod2usage(q|Define a csv profile to export in CSV|); +} if ( $timestamp and $record_type ne 'bibs' ) { pod2usage(q|--timestamp can only be used with biblios|); @@ -194,11 +197,6 @@ if ($deleted_barcodes) { } } else { - unless ( $csv_profile_id ) { - # FIXME export_format.profile should be a unique key - my $default_csv_profiles = Koha::CsvProfiles->search({ profile => C4::Context->preference('ExportWithCsvProfile') }); - $csv_profile_id = $default_csv_profiles->count ? $default_csv_profiles->next->export_format_id : undef; - } Koha::Exporter::Record::export( { record_type => $record_type, record_ids => \@record_ids, @@ -250,7 +248,6 @@ Print a brief help message. =item B<--csv_profile_id> --csv_profile_id=ID Generate a CSV file with the given CSV profile id (see tools/csv-profiles.pl) - Unless provided, the one defined in the system preference 'ExportWithCsvProfile' will be used. This can only be used to export biblio records. =item B<--deleted_barcodes> diff --git a/tools/export.pl b/tools/export.pl index e383cd4..4fb88d5 100755 --- a/tools/export.pl +++ b/tools/export.pl @@ -190,12 +190,6 @@ if ( $op eq "export" ) { ); my $csv_profile_id = $query->param('csv_profile_id'); - unless ( $csv_profile_id ) { - # FIXME export_format.profile should be a unique key - my $default_csv_profiles = Koha::CsvProfiles->search({ profile => C4::Context->preference('ExportWithCsvProfile') }); - $csv_profile_id = $default_csv_profiles->count ? $default_csv_profiles->next->export_format_id : undef; - } - Koha::Exporter::Record::export( { record_type => $record_type, record_ids => \@record_ids, -- 2.1.0