Bug 14366: Units doesn't get saved usefully for patroncards
authorDavid Cook <dcook@prosentient.com.au>
Tue, 9 Jun 2015 04:25:23 +0000 (14:25 +1000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Wed, 8 Jul 2015 17:47:20 +0000 (14:47 -0300)
This patch causes the "Units" to be saved and displayed correctly
for the "Edit layout" screen in Patroncards.

_TEST PLAN_

Before applying:
0) Create a new layout
1) Edit the layout, change the units, and click Save
2) Edit the layout again, and notice the units are still "PostScript Points"

Apply the patch:
3) Edit the layout again, change the units, and click Save
4) Edit the layout again, note that the units have changed to your
selection

5) Rejoice

Signed-off-by: Nick Clemens <nick@quecheelibrary.org>
Signed-off-by: Jonathan Druart <jonathan.druart@koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
patroncards/edit-layout.pl

index e28dda3..da8b298 100755 (executable)
@@ -141,6 +141,12 @@ if ($op eq 'edit') {
         push @barcode, (($barcode_param eq 'type' ? ("barcode_" . $barcode_param => _set_selected($layout_xml->{'barcode'}->[0]->{'barcode_type'}, $barcode_types)) : ("barcode_" . $barcode_param => $layout_xml->{'barcode'}->[0]->{$barcode_param})));
     }
 
+    foreach my $unit (@$units){
+        if ($unit->{'type'} eq $layout->get_attr('units')) {
+            $unit->{'selected'} = 1;
+        }
+    }
+
     $template->param(
             layout_id       => $layout->get_attr('layout_id') > -1 ? $layout->get_attr('layout_id') : '',
             layout_name     => $layout->get_attr('layout_name'),
@@ -212,6 +218,7 @@ elsif  ($op eq 'save') {
     }
     $layout->{'text'} = $text_lines;
     my @params = (layout_name => $layout_name, layout_id => $layout_id, layout_xml => XMLout($layout));
+    push(@params,units => $layout->{'units'}) if $layout->{'units'};
     if ($layout_id) {   # if a label_id was passed in, this is an update to an existing layout
         $layout = C4::Patroncards::Layout->retrieve(layout_id => $layout_id);
         $layout->set_attr(@params);