X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=labels%2Flabel-edit-template.pl;h=9917f6b827d5e58a25ccaf7b5c9acb94eb29efe5;hb=3e82127fb8f6d516ee6e90e047a8fe95714cba66;hp=1860a60a6bde439dfe1c118f2686d7604fb754fe;hpb=c468a724b444a0b632ee68383e6c9515fa146f64;p=koha_gimpoz diff --git a/labels/label-edit-template.pl b/labels/label-edit-template.pl index 1860a60a6b..9917f6b827 100755 --- a/labels/label-edit-template.pl +++ b/labels/label-edit-template.pl @@ -4,7 +4,7 @@ # Parts Copyright 2009 Foundations Bible College. # # 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 @@ -14,21 +14,19 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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; -use Sys::Syslog qw(syslog); use CGI; -use HTML::Template::Pro; use C4::Auth qw(get_template_and_user); use C4::Output qw(output_html_with_http_headers); -use C4::Labels::Lib 1.000000 qw(get_all_profiles get_unit_values); -use C4::Labels::Template 1.000000; +use C4::Creators 1.000000; +use C4::Labels 1.000000; my $cgi = new CGI; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -52,47 +50,76 @@ 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'} == $label_template->get_attr('profile_id')) { + $profile->{'selected'} = 1; + } + else { + $profile->{'selected'} = 0; + } + } } elsif ($op eq 'save') { - my @params = ( profile_id => $cgi->param('profile_id') || '', - template_code => $cgi->param('template_code'), - template_desc => $cgi->param('template_desc'), - page_width => $cgi->param('page_width'), - page_height => $cgi->param('page_height'), - label_width => $cgi->param('label_width'), - label_height => $cgi->param('label_height'), - top_text_margin => $cgi->param('top_text_margin'), - left_text_margin=> $cgi->param('left_text_margin'), - top_margin => $cgi->param('top_margin'), - left_margin => $cgi->param('left_margin'), - cols => $cgi->param('cols'), - rows => $cgi->param('rows'), - col_gap => $cgi->param('col_gap'), - row_gap => $cgi->param('row_gap'), - units => $cgi->param('units'), + 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, + page_height => $cgi->param('page_height') || 0, + label_width => $cgi->param('label_width') || 0, + label_height => $cgi->param('label_height') || 0, + top_text_margin => $cgi->param('top_text_margin') || 0, + left_text_margin=> $cgi->param('left_text_margin') || 0, + top_margin => $cgi->param('top_margin') || 0, + left_margin => $cgi->param('left_margin') || 0, + cols => $cgi->param('cols') || 0, + rows => $cgi->param('rows') || 0, + col_gap => $cgi->param('col_gap') || 0, + 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); - my $profile = C4::Labels::Profile->retrieve(profile_id => $cgi->param('profile_id')); - $profile->set_attr(template_id => $label_template->get_attr('template_id')) if $label_template->get_attr('template_id') != $profile->get_attr('template_id'); + if ($cgi->param('profile_id') && ($label_template->get_attr('template_id') != $cgi->param('profile_id'))) { + # 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(); + } + my $new_profile = C4::Labels::Profile->retrieve(profile_id => $cgi->param('profile_id')); + $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(); + } + } + $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(); - my $profile = C4::Labels::Profile->retrieve(profile_id => $cgi->param('profile_id')); - $profile->set_attr(template_id => $template_id) if $template_id != $profile->get_attr('template_id'); + if ($cgi->param('profile_id')) { + my $profile = C4::Labels::Profile->retrieve(profile_id => $cgi->param('profile_id')); + $profile->set_attr(template_id => $template_id) if $template_id != $profile->get_attr('template_id'); + $profile->save(); + } } print $cgi->redirect("label-manage.pl?label_element=template"); exit; } 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 {