[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.27,1.28
From: |
Paul POULAIN |
Subject: |
[Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.27,1.28 |
Date: |
Thu, 19 Jun 2003 09:38:52 -0700 |
Update of /cvsroot/koha/koha/acqui.simple
In directory sc8-pr-cvs1:/tmp/cvs-serv9765/acqui.simple
Modified Files:
addbiblio.pl
Log Message:
partial work for repetable fields.
Near each field is a +
If you click on it, it's duplicated.
TODO :
* cc the + to each tab (for instance, only in tab 0)
* doing the french template
* fixing an annoying bug : everything is stored in the same field :
200$a$b$c$a$b$c and not
200$a$b$c
200$a$b$c
as expected.
Index: addbiblio.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/addbiblio.pl,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -r1.27 -r1.28
*** addbiblio.pl 17 Jun 2003 11:21:13 -0000 1.27
--- addbiblio.pl 19 Jun 2003 16:38:50 -0000 1.28
***************
*** 31,35 ****
use MARC::File::USMARC;
! use vars qw( $tagslib );
use vars qw( $is_a_modif );
--- 31,36 ----
use MARC::File::USMARC;
! use vars qw( $tagslib);
! use vars qw( $authorised_values_sth);
use vars qw( $is_a_modif );
***************
*** 103,107 ****
sub build_authorized_values_list ($$$$$) {
! my($tag, $subfield, $value, $dbh, $authorised_values_sth) = @_;
my @authorised_values;
--- 104,108 ----
sub build_authorized_values_list ($$$$$) {
! my($tag, $subfield, $value, $dbh,$authorised_values_sth) = @_;
my @authorised_values;
***************
*** 155,158 ****
--- 156,189 ----
}
+ =item create_input
+ builds the <input ...> entry for a subfield.
+ =cut
+ sub create_input () {
+ my ($tag,$subfield,$value,$i,$tabloop,$rec,$authorised_values_sth) = @_;
+ my $dbh = C4::Context->dbh;
+ my %subfield_data;
+ $subfield_data{tag}=$tag;
+ $subfield_data{subfield}=$subfield;
+ $subfield_data{marc_lib}="<DIV
id=\"error$i\">".$tagslib->{$tag}->{$subfield}->{lib}."</div>";
+ $subfield_data{tag_mandatory}=$tagslib->{$tag}->{mandatory};
+ $subfield_data{mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
+ $subfield_data{repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
+ $subfield_data{kohafield}=$tagslib->{$tag}->{$subfield}->{kohafield};
+ if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
+ $subfield_data{marc_value}= build_authorized_values_list($tag,
$subfield, $value, $dbh,$authorised_values_sth);
+ } elsif ($tagslib->{$tag}->{$subfield}->{thesaurus_category}) {
+ $subfield_data{marc_value}="<input type=\"text\"
name=\"field_value\" size=47 maxlength=255 DISABLE READONLY> <a
href=\"javascript:Dopop('../thesaurus_popup.pl?category=$tagslib->{$tag}->{$subfield}->{thesaurus_category}&index=$i',$i)\">...</a>";
+ } elsif ($tagslib->{$tag}->{$subfield}->{'value_builder'}) {
+ my
$plugin="../value_builder/".$tagslib->{$tag}->{$subfield}->{'value_builder'};
+ require $plugin;
+ my $extended_param =
plugin_parameters($dbh,$rec,$tagslib,$i,$tabloop);
+ my ($function_name,$javascript) =
plugin_javascript($dbh,$rec,$tagslib,$i,$tabloop);
+ $subfield_data{marc_value}="<input type=\"text\"
name=\"field_value\" value=\"$value\" DISABLE READONLY size=47 maxlength=255
OnFocus=\"javascript:Focus$function_name($i)\"
OnBlur=\"javascript:Blur$function_name($i)\"> <a
href=\"javascript:Clic$function_name($i)\">...</a> $javascript";
+ } else {
+ $subfield_data{marc_value}="<input type=\"text\"
name=\"field_value\" value=\"$value\" size=50 maxlength=255>"; #"
+ }
+ return \%subfield_data;
+ }
+
sub build_tabs ($$$$) {
my($template, $record, $dbh,$encoding) = @_;
***************
*** 162,250 ****
my $tag;
my $i=0;
! my $authorised_values_sth = $dbh->prepare("select authorised_value,lib
! from authorised_values
! where category=? order by authorised_value");
!
! # loop through each tab 0 through 9
! for (my $tabloop = 0; $tabloop <= 9; $tabloop++) {
! # my @fields = $record->fields();
! my @loop_data = ();
! foreach my $tag (sort(keys (%{$tagslib}))) {
! my $previous_tag = '';
! my @subfields_data;
! my $indicator;
!
! # loop through each subfield
! foreach my $subfield (sort(keys %{$tagslib->{$tag}})) {
! next if subfield_is_koha_internal_p($subfield);
! next if ($tagslib->{$tag}->{$subfield}->{tab} ne
$tabloop);
! # if breeding is not empty
if ($record ne -1) {
! my ($x,@value) =
find_value($tag,$subfield,$record,$encoding);
! push (@value,"") if ($#value eq -1);
! foreach my $value (@value) {
! my %subfield_data;
! $subfield_data{tag}=$tag;
! $subfield_data{subfield}=$subfield;
! $subfield_data{marc_lib}="<DIV
id=\"error$i\">".$tagslib->{$tag}->{$subfield}->{lib}."</div>";
!
$subfield_data{tag_mandatory}=$tagslib->{$tag}->{mandatory};
!
$subfield_data{mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
!
$subfield_data{repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
!
$subfield_data{kohafield}=$tagslib->{$tag}->{$subfield}->{kohafield};
! $value=char_decode($value) unless
($is_a_modif);
! $indicator = $x if $x; #XXX
! if
($tagslib->{$tag}->{$subfield}->{authorised_value}) {
! $subfield_data{marc_value}=
build_authorized_values_list($tag, $subfield, $value, $dbh,
$authorised_values_sth);
! } elsif
($tagslib->{$tag}->{$subfield}->{thesaurus_category}) {
!
$subfield_data{marc_value}="<input type=\"text\" name=\"field_value\" size=47
maxlength=255> <a
href=\"javascript:Dopop('../thesaurus_popup.pl?category=$tagslib->{$tag}->{$subfield}->{thesaurus_category}&index=$i',$i)\">...</a>";
#"
! } elsif
($tagslib->{$tag}->{$subfield}->{'value_builder'}) {
! my
$plugin="../value_builder/".$tagslib->{$tag}->{$subfield}->{'value_builder'};
! require $plugin;
! my $extended_param =
plugin_parameters($dbh,$record,$tagslib,$i,$tabloop);
! my ($function_name,$javascript)
= plugin_javascript($dbh,$record,$tagslib,$i,$tabloop);
!
$subfield_data{marc_value}="<input type=\"text\" name=\"field_value\"
value=\"$value\" size=47 maxlength=255
OnFocus=\"javascript:Focus$function_name($i)\"
OnBlur=\"javascript:Blur$function_name($i)\"> <a
href=\"javascript:Clic$function_name($i)\">...</a> $javascript";
} else {
!
$subfield_data{marc_value}="<input type=\"text\" name=\"field_value\"
value=\"$value\" size=50 maxlength=255>";
}
- push(@subfields_data, \%subfield_data);
- $i++;
}
! # if breeding is empty
} else {
! my ($x,$value);
! ($x,$value) =
find_value($tag,$subfield,$record,$encoding) if ($record ne -1);
! # $value=char_decode($value) unless ($is_a_modif);
! my %subfield_data;
! $subfield_data{tag}=$tag;
! $subfield_data{subfield}=$subfield;
! $subfield_data{marc_lib}="<DIV
id=\"error$i\">".$tagslib->{$tag}->{$subfield}->{lib}."</div>";
!
$subfield_data{tag_mandatory}=$tagslib->{$tag}->{mandatory};
!
$subfield_data{mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
!
$subfield_data{repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
!
$subfield_data{kohafield}=$tagslib->{$tag}->{$subfield}->{kohafield};
! if
($tagslib->{$tag}->{$subfield}->{authorised_value}) {
! $subfield_data{marc_value}=
build_authorized_values_list($tag, $subfield, $value, $dbh,
$authorised_values_sth);
! } elsif
($tagslib->{$tag}->{$subfield}->{thesaurus_category}) {
!
$subfield_data{marc_value}="<input type=\"text\" name=\"field_value\" size=47
maxlength=255 DISABLE READONLY> <a
href=\"javascript:Dopop('../thesaurus_popup.pl?category=$tagslib->{$tag}->{$subfield}->{thesaurus_category}&index=$i',$i)\">...</a>";
! } elsif
($tagslib->{$tag}->{$subfield}->{'value_builder'}) {
! my
$plugin="../value_builder/".$tagslib->{$tag}->{$subfield}->{'value_builder'};
! require $plugin;
! my $extended_param =
plugin_parameters($dbh,$record,$tagslib,$i,$tabloop);
! my ($function_name,$javascript)
= plugin_javascript($dbh,$record,$tagslib,$i,$tabloop);
!
$subfield_data{marc_value}="<input type=\"text\" name=\"field_value\" DISABLE
READONLY size=47 maxlength=255 OnFocus=\"javascript:Focus$function_name($i)\"
OnBlur=\"javascript:Blur$function_name($i)\"> <a
href=\"javascript:Clic$function_name($i)\">...</a> $javascript";
! } else {
!
$subfield_data{marc_value}="<input type=\"text\" name=\"field_value\" size=50
maxlength=255>";
! }
! push(@subfields_data, \%subfield_data);
$i++;
}
! }
! if ($#subfields_data >= 0) {
! my %tag_data;
! $tag_data{tag} = $tag;
! $tag_data{tag_lib} = $tagslib->{$tag}->{lib};
! $tag_data{indicator} = $indicator;
! $tag_data{subfield_loop} = address@hidden;
! push (@loop_data, \%tag_data);
}
}
--- 193,262 ----
my $tag;
my $i=0;
! my $authorised_values_sth = $dbh->prepare("select authorised_value,lib
! from authorised_values
! where category=? order by authorised_value");
!
! # loop through each tab 0 through 9
! for (my $tabloop = 0; $tabloop <= 9; $tabloop++) {
! my @loop_data = ();
! foreach my $tag (sort(keys (%{$tagslib}))) {
! my $previous_tag = '';
! my $indicator;
! # if MARC::Record is not empty => use it as master loop, then add
missing subfields that should be in the tab.
! # if MARC::Record is empty => use tab as master loop.
if ($record ne -1) {
! my @fields = $record->field($tag);
! foreach my $field (@fields) {
! my @subfields_data;
! if ($tag<10) {
! my $value=$field->data();
! my $subfield="@";
! push(@subfields_data,
&create_input($tag,$subfield,$value,$i,$tabloop,$record,$authorised_values_sth));
! $i++;
} else {
! my
@subfields=$field->subfields();
! foreach my $subfieldcount
(0..$#subfields) {
! my
$subfield=$subfields[$subfieldcount][0];
! my
$value=$subfields[$subfieldcount][1];
! next if
subfield_is_koha_internal_p($subfield);
! next if
($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
! push(@subfields_data,
&create_input($tag,$subfield,$value,$i,$tabloop,$record,$authorised_values_sth));
! $i++;
! }
! }
! # now, loop again to add parameter subfield that are not in the MARC::Record
! foreach my $subfield (sort( keys
%{$tagslib->{$tag}})) {
! next if
subfield_is_koha_internal_p($subfield);
! next if
($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
! next if
(defined($record->field($tag)->subfield($subfield)));
! push(@subfields_data,
&create_input($tag,$subfield,'',$i,$tabloop,$record,$authorised_values_sth));
! $i++;
! }
! if ($#subfields_data >= 0) {
! my %tag_data;
! $tag_data{tag} = $tag;
! $tag_data{tag_lib} =
$tagslib->{$tag}->{lib};
! $tag_data{indicator} =
$indicator;
! $tag_data{subfield_loop} =
address@hidden;
! push (@loop_data, \%tag_data);
}
}
! # if breeding is empty
} else {
! my @subfields_data;
! foreach my $subfield (sort(keys
%{$tagslib->{$tag}})) {
! next if
subfield_is_koha_internal_p($subfield);
! next if
($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
! push(@subfields_data,
&create_input($tag,$subfield,'',$i,$tabloop,$record,$authorised_values_sth));
$i++;
}
! if ($#subfields_data >= 0) {
! my %tag_data;
! $tag_data{tag} = $tag;
! $tag_data{tag_lib} =
$tagslib->{$tag}->{lib};
! $tag_data{indicator} = $indicator;
! $tag_data{subfield_loop} =
address@hidden;
! push (@loop_data, \%tag_data);
! }
}
}
***************
*** 347,350 ****
--- 359,417 ----
print $input->redirect("additem.pl?bibid=$bibid");
exit;
+
#------------------------------------------------------------------------------------------------------------------------------
+ } elsif ($op eq "addfield") {
+
#------------------------------------------------------------------------------------------------------------------------------
+ my $addedfield = $input->param('addfield_field');
+ my @tags = $input->param('tag');
+ my @subfields = $input->param('subfield');
+ my @values = $input->param('field_value');
+ # build indicator hash.
+ my @ind_tag = $input->param('ind_tag');
+ my @indicator = $input->param('indicator');
+ splice(@tags,$addedfield,0,$tags[$addedfield]);
+ splice(@subfields,$addedfield,0,$subfields[$addedfield]);
+ splice(@values,$addedfield,0,$values[$addedfield]);
+ splice(@ind_tag,$addedfield,0,$ind_tag[$addedfield]);
+ my %indicators;
+ for (my $i=0;$i<=$#ind_tag;$i++) {
+ $indicators{$ind_tag[$i]} = $indicator[$i];
+ }
+ # search the part of the array to duplicate.
+ my $start=0;
+ my $end=0;
+ my $started;
+ for (my $i=0;$i<=$#tags;$i++) {
+ $start=$i if ($start eq 0 && $tags[$i] == $addedfield);
+ $end=$i if ($start>0 && $tags[$i] eq $addedfield);
+ last if ($start>0 && $tags[$i] ne $addedfield);
+ }
+ # add an empty line in all arrays. This forces a new field in MARC::Record.
+ splice(@tags,$end+1,0,'');
+ splice(@subfields,$end+1,0,'');
+ splice(@values,$end+1,0,'');
+ splice(@ind_tag,$end+1,0,'');
+ splice(@indicator,$end+1,0,'');
+ # then duplicate the field.
+ splice(@tags,$end+2,0,@tags[$start..$end]);
+ splice(@subfields,$end+2,0,@subfields[$start..$end]);
+ splice(@values,$end+2,0,@values[$start..$end]);
+ splice(@ind_tag,$end+2,0,@ind_tag[$start..$end]);
+ splice(@indicator,$end+2,0,@indicator[$start..$end]);
+
+ my %indicators;
+ for (my $i=0;$i<=$#ind_tag;$i++) {
+ $indicators{$ind_tag[$i]} = $indicator[$i];
+ }
+ my $record =
MARChtml2marc($dbh,address@hidden,address@hidden,address@hidden,%indicators);
+ build_tabs ($template, $record, $dbh,$encoding);
+ build_hidden_data;
+ $template->param(
+ oldbiblionumber => $oldbiblionumber,
+ bibid => $bibid,
+ oldbiblionumtagfield => $oldbiblionumtagfield,
+ oldbiblionumtagsubfield => $oldbiblionumtagsubfield,
+ oldbiblioitemnumtagfield => $oldbiblioitemnumtagfield,
+ oldbiblioitemnumtagsubfield => $oldbiblioitemnumtagsubfield,
+ oldbiblioitemnumber => $oldbiblioitemnumber );
#------------------------------------------------------------------------------------------------------------------------------
} else {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.27,1.28,
Paul POULAIN <=