[Koha-patches] [PATCH] Bug 6269 - can't undefine a printer profile

Chris Nighswonger cnighswonger at foundations.edu
Fri Aug 19 17:02:09 CEST 2011


This patch adds a 'No Profile/N/A' selection to the printer profile
drop-down menu along with code to handle the selection of it. This
selection is the default selection for new templates.

Documentation should be updated to reflect this change.
---
 labels/label-edit-template.pl |   43 ++++++++++++++++++++++------------------
 1 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/labels/label-edit-template.pl b/labels/label-edit-template.pl
index f0a6ab0..0307c9e 100755
--- a/labels/label-edit-template.pl
+++ b/labels/label-edit-template.pl
@@ -50,9 +50,18 @@ my $units = get_unit_values();
 if ($op eq 'edit') {
     $label_template = C4::Labels::Template->retrieve(template_id => $template_id);
     $profile_list = get_all_profiles(field_list => 'profile_id,printer_name,paper_bin',filter => "template_id=$template_id OR template_id=''");
+    push @$profile_list, {paper_bin => 'N/A', profile_id => 0, printer_name => 'No Profile'};
+    foreach my $profile (@$profile_list) {
+        if ($profile->{'profile_id'} == 0) {
+            $profile->{'selected'} = 1;
+        }
+        else {
+            $profile->{'selected'} = 0;
+        }
+    }
 }
 elsif ($op eq 'save') {
-    my @params = (      profile_id      => $cgi->param('profile_id') || '',
+    my @params = (      profile_id      => $cgi->param('profile_id'),
                         template_code   => $cgi->param('template_code') || 'DEFAULT_TEMPLATE',
                         template_desc   => $cgi->param('template_desc') || 'Default description',
                         page_width      => $cgi->param('page_width') || 0,
@@ -69,10 +78,11 @@ elsif ($op eq 'save') {
                         row_gap         => $cgi->param('row_gap') || 0,
                         units           => $cgi->param('units') || 'POINT',
                         );
-    if ($template_id) {   # if a label_id was passed in, this is an update to an existing layout
+    if ($template_id) {   # if a template_id was passed in, this is an update to an existing template
         $label_template = C4::Labels::Template->retrieve(template_id => $template_id);
         if ($cgi->param('profile_id') && ($label_template->get_attr('template_id') != $cgi->param('profile_id'))) {
-            if ($label_template->get_attr('profile_id') > 0) {   # no need to get the old one if there was no profile associated
+            # Release the old profile if one is currently associated
+            if ($label_template->get_attr('profile_id') > 0) {
                 my $old_profile = C4::Labels::Profile->retrieve(profile_id => $label_template->get_attr('profile_id'));
                 $old_profile->set_attr(template_id => 0);
                 $old_profile->save();
@@ -81,23 +91,18 @@ elsif ($op eq 'save') {
             $new_profile->set_attr(template_id => $label_template->get_attr('template_id'));
             $new_profile->save();
         }
+        elsif ($cgi->param('profile_id') == 0) { # Disassociate any printer profile from the template
+            if ($label_template->get_attr('profile_id') > 0) {
+                my $old_profile = C4::Labels::Profile->retrieve(profile_id => $label_template->get_attr('profile_id'));
+                $old_profile->set_attr(template_id => 0);
+                $old_profile->save();
+            }
+        }
 
-#        if ($cgi->param('profile_id')) {
-#            my $old_profile = ($label_template->get_attr('profile_id') ? C4::Labels::Profile->retrieve(profile_id => $label_template->get_attr('profile_id')) : undef);
-#            my $new_profile = C4::Labels::Profile->retrieve(profile_id => $cgi->param('profile_id'));
-#            if ($label_template->get_attr('template_id') != $new_profile->get_attr('template_id')) {
-#                $new_profile->set_attr(template_id => $label_template->get_attr('template_id'));
-#                $new_profile->save();
-#                if ($old_profile) {
-#                    $old_profile->set_attr(template_id => 0);
-#                    $old_profile->save();
-#                }
-#            }
-#        }
         $label_template->set_attr(@params);
         $label_template->save();
     }
-    else {      # if no label_id, this is a new layout so insert it
+    else {      # if no template_id, this is a new template so insert it
         $label_template = C4::Labels::Template->new(@params);
         my $template_id = $label_template->save();
         if ($cgi->param('profile_id')) {
@@ -111,10 +116,10 @@ elsif ($op eq 'save') {
 }
 else {  # if we get here, this is a new layout
     $label_template = C4::Labels::Template->new();
-}
-if ($template_id) {
+    $profile_list = get_all_profiles(field_list => 'profile_id,printer_name,paper_bin',filter => "template_id=''");
+    push @$profile_list, {paper_bin => 'N/A', profile_id => 0, printer_name => 'No Profile'};
     foreach my $profile (@$profile_list) {
-        if ($profile->{'profile_id'} == $label_template->get_attr('profile_id')) {
+        if ($profile->{'profile_id'} == 0) {
             $profile->{'selected'} = 1;
         }
         else {
-- 
1.7.0.4



More information about the Koha-patches mailing list