From 246d8a6a3d27f8d33739054674bee3f51d139c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9rick?= Date: Fri, 28 Feb 2014 13:57:17 -0500 Subject: [PATCH] Add a diff view for staged MARC records. --- C4/ImportBatch.pm | 20 ++++ catalogue/showdiffmarc.pl | 99 ++++++++++++++++++++ .../prog/en/modules/catalogue/showdiffmarc.tt | 50 ++++++++++ .../prog/en/modules/tools/manage-marc-import.tt | 12 ++- 4 files changed, 179 insertions(+), 2 deletions(-) create mode 100755 catalogue/showdiffmarc.pl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/showdiffmarc.tt diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm index c045878..c9b78b2 100644 --- a/C4/ImportBatch.pm +++ b/C4/ImportBatch.pm @@ -58,6 +58,7 @@ BEGIN { GetStagedWebserviceBatches GetImportBatchRangeDesc GetNumberOfNonZ3950ImportBatches + GetImportBiblios GetImportRecordsRange GetItemNumbersFromImportBatch @@ -1017,6 +1018,25 @@ sub GetNumberOfNonZ3950ImportBatches { return $count; } +=head2 GetImportBiblios + + my $results = GetImportBiblios($importid); + +=cut + +sub GetImportBiblios { + my ($import_record_id) = @_; + + my $dbh = C4::Context->dbh; + my $query = "SELECT * FROM import_biblios WHERE import_record_id = ?"; + my $sth = $dbh->prepare_cached($query); + $sth->execute($import_record_id); + my $results = $sth->fetchall_arrayref({}); + $sth->finish(); + return $results; + +} + =head2 GetImportRecordsRange my $results = GetImportRecordsRange($batch_id, $offset, $results_per_group); diff --git a/catalogue/showdiffmarc.pl b/catalogue/showdiffmarc.pl new file mode 100755 index 0000000..3486c8f --- /dev/null +++ b/catalogue/showdiffmarc.pl @@ -0,0 +1,99 @@ +#!/usr/bin/perl + +# Koha library project www.koha-community.org + +# Copyright 2011 Libéo +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; + +# standard or CPAN modules used +use CGI qw(:standard); +use DBI; + +# Koha modules used +use C4::Context; +use C4::Output; +use C4::Auth; +use C4::Biblio; +use C4::ImportBatch; +use XML::LibXSLT; +use XML::LibXML; + + +# Input params +my $input = new CGI; +my $biblionumber = $input->param('id'); +my $importid = $input->param('importid'); + + +if ( $biblionumber and $importid ) { + + # Init vars + my ($recordBiblionumber, $recordImportid, $biblioTitle, $importTitle, $formatted1, $formatted2, + $errorFormatted1, $errorFormatted2); + + + # Prepare template + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "catalogue/showdiffmarc.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + debug => 1, + } + ); + + + $recordBiblionumber =GetMarcBiblio($biblionumber); + if( $recordBiblionumber ) { + $formatted1 = $recordBiblionumber->as_formatted; + my $data = GetBiblioData($biblionumber); + $biblioTitle = $data->{title}; + } else { + $errorFormatted1 = 1; + } + + my ($marc,$encoding) = GetImportRecordMarc($importid); + if( $marc ) { + $recordImportid = MARC::Record->new_from_usmarc($marc) ; + $formatted2 = $recordImportid->as_formatted; + my $biblio = GetImportBiblios($importid); + $importTitle = $biblio->[0]->{'title'}; + } else { + $errorFormatted2 = 1; + } + + + $template->param( SCRIPT_NAME => $ENV{'SCRIPT_NAME'}, + BIBLIONUMBER => $biblionumber, + IMPORTID => $importid, + BIBLIOTITLE => $biblioTitle, + IMPORTTITLE => $importTitle, + MARC_FORMATTED1 => $formatted1, + MARC_FORMATTED2 => $formatted2, + ERROR_FORMATTED1 => $errorFormatted1, + ERROR_FORMATTED2 => $errorFormatted2 + ); + + output_html_with_http_headers $input, $cookie, $template->output; +} else { + exit; +} diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/showdiffmarc.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/showdiffmarc.tt new file mode 100644 index 0000000..9aad4c1 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/showdiffmarc.tt @@ -0,0 +1,50 @@ +[% INCLUDE 'doc-head-open.inc' %] +Koha -- Cataloging: MARC Import + + + +[% INCLUDE 'doc-head-close.inc' %] + + + + +
+
+

Original

+ [% IF ( ERROR_FORMATTED1 ) %] +

The biblionumber [% BIBLIONUMBER %] doesn't match to any record.

+ [% ELSE %] +

[% BIBLIOTITLE %]

+
[% MARC_FORMATTED1 %]
+ [% END %] +
+
+

Imported

+ [% IF ( ERROR_FORMATTED2 ) %] +

The importid [% IMPORTID %] doesn't match to any record.

+ [% ELSE %] +

[% IMPORTTITLE %]

+
[% MARC_FORMATTED2 %] 
+ [% END %] +
+
+ +[% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt index e8384c1..3b4e07f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt @@ -10,9 +10,9 @@ [% IF ( record.record_type == 'biblio' ) %] - Matches biblio [% record_lis.match_id %] (score = [% record_lis.match_score %]): [% record_lis.match_citation %] + Matches biblio [% record_lis.match_id %] (score = [% record_lis.match_score %]): [% record_lis.match_citation %] [% ELSIF ( record.record_type == 'auth' ) %] - Matches authority [% record_lis.match_id %] (score = [% record_lis.match_score %]): [% record_lis.match_citation %] | + Matches authority [% record_lis.match_id %] (score = [% record_lis.match_score %]): [% record_lis.match_citation %] | Merge [% END %] @@ -395,6 +395,7 @@ Page Status Match? Record + Diff [% FOREACH record_lis IN record_list %] @@ -431,6 +432,13 @@ Page [% PROCESS final_match_link record=record_lis %] [% END %] + [% IF ( record_lis.match_id ) %] + + View + + [% ELSE %] +   + [% END %] [% PROCESS match_link record=record_lis %] [% END %] -- 1.7.2.5