---
 cataloguing/merge.pl                               |  136 +++++++++++--------
 .../prog/en/modules/cataloguing/merge.tt           |   39 +++++-
 2 files changed, 113 insertions(+), 62 deletions(-)

diff --git a/cataloguing/merge.pl b/cataloguing/merge.pl
index c97ca7a..a394b47 100755
--- a/cataloguing/merge.pl
+++ b/cataloguing/merge.pl
@@ -26,6 +26,7 @@ use C4::Auth;
 use C4::Items;
 use C4::Biblio;
 use C4::Serials;
+use C4::Koha;
 
 my $input = new CGI;
 my @biblionumber = $input->param('biblionumber');
@@ -59,7 +60,7 @@ if ($merge) {
     # Rewriting the leader
     $record->leader(GetMarcBiblio($tobiblio)->leader());
 
-    my $frameworkcode = &GetFrameworkCode($tobiblio);
+    my $frameworkcode = $input->param('frameworkcode');
     my @notmoveditems;
 
     # Modifying the reference record
@@ -104,77 +105,98 @@ if ($merge) {
        push @errors, $error if ($error); 
     }
 
-    # Errors
-    my @errors_loop  = map{{error => $_}}@errors;
-
     # Parameters
     $template->param(
-       errors  => \@errors_loop,
        result => 1,
        biblio1 => $input->param('biblio1')
     );
 
-
 #-------------------------
 # Show records to merge
 #-------------------------
 } else {
-
     my $mergereference = $input->param('mergereference');
     my $biblionumber = $input->param('biblionumber');
 
-    my $data1 = GetBiblioData($biblionumber[0]);
-    my $data2 = GetBiblioData($biblionumber[1]);
-
-    # Ask the user to choose which record will be the kept
-    if (not $mergereference) {
-       $template->param(
-           choosereference => 1,       
-           biblio1 => $biblionumber[0],
-           biblio2 => $biblionumber[1],
-           title1 => $data1->{'title'},
-           title2 => $data2->{'title'}
-           );
-    } else {
-
-       if (scalar(@biblionumber) != 2) {
-           push @errors, "An unexpected number of records was provided for 
merging. Currently only two records at a time can be merged.";
-       }
-
-       # Checks if both records use the same framework
-       my $frameworkcode1 = &GetFrameworkCode($biblionumber[0]);
-       my $frameworkcode2 = &GetFrameworkCode($biblionumber[1]);
-       my $framework;
-       if ($frameworkcode1 ne $frameworkcode2) {
-           push @errors, "The records selected for merging are using different 
frameworks. Currently merging is only available for records using the same 
framework.";
-       } else {
-           $framework = $frameworkcode1;       
-       }
-
-       # Getting MARC Structure
-       my $tagslib = GetMarcStructure(1, $framework);
-
-       my $notreference = ($biblionumber[0] == $mergereference) ? 
$biblionumber[1] : $biblionumber[0];
-
-       # Creating a loop for display
-       my @record1 = _createMarcHash(GetMarcBiblio($mergereference), $tagslib);
-       my @record2 = _createMarcHash(GetMarcBiblio($notreference), $tagslib);
-
-       # Errors
-       my @errors_loop  = map{{error => $_}}@errors;
-
-       # Parameters
-       $template->param(
-           errors  => \@errors_loop,
-           biblio1 => $mergereference,
-           biblio2 => $notreference,
-           mergereference => $mergereference,
-           record1 => @record1,
-           record2 => @record2,
-           framework => $framework
-           );
+    if (scalar(@biblionumber) != 2) {
+        push @errors, "An unexpected number of records was provided for 
merging. Currently only two records at a time can be merged.";
+    }
+    else {
+        my $data1 = GetBiblioData($biblionumber[0]);
+        my $data2 = GetBiblioData($biblionumber[1]);
+
+        # Checks if both records use the same framework
+        my $frameworkcode1 = &GetFrameworkCode($biblionumber[0]);
+        my $frameworkcode2 = &GetFrameworkCode($biblionumber[1]);
+
+        if ($mergereference) {
+
+            my $framework;
+            if ($frameworkcode1 ne $frameworkcode2) {
+                $framework = $input->param('frameworkcode')
+                  or push @errors, "Famework not selected.";
+            } else {
+                $framework = $frameworkcode1;  
+            }
+
+            # Getting MARC Structure
+            my $tagslib = GetMarcStructure(1, $framework);
+
+            my $notreference = ($biblionumber[0] == $mergereference) ? 
$biblionumber[1] : $biblionumber[0];
+
+            # Creating a loop for display
+            my @record1 = _createMarcHash(GetMarcBiblio($mergereference), 
$tagslib);
+            my @record2 = _createMarcHash(GetMarcBiblio($notreference), 
$tagslib);
+
+            # Parameters
+            $template->param(
+                biblio1 => $mergereference,
+                biblio2 => $notreference,
+                mergereference => $mergereference,
+                record1 => @record1,
+                record2 => @record2,
+                framework => $framework,
+            );
+        }
+        else {
+
+        # Ask the user to choose which record will be the kept
+            $template->param(
+                choosereference => 1,  
+                biblio1 => $biblionumber[0],
+                biblio2 => $biblionumber[1],
+                title1 => $data1->{'title'},
+                title2 => $data2->{'title'}
+            );
+            if ($frameworkcode1 ne $frameworkcode2) {
+                my $frameworks = getframeworks;
+                my @frameworkselect;
+                foreach my $thisframeworkcode ( keys %$frameworks ) {
+                    my %row = (
+                        value         => $thisframeworkcode,
+                        frameworktext => 
$frameworks->{$thisframeworkcode}->{'frameworktext'},
+                    );
+                    if ($frameworkcode1 eq $thisframeworkcode){
+                        $row{'selected'} = 1;
+                        }
+                    push @frameworkselect, \%row;
+                }
+                $template->param(
+                    frameworkselect => \@frameworkselect,
+                    frameworkcode1 => $frameworkcode1,
+                    frameworkcode2 => $frameworkcode2,
+                );
+            }
+        }
     }
 }
+
+if (@errors) {
+    # Errors
+    my @errors_loop  = map{{error => $_}}@errors;
+    $template->param( errors  => \@errors_loop );
+}
+
 output_html_with_http_headers $input, $cookie, $template->output;
 exit;
 
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 0d8a84c..3300f78 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt
@@ -161,6 +161,10 @@ $(document).ready(function(){
 
 });
 
+function changeFramework(fw) {
+    $("#Frameworks").val(fw);
+}
+
 //]]>
 </script>
 </head>
@@ -194,10 +198,34 @@ $(document).ready(function(){
 <form id="mergeform" action="/cgi-bin/koha/cataloguing/merge.pl" method="post">
     <fieldset class="rows">
        <legend>Merge reference</legend>
+    <table>
+      <tr>
+        <td style="border-width: 0px; text-align: left">
        <ol>
-       <li class="radio"><input type="radio" value="[% biblio1 %]" 
checked="checked" id="mergereference1" name="mergereference" /><label 
style="float:none" for="mergereference1">[% title1 %] ([% biblio1 
%])</label></li>
-       <li class="radio"><input type="radio" value="[% biblio2 %]" 
id="mergereference2" name="mergereference" /><label style="float:none" 
for="mergereference2">[% title2 %] ([% biblio2 %])</label></li>
+       <li class="radio"><input type="radio" value="[% biblio1 %]" 
checked="checked" id="mergereference1" name="mergereference" 
onclick="changeFramework('[% frameworkcode1 %]')" /><label style="float:none" 
for="mergereference1">[% title1 %] ([% biblio1 %])</label></li>
+       <li class="radio"><input type="radio" value="[% biblio2 %]" 
id="mergereference2" name="mergereference" onclick="changeFramework('[% 
frameworkcode2 %]')" /><label style="float:none" for="mergereference2">[% 
title2 %] ([% biblio2 %])</label></li>
 </ol>
+        </td>
+        <td style="border-width: 0px">
+    [% IF frameworkselect %]
+          <label style="float:none" for="frameworkcode">Framework:</label><br>
+            <select name="frameworkcode" id="Frameworks">
+                            <option value="Default">Default</option>
+                            [% FOREACH frameworkcodeloo IN frameworkselect %]
+                                [% IF ( frameworkcodeloo.selected ) %]
+                                    <option value="[% frameworkcodeloo.value 
%]" selected="selected">
+                                [% ELSE %]
+                                    <option value="[% frameworkcodeloo.value 
%]">
+                                [% END %]
+                                 [% frameworkcodeloo.frameworktext %]          
                    
+                                 </option>
+                            [% END %]
+            </select>
+    [% END %]
+        </td>
+      </tr>
+    </table>
+
        <input type="hidden" name="biblionumber" value="[% biblio1 %]" />
        <input type="hidden" name="biblionumber" value="[% biblio2 %]" />
        <fieldset class="action"><input type="submit" value="Next" /></fieldset>
@@ -332,14 +360,15 @@ $(document).ready(function(){
                [% END %]
 
            </ul>
+</div>
+</div> <!-- // #result -->
+</div> <!-- .yui-u -->
 
 <input type="hidden" name="biblio1" value="[% biblio1 %]" />
 <input type="hidden" name="biblio2" value="[% biblio2 %]" />
 <input type="hidden" name="mergereference" value="[% mergereference %]" />
+<input type="hidden" name="frameworkcode" value="[% framework %]" />
 
-</div>
-</div> <!-- // #result -->
-</div> <!-- .yui-u -->
 <fieldset class="action"><input type="submit" name="merge" value="Merge" 
/></fieldset>
 </div>
 </form>
-- 
1.6.5

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to