[8/30] Patron Card Creator template editor interface and code
This commit is contained in:
parent
3a74a78383
commit
fdd149d406
|
|
@ -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;
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
<!-- 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" -->
|
||||
|
|
@ -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;
|
||||
Loading…
Reference in New Issue