From 45542226294a3a1bad71b8173069ba7093588fd9 Mon Sep 17 00:00:00 2001 From: Chris Nighswonger Date: Fri, 24 Jul 2009 23:03:05 -0400 Subject: [PATCH] [11/40] Work on layout editor interface. --- C4/Labels/Layout.pm | 10 ++-- C4/Labels/Profile.pm | 49 +++++++++---------- .../en/modules/labels/label-edit-layout.tmpl | 2 +- labels/label-edit-layout.pl | 6 +-- 4 files changed, 31 insertions(+), 36 deletions(-) diff --git a/C4/Labels/Layout.pm b/C4/Labels/Layout.pm index da2d18dd16..f0776cc861 100644 --- a/C4/Labels/Layout.pm +++ b/C4/Labels/Layout.pm @@ -96,7 +96,7 @@ C4::Labels::Layout -A class for creating and manipulating layout objects in Koha sub new { my $invocant = shift; if (_check_params(@_) eq 1) { - return 1; + return -1; } my $type = ref($invocant) || $invocant; my $self = { @@ -134,7 +134,7 @@ sub retrieve { $sth->execute($opts{'layout_id'}); if ($sth->err) { syslog("LOG_ERR", "Database returned the following error: %s", $sth->errstr); - return 1; + return -1; } my $self = $sth->fetchrow_hashref; bless ($self, $type); @@ -169,14 +169,14 @@ sub delete { } if ($query_param eq '') { # If there is no layout id then we cannot delete it syslog("LOG_ERR", "%s : Cannot delete layout as the layout id is invalid or non-existant.", $call_type); - return 1; + return -1; } my $query = "DELETE FROM labels_layouts WHERE layout_id = ?"; my $sth = C4::Context->dbh->prepare($query); $sth->execute($query_param); if ($sth->err) { syslog("LOG_ERR", "%s : Database returned the following error: %s", $call_type, $sth->errstr); - return 1; + return -1; } return 0; } @@ -277,7 +277,7 @@ sub get_attr { sub set_attr { my $self = shift; if (_check_params(@_) eq 1) { - return 1; + return -1; } my %attrs = @_; foreach my $attrib (keys(%attrs)) { diff --git a/C4/Labels/Profile.pm b/C4/Labels/Profile.pm index 157ba0fa17..2d54b97d90 100644 --- a/C4/Labels/Profile.pm +++ b/C4/Labels/Profile.pm @@ -24,18 +24,12 @@ use Data::Dumper; use C4::Context; use C4::Debug; +use C4::Labels::Lib 1.000000 qw(get_unit_values); BEGIN { use version; our $VERSION = qv('1.0.0_1'); } -my $unit_values = { - POINT => 1, - INCH => 72, - MM => 2.83464567, - CM => 28.3464567, -}; - sub _check_params { my $given_params = {}; my $exit_code = 0; @@ -47,7 +41,7 @@ sub _check_params { 'offset_vert', 'creep_horz', 'creep_vert', - 'unit', + 'units', ); if (scalar(@_) >1) { $given_params = {@_}; @@ -69,10 +63,11 @@ sub _check_params { sub _conv_points { my $self = shift; - $self->{offset_horz} = $self->{offset_horz} * $unit_values->{$self->{unit}}; - $self->{offset_vert} = $self->{offset_vert} * $unit_values->{$self->{unit}}; - $self->{creep_horz} = $self->{creep_horz} * $unit_values->{$self->{unit}}; - $self->{creep_vert} = $self->{creep_vert} * $unit_values->{$self->{unit}}; + my @unit_value = grep {$_->{'type'} eq $self->{units}} get_unit_values(); + $self->{offset_horz} = $self->{offset_horz} * $unit_value[0]->{'value'}; + $self->{offset_vert} = $self->{offset_vert} * $unit_value[0]->{'value'}; + $self->{creep_horz} = $self->{creep_horz} * $unit_value[0]->{'value'}; + $self->{creep_vert} = $self->{creep_vert} * $unit_value[0]->{'value'}; return $self; } @@ -109,7 +104,7 @@ sub new { offset_vert => 0, creep_horz => 0, creep_vert => 0, - unit => 'POINT', + units => 'POINT', @_, }; bless ($self, $type); @@ -135,7 +130,7 @@ sub retrieve { my $invocant = shift; my %opts = @_; my $type = ref($invocant) || $invocant; - my $query = "SELECT * FROM printers_profile WHERE prof_id = ?"; + my $query = "SELECT * FROM printers_profile WHERE profile_id = ?"; my $sth = C4::Context->dbh->prepare($query); $sth->execute($opts{profile_id}); if ($sth->err) { @@ -148,34 +143,34 @@ sub retrieve { return $self; } -=head2 C4::Labels::Profile->delete(prof_id => profile_id) | $profile->delete() +=head2 C4::Labels::Profile->delete(profile_id => profile_id) | $profile->delete() Invoking the delete method attempts to delete the profile from the database. The method returns 0 upon success and 1 upon failure. Errors are logged to the syslog. examples: my $exitstat = $profile->delete(); # to delete the record behind the $profile object - my $exitstat = C4::Labels::Profile->delete(prof_id => 1); # to delete profile record 1 + my $exitstat = C4::Labels::Profile->delete(profile_id => 1); # to delete profile record 1 =cut sub delete { my $self = shift; - if (!$self->{'prof_id'}) { # If there is no profile prof_id then we cannot delete it + if (!$self->{'profile_id'}) { # If there is no profile profile_id then we cannot delete it syslog("LOG_ERR", "Cannot delete profile as it has not been saved."); return 1; } - my $query = "DELETE FROM printers_profile WHERE prof_id = ?"; + my $query = "DELETE FROM printers_profile WHERE profile_id = ?"; my $sth = C4::Context->dbh->prepare($query); - $sth->execute($self->{'prof_id'}); + $sth->execute($self->{'profile_id'}); return 0; } =head2 $profile->save() Invoking the I method attempts to insert the profile into the database if the profile is new and - update the existing profile record if the profile exists. The method returns the new record prof_id upon - success and -1 upon failure (This avoids conflicting with a record prof_id of 1). Errors are logged to the syslog. + update the existing profile record if the profile exists. The method returns the new record profile_id upon + success and -1 upon failure (This avoids conflicting with a record profile_id of 1). Errors are logged to the syslog. example: my $exitstat = $profile->save(); # to save the record behind the $profile object @@ -184,17 +179,17 @@ sub delete { sub save { my $self = shift; - if ($self->{'prof_id'}) { # if we have an prof_id, the record exists and needs UPDATE + if ($self->{'profile_id'}) { # if we have an profile_id, the record exists and needs UPDATE my @params; my $query = "UPDATE printers_profile SET "; foreach my $key (keys %{$self}) { - next if $key eq 'prof_id'; + next if $key eq 'profile_id'; push (@params, $self->{$key}); $query .= "$key=?, "; } $query = substr($query, 0, (length($query)-2)); - push (@params, $self->{'prof_id'}); - $query .= " WHERE prof_id=?;"; + push (@params, $self->{'profile_id'}); + $query .= " WHERE profile_id=?;"; warn "DEBUG: Updating: $query\n" if $debug; my $sth = C4::Context->dbh->prepare($query); $sth->execute(@params); @@ -202,7 +197,7 @@ sub save { syslog("LOG_ERR", "C4::Labels::Profile : Database returned the following error: %s", $sth->errstr); return -1; } - return $self->{'prof_id'}; + return $self->{'profile_id'}; } else { # otherwise create a new record my @params; @@ -225,7 +220,7 @@ sub save { syslog("LOG_ERR", "C4::Labels::Profile : Database returned the following error: %s", $sth->errstr); return -1; } - my $sth1 = C4::Context->dbh->prepare("SELECT MAX(prof_id) FROM printers_profile;"); + my $sth1 = C4::Context->dbh->prepare("SELECT MAX(profile_id) FROM printers_profile;"); $sth1->execute(); my $tmpl_id = $sth1->fetchrow_array; return $tmpl_id; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl index f46f124947..50c9d53fed 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl @@ -32,7 +32,7 @@
- +
EditCreate Label Layout diff --git a/labels/label-edit-layout.pl b/labels/label-edit-layout.pl index d5480a7780..7aaf4487dd 100755 --- a/labels/label-edit-layout.pl +++ b/labels/label-edit-layout.pl @@ -48,7 +48,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( my $op = $cgi->param('op') || $ARGV[0] || ''; -my $layout_id = $cgi->param('layout_id') || $ARGV[1] || ''; +my $layout_id = $cgi->param('layout_id') || $cgi->param('element_id') || $ARGV[1] || ''; my $layout = ''; sub _set_selected { @@ -89,7 +89,7 @@ sub _select_format_string { # generate field table based on format_string $col_index++; $field_index++; if ((($col_index > 0) && !($col_index % $cols)) || ($field_index == $field_count)) { # wrap to new row - if ($field_index == $field_count) { # in this case fill out row with empty fields + if (($field_index == $field_count) && ($row_index > 0)) { # in this case fill out row with empty fields while ($col_index < $cols) { $$fields[$col_index] = {field_empty => 1, field_name => '', field_label => '', order => [{num => '', selected => 0}]}; $col_index++; @@ -145,7 +145,7 @@ elsif ($op eq 'save') { $layout = C4::Labels::Layout->new(@params); $layout->save(); } - print $cgi->redirect("label-layout.pl"); + print $cgi->redirect("label-manage.pl?label_element=layout"); exit; } else { # if we get here, this is a new layout -- 2.39.5