[Koha-cvs] koha/barcodes label-home.pl label-manager.pl la... [rel_2_2]

Mason James szrj1m at yahoo.com
Tue Apr 11 07:50:28 CEST 2006


CVSROOT:	/cvsroot/koha
Module name:	koha
Branch: 	rel_2_2
Changes by:	Mason James <sushi at savannah.gnu.org>	06/04/11 05:50:28

Added files:
	barcodes       : label-home.pl label-manager.pl label-print.pl 
	                 label-print-pdf.pl 

Log message:
	Inital add of spine label perl files.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/barcodes/label-home.pl?only_with_tag=rel_2_2&rev=1.1.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/koha/barcodes/label-manager.pl?only_with_tag=rel_2_2&rev=1.1.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/koha/barcodes/label-print.pl?only_with_tag=rel_2_2&rev=1.1.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/koha/barcodes/label-print-pdf.pl?only_with_tag=rel_2_2&rev=1.1.2.1

Patches:
Index: koha/barcodes/label-home.pl
diff -u /dev/null koha/barcodes/label-home.pl:1.1.2.1
--- /dev/null	Tue Apr 11 05:50:28 2006
+++ koha/barcodes/label-home.pl	Tue Apr 11 05:50:28 2006
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use CGI;
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Context;
+use HTML::Template;
+
+my $query = new CGI;
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "barcodes/label-home.tmpl",
+        query           => $query,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { catalogue => 1 },
+        debug           => 1,
+    }
+);
+
+my $dbh    = C4::Context->dbh;
+my $query2 = "SELECT * FROM labels_conf LIMIT 1";
+my $sth    = $dbh->prepare($query2);
+$sth->execute();
+
+my $data = $sth->fetchrow_hashref;
+$sth->finish;
+
+# next line passes a var like 'EAN13_cheched' to the tmpl ,
+# which makes the barcodetype sticky in the dropbox
+
+$template->param( "$data->{'barcodetype'}_checked"              => 1 );
+$template->param( "startrow" . $data->{'startrow'} . "_checked" => 1 );
+$template->param(
+    itemtype                => $data->{'itemtype'},
+    papertype               => $data->{'papertype'},
+    author                  => $data->{'author'},
+    barcode                 => $data->{'barcode'},
+    id                      => $data->{'id'},
+    barcodetype             => $data->{'barcodetype'},
+    title                   => $data->{'title'},
+    isbn                    => $data->{'isbn'},
+    dewey                   => $data->{'dewey'},
+    class                   => $data->{'class'},
+    startrow                => $data->{'startrow'},
+    intranetcolorstylesheet =>
+      C4::Context->preference("intranetcolorstylesheet"),
+    intranetstylesheet => C4::Context->preference("intranetstylesheet"),
+    IntranetNav        => C4::Context->preference("IntranetNav"),
+);
+output_html_with_http_headers $query, $cookie, $template->output;
Index: koha/barcodes/label-manager.pl
diff -u /dev/null koha/barcodes/label-manager.pl:1.1.2.1
--- /dev/null	Tue Apr 11 05:50:28 2006
+++ koha/barcodes/label-manager.pl	Tue Apr 11 05:50:28 2006
@@ -0,0 +1,137 @@
+#!/usr/bin/perl
+
+use strict;
+use CGI;
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use HTML::Template;
+use POSIX;
+
+my $dbh         = C4::Context->dbh;
+my $query       = new CGI;
+my $op          = $query->param('op');
+my $barcodetype = $query->param('barcodetype');
+my $title       = $query->param('title');
+my $isbn        = $query->param('isbn');
+my $itemtype    = $query->param('itemtype');
+my $bcn         = $query->param('bcn');
+my $dcn         = $query->param('dcn');
+my $classif     = $query->param('classif');
+my $author      = $query->param('author');
+my $papertype   = $query->param('papertype');
+my $itemnumber  = $query->param('itemnumber');
+my $summary     = $query->param('summary');
+my $startrow    = $query->param('startrow');
+
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "barcodes/label-manager.tmpl",
+        query           => $query,
+        type            => "intranet",
+        authnotrequired => 1,
+        flagsrequired   => { catalogue => 1 },
+        debug           => 1,
+    }
+);
+
+if ( $op eq 'save_conf' ) {
+    my $query2 = "DELETE FROM labels_conf";
+    my $sth2   = $dbh->prepare($query2);
+    $sth2->execute();
+    $sth2->finish;
+    my $query2 = "INSERT INTO labels_conf 
+			( barcodetype, title, isbn, itemtype, barcode, 	
+			  dewey, class, author, papertype, startrow)
+			   values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
+    my $sth2 = $dbh->prepare($query2);
+    $sth2->execute(
+        $barcodetype, $title,   $isbn,   $itemtype,  $bcn,
+        $dcn,         $classif, $author, $papertype, $startrow
+    );
+    $sth2->finish;
+
+}
+elsif ( $op eq 'add' ) {
+    my $query2 = "INSERT INTO labels ( itemnumber ) values ( ? )";
+    my $sth2   = $dbh->prepare($query2);
+    $sth2->execute($itemnumber);
+    $sth2->finish;
+}
+elsif ( $op eq 'deleteall' ) {
+    my $query2 = "DELETE FROM labels";
+    my $sth2   = $dbh->prepare($query2);
+    $sth2->execute();
+    $sth2->finish;
+}
+elsif ( $op eq 'delete' ) {
+    my $query2 = "DELETE FROM labels where itemnumber = ?";
+    my $sth2   = $dbh->prepare($query2);
+    $sth2->execute($itemnumber);
+    $sth2->finish;
+}
+
+#  first lets do a read of the labels table , to get the a list of the
+# currently entered items to be prinited
+
+my @resultsloop = ();
+my $count;
+my @data;
+my $query3 = "Select * from labels";
+my $sth    = $dbh->prepare($query3);
+$sth->execute();
+
+my $cnt = $sth->rows;
+my $i1  = 1;
+while ( my $data = $sth->fetchrow_hashref ) {
+
+    # lets get some summary info from each item
+    my $query1 = "
+			select * from biblio,biblioitems,items where itemnumber=? and 
+				items.biblioitemnumber=biblioitems.biblioitemnumber and 
+				biblioitems.biblionumber=biblio.biblionumber";
+
+    my $sth1 = $dbh->prepare($query1);
+    $sth1->execute( $data->{'itemnumber'} );
+    my $data1 = $sth1->fetchrow_hashref();
+
+    $data1->{'labelno'} = $i1;
+    $data1->{'summary'} =
+      "$data1->{'barcode'}, $data1->{'title'}, $data1->{'isbn'}";
+
+    push( @resultsloop, $data1 );
+    $sth1->finish;
+
+    $i1++;
+}
+$sth->finish;
+
+# this script can be run from the side nav, and is not passed a value for $startrow
+# so lets get it from the DB
+if ( !$startrow ) {
+
+    my $dbh    = C4::Context->dbh;
+    my $query2 = "SELECT * FROM labels_conf LIMIT 1";
+    my $sth    = $dbh->prepare($query2);
+    $sth->execute();
+
+    my $data = $sth->fetchrow_hashref;
+    $startrow = $data->{'startrow'};
+    $sth->finish;
+}
+
+#calc-ing number of sheets
+my $number_of_results = scalar @resultsloop;
+my $sheets_needed = ( ( $number_of_results + $startrow ) / 8 );
+$sheets_needed = ceil($sheets_needed);    # rounding up int's
+
+$template->param(
+    resultsloop             => \@resultsloop,
+    startrow                => $startrow,
+    sheets                  => $sheets_needed,
+    intranetcolorstylesheet =>
+      C4::Context->preference("intranetcolorstylesheet"),
+    intranetstylesheet => C4::Context->preference("intranetstylesheet"),
+    IntranetNav        => C4::Context->preference("IntranetNav"),
+);
+output_html_with_http_headers $query, $cookie, $template->output;
Index: koha/barcodes/label-print-pdf.pl
diff -u /dev/null koha/barcodes/label-print-pdf.pl:1.1.2.1
--- /dev/null	Tue Apr 11 05:50:28 2006
+++ koha/barcodes/label-print-pdf.pl	Tue Apr 11 05:50:28 2006
@@ -0,0 +1,526 @@
+#!/usr/bin/perl
+
+#use strict;
+use CGI;
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Context;
+use HTML::Template;
+use PDF::Reuse;
+use PDF::Reuse::Barcode;
+
+my $htdocs_path = C4::Context->config('intrahtdocs');
+my $cgi         = new CGI;
+
+my $spine_text = "";
+
+#--------------------------------------------------------
+# get the printing settings
+
+my $dbh    = C4::Context->dbh;
+my $query2 = " SELECT * FROM labels_conf LIMIT 1 ";
+my $sth    = $dbh->prepare($query2);
+$sth->execute();
+
+my $conf_data = $sth->fetchrow_hashref;
+
+# get barcode type from $conf_data
+my $barcodetype = $conf_data->{'barcodetype'};
+my $startrow    = $conf_data->{'startrow'};
+
+$sth->finish;
+
+#------------------
+
+# get the actual items to be printed.
+my @data;
+my $query3 = " Select * from labels ";
+my $sth    = $dbh->prepare($query3);
+$sth->execute();
+my @resultsloop;
+my $cnt = $sth->rows;
+my $i1  = 1;
+while ( my $data = $sth->fetchrow_hashref ) {
+
+    # lets get some summary info from each item
+    my $query1 =
+      " select *from biblio, biblioitems, items where itemnumber = ? and
+                                items.biblioitemnumber=biblioitems.biblioitemnumber and
+                                biblioitems.biblionumber=biblio.biblionumber";
+
+    my $sth1 = $dbh->prepare($query1);
+    $sth1->execute( $data->{'itemnumber'} );
+    my $data1 = $sth1->fetchrow_hashref();
+
+    push( @resultsloop, $data1 );
+    $sth1->finish;
+
+    $i1++;
+}
+$sth->finish;
+
+# dimensions of gaylord paper
+my $lowerLeftX  = 0;
+my $lowerLeftY  = 0;
+my $upperRightX = 612;
+my $upperRightY = 792;
+
+#----------------------------------
+# setting up the pdf doc
+
+prFile("$htdocs_path/barcodes/new.pdf");
+prLogDir("$htdocs_path/barcodes");
+
+#prMbox ( $lowerLeftX, $lowerLeftY, $upperRightX, $upperRightY );
+prMbox( 0, 0, 612, 792 );
+
+prFont('Times-Roman');    # Just setting a font
+prFontSize(10);
+
+my $margin = 36;
+
+my $label_height = 90;
+my $spine_width  = 72;
+my $circ_width   = 207;
+my $colspace     = 27;
+
+my $x_pos_spine = 36;
+my $x_pos_circ1 = 135;
+my $x_pos_circ2 = 369;
+
+my $pageheight = 792;
+
+my $y_pos_initial = ( ( $pageheight - $margin ) - $label_height );
+my $y_pos_initial_startrow =
+  ( ( $pageheight - $margin ) - ( $label_height * $startrow ) );
+
+my $y_pos_initial = ( ( 792 - 36 ) - 90 );
+
+my $y_pos = $y_pos_initial_startrow;
+
+#my $y_pos            = $y_pos_initial;
+my $rowspace         = 36;
+my $page_break_count = $startrow;
+my $codetype         = 'Code39';
+
+# do border---------------
+my $str = "q\n";    # save the graphic state
+$str .= "4 w\n";                # border color red
+$str .= "0.0 0.0 0.0  RG\n";    # border color red
+$str .= "1 1 1 rg\n";           # fill color blue
+$str .= "0 0 612 792 re\n";     # a rectangle
+$str .= "B\n";                  # fill (and a little more)
+$str .= "Q\n";                  # save the graphic state
+
+# do border---------------
+
+prAdd($str);
+my $item;
+
+my $i2 = 1;
+foreach $item (@resultsloop) {
+    if ( $i2 == 1 ) {
+
+        #draw_boxes();
+    }
+
+    #building up spine text
+    my $line        = 75;
+    my $line_spacer = 16;
+
+    build_circ_barcode( $x_pos_circ1, $y_pos, $item->{'barcode'},
+        $conf_data->{'barcodetype'} );
+    build_circ_barcode( $x_pos_circ2, $y_pos, $item->{'barcode'},
+        $conf_data->{'barcodetype'} );
+
+# added for xpdf compat. doesnt use type3 fonts., but increases filesize from 20k to 200k
+# i think its embedding extra fonts in the pdf file.
+#	mode => 'graphic',
+
+    $y_pos = ( $y_pos - $label_height );
+
+    # the gaylord labels have 8 rows per sheet, this pagebreaks after 8 rows
+    if ( $page_break_count == 8 ) {
+        prPage();
+
+        $page_break_count = 0;
+        $i2               = 0;
+        $y_pos            = $y_pos_initial;
+    }
+    $page_break_count++;
+    $i2++;
+}
+
+prEnd();
+
+#----------------------------------------------------------------------------
+
+use PDF::Table;
+use Acme::Comment;
+
+$file = '/usr/local/opus-dev/intranet/htdocs/intranet-tmpl/barcodes/new.pdf';
+use PDF::Report;
+
+my $pdf = new PDF::Report( File => $file );
+
+# my $pdf = new PDF::Report(PageSize => "letter",
+#                                  PageOrientation => "Landscape");
+
+#$pdf->newpage($nopage);
+my $pagenumber = 1;
+$pdf->openpage($pagenumber);
+
+( $pagewidth, $pageheight ) = $pdf->getPageDimensions();
+my $y_pos = ( $y_pos_initial_startrow + 90 );
+$pdf->setAlign('left');
+$pdf->setSize(9);
+
+my $page_break_count = $startrow;
+
+foreach $item (@resultsloop) {
+
+    my $firstrow = 0;
+
+    $pdf->setAddTextPos( 36, ( $y_pos - 15 ) );    # INIT START POS
+    ( $hPos, $vPos )  = $pdf->getAddTextPos();
+    ( $hPos, $vPos1 ) = $pdf->getAddTextPos();
+
+    if ( $conf_data->{'dewey'} && $item->{'dewey'} ) {
+
+        ( $hPos, $vPos1 ) = $pdf->getAddTextPos();
+        $pdf->addText( $item->{'dewey'}, 10, 72, 90 );
+        ( $hPos, $vPos1 ) = $pdf->getAddTextPos();
+        $firstrow = 1;
+    }
+
+    if ( $conf_data->{'isbn'} && $item->{'isbn'} ) {
+        if ( $vPos1 == $vPos && $firstrow != 0 ) {
+            $pdf->setAddTextPos( 36, ( $vPos - 15 ) );
+        }
+        else {
+            $pdf->setAddTextPos( 36, $vPos1 - 5 );    #add a space
+        }
+
+        ( $hPos, $vPos ) = $pdf->getAddTextPos();
+        $pdf->addText( $item->{'isbn'}, 10, 72, 90 );
+        ( $hPos, $vPos1 ) = $pdf->getAddTextPos();
+        $firstrow = 1;
+    }
+
+    if ( $conf_data->{'class'} && $item->{'classification'} ) {
+
+        if ( $vPos1 == $vPos && $firstrow != 0 ) {
+            $pdf->setAddTextPos( 36, ( $vPos - 15 ) );
+        }
+        else {
+            $pdf->setAddTextPos( 36, $vPos1 - 5 );    #add a space
+        }
+
+        ( $hPos, $vPos ) = $pdf->getAddTextPos();
+        $pdf->addText( $item->{'classification'}, 10, 72, 90 );
+        ( $hPos, $vPos1 ) = $pdf->getAddTextPos();
+        $firstrow = 1;
+    }
+
+    if ( $conf_data->{'itemtype'} && $item->{'itemtype'} ) {
+
+        if ( $vPos1 == $vPos && $firstrow != 0 ) {
+            $pdf->setAddTextPos( 36, ( $vPos - 15 ) );
+        }
+        else {
+            $pdf->setAddTextPos( 36, $vPos1 - 5 );    #add a space
+        }
+
+        ( $hPos, $vPos ) = $pdf->getAddTextPos();
+        $pdf->addText( $item->{'itemtype'}, 10, 72, 90 );
+        ( $hPos, $vPos1 ) = $pdf->getAddTextPos();
+        $firstrow = 1;
+    }
+
+    #$pdf->drawRect(
+    #    $x_pos_spine, $y_pos,
+    #    ( $x_pos_spine + $spine_width ),
+    #    ( $y_pos - $label_height )
+    #);
+
+    $y_pos = ( $y_pos - $label_height );
+    if ( $page_break_count == 8 ) {
+        $pagenumber++;
+        $pdf->openpage($pagenumber);
+
+        $page_break_count = 0;
+        $i2               = 0;
+        $y_pos            = ( $y_pos_initial + 90 );
+    }
+
+    $page_break_count++;
+    $i2++;
+
+}
+$DB::single = 1;
+$pdf->saveAs($file);
+
+#------------------------------------------------
+
+print $cgi->redirect("/intranet-tmpl/barcodes/new.pdf");
+
+# draw boxes------------------
+sub draw_boxes {
+
+    my $y_pos_initial = ( ( 792 - 36 ) - 90 );
+    my $y_pos         = $y_pos_initial;
+    my $i             = 1;
+
+    for ( $i = 1 ; $i <= 8 ; $i++ ) {
+
+        &drawbox( $x_pos_spine, $y_pos, ($spine_width), ($label_height) );
+
+        &drawbox( $x_pos_circ1, $y_pos, ($circ_width), ($label_height) );
+        &drawbox( $x_pos_circ2, $y_pos, ($circ_width), ($label_height) );
+
+        $y_pos = ( $y_pos - $label_height );
+
+    }
+}
+
+# draw boxes------------------
+
+sub build_circ_barcode {
+    my ( $x_pos_circ, $y_pos, $value, $barcodetype ) = @_;
+
+    #$DB::single = 1;
+
+    if ( $barcodetype eq 'EAN13' ) {
+
+        #testing EAN13 barcodes hack
+        $value = $value . '000000000';
+        $value =~ s/-//;
+        $value = substr( $value, 0, 12 );
+
+        eval {
+            PDF::Reuse::Barcode::EAN13(
+                x     => ( $x_pos_circ + 27 ),
+                y     => ( $y_pos + 15 ),
+                value => $value,
+
+                #            prolong => 2.96,
+                #            xSize   => 1.5,
+
+                # ySize   => 1.2,
+
+# added for xpdf compat. doesnt use type3 fonts., but increases filesize from 20k to 200k
+# i think its embedding extra fonts in the pdf file.
+#  mode => 'graphic',
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+
+    }
+    elsif ( $barcodetype eq 'Code39' ) {
+
+        eval {
+            PDF::Reuse::Barcode::Code39(
+                x     => ( $x_pos_circ + 9 ),
+                y     => ( $y_pos + 15 ),
+                value => $value,
+
+                #           prolong => 2.96,
+                xSize => .85,
+
+                ySize => 1.3,
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+
+    elsif ( $barcodetype eq 'Matrix2of5' ) {
+
+        #testing MATRIX25  barcodes hack
+        #    $value = $value.'000000000';
+        $value =~ s/-//;
+
+        #    $value = substr( $value, 0, 12 );
+
+        eval {
+            PDF::Reuse::Barcode::Matrix2of5(
+                x     => ( $x_pos_circ + 27 ),
+                y     => ( $y_pos + 15 ),
+                value => $value,
+
+                #        prolong => 2.96,
+                #       xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+
+    elsif ( $barcodetype eq 'EAN8' ) {
+
+        #testing ean8 barcodes hack
+        $value = $value . '000000000';
+        $value =~ s/-//;
+        $value = substr( $value, 0, 8 );
+
+        eval {
+            PDF::Reuse::Barcode::EAN8(
+                x       => ( $x_pos_circ + 42 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+
+    }
+
+    elsif ( $barcodetype eq 'UPC-E' ) {
+        eval {
+            PDF::Reuse::Barcode::UPCE(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+    elsif ( $barcodetype eq 'NW7' ) {
+        eval {
+            PDF::Reuse::Barcode::NW7(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+    elsif ( $barcodetype eq 'ITF' ) {
+        eval {
+            PDF::Reuse::Barcode::ITF(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+    elsif ( $barcodetype eq 'Industrial2of5' ) {
+        eval {
+            PDF::Reuse::Barcode::Industrial2of5(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+    elsif ( $barcodetype eq 'IATA2of5' ) {
+        eval {
+            PDF::Reuse::Barcode::IATA2of5(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+
+    }
+
+    elsif ( $barcodetype eq 'COOP2of5' ) {
+        eval {
+            PDF::Reuse::Barcode::COOP2of5(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+    elsif ( $barcodetype eq 'UPC-A' ) {
+
+        eval {
+            PDF::Reuse::Barcode::UPCA(
+                x       => ( $x_pos_circ + 27 ),
+                y       => ( $y_pos + 15 ),
+                value   => $value,
+                prolong => 2.96,
+                xSize   => 1.5,
+
+                # ySize   => 1.2,
+            );
+        };
+        if ($@) {
+            $item->{'barcodeerror'} = 1;
+        }
+    }
+}
+
+#-----------------------------
+
+sub drawbox {
+    my ( $llx, $lly, $urx, $ury ) = @_;
+
+    my $str = "q\n";    # save the graphic state
+    $str .= "1.0 0.0 0.0  RG\n";           # border color red
+    $str .= "1 1 1  rg\n";                 # fill color blue
+    $str .= "$llx $lly $urx $ury re\n";    # a rectangle
+    $str .= "B\n";                         # fill (and a little more)
+    $str .= "Q\n";                         # save the graphic state
+
+    prAdd($str);
+
+}
+
Index: koha/barcodes/label-print.pl
diff -u /dev/null koha/barcodes/label-print.pl:1.1.2.1
--- /dev/null	Tue Apr 11 05:50:28 2006
+++ koha/barcodes/label-print.pl	Tue Apr 11 05:50:28 2006
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+
+use strict;
+use CGI;
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Context;
+use HTML::Template;
+use GD::Barcode::UPCE;
+
+my $htdocs_path = C4::Context->config('intrahtdocs');
+my $query       = new CGI;
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "barcodes/label-print.tmpl",
+        query           => $query,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { catalogue => 1 },
+        debug           => 1,
+    }
+);
+
+my $dbh    = C4::Context->dbh;
+my $query2 = "SELECT * FROM labels_conf LIMIT 1";
+my $sth    = $dbh->prepare($query2);
+$sth->execute();
+my $conf_data = $sth->fetchrow_hashref;
+
+# get barcode type from $conf_data
+my $barcodetype = $conf_data->{'barcodetype'};
+$sth->finish;
+
+my @data;
+my $query3 = "Select * from labels";
+my $sth    = $dbh->prepare($query3);
+$sth->execute();
+my @resultsloop;
+my $cnt = $sth->rows;
+my $i1  = 1;
+while ( my $data = $sth->fetchrow_hashref ) {
+
+    # lets get some summary info from each item
+    my $query1 = "
+                        SELECT * FROM biblio,biblioitems,items WHERE itemnumber=? AND
+                                items.biblioitemnumber=biblioitems.biblioitemnumber AND
+                                biblioitems.biblionumber=biblio.biblionumber";
+
+    my $sth1 = $dbh->prepare($query1);
+    $sth1->execute( $data->{'itemnumber'} );
+    my $data1 = $sth1->fetchrow_hashref();
+    push( @resultsloop, $data1 );
+    $sth1->finish;
+
+    $i1++;
+}
+$sth->finish;
+
+#lets write barcode files to tmp dir for every item in @resultsloop
+
+binmode(FILE);
+foreach my $item (@resultsloop) {
+    my $filename = "$htdocs_path/barcodes/$barcodetype-$item->{'barcode'}.png";
+    open( FILE, ">$filename" );
+    eval {
+        print FILE GD::Barcode->new( $barcodetype, $item->{'barcode'} )
+          ->plot->png;
+    };
+    if ($@) {
+        $item->{'barcodeerror'} = 1;
+    }
+    close(FILE);
+}
+
+$template->param(
+    resultsloop             => \@resultsloop,
+    itemtype_opt            => $conf_data->{'itemtype'},
+    papertype_opt           => $conf_data->{'papertype'},
+    author_opt              => $conf_data->{'author'},
+    id_opt                  => $conf_data->{'id'},
+    barcodetype_opt         => $conf_data->{'barcodetype'},
+    title_opt               => $conf_data->{'title'},
+    isbn_opt                => $conf_data->{'isbn'},
+    dewey_opt               => $conf_data->{'dewey'},
+    class_opt               => $conf_data->{'class'},
+    intranetcolorstylesheet =>
+      C4::Context->preference("intranetcolorstylesheet"),
+    intranetstylesheet => C4::Context->preference("intranetstylesheet"),
+    IntranetNav        => C4::Context->preference("IntranetNav"),
+);
+output_html_with_http_headers $query, $cookie, $template->output;





More information about the Koha-cvs mailing list