From fdd149d4062ba506acfcc01eeb0c9fec6527898b Mon Sep 17 00:00:00 2001 From: Chris Nighswonger Date: Mon, 11 Jan 2010 14:42:43 -0500 Subject: [PATCH] [8/30] Patron Card Creator template editor interface and code --- C4/Patroncards/Template.pm | 43 ++++ .../en/modules/patroncards/edit-template.tmpl | 199 ++++++++++++++++++ patroncards/edit-template.pl | 138 ++++++++++++ 3 files changed, 380 insertions(+) create mode 100644 C4/Patroncards/Template.pm create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/edit-template.tmpl create mode 100755 patroncards/edit-template.pl diff --git a/C4/Patroncards/Template.pm b/C4/Patroncards/Template.pm new file mode 100644 index 0000000000..f2af51201b --- /dev/null +++ b/C4/Patroncards/Template.pm @@ -0,0 +1,43 @@ +package C4::Patroncards::Template; + +use strict; +use warnings; + +use base qw(C4::Creators::Template); + +use autouse 'Data::Dumper' => qw(Dumper); + +BEGIN { + use version; our $VERSION = qv('1.0.0_1'); +} + +use constant TEMPLATE_TABLE => 'creator_templates'; + +__PACKAGE__ =~ m/^C4::(.+)::.+$/; +my $me = $1; + +sub new { + my $self = shift; + push @_, "creator", $me; + return $self->SUPER::new(@_); +} + +sub retrieve { + my $self = shift; + push @_, "table_name", TEMPLATE_TABLE, "creator", $me; + return $self->SUPER::retrieve(@_); +} + +sub delete { + my $self = shift; + push @_, "table_name", TEMPLATE_TABLE, "creator", $me; + return $self->SUPER::delete(@_); +} + +sub save { + my $self = shift; + push @_, "table_name", TEMPLATE_TABLE, "creator", $me; + return $self->SUPER::save(@_); +} + +1; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/edit-template.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/edit-template.tmpl new file mode 100644 index 0000000000..d03d9281c0 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/edit-template.tmpl @@ -0,0 +1,199 @@ + + Koha › Tools › Patroncards › Templates + + + + + + + + +
+
+
+
+
+
+

Edit Patroncard Template

+
+
+
    +
  1. + Template ID:N/A +
  2. +
  3. + + " /> +
  4. +
  5. + + +
  6. +
  7. + + +
  8. +
  9. + + " /> +
  10. +
  11. + + " /> +
  12. +
  13. + + " /> +
  14. +
  15. + + " /> +
  16. + +
+
+
+
+
+
  1. + + " /> +
  2. +
  3. + + " /> +
  4. +
  5. + + " /> +
  6. +
  7. + + " /> +
  8. +
  9. + + " /> +
  10. +
  11. + + " /> +
  12. + +
  13. + + + + + Click here to define a printer profile. + +
  14. +
+
+
+
+
+
+ + Cancel + + + " /> + +
+
+
+
+
+
+ +
+
+ diff --git a/patroncards/edit-template.pl b/patroncards/edit-template.pl new file mode 100755 index 0000000000..b6bdaf67f5 --- /dev/null +++ b/patroncards/edit-template.pl @@ -0,0 +1,138 @@ +#!/usr/bin/perl +# +# Copyright 2006 Katipo Communications. +# 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 +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# 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 + +use strict; +use warnings; + +use CGI; +use autouse 'Data::Dumper' => qw(Dumper); + +use C4::Auth qw(get_template_and_user); +use C4::Output qw(output_html_with_http_headers); +use C4::Creators::Lib 1.000000 qw(get_all_profiles get_unit_values); +use C4::Patroncards::Template 1.000000; +use C4::Patroncards::Profile 1.000000; + +my $cgi = new CGI; +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "patroncards/edit-template.tmpl", + query => $cgi, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + debug => 1, + } +); + +my $op = $cgi->param('op') || ''; +my $template_id = $cgi->param('template_id') || $cgi->param('element_id'); +my $card_template = undef; +my $profile_list = undef; + +my $units = get_unit_values(); + +if ($op eq 'edit') { + $card_template = C4::Patroncards::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=''"); +} +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('card_width'), + label_height => $cgi->param('card_height'), + 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'), + ); + if ($template_id) { # if a template_id was passed in, this is an update to an existing template + $card_template = C4::Patroncards::Template->retrieve(template_id => $template_id); + if ($cgi->param('profile_id') && ($card_template->get_attr('template_id') != $cgi->param('profile_id'))) { + if ($card_template->get_attr('profile_id') > 0) { # no need to get the old one if there was no profile associated + my $old_profile = C4::Patroncards::Profile->retrieve(profile_id => $card_template->get_attr('profile_id')); + $old_profile->set_attr(template_id => 0); + $old_profile->save(); + } + my $new_profile = C4::Patroncards::Profile->retrieve(profile_id => $cgi->param('profile_id')); + $new_profile->set_attr(template_id => $card_template->get_attr('template_id')); + $new_profile->save(); + } + $card_template->set_attr(@params); + $card_template->save(); + } + else { # if no template_id, this is a new template so insert it + $card_template = C4::Patroncards::Template->new(@params); + die "Error: $card_template\n" if !ref($card_template); + my $template_id = $card_template->save(); + if ($cgi->param('profile_id')) { + my $profile = C4::Patroncards::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("manage.pl?card_element=template"); + exit; +} +else { # if we get here, this is a new layout + $card_template = C4::Patroncards::Template->new(); +} +if ($template_id) { + foreach my $profile (@$profile_list) { + if ($profile->{'profile_id'} == $card_template->get_attr('profile_id')) { + $profile->{'selected'} = 1; + } + else { + $profile->{'selected'} = 0; + } + } +} + +foreach my $unit (@$units) { + if ($unit->{'type'} eq $card_template->get_attr('units')) { + $unit->{'selected'} = 1; + } +} + +$template->param( + profile_list => $profile_list, + template_id => ($card_template->get_attr('template_id') > 0) ? $card_template->get_attr('template_id') : '', + template_code => $card_template->get_attr('template_code'), + template_desc => $card_template->get_attr('template_desc'), + page_width => $card_template->get_attr('page_width'), + page_height => $card_template->get_attr('page_height'), + card_width => $card_template->get_attr('label_width'), + card_height => $card_template->get_attr('label_height'), + top_margin => $card_template->get_attr('top_margin'), + left_margin => $card_template->get_attr('left_margin'), + cols => $card_template->get_attr('cols'), + rows => $card_template->get_attr('rows'), + col_gap => $card_template->get_attr('col_gap'), + row_gap => $card_template->get_attr('row_gap'), + units => $units, +); + +output_html_with_http_headers $cgi, $cookie, $template->output; -- 2.39.5