--- /dev/null
+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;
--- /dev/null
+ <!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
+ <title>Koha › Tools › Patroncards › Templates</title>
+ <!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+ <script type="text/javascript">
+ //<![CDATA[
+ $(document).ready(function(){
+ var selectedUnit = $("#units option:selected").attr("value");
+ var unitfields = $("#page_height,#page_width,#card_width,#card_height,#top_margin,#left_margin,#col_gap,#row_gap");
+ $(unitfields).after("<span class=\"unit\">"+getUnit(selectedUnit)+"</span>");
+ $("#units").change(function(){
+ $(".unit").html(getUnit($(this).val()));
+ });
+ function getUnit(unit){
+ switch(unit){
+ case "POINT":
+ var unit = " pt";
+ break;
+ case "AGATE":
+ var unit = " ag";
+ break;
+ case "INCH":
+ var unit = " in";
+ break;
+ case "MM":
+ var unit = " mm";
+ break;
+ case "CM":
+ var unit = " cm";
+ break;
+ default:
+ var unit = "";
+ }
+ return unit;
+ }
+ });
+ //]]>
+ </script>
+ <script type="text/javascript">
+ //<![CDATA[
+ $(document).ready(function() {
+ $("#save").empty();
+ $("#cancel").empty();
+ buildButtons();
+ });
+ function submitForm() {
+ document.input.submit();
+ };
+ function buildButtons() {
+ var saveButton = new YAHOO.widget.Button({
+ type: "link",
+ onclick: {fn: submitForm},
+ label: _("Save"),
+ id: "save",
+ container: "save"
+ });
+ var cancelButton = new YAHOO.widget.Button({
+ type: "link",
+ href: "/cgi-bin/koha/patroncards/manage.pl?card_element=template",
+ label: _("Cancel"),
+ id: "cancel",
+ container: "cancel",
+ });
+ };
+ </script>
+</head>
+<body>
+ <!-- TMPL_INCLUDE NAME="header.inc" -->
+ <!-- TMPL_INCLUDE NAME="cat-search.inc" -->
+ <div id="breadcrumbs">
+ <a href="/cgi-bin/koha/mainpage.pl">Home</a>›
+ <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>›
+ <a href="/cgi-bin/koha/patroncards/home.pl">Patroncards</a>›
+ <a href="/cgi-bin/koha/patroncards/manage.pl?card_element=template">Patroncard Templates</a>›
+ Edit Patroncard Template
+ </div>
+ <div id="doc3" class="yui-t2">
+ <div id="bd">
+ <div id="yui-main">
+ <div class="yui-b">
+ <form name="input" action="/cgi-bin/koha/patroncards/edit-template.pl" method="get">
+ <div class="yui-g">
+ <h3>Edit Patroncard Template</h3>
+ <div class="yui-u first">
+ <fieldset class="rows">
+ <ol>
+ <li>
+ <span class="label">Template ID:</span><!-- TMPL_IF NAME="template_id" --><!-- TMPL_VAR NAME="template_id" --><!-- TMPL_ELSE -->N/A<!-- /TMPL_IF -->
+ </li>
+ <li>
+ <label for="template_code">Template Code:</label>
+ <input type="text" size="30" maxlength="43" name="template_code" id="template_code" value="<!-- TMPL_VAR NAME="template_code" -->" />
+ </li>
+ <li>
+ <label for="template_desc">Template Description:</label>
+ <textarea cols="30" rows="3" id="template_desc" name="template_desc"><!-- TMPL_VAR NAME="template_desc" --></textarea>
+ </li>
+ <li>
+ <label for="units">Units:</label>
+ <select id="units" name="units">
+ <!-- TMPL_LOOP NAME="units" -->
+
+ <!-- TMPL_IF NAME="selected" -->
+ <option value="<!-- TMPL_VAR NAME="type" -->" selected="selected">
+ <!-- TMPL_ELSE -->
+ <option value="<!-- TMPL_VAR NAME="type" -->">
+ <!-- /TMPL_IF -->
+
+ <!-- TMPL_VAR NAME="desc" -->
+ </option>
+ <!-- /TMPL_LOOP -->
+ </select>
+ </li>
+ <li>
+ <label for="page_height">Page Height:</label>
+ <input type="text" size="4" name="page_height" id="page_height" value="<!-- TMPL_VAR NAME="page_height" -->" />
+ </li>
+ <li>
+ <label for="page_width">Page Width:</label>
+ <input type="text" size="4" name="page_width" id="page_width" value="<!-- TMPL_VAR NAME="page_width" -->" />
+ </li>
+ <li>
+ <label for="card_width">Card Width:</label>
+ <input type="text" size="4" name="card_width" id="card_width" value="<!-- TMPL_VAR NAME="card_width" -->" />
+ </li>
+ <li>
+ <label for="card_height">Card Height:</label>
+ <input type="text" size="4" name="card_height" id="card_height" value="<!-- TMPL_VAR NAME="card_height" -->" />
+ </li>
+
+ </ol>
+ </fieldset>
+ </div>
+ <div class="yui-u">
+ <fieldset class="rows">
+ <ol><li>
+ <label for="top_margin">Top Page Margin:</label>
+ <input type="text" size="4" name="top_margin" id="top_margin" value="<!-- TMPL_VAR NAME="top_margin" -->" />
+ </li>
+ <li>
+ <label for="left_margin">Left Page Margin:</label>
+ <input type="text" size="4" name="left_margin" id="left_margin" value="<!-- TMPL_VAR NAME="left_margin" -->" />
+ </li>
+ <li>
+ <label for="cols">Number of Columns:</label>
+ <input type="text" size="4" name="cols" id="cols" value="<!-- TMPL_VAR NAME="cols" -->" />
+ </li>
+ <li>
+ <label for="rows">Number of Rows:</label>
+ <input type="text" size="4" name="rows" id="rows" value="<!-- TMPL_VAR NAME="rows" -->" />
+ </li>
+ <li>
+ <label for="col_gap">Gap between Columns:</label>
+ <input type="text" size="4" name="col_gap" id="col_gap" value="<!-- TMPL_VAR NAME="col_gap" -->" />
+ </li>
+ <li>
+ <label for="row_gap">Gap between Rows:</label>
+ <input type="text" size="4" name="row_gap" id="row_gap" value="<!-- TMPL_VAR NAME="row_gap" -->" />
+ </li>
+
+ <li>
+ <label for="profile_id">Profile:</label>
+ <!-- TMPL_IF NAME="profile_list" -->
+ <select id="profile_id" name="profile_id">
+ <!-- TMPL_LOOP NAME="profile_list" -->
+ <!-- TMPL_IF NAME="selected" -->
+ <option value="<!-- TMPL_VAR NAME="profile_id" -->" selected="selected">
+ <!-- TMPL_ELSE -->
+ <option value="<!-- TMPL_VAR NAME="profile_id" -->">
+ <!-- /TMPL_IF -->
+ <!-- TMPL_VAR NAME="printer_name" -->/<!-- TMPL_VAR NAME="paper_bin" -->
+ </option>
+ <!-- /TMPL_LOOP -->
+ </select>
+ <!-- TMPL_ELSE -->
+ <a href="/cgi-bin/koha/tools/tools-edit-profile.pl?op=new">Click here to define a printer profile.</a>
+ <!-- /TMPL_IF -->
+ </li>
+ </ol>
+ </fieldset>
+ </div>
+ </div>
+ <div class="yui-g">
+ <fieldset class="action">
+ <span id="save"><input type="submit" class="submit" value="Save" /></span>
+ <span id="cancel"><a class="cancel" href="/cgi-bin/koha/patroncards/manage.pl?card_element=template">Cancel</a></span>
+ <input type="hidden" name="op" value="save" />
+ <!-- TMPL_IF NAME="template_id" -->
+ <input type="hidden" name="template_id" value="<!-- TMPL_VAR NAME="template_id" -->" />
+ <!-- /TMPL_IF -->
+ </fieldset>
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="yui-b">
+ <!-- TMPL_INCLUDE NAME="patroncards-menu.inc" -->
+ </div>
+ </div>
+ <!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
--- /dev/null
+#!/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;