});
+# XXX dpavlin -- signatura zatvorenog spremista
+sub ffzg_zs_callnumber {
+ my ($record) = @_;
+ my ($tagfield,$tagsubfield) = &GetMarcFromKohaField("items.itemcallnumber",$frameworkcode);
+ if ($record->field($tagfield)->subfield($tagsubfield) =~ m/^ZS#(\w\w)\s(\d+)-(\d+)$/ ) {
+ my ( $prefix, $min, $max ) = ( $1, $2, $3 );
+ my $sth = $dbh->prepare(qq{ select ffzg_zs_nextval(?) });
+ $sth->execute( $prefix );
+ my ($itemcallnumber) = $sth->fetchrow;
+
+warn "ZS: $prefix $min - $max => $itemcallnumber\n";
+
+ if ( $itemcallnumber < $min || $itemcallnumber > $max ) {
+ die "can't find next itemcallnumber for $prefix $min-$max, got: $itemcallnumber";
+ }
+ my $fieldItem = $record->field($tagfield);
+ $fieldItem->update($tagsubfield => $prefix . ' ' . $itemcallnumber);
+ }
+ return $record;
+}
+
+
+
my $today_iso = C4::Dates->today('iso');
$template->param(today_iso => $today_iso);
$record = _increment_barcode($record, $frameworkcode);
}
+ $record = ffzg_zs_callnumber( $record ); # XXX dpavlin
+
my $addedolditem = TransformMarcToKoha($dbh,$record);
# If we have to add or add & duplicate, we add the item
# MARC::Record builded => now, record in DB
# warn "R: ".$record->as_formatted;
# check that the barcode don't exist already
+
+ $itemtosave = ffzg_zs_callnumber( $itemtosave ); # XXX dpavlin
+
my $addedolditem = TransformMarcToKoha($dbh,$itemtosave);
my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use C4::Auth;
+use CGI;
+use C4::Context;
+
+use C4::Search;
+use C4::Output;
+
+=head1 NAME
+
+plugin ffzg-signatura-zatvoreno-spremiste
+
+=head1 SYNOPSIS
+
+generate signatura
+
+=head1 DESCRIPTION
+
+=head1 FUNCTIONS
+
+=over 2
+
+=cut
+
+sub plugin_parameters {
+my ($dbh,$record,$tagslib,$i,$tabloop) = @_;
+return "";
+}
+
+sub plugin_javascript {
+ my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_;
+ my $function_name= $field_number;
+ my $res="
+<script type=\"text/javascript\">
+//<![CDATA[
+
+function Focus$function_name(subfield_managed) {
+
+/*
+ if ( document.getElementById(\"$field_number\").value ) {
+ }
+ else {
+ document.getElementById(\"$field_number\").value='default value for onclick';
+ }
+*/
+ return 1;
+}
+
+function Blur$function_name(subfield_managed) {
+ return 1;
+}
+
+function Clic$function_name(i) {
+ defaultvalue=document.getElementById(\"$field_number\").value;
+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=ffzg-signatura-zatvoreno-spremiste.pl&index=$field_number&result=\"+defaultvalue,\"Odabir signature u zatvorenom spremištu\",'width=800,height=600,toolbar=false,scrollbars=yes');
+
+}
+//]]>
+</script>
+";
+
+ return ($function_name,$res);
+}
+
+
+my $signature = [
+ "knjige (formalno signiranje)" => [
+ [ "PA 100001-999999", "do 18 cm" ],
+ [ "PB 100001-999999", "18,1-25 cm" ],
+ [ "PC 100001-999999", "25,1-35 cm" ],
+ [ "PD 100001-999999", "iznad 35 cm" ],
+ [ "PE 100001-999999", "poprečni format" ],
+ ],
+ "posebne zbirke" => [
+ [ "DD 100001-999999", "Doktorske disertacije" ],
+ [ "MR 100001-999999", "Magistarski i specijalistički radovi" ],
+ [ "DR 100001-999999", "Diplomski i završni radovi" ],
+ [ "FO 100001-999999", "Fotokopije" ],
+ [ "SE 100001-999999", "Separati" ],
+ ],
+];
+
+
+sub plugin {
+ my ($input) = @_;
+ my $index= $input->param('index');
+ my $index2= $input->param('index2');
+ $index2=-1 unless($index2);
+ my $result= $input->param('result');
+
+
+ my @optgroup;
+
+ while( my $optgroup = shift @$signature ) {
+
+ my $g = { label => $optgroup };
+
+ my $o = shift @$signature;
+ foreach my $option ( @$o ) {
+
+ my ( $template, $display ) = @$option;
+ push @{ $g->{option} }, { display => $display, value => $template };
+ }
+ push @optgroup, $g;
+ }
+
+ my ($template, $loggedinuser, $cookie)
+ = get_template_and_user({template_name => "cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {editcatalogue => 1},
+ debug => 1,
+ });
+ $template->param(
+ index => $index,
+ index2 => $index2,
+ "f1_$result" => "f1_".$result,
+ optgroup => [ @optgroup ],
+ );
+ output_html_with_http_headers $input, $cookie, $template->output;
+}
+
+1;
--- /dev/null
+
+drop table if exists ffzg_zs_seq;
+
+create table ffzg_zs_seq (
+ name varchar(2) unique not null,
+ current integer unsigned not null
+);
+
+insert into ffzg_zs_seq values ('PA',100000);
+insert into ffzg_zs_seq values ('PB',100000);
+insert into ffzg_zs_seq values ('PC',100000);
+insert into ffzg_zs_seq values ('PD',100000);
+insert into ffzg_zs_seq values ('PE',100000);
+insert into ffzg_zs_seq values ('DD',100000);
+insert into ffzg_zs_seq values ('MR',100000);
+insert into ffzg_zs_seq values ('DR',100000);
+insert into ffzg_zs_seq values ('FO',100000);
+insert into ffzg_zs_seq values ('SE',100000);
+
+update ffzg_zs_seq
+set current=(
+ select
+ max(substring_index(itemcallnumber,' ',-1))
+ from items
+ where substring_index(itemcallnumber,' ',1) = ffzg_zs_seq.name
+);
+
+update ffzg_zs_seq set current = 100000 where current < 100000 ;
+
+select * from ffzg_zs_seq ;
+
+delimiter |
+
+create function ffzg_zs_nextval( seq_name varchar(2) )
+returns integer unsigned
+begin
+ update ffzg_zs_seq set current = ( @next_val := current + 1 ) where name = seq_name ;
+ return @next_val;
+end|
+
+delimiter ;
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Signature za zatvoreno spremište</title>
+<style type=text/css>
+
+label {
+ font-family: monospace;
+ font-weight: bold;
+}
+
+</style>
+<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
+</head>
+<body>
+<h1>Signature za zatvoreno spremište</h1>
+<form name="f_pop" onSubmit="return report()">
+<input type="hidden" name="plugin_name" value="ffzg-signatura-zatvoreno-spremiste.pl" />
+<table>
+
+ [% FOREACH group IN optgroup %]
+ <tr><th colspan=2>[% group.label %]</th></tr>
+
+ [% FOREACH opt IN group.option %]
+ <tr><td>
+ <input type=radio name=f1 value="ZS#[% opt.value %]" id="r[% opt.value %]">
+ <label for="r[% opt.value %]">[% opt.value %]</label>
+ </td><td>[% opt.display %]</td><tr>
+ [% END %]
+ [% END %]
+
+ <tr><th colspan="2">
+ <input type="submit" value="OK" />
+ <input type="button" value="Cancel" onClick="self.close()">
+ </th></tr>
+</table>
+</form>
+<script>
+
+function report() {
+
+ var doc = opener.document;
+ var field = doc.getElementById("[% index %]");
+ field.value = $('input:radio:checked').val();
+ field.readOnly = true;
+ self.close();
+ return false;
+
+}
+
+</script>
+</body>
+</html>