[Koha-patches] [PATCH] More work on label printing tool
Chris Nighswonger
cnighswonger at foundations.edu
Thu Apr 3 16:58:25 CEST 2008
---
C4/Labels.pm | 81 +++++++++++++++++++++++++++------------------------------
1 files changed, 38 insertions(+), 43 deletions(-)
diff --git a/C4/Labels.pm b/C4/Labels.pm
index a008199..06d1ceb 100644
--- a/C4/Labels.pm
+++ b/C4/Labels.pm
@@ -25,7 +25,7 @@ use Text::Wrap;
use Algorithm::CheckDigits;
use C4::Members;
use C4::Branch;
-# use Data::Dumper;
+ use Data::Dumper;
# use Smart::Comments;
BEGIN {
@@ -200,7 +200,8 @@ sub get_text_fields {
my $sortorder = get_layout($layout_id);
- # FIXME: This is all hardcoded and should be user selectable I think or are these the only text fields? -fbcit
+ # These fields are hardcoded based on the template for label-edit-layout.pl
+
$a = {
code => 'itemtype',
desc => "Item Type",
@@ -917,11 +918,20 @@ sub deduplicate_batch {
sub DrawSpineText {
my ( $x_pos, $y_pos, $label_height, $label_width, $fontname, $fontsize, $left_text_margin,
- $text_wrap_cols, $item, $conf_data, $printingtype, $nowrap )
- = @_;
-# hack to fix column name mismatch betwen labels_conf.class, and bibitems.classification
- $$item->{'class'} = $$item->{'classification'};
-
+ $text_wrap_cols, $item, $conf_data, $printingtype, $nowrap ) = @_;
+
+ # FIXME: we need to fix the column name mismatch betwen labels_conf.class, and bibitems.classification
+ $$item->{'class'} = $$item->{'classification'};
+
+ # Replaced item's itemtype with the more user-friendly description...
+ my $dbh = C4::Context->dbh;
+ my %itemtypes;
+ my $sth = $dbh->prepare("SELECT itemtype,description FROM itemtypes");
+ $sth->execute();
+ while ( my $data = $sth->fetchrow_hashref ) {
+ $$item->{'itemtype'} = $data->{'description'} if ($$item->{'itemtype'} eq $data->{'itemtype'});
+ }
+
$Text::Wrap::columns = $text_wrap_cols;
$Text::Wrap::separator = "\n";
@@ -933,7 +943,6 @@ sub DrawSpineText {
my $layout_id = $$conf_data->{'id'};
my $vPos = ( $y_pos + ( $label_height - $top_text_margin ) );
- my $font = prFont($fontname);
my @str_fields = get_text_fields($layout_id, 'codes' );
my @fields;
@@ -941,51 +950,38 @@ sub DrawSpineText {
push (@fields, $field->{'code'});
}
+ my $old_fontname = $fontname; # We need to keep track of the original font passed in...
+
foreach my $field (@fields) {
-
- # testing hack
-# $$item->{"$field"} = $field . ": " . $$item->{"$field"};
-
+ # This allows us to print the title in italic (oblique) type... (Times Roman has a different nomenclature.)
+ # It seems there should be a better way to handle fonts in the label/patron card tool altogether -fbcit
+ ($field eq 'title') ? (($old_fontname =~ /T/) ? ($fontname = 'TI') : ($fontname = ($old_fontname . 'O'))) : ($fontname = $old_fontname);
+ my $font = prFont($fontname);
# if the display option for this field is selected in the DB,
# and the item record has some values for this field, display it.
if ( $$conf_data->{"$field"} && $$item->{"$field"} ) {
-
- # warn "CONF_TYPE = $field";
-
# get the string
$str = $$item->{"$field"};
# strip out naughty existing nl/cr's
$str =~ s/\n//g;
$str =~ s/\r//g;
my @strings;
- if (($nowrap == 0) || (!$nowrap)) {
- # wrap lines based on segmentation markers: '/' (other types of segmentation markers can be added as needed here or this could be added as a syspref.)
-
- while ( $str =~ /\// ) {
- $str =~ /^(.*)\/(.*)$/;
-
- #warn "\$2=$2";
- unshift @strings, $2;
- $str = $1;
- }
- unshift @strings, $str;
- } else {
- push @strings, $str; # if we are not wrapping the call number just send it along as we found it...
+ if ($field eq 'itemcallnumber') { # If the field contains the call number, we do some special processing on it here...
+ if (($nowrap == 0) || (!$nowrap)) { # wrap lines based on segmentation markers: '/' (other types of segmentation markers can be added as needed here or this could be added as a syspref.)
+ while ( $str =~ /\// ) {
+ $str =~ /^(.*)\/(.*)$/;
+ unshift @strings, $2;
+ $str = $1;
+ }
+ unshift @strings, $str;
+ } else {
+ push @strings, $str; # or if we are not wrapping the call number just send it along as we found it...
+ }
+ } else { # Here we will strip out all trailing '/' in fields other than the call number...
+ $str =~ s/\/$//g;
+ push @strings, $str;
}
-
- # strip out division slashes
- #$str =~ s/\///g;
- #warn "\$str after striping division marks: $str";
- # chop the string up into _upto_ 12 chunks
- # and seperate the chunks with newlines
-
- #$str = wrap( "", "", "$str" );
- #$str = wrap( "", "", "$str" );
-
- # split the chunks between newline's, into an array
- #my @strings = split /\n/, $str;
-
- # then loop for each string line
+ # loop for each string line
foreach my $str (@strings) {
my $hPos;
if ( $printingtype eq 'BIB' ) { #FIXME: This is a hack and needs to be implimented as a text justification option in the template...
@@ -999,7 +995,6 @@ sub DrawSpineText {
}
PrintText( $hPos, $vPos, $font, $fontsize, $str );
$vPos = $vPos - $line_spacer;
-
}
} # if field is
} #foreach feild
--
1.5.3.7
More information about the Koha-patches
mailing list