Filter:   InfoImg
download barcodes.pl
Language: Perl
License: GPL
LOC: 112
Project Info
Koha Library Automation Package(koha)
Server: Savannah NonGNU
Type: cvs
...\k\koha\koha\koha\barcodes\
   barcodes.pl
   barcodesGenerator.pl
   label-home.pl
   label-item-search.pl
   label-manager.pl
   label-print-opus-pdf.pl
   label-print-pdf.pl
   label-print.pl
   pdfViewer.pl
   printerConfig.pl
   test.textblock.pl

#!/usr/bin/perl

# script to generate items barcodes
# written 07/04
# by Veleda Matias - matias_veleda@hotmail.com - Physics Library UNLP Argentina and
#    Casta�eda Sebastian - seba3c@yahoo.com.ar - Physics Library UNLP Argentina and

# 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 CGI;
use C4::Auth;
use C4::Output;
use C4::Context;
use C4::Barcodes::PrinterConfig;

# This function returns the path to deal with the correct files, considering
# templates set and language.
sub getPath {
    my $type         = shift @_;
    my $templatesSet = C4::Context->preference('template');
    my $lang         = C4::Context->preference('opaclanguages');
    if ( $type eq "intranet" ) {
        return "$ENV{'DOCUMENT_ROOT'}/intranet-tmpl/$templatesSet/$lang";
    }
    else {
        return "$ENV{'DOCUMENT_ROOT'}/opac-tmpl/$templatesSet/$lang";
    }
}

# Load a configuration file. Before use this function, check if that file exists.
sub loadConfFromFile {
    my $fileName = shift @_;
    my %keyValues;
    open FILE, "<$fileName";
    while (<FILE>) {
        chomp;
        if (/\s*([\w_]*)\s*=\s*([\[\]\<\>\w_\s:@,\.-]*)\s*/) {
            $keyValues{$1} = $2;
        }
    }
    close FILE;
    return %keyValues;
}

# Save settings to a configuration file. It delete previous configuration settings.
sub saveConfToFile {
    my $fileName  = shift @_;
    my %keyValues = %{ shift @_ };
    my $i;
    open FILE, ">$fileName";
    foreach $i ( keys(%keyValues) ) {
        print FILE $i . " = " . $keyValues{$i} . "\n";
    }
    close FILE;
}

# Load the config file.
my $filenameConf =
  &getPath("intranet") . "/includes/labelConfig/itemsLabelConfig.conf";
my %labelConfig = &loadConfFromFile($filenameConf);

my $input = new CGI;

# Defines type of page to use in the printer process
my @labelTable =
  C4::Barcodes::PrinterConfig::labelsPage( $labelConfig{'rows'},
    $labelConfig{'columns'} );

# It creates a list of posible intervals to choose codes to generate
my %list = (
    'continuous'  => 'Continuous Range of items',
    'individuals' => 'Individual Codes'
);
my @listValues = keys(%list);
my $rangeType  = CGI::scrolling_list(
    -name     => 'rangeType',
    -values   => \@listValues,
    -labels   => \%list,
    -size     => 1,
    -default  => ['continuous'],
    -multiple => 0,
    -id       => "rangeType",
    -onChange => "changeRange(this)"
);

# It creates a list of posible standard codifications. First checks if the user has just added a new code.
if ( $input->param('addCode') ) {
    my $newCountryName = $input->param('countryName');
    my $newCountryCode = $input->param('countryCode');

    my $countryCodesFilename =
      &getPath("intranet") . "/includes/countryCodes/countryCodes.dat";
    open COUNTRY_CODES, ">>$countryCodesFilename";
    print COUNTRY_CODES $newCountryCode . " = " . $newCountryName . "\n";
    close COUNTRY_CODES;
}

# Takes the country codes from a file and use them to set the country list.
my $countryCodes =
  &getPath("intranet") . "/includes/countryCodes/countryCodes.dat";
%list = &loadConfFromFile($countryCodes);
@listValues = keys(%list);
my $number_system = CGI::scrolling_list(
    -name     => 'numbersystem',
    -values   => \@listValues,
    -labels   => \%list,
    -size     => 1,
    -multiple => 0
);

# Set the script name
my $script_name = "/cgi-bin/koha/barcodes/barcodesGenerator.pl";

# Get the template to use
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
    {
        template_name   => "barcodes/barcodes.tmpl",
        type            => "intranet",
        query           => $input,
        authnotrequired => 0,
        flagsrequired   => { tools => 1 },
        debug           => 1,
    }
);

# Replace the template values with the real ones
$template->param( SCRIPT_NAME   => $script_name );
$template->param( NUMBER_SYSTEM => $number_system );
$template->param( PAGES         => $labelConfig{'pageType'} );
$template->param( RANGE_TYPE    => $rangeType );
$template->param( LABEL_TABLE   => \@labelTable );
$template->param( COL_SPAN      => $labelConfig{'columns'} );
if ( $input->param('error') ) {
    $template->param( ERROR => 1 );
}
else {
    $template->param( ERROR => 0 );
}
$template->param(
    intranetcolorstylesheet =>
      C4::Context->preference("intranetcolorstylesheet"),
    intranetstylesheet => C4::Context->preference("intranetstylesheet"),
    IntranetNav        => C4::Context->preference("IntranetNav"),
);

# Shows the template with the real values replaced
output_html_with_http_headers $input, $cookie, $template->output;