From 8e4779122deb9dc63853875416a62f0e353f9225 Mon Sep 17 00:00:00 2001 From: Fridolyn SOMERS Date: Fri, 26 Jul 2013 17:21:14 +0200 Subject: [PATCH] [PASSED QA][3.12.x] Bug 10648 - In records merge greatest field can not be added When merging 2 records (/cgi-bin/koha/cataloguing/merge.pl), the destination record is build using the fields and subfields checked in source records. When a field is checked, the javascript code searches in destination record a field with a greater tag number to insert new field before. When the new field tag number is greater than all existing field tag numbers, the field is not added. This patch corrects this by adding at end if no greater field tag number exists. Also adds a sort of fields by tag number because all merge code is based on this. Test plan : - Add to a framework a repeatable field with the greates non existing tag number. For example 998. - Edit to records with this framework and add them a value in this tag. - Put those records is a list - Go to this list and check the two records - Click on "Merge selected" - Click on next - Go to second source record - Click on the greatest tag number. for example 998. => The field is added at the end of destination record Signed-off-by: Katrin Fischer All tests and QA script pass. Fixed some tabs. Could reproduce the behaviour by defining a 999$z subfield. After the patch it works as expected. --- cataloguing/merge.pl | 2 +- .../prog/en/modules/cataloguing/merge.tt | 23 +++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cataloguing/merge.pl b/cataloguing/merge.pl index 019b468..cc510ed 100755 --- a/cataloguing/merge.pl +++ b/cataloguing/merge.pl @@ -238,7 +238,7 @@ sub _createMarcHash { my @fields = $record->fields(); - foreach my $field (@fields) { + foreach my $field ( sort { $a->tag() <=> $b->tag() } @fields) { my $fieldtag = $field->tag(); if ($fieldtag < 10) { if ($tagslib->{$fieldtag}->{'@'}->{'tab'} >= 0) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt index 3ccd77f..dec9028 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt @@ -101,8 +101,9 @@ $(document).ready(function(){ // If not, we add the subfield to the first matching field var where = 0; $("#resultul li span.field").each(function() { - if (where == 0 && $(this).text() == field) { + if ($(this).text() == field) { where = this; + return false; // break each() } }); @@ -127,14 +128,20 @@ $(document).ready(function(){ } else { // If we are a field var where = 0; - // Find where to add the field - $("#resultul li span.field").each(function() { - if (where == 0 && $(this).text() > field) { - where = this; - } - }); + // Find a greater field to add before + $("#resultul li span.field").each(function() { + if ($(this).text() > field) { + where = this; + return false; // break each() + } + }); + if (where) { + $(where).parent().before(clone); + } else { + // No greater field, add to the end + $("#resultul").append(clone); + } - $(where).parent().before(clone); } } } else { -- 1.7.9.5