[Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.18,1.19 additem.pl,1.13,1.14
Ambrose Li
acli at users.sourceforge.net
Mon Feb 3 19:46:06 CET 2003
Update of /cvsroot/koha/koha/acqui.simple
In directory sc8-pr-cvs1:/tmp/cvs-serv3203/acqui.simple
Modified Files:
addbiblio.pl additem.pl
Log Message:
Minor factoring in C4/Biblio.pm, plus change to export the per-tag
'mandatory' property to a per-subfield 'tag_mandatory' template parameter,
so that addbiblio.tmpl can distinguish between mandatory subfields in a
mandatory tag and mandatory subfields in an optional tag
Not-minor factoring in acqui.simple/addbiblio.pl to make the if-else blocks
smaller, and to add some POD; need further testing for this
Added function to check if a MARC subfield name is "koha-internal" (instead
of checking it for 'lib' and 'tag' everywhere); temporarily added to Koha.pm
Use above function in acqui.simple/additem.pl and search.marc/search.pl
Index: addbiblio.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/addbiblio.pl,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -r1.18 -r1.19
*** addbiblio.pl 3 Feb 2003 07:03:06 -0000 1.18
--- addbiblio.pl 3 Feb 2003 18:46:03 -0000 1.19
***************
*** 27,33 ****
--- 27,37 ----
use C4::Biblio;
use C4::Context;
+ use C4::Koha; # XXX subfield_is_koha_internal_p
use HTML::Template;
use MARC::File::USMARC;
+ use vars qw( $tagslib );
+ use vars qw( $is_a_modif );
+
=item find_value
***************
*** 87,90 ****
--- 91,264 ----
+ =item build_authorized_values_list
+
+ =cut
+
+ sub build_authorized_values_list ($$$$$) {
+ my($tag, $subfield, $value, $dbh, $authorised_values_sth) = @_;
+
+ my @authorised_values;
+ my %authorised_lib;
+
+ # builds list, depending on authorised value...
+
+ #---- branch
+ if ($tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) {
+ my $sth=$dbh->prepare("select branchcode,branchname from branches");
+ $sth->execute;
+ push @authorised_values, ""
+ unless ($tagslib->{$tag}->{$subfield}->{mandatory});
+
+ while (my ($branchcode,$branchname) = $sth->fetchrow_array) {
+ push @authorised_values, $branchcode;
+ $authorised_lib{$branchcode}=$branchname;
+ }
+
+ #----- itemtypes
+ } elsif ($tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes") {
+ my $sth=$dbh->prepare("select itemtype,description from itemtypes");
+ $sth->execute;
+ push @authorised_values, ""
+ unless ($tagslib->{$tag}->{$subfield}->{mandatory});
+
+ while (my ($itemtype,$description) = $sth->fetchrow_array) {
+ push @authorised_values, $itemtype;
+ $authorised_lib{$itemtype}=$description;
+ }
+
+ #---- "true" authorised value
+ } else {
+ $authorised_values_sth->execute
+ ($tagslib->{$tag}->{$subfield}->{authorised_value});
+
+ push @authorised_values, ""
+ unless ($tagslib->{$tag}->{$subfield}->{mandatory});
+
+ while (my ($value,$lib) = $authorised_values_sth->fetchrow_array) {
+ push @authorised_values, $value;
+ $authorised_lib{$value}=$lib;
+ }
+ }
+ return CGI::scrolling_list( -name => 'field_value',
+ -values => \@authorised_values,
+ -default => $value,
+ -labels => \%authorised_lib,
+ -size => 1,
+ -multiple => 0 );
+ }
+
+ sub build_tabs ($$$) {
+ my($template, $record, $dbh) = @_;
+
+ # fill arrays
+ my @loop_data =();
+ 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);
+ 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};
+ # if breeding is not empty
+ if ($record ne -1) {
+ my ($x,$value) = find_value($tag,$subfield,$record);
+ $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>";
+ }
+
+ # if breeding is empty
+ } else {
+ my ($x,$value);
+ ($x,$value) = find_value($tag,$subfield,$record) if ($record ne -1);
+ $value=char_decode($value) unless ($is_a_modif);
+ 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} = \@subfields_data;
+ push (@loop_data, \%tag_data);
+ }
+ }
+ $template->param($tabloop."XX" =>\@loop_data);
+ }
+ }
+
+
+ sub build_hidden_data () {
+ # build hidden data =>
+ # we store everything, even if we show only requested subfields.
+
+ my @loop_data =();
+ my $i=0;
+ foreach my $tag (keys %{$tagslib}) {
+ my $previous_tag = '';
+
+ # loop through each subfield
+ foreach my $subfield (keys %{$tagslib->{$tag}}) {
+ next if ($subfield eq 'lib');
+ next if ($subfield eq 'tab');
+ next if ($subfield eq 'mandatory');
+ next if ($tagslib->{$tag}->{$subfield}->{'tab'} ne "-1");
+ my %subfield_data;
+ $subfield_data{marc_lib}=$tagslib->{$tag}->{$subfield}->{lib};
+ $subfield_data{marc_mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
+ $subfield_data{marc_repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
+ $subfield_data{marc_value}="<input type=\"hidden\" name=\"field_value[]\">";
+ push(@loop_data, \%subfield_data);
+ $i++
+ }
+ }
+ }
+
+
my $input = new CGI;
my $error = $input->param('error');
***************
*** 108,117 ****
});
! my $tagslib = &MARCgettagslib($dbh,1);
my $record=-1;
$record = MARCgetbiblio($dbh,$bibid) if ($bibid);
#warn "1= ".$record->as_formatted;
$record = MARCfindbreeding($dbh,$breedingid) if ($breedingid);
! my $is_a_modif=0;
my ($oldbiblionumtagfield,$oldbiblionumtagsubfield);
my ($oldbiblioitemnumtagfield,$oldbiblioitemnumtagsubfield,$bibitem,$oldbiblioitemnumber);
--- 282,291 ----
});
! $tagslib = &MARCgettagslib($dbh,1);
my $record=-1;
$record = MARCgetbiblio($dbh,$bibid) if ($bibid);
#warn "1= ".$record->as_formatted;
$record = MARCfindbreeding($dbh,$breedingid) if ($breedingid);
! $is_a_modif=0;
my ($oldbiblionumtagfield,$oldbiblionumtagsubfield);
my ($oldbiblioitemnumtagfield,$oldbiblioitemnumtagsubfield,$bibitem,$oldbiblioitemnumber);
***************
*** 150,332 ****
}
# now, redirect to additem page
! print "Content-Type: text/html\n\n<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=additem.pl?bibid=$bibid\"></html>";
exit;
#------------------------------------------------------------------------------------------------------------------------------
} else {
#------------------------------------------------------------------------------------------------------------------------------
! # fill arrays
! my @loop_data =();
! 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 eq 'lib'); # skip lib and tabs, which are koha internal
! next if ($subfield eq 'tab');
! next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
! 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{mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
! $subfield_data{repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
! # if breeding is not empty
! if ($record ne -1) {
! my ($x,$value) = find_value($tag,$subfield,$record);
! $value=char_decode($value) unless ($is_a_modif);
! $indicator = $x if $x;
! if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
! my @authorised_values;
! my %authorised_lib;
! # builds list, depending on authorised value...
! #---- branch
! if ($tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) {
! my $sth=$dbh->prepare("select branchcode,branchname from branches");
! $sth->execute;
! push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory});
! while (my ($branchcode,$branchname) = $sth->fetchrow_array) {
! push @authorised_values, $branchcode;
! $authorised_lib{$branchcode}=$branchname;
! }
! #----- itemtypes
! } elsif ($tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes") {
! my $sth=$dbh->prepare("select itemtype,description from itemtypes");
! $sth->execute;
! push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory});
! while (my ($itemtype,$description) = $sth->fetchrow_array) {
! push @authorised_values, $itemtype;
! $authorised_lib{$itemtype}=$description;
! }
! #---- "true" authorised value
! } else {
! $authorised_values_sth->execute($tagslib->{$tag}->{$subfield}->{authorised_value});
! push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory});
! while (my ($value,$lib) = $authorised_values_sth->fetchrow_array) {
! push @authorised_values, $value;
! $authorised_lib{$value}=$lib;
! }
! }
! $subfield_data{marc_value}= CGI::scrolling_list(-name=>'field_value',
! -values=> \@authorised_values,
! -default=>"$value",
! -labels => \%authorised_lib,
! -size=>1,
! -multiple=>0,
! );
! } 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>";
! }
! # if breeding is empty
! } else {
! my ($x,$value);
! ($x,$value) = find_value($tag,$subfield,$record) if ($record ne -1);
! $value=char_decode($value) unless ($is_a_modif);
! if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
! my @authorised_values;
! my %authorised_lib;
! # builds list, depending on authorised value...
! #---- branch
! if ($tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) {
! my $sth=$dbh->prepare("select branchcode,branchname from branches order by branchcode");
! $sth->execute;
! push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory});
! while (my ($branchcode,$branchname) = $sth->fetchrow_array) {
! push @authorised_values, $branchcode;
! $authorised_lib{$branchcode}=$branchname;
! }
! #----- itemtypes
! } elsif ($tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes") {
! my $sth=$dbh->prepare("select itemtype,description from itemtypes order by itemtype");
! $sth->execute;
! push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory});
! while (my ($itemtype,$description) = $sth->fetchrow_array) {
! push @authorised_values, $itemtype;
! $authorised_lib{$itemtype}=$description;
! }
! #---- "true" authorised value
! } else {
! $authorised_values_sth->execute($tagslib->{$tag}->{$subfield}->{authorised_value});
! push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory});
! while (my ($value,$lib) = $authorised_values_sth->fetchrow_array) {
! push @authorised_values, $value;
! $authorised_lib{$value}=$lib;
! }
! }
! $subfield_data{marc_value}= CGI::scrolling_list(-name=>'field_value',
! -values=> \@authorised_values,
! -default=>"$value",
! -labels => \%authorised_lib,
! -size=>1,
! -multiple=>0,
! );
! } 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\" size=47 maxlength=255 DISABLE READONLY 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} = \@subfields_data;
! push (@loop_data, \%tag_data);
! }
! }
! $template->param($tabloop."XX" =>\@loop_data);
! }
! # now, build hidden data => we store everything, even if we show only requested subfields.
! my @loop_data =();
! my $i=0;
! foreach my $tag (keys %{$tagslib}) {
! my $previous_tag = '';
! # loop through each subfield
! foreach my $subfield (keys %{$tagslib->{$tag}}) {
! next if ($subfield eq 'lib');
! next if ($subfield eq 'tab');
! next if ($tagslib->{$tag}->{$subfield}->{'tab'} ne "-1");
! my %subfield_data;
! $subfield_data{marc_lib}=$tagslib->{$tag}->{$subfield}->{lib};
! $subfield_data{marc_mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
! $subfield_data{marc_repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
! $subfield_data{marc_value}="<input type=\"hidden\" name=\"field_value[]\">";
! push(@loop_data, \%subfield_data);
! $i++
! }
! }
$template->param(
! oldbiblionumber => $oldbiblionumber,
! bibid => $bibid,
! oldbiblionumtagfield => $oldbiblionumtagfield,
! oldbiblionumtagsubfield => $oldbiblionumtagsubfield,
! oldbiblioitemnumtagfield => $oldbiblioitemnumtagfield,
! oldbiblioitemnumtagsubfield => $oldbiblioitemnumtagsubfield,
! oldbiblioitemnumber => $oldbiblioitemnumber);
}
output_html_with_http_headers $input, $cookie, $template->output;
--- 324,342 ----
}
# now, redirect to additem page
! print $input->redirect("additem.pl?bibid=$bibid");
exit;
#------------------------------------------------------------------------------------------------------------------------------
} else {
#------------------------------------------------------------------------------------------------------------------------------
! build_tabs ($template, $record, $dbh);
! build_hidden_data;
$template->param(
! oldbiblionumber => $oldbiblionumber,
! bibid => $bibid,
! oldbiblionumtagfield => $oldbiblionumtagfield,
! oldbiblionumtagsubfield => $oldbiblionumtagsubfield,
! oldbiblioitemnumtagfield => $oldbiblioitemnumtagfield,
! oldbiblioitemnumtagsubfield => $oldbiblioitemnumtagsubfield,
! oldbiblioitemnumber => $oldbiblioitemnumber );
}
output_html_with_http_headers $input, $cookie, $template->output;
Index: additem.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/additem.pl,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** additem.pl 2 Feb 2003 07:18:38 -0000 1.13
--- additem.pl 3 Feb 2003 18:46:03 -0000 1.14
***************
*** 27,30 ****
--- 27,31 ----
use C4::Biblio;
use C4::Context;
+ use C4::Koha; # XXX subfield_is_koha_internal_p
use HTML::Template;
use MARC::File::USMARC;
***************
*** 167,172 ****
# loop through each subfield
foreach my $subfield (sort keys %{$tagslib->{$tag}}) {
! next if ($subfield eq 'lib');
! next if ($subfield eq 'tab');
next if ($tagslib->{$tag}->{$subfield}->{'tab'} ne "10");
my %subfield_data;
--- 168,172 ----
# 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 "10");
my %subfield_data;
More information about the Koha-cvs
mailing list