[15/30] Patron Card Creator profile editor interface and code

This commit is contained in:
Chris Nighswonger 2010-01-11 11:28:29 -05:00
parent a4b1bf3e64
commit 8a0db421bd
3 changed files with 314 additions and 0 deletions

47
C4/Patroncards/Profile.pm Normal file
View File

@ -0,0 +1,47 @@
package C4::Patroncards::Profile;
use strict;
use warnings;
use base qw(C4::Creators::Profile);
use autouse 'Data::Dumper' => qw(Dumper);
BEGIN {
use version; our $VERSION = qv('1.0.0_1');
}
__PACKAGE__ =~ m/^C4::(.+)::.+$/;
my $me = $1;
sub new {
my $self = shift;
push @_, "creator", $me;
return $self->SUPER::new(@_);
}
sub save {
my $self = shift;
push @_, "creator", $me;
return $self->SUPER::save(@_);
}
sub retrieve {
my $self = shift;
push @_, "creator", $me;
return $self->SUPER::retrieve(@_);
}
sub delete {
if (ref($_[0])) {
my $self = shift; # check to see if this is a method call
push @_, "creator", $me;
return $self->SUPER::delete(@_);
}
else {
push @_, "creator", $me;
return __PACKAGE__->SUPER::delete(@_); # XXX: is this too hackish?
}
}
1;

View File

@ -0,0 +1,162 @@
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
<title>Koha &rsaquo; Tools &rsaquo; Patroncards</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 = $("#offset_horz,#offset_vert,#creep_horz,#creep_vert");
$(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=profile",
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> &rsaquo;
<a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo;
<a href="/cgi-bin/koha/patroncards/home.pl">Patroncards</a> &rsaquo;
<a href="/cgi-bin/koha/patroncards/manage.pl?label_element=profile">Printer Profiles</a> &rsaquo;
Edit Printer Profile
</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<div class="yui-g">
<h3>Edit Printer Profile</h3>
<div class="yui-g first">
<form name="input" action="/cgi-bin/koha/patroncards/edit-profile.pl" method="get">
<fieldset class="rows"><legend>Profile settings</legend>
<ol>
<li>
<!-- TMPL_IF NAME="profile_id" -->
<span class="label">Printer name:</span><!-- TMPL_VAR NAME="printer_name" -->
<input type="hidden" name="printer_name" value="<!-- TMPL_VAR NAME="printer_name" -->" />
<!-- TMPL_ELSE -->
<label for="printer_name">Printer name:</label><input type="text" size="20" name="printer_name" id="printer_name" />
<!-- /TMPL_IF -->
</li>
<li>
<!-- TMPL_IF NAME="profile_id" -->
<span class="label">Paper bin:</span> <!-- TMPL_VAR NAME="paper_bin" -->
<input type="hidden" name="paper_bin" value="<!-- TMPL_VAR NAME="paper_bin" -->" />
<!-- TMPL_ELSE -->
<label for="paper_bin">Paper bin:</label><input type="text" size="20" name="paper_bin" id="paper_bin" />
<!-- /TMPL_IF -->
</li>
<li>
<!-- TMPL_IF NAME="label_template" -->
<label for="template_name">Template name:</label> <!-- TMPL_VAR NAME="label_template" -->
<!-- TMPL_ELSE -->
<span class="label">Template name:</span> Profile Unassigned
<!-- /TMPL_IF -->
</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>
</ol>
</fieldset>
<fieldset class="rows"><legend>Offset:</legend>
<ol>
<li>
<label for="offset_horz">Horizontal: </label><input type="text" size="4" name="offset_horz" id="offset_horz" value="<!-- TMPL_VAR NAME="offset_horz" -->" />
</li>
<li>
<label for="offset_vert">Vertical: </label><input type="text" size="4" name="offset_vert" id="offset_vert" value="<!-- TMPL_VAR NAME="offset_vert" -->" />
</li>
</ol>
</fieldset>
<fieldset class="rows"><legend>Creep:</legend>
<ol>
<li>
<label for="creep_horz">Horizontal: </label><input type="text" size="4" name="creep_horz" id="creep_horz" value="<!-- TMPL_VAR NAME="creep_horz" -->" />
</li>
<li>
<label for="creep_vert">Vertical: </label><input type="text" size="4" name="creep_vert" id="creep_vert" value="<!-- TMPL_VAR NAME="creep_vert" -->" />
</li>
</ol>
</fieldset>
<fieldset class="action">
<span id="save"><input type="submit" value="Save" /></span>
<span id ="cancel"><a href="/cgi-bin/koha/patroncards/manage.pl?card_element=profile" class="cancel">Cancel</a></span>
<input type="hidden" name="op" value="save" />
<input type="hidden" name="profile_id" value="<!-- TMPL_VAR NAME="profile_id" -->" />
</fieldset>
</form>
</div>
</div>
</div>
</div>
<div class="yui-b">
<!-- TMPL_INCLUDE NAME="patroncards-menu.inc" -->
</div>
</div>
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->

105
patroncards/edit-profile.pl Executable file
View File

@ -0,0 +1,105 @@
#!/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 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_templates get_unit_values);
use C4::Patroncards::Profile 1.000000;
my $cgi = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "patroncards/edit-profile.tmpl",
query => $cgi,
type => "intranet",
authnotrequired => 0,
flagsrequired => { catalogue => 1 },
debug => 1,
}
);
my $op = $cgi->param('op') || '';
my $profile_id = $cgi->param('profile_id') || $cgi->param('element_id');
my $profile = undef;
my $template_list = undef;
my @label_template = ();
my $units = get_unit_values();
if ($op eq 'edit') {
$profile = C4::Patroncards::Profile->retrieve(profile_id => $profile_id);
$template_list = get_all_templates(table_name => 'creator_templates', field_list => 'template_id,template_code, profile_id');
}
elsif ($op eq 'save') {
my @params = (
printer_name => $cgi->param('printer_name'),
paper_bin => $cgi->param('paper_bin'),
offset_horz => $cgi->param('offset_horz'),
offset_vert => $cgi->param('offset_vert'),
creep_horz => $cgi->param('creep_horz'),
creep_vert => $cgi->param('creep_vert'),
units => $cgi->param('units'),
);
if ($profile_id) { # if a label_id was passed in, this is an update to an existing layout
$profile = C4::Patroncards::Profile->retrieve(profile_id => $profile_id);
$profile->set_attr(@params);
$profile->save();
}
else { # if no label_id, this is a new layout so insert it
$profile = C4::Patroncards::Profile->new(@params);
$profile->save();
}
print $cgi->redirect("manage.pl?card_element=profile");
exit;
}
else { # if we get here, this is a new layout
$profile = C4::Patroncards::Profile->new();
}
if ($profile_id) {
@label_template = grep{($_->{'profile_id'} == $profile->get_attr('profile_id')) && ($_->{'template_id'} == $profile->get_attr('template_id'))} @$template_list;
}
foreach my $unit (@$units) {
if ($unit->{'type'} eq $profile->get_attr('units')) {
$unit->{'selected'} = 1;
}
}
$template->param(profile_id => $profile->get_attr('profile_id')) if $profile->get_attr('profile_id') > 0;
$template->param(
label_template => $label_template[0]->{'template_code'} || '',
printer_name => $profile->get_attr('printer_name'),
paper_bin => $profile->get_attr('paper_bin'),
offset_horz => $profile->get_attr('offset_horz'),
offset_vert => $profile->get_attr('offset_vert'),
creep_horz => $profile->get_attr('creep_horz'),
creep_vert => $profile->get_attr('creep_vert'),
units => $units,
op => $op,
);
output_html_with_http_headers $cgi, $cookie, $template->output;