[Koha-cvs] koha C4/AuthoritiesMarc.pm C4/Biblioadd.pm auth... [rel_TG]

Tumer Garip tgarip at neu.edu.tr
Wed Mar 28 04:50:28 CEST 2007


CVSROOT:	/sources/koha
Module name:	koha
Branch:		rel_TG
Changes by:	Tumer Garip <tgarip1957>	07/03/28 02:50:28

Modified files:
	C4             : AuthoritiesMarc.pm Biblioadd.pm 
	authorities    : authorities.pl 

Log message:
	removing subs from authorities-- using biblioadd.pm

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/AuthoritiesMarc.pm?cvsroot=koha&only_with_tag=rel_TG&r1=1.37.2.2&r2=1.37.2.3
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Biblioadd.pm?cvsroot=koha&only_with_tag=rel_TG&r1=1.1.2.1&r2=1.1.2.2
http://cvs.savannah.gnu.org/viewcvs/koha/authorities/authorities.pl?cvsroot=koha&only_with_tag=rel_TG&r1=1.18.2.2&r2=1.18.2.3

Patches:
Index: C4/AuthoritiesMarc.pm
===================================================================
RCS file: /sources/koha/koha/C4/AuthoritiesMarc.pm,v
retrieving revision 1.37.2.2
retrieving revision 1.37.2.3
diff -u -b -r1.37.2.2 -r1.37.2.3
--- C4/AuthoritiesMarc.pm	25 Mar 2007 23:46:14 -0000	1.37.2.2
+++ C4/AuthoritiesMarc.pm	28 Mar 2007 02:50:28 -0000	1.37.2.3
@@ -121,7 +121,7 @@
 $length=10 unless $length;
 my @oAuth;
 my $i;
- $oAuth[0]=C4::Context->Zconn("authorityserver");
+ $oAuth[0]=C4::Context->Zconn("authorityserver","xml","F");
 my ($mainentry)=MARCfind_attr_from_kohafield("mainentry");
 my ($allentry)=MARCfind_attr_from_kohafield("allentry");
 
@@ -849,7 +849,7 @@
 
 =cut
 
-# $Id: AuthoritiesMarc.pm,v 1.37.2.2 2007/03/25 23:46:14 tgarip1957 Exp $
+# $Id: AuthoritiesMarc.pm,v 1.37.2.3 2007/03/28 02:50:28 tgarip1957 Exp $
 
 # Revision 1.30  2006/09/06 16:21:03  tgarip1957
 # Clean up before final commits

Index: C4/Biblioadd.pm
===================================================================
RCS file: /sources/koha/koha/C4/Attic/Biblioadd.pm,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- C4/Biblioadd.pm	25 Mar 2007 23:46:14 -0000	1.1.2.1
+++ C4/Biblioadd.pm	28 Mar 2007 02:50:28 -0000	1.1.2.2
@@ -25,7 +25,7 @@
 use MARC::File::USMARC;
 use C4::Biblio;
 use Data::Dumper;
-use vars qw( $tagslib);
+#use vars qw( $tagslib);
 use vars qw( $authorised_values_sth);
 
 my $format="USMARC";
@@ -209,7 +209,7 @@
  builds the <input ...> entry for a subfield.
 =cut
 sub create_input  {
-	my ($tag,$subfield,$value,$i,$tabloop,$rec,$authorised_values_sth,$id,$tagslib) = @_;	
+	my ($tag,$subfield,$value,$i,$tabloop,$rec,$authorised_values_sth,$id,$tagslib,$authority) = @_;	
 	my $dbh=C4::Context->dbh;
 	$value =~ s/"/&quot;/g;
 	my %subfield_data;
@@ -226,10 +226,13 @@
 	if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
 		$subfield_data{marc_value}= build_authorized_values_list($tag, $subfield, $value, $dbh,$authorised_values_sth,$tagslib);
 	# it's an  authority field
-	} elsif ($tagslib->{$tag}->{$subfield}->{authtypecode}) {
+	} elsif ($tagslib->{$tag}->{$subfield}->{authtypecode} && !$authority) {
 		
 		$subfield_data{marc_value}="<input onblur=\"this.style.backgroundColor='#ffffff';\" onfocus=\"this.style.backgroundColor='#ffffff;'\"\" tabindex=\"1\" type=\"text\"   name=\"field_value\" id=\"field_value$id\" value=\"$value\" size=\"40\" maxlength=\"255\" DISABLE READONLY> <a  style=\"cursor: help;\" href=\"javascript:Dopop('../authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$id',$id);\">...</a>";
 	# it's a plugin field
+	} elsif ($tagslib->{$tag}->{$subfield}->{link} && $authority) {
+		$subfield_data{marc_value}="<input onblur=\"this.style.backgroundColor='#ffffff';\" onfocus=\"this.style.backgroundColor='#ffffff;'\" tabindex=\"1\" type=\"text\" name=\"field_value\" id=\"field_value$id\" value=\"$value\" size=\"40\" maxlength=\"255\" DISABLE READONLY> <a  style=\"cursor: help;\" href=\"javascript:Dopop('../authorities/auth_linker.pl?index=$id',$id);\">...</a>";
+	
 	} elsif ($tagslib->{$tag}->{$subfield}->{'value_builder'}) {
 		# opening plugin. Just check wether we are on a developper computer on a production one
 		# (the cgidir differs)
@@ -260,14 +263,15 @@
 }
 
 sub build_tabs {
-    my($template, $xmlhash, $dbh,$addedfield,$tagslib,$authorised_values_sth) = @_;
+    my($template, $xmlhash, $dbh,$addedfield,$tagslib,$authorised_values_sth,$authority) = @_;
     # fill arrays
     my @loop_data =();
     my $tag;
     my $i=0;
 my $id=100;
-
-my ($biblionumtagfield,$biblionumtagsubfield) = &MARCfind_marc_from_kohafield($dbh,"biblionumber","biblios");
+my ($biblionumtagfield,$biblionumtagsubfield);
+ ($biblionumtagfield,$biblionumtagsubfield) = &MARCfind_marc_from_kohafield("biblionumber","biblios") unless $authority;
+ ($biblionumtagfield,$biblionumtagsubfield)=MARCfind_marc_from_kohafield("authid","authorities") if $authority;
 
 my $biblio;
 my $controlfields;
@@ -314,7 +318,7 @@
 							my $value=$code->{'content'};
 							$definedsubfields{$tag.$subfield}=1 ;
 							 $built{$tag}=1;
-							push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib)) ;
+							push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority)) ;
 							$i++ ;
 		   				}
 					      } ##each subfield
@@ -329,7 +333,7 @@
 						next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
 						next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) gt "1")  ); #check for visibility flag
 						next if ($definedsubfields{$tag.$subfield} );
-						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib));
+						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority));
 						$definedsubfields{$tag.$subfield}=1;
 						$i++;
 					}
@@ -354,7 +358,7 @@
 					my @subfields_data;
 					my $value=$leader->[0] if $leader->[0];
 					$tagdefined{$tag}=1 ;
-					push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib));					
+					push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority));					
 					$i++;
 					if ($#subfields_data >= 0) {
 						my %tag_data;
@@ -374,7 +378,7 @@
 					$tagdefined{$tag}=1 ;
 					my $value=$control->{'content'} ;
 					$definedsubfields{$tag.'@'}=1;
-					push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib));					
+					push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority));					
 					$i++;
 					
 					   $built{$tag}=1;
@@ -404,7 +408,7 @@
 						next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
 						next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) gt "1")  ); #check for visibility flag
 						
-						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib));
+						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority));
 						$tagdefined{$tag.$subfield}=1;
 						$i++;
 					}
@@ -433,7 +437,7 @@
 						next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
 						next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) gt "1")  ); #check for visibility flag
 						$addedfield="";	
-						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib));
+						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority));
 						$i++;
 							}
 						if ($#subfields_data >= 0) {
@@ -458,7 +462,7 @@
 					next if (length $subfield !=1);
 					next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) gt "1")  ); #check for visibility flag
 					next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-					push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib));
+					push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id,$tagslib,$authority));
 					$i++;
 				}
 				if ($#subfields_data >= 0) {

Index: authorities/authorities.pl
===================================================================
RCS file: /sources/koha/koha/authorities/authorities.pl,v
retrieving revision 1.18.2.2
retrieving revision 1.18.2.3
diff -u -b -r1.18.2.2 -r1.18.2.3
--- authorities/authorities.pl	26 Mar 2007 02:19:21 -0000	1.18.2.2
+++ authorities/authorities.pl	28 Mar 2007 02:50:28 -0000	1.18.2.3
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: authorities.pl,v 1.18.2.2 2007/03/26 02:19:21 tgarip1957 Exp $
+# $Id: authorities.pl,v 1.18.2.3 2007/03/28 02:50:28 tgarip1957 Exp $
 
 # Copyright 2000-2002 Katipo Communications
 #
@@ -29,404 +29,14 @@
 use C4::Context;
 use C4::Koha; # XXX subfield_is_koha_internal_p
 use Encode;
+use C4::Biblioadd;
 
-use vars qw( $tagslib);
-use vars qw( $authorised_values_sth);
-use vars qw( $is_a_modif );
 my $input = new CGI;
 my $z3950 = $input->param('z3950');
 my $logstatus=C4::Context->preference('Activate_log');
 my $xml;
 my $itemtype; # created here because it can be used in build_authorized_values_list sub
-
-
-
-
-
-=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 order by branchname");
-	$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 description");
-		$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;
-		}
-		$value=$itemtype unless ($value);
-
-	#---- "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,
-				-override => 1,
-				-size     => 1,
-				-multiple => 0 );
-}
-
-
-=item create_input
- builds the <input ...> entry for a subfield.
-=cut
-sub create_input () {
-	my ($tag,$subfield,$value,$i,$tabloop,$rec,$authorised_values_sth,$id) = @_;	
-	my $dbh=C4::Context->dbh;
-	$value =~ s/"/&quot;/g;
-	my %subfield_data;
-	$subfield_data{id}=$id;
-	$subfield_data{tag}=$tag;
-	$subfield_data{subfield}=$subfield;
-	$subfield_data{marc_lib}="<span id=\"error$i\">".$tagslib->{$tag}->{$subfield}->{lib}."</span>";
-	$subfield_data{marc_lib_plain}=$tagslib->{$tag}->{$subfield}->{lib};
-	$subfield_data{tag_mandatory}=$tagslib->{$tag}->{mandatory};
-	$subfield_data{mandatory}=$tagslib->{$tag}->{$subfield}->{mandatory};
-	$subfield_data{repeatable}=$tagslib->{$tag}->{$subfield}->{repeatable};
-	$subfield_data{index} = $i;
-	$subfield_data{visibility} = "display:none" if (substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) gt "0") ; #check parity
-	# it's an authorised field
-	if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
-		$subfield_data{marc_value}= build_authorized_values_list($tag, $subfield, $value, $dbh,$authorised_values_sth);
-	# it's linking authority field to another authority
-	} elsif ($tagslib->{$tag}->{$subfield}->{link}) {
-		$subfield_data{marc_value}="<input onblur=\"this.style.backgroundColor='#ffffff';\" onfocus=\"this.style.backgroundColor='#ffffff;'\" tabindex=\"1\" type=\"text\" name=\"field_value\" id=\"field_value$id\" value=\"$value\" size=\"40\" maxlength=\"255\" DISABLE READONLY> <a  style=\"cursor: help;\" href=\"javascript:Dopop('../authorities/auth_linker.pl?index=$id',$id);\">...</a>";
-	
-		# it's a plugin field
-	} elsif ($tagslib->{$tag}->{$subfield}->{'value_builder'}) {
-		# opening plugin. Just check wether we are on a developper computer on a production one
-		# (the cgidir differs)
-		my $cgidir = C4::Context->intranetdir ."/cgi-bin/value_builder";
-		unless (opendir(DIR, "$cgidir")) {
-			$cgidir = C4::Context->intranetdir."/value_builder";
-		} 
-		my $plugin=$cgidir."/".$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 tabindex=\"1\" type=\"text\"  name=\"field_value\" id=\"field_value$id\"  value=\"$value\" size=\"40\" maxlength=\"255\" DISABLE READONLY OnFocus=\"javascript:Focus$function_name($i)\" OnBlur=\"javascript:Blur$function_name($i); \"> <a  style=\"cursor: help;\" href=\"javascript:Clic$function_name($i)\">...</a> $javascript";
-	# it's an hidden field
-	} elsif  ($tag eq '') {
-		$subfield_data{marc_value}="<input onblur=\"this.style.backgroundColor='#ffffff';\" onfocus=\"this.style.backgroundColor='#ffffff'; \" tabindex=\"1\" type=\"hidden\" name=\"field_value\" id=\"field_value$id\"  value=\"$value\">";
-	} elsif  (substr($tagslib->{$tag}->{$subfield}->{'hidden'},2,1) gt "1") {
-
-		$subfield_data{marc_value}="<input onblur=\"this.style.backgroundColor='#ffffff';\" onfocus=\"this.style.backgroundColor='#ffffff'; \" tabindex=\"1\" type=\"text\" name=\"field_value\" id=\"field_value$id\"   value=\"$value\" size=\"40\" maxlength=\"255\" >";
-	# it's a standard field
-	} else {
-		if (length($value) >100) {
-			$subfield_data{marc_value}="<textarea tabindex=\"1\" name=\"field_value\" id=\"field_value$id\"  cols=\"40\" rows=\"5\" >$value</textarea>";
-		} else {
-			$subfield_data{marc_value}="<input onblur=\"this.style.backgroundColor='#ffffff';\" onfocus=\"this.style.backgroundColor='#ffffff'; \" tabindex=\"1\" type=\"text\" name=\"field_value\" id=\"field_value$id\"  value=\"$value\" size=\"50\">"; #"
-		}
-	}
-	return \%subfield_data;
-}
-
-sub build_tabs  ($$$;$){
-    my($template, $xmlhash, $dbh,$addedfield) = @_;
-    # fill arrays
-    my @loop_data =();
-    my $tag;
-    my $i=0;
-my $id=100;
-my ($authidtagfield,$authidtagsubfield)=MARCfind_marc_from_kohafield("authid","authorities");
-	my $authorised_values_sth = $dbh->prepare("select authorised_value,lib
-		from authorised_values
-		where category=? order by lib");
-my $author;
-my $controlfields;
-my $leader;
-if ($xmlhash){
- $author=$xmlhash->{'datafield'};
- $controlfields=$xmlhash->{'controlfield'};
- $leader=$xmlhash->{'leader'};
-}
-    my @BIG_LOOP;
-my %built;
-# loop through each tab 0 through 9
-	for (my $tabloop = 0; $tabloop <= 9; $tabloop++) {
-		my @loop_data = ();
-		foreach my $tag (sort(keys (%{$tagslib}))) {
-			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 ($xmlhash) {
-			####
-		
-			my %tagdefined;
-			my %definedsubfields;
-			my $hiddenrequired;
-			my ($ind1,$ind2);
-			
-		 if ($tag>9){
-			next if ($tag eq $authidtagfield); #we do not want authid to duplicate
-
-			foreach my $data (@$author){							
-					$hiddenrequired=0;
-					my @subfields_data;
-					undef %definedsubfields;
-   	 			 if ($data->{'tag'} eq $tag){
-					$tagdefined{$tag}=1 ;
-					   if ($built{$tag}==1){
-						$hiddenrequired=1;
-					    }
-					    $ind1="  ";
-					      $ind2="  ";		
-					      foreach my $subfieldcode ( $data->{'subfield'}){
-		   				 foreach my $code ( @$subfieldcode){	
-							next if ($tagslib->{$tag}->{$code->{'code'}}->{tab} ne $tabloop);						
-							my $subfield=$code->{'code'}  ;
-							my $value=$code->{'content'};
-							$definedsubfields{$tag.$subfield}=1 ;
-							 $built{$tag}=1;
-							push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id)) ;
-							$i++ ;
-		   				}
-					      } ##each subfield
-					    $ind1=$data->{'ind1'};
-					    $ind2=	$data->{'ind2'};
-					  
-					if ($hiddenrequired && $#loop_data >=0 && $loop_data[$#loop_data]->{'tag'} eq $tag) {
-						my @hiddensubfields_data;
-						my %tag_data;
-						push(@hiddensubfields_data, &create_input('','','',$i,$tabloop,$xmlhash,$authorised_values_sth,$id));
-						$tag_data{tag} = '';
-						$tag_data{tag_lib} = '';
-						$tag_data{indicator} = '';
-						$tag_data{subfield_loop} = \@hiddensubfields_data;
-						push (@loop_data, \%tag_data);
-						$i++;
-					}
-					# now, loop again to add parameter subfield that are not in the MARC::Record
-					
-					foreach my $subfield (sort( keys %{$tagslib->{$tag}})) {
-						next if (length $subfield !=1);
-						next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-						next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) >1)  ); #check for visibility flag
-						next if ($definedsubfields{$tag.$subfield} );
-						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id));
-						$definedsubfields{$tag.$subfield}=1;
-						$i++;
-					}
-					if ($#subfields_data >= 0) {
-						my %tag_data;
-						$tag_data{tag} = $tag;
-						$tag_data{tag_lib} = $tagslib->{$tag}->{lib};
-						$tag_data{repeatable} = $tagslib->{$tag}->{repeatable};
-						$tag_data{indicator} = $ind1.$ind2 if ($tag>=10);
-						$tag_data{subfield_loop} = \@subfields_data;
-						push (@loop_data, \%tag_data);
-						
-					}
-					$id++;
-  	  			     }## if tag matches
-			
-			}#eachdata
- 		}else{ ## tag <10
-			next if ($tag eq $authidtagfield); #we do not want authid to duplicate
-
-			        if ($tag eq "000" || $tag eq "LDR"){
-					my $subfield="@";
-					next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-					my @subfields_data;
-					my $value=$leader->[0] if $leader->[0];
-					$tagdefined{$tag}=1 ;
-					push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id));					
-					$i++;
-					if ($#subfields_data >= 0) {
-						my %tag_data;
-						$tag_data{tag} = $tag;
-						$tag_data{tag_lib} = $tagslib->{$tag}->{lib};
-						$tag_data{repeatable} = $tagslib->{$tag}->{repeatable};
-						$tag_data{subfield_loop} = \@subfields_data;
-                                                			$tag_data{fixedfield} = 1;
-						push (@loop_data, \%tag_data);
-					}
-			         }else{
-	   			 foreach my $control (@$controlfields){
-					my $subfield="@";
-					next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-					next if ($tagslib->{$tag} eq $authidtagfield);
-					my @subfields_data;
-					if ($control->{'tag'} eq $tag){
-						$hiddenrequired=0;
-						$tagdefined{$tag}=1;
-						 if ($built{$tag}==1){$hiddenrequired=1;}
-						my $value=$control->{'content'} ;
-						$definedsubfields{$tag.'@'}=1;
-						push(@subfields_data, &create_input($tag,$subfield,$value,$i,$tabloop,$xmlhash,$authorised_values_sth,$id));					
-						$i++;
-					
-					   	$built{$tag}=1;
-					###hiddenrequired
-					if ($#subfields_data >= 0) {
-						my %tag_data;
-						$tag_data{tag} = $tag;
-						$tag_data{tag_lib} = $tagslib->{$tag}->{lib};
-						$tag_data{repeatable} = $tagslib->{$tag}->{repeatable};
-						$tag_data{subfield_loop} = \@subfields_data;
-						$tag_data{fixedfield} = 1;
-						push (@loop_data, \%tag_data);
-					}
-					$id++;
-					}## tag matches
-	  			 }# each control
-			       }
-   			}##tag >9
-
-
-			##### Any remaining tag
-				my @subfields_data;
-				# now, loop again to add parameter subfield that are not in the MARC::Record
-					foreach my $subfield (sort( keys %{$tagslib->{$tag}})) {
-						next if ($tagdefined{$tag} );
-						next if (length $subfield !=1);
-						next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-						next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) > 1) ); #check for visibility flag
-						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id));
-						$tagdefined{$tag.$subfield}=1;
-						$i++;
-					}
-					if ($#subfields_data >= 0) {
-						my %tag_data;
-						$tag_data{tag} = $tag;
-						$tag_data{tag_lib} = $tagslib->{$tag}->{lib};
-						$tag_data{repeatable} = $tagslib->{$tag}->{repeatable};
-						$tag_data{indicator} = $ind1.$ind2 if ($tag>=10);
-						$tag_data{subfield_loop} = \@subfields_data;
-						if ($tag<10) {
-                                                			$tag_data{fixedfield} = 1;
-                                        				}
-
-						push (@loop_data, \%tag_data);
-					}
-
-					
-					if ($addedfield eq $tag) {
-						my %tag_data;
-						my @subfields_data;
-						$id++;
-						$tagdefined{$tag}=1 ;
-						foreach my $subfield (sort( keys %{$tagslib->{$tag}})) {
-						next if (length $subfield !=1);
-						next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-						next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) >1)  ); #check for visibility flag
-						$addedfield="";	
-						push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id));
-						$i++;
-							}
-						if ($#subfields_data >= 0) {
-						$tag_data{tag} = $tag;
-						$tag_data{tag_lib} = $tagslib->{$tag}->{lib};
-						$tag_data{repeatable} = $tagslib->{$tag}->{repeatable};
-						$tag_data{indicator} = ' ' if ($tag>=10);
-						$tag_data{subfield_loop} = \@subfields_data;
-							if ($tag<10) {
-                                                				$tag_data{fixedfield} = 1;
-                                        					}
-						push (@loop_data, \%tag_data);
-											
-						}
-				
-					}
-				
-	# if breeding is empty
-			} else {
-				my @subfields_data;
-				foreach my $subfield (sort(keys %{$tagslib->{$tag}})) {
-					next if (length $subfield !=1);
-					next if ((substr($tagslib->{$tag}->{$subfield}->{hidden},2,1) >1)  ); #check for visibility flag
-					next if ($tagslib->{$tag}->{$subfield}->{tab} ne $tabloop);
-					push(@subfields_data, &create_input($tag,$subfield,'',$i,$tabloop,$xmlhash,$authorised_values_sth,$id));
-					$i++;
-				}
-				if ($#subfields_data >= 0) {
-					my %tag_data;
-					$tag_data{tag} = $tag;
-					$tag_data{tag_lib} = $tagslib->{$tag}->{lib};
-					$tag_data{repeatable} = $tagslib->{$tag}->{repeatable};
-					$tag_data{indicator} = $indicator;
-					$tag_data{subfield_loop} = \@subfields_data;
-					$tag_data{tagfirstsubfield} = $tag_data{subfield_loop}[0];
-					if ($tag<10) {
-						$tag_data{fixedfield} = 1;
-					}
-					push (@loop_data, \%tag_data);
-				}
-			}
-		$id++;
-	}
-	if ($#loop_data >=0) {
-            my %big_loop_line;
-            $big_loop_line{number}=$tabloop;
-            $big_loop_line{innerloop}=\@loop_data;
-            push @BIG_LOOP,\%big_loop_line;
-            }	
-#		$template->param($tabloop."XX" =>\@loop_data);
-		$template->param(BIG_LOOP => \@BIG_LOOP);
-}## tab loop
-}
-
-
-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 ($subfield eq 'repeatable');
-	    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 $addedfield;
 
 # ======================== 
 #          MAIN 
@@ -442,6 +52,9 @@
 my $authtypecode = $input->param('authtypecode');
 
 my $dbh = C4::Context->dbh;
+my $authorised_values_sth = $dbh->prepare("select authorised_value,lib
+		from authorised_values
+		where category=? order by lib");
 $authtypecode = &AUTHfind_authtypecode($dbh,$authid) if !$authtypecode;
 
 
@@ -454,7 +67,7 @@
 			     debug => 1,
 			     });
 $template->param(nonav   => $nonav,index=>$myindex,authtypecode=>$authtypecode,);
-$tagslib = AUTHgettagslib($dbh,1,$authtypecode);
+my $tagslib = AUTHgettagslib($dbh,1,$authtypecode);
 
 my $xmlhash;
 my $xml;
@@ -463,7 +76,7 @@
 
 my ($oldauthnumtagfield,$oldauthnumtagsubfield);
 my ($oldauthtypetagfield,$oldauthtypetagsubfield);
-$is_a_modif=0;
+my $is_a_modif=0;
 if ($authid) {
 	$is_a_modif=1;
 	($oldauthnumtagfield,$oldauthnumtagsubfield) = MARCfind_marc_from_kohafield("authid","authorities");
@@ -520,8 +133,9 @@
 FINAL:
 #warn "duplicate";
 	# it may be a duplicate, warn the user and do nothing
-		build_tabs ($template, $xmlhash, $dbh);
-		build_hidden_data;
+		build_tabs ($template, $xmlhash, $dbh,$addedfield,$tagslib,$authorised_values_sth,1);
+		$tagslib=build_hidden_data($tagslib);
+
 		$template->param(authid =>$authid,
 			duplicateauthid				=> $duplicateauthid,
 			duplicateauthvalue				=> $duplicateauthvalue,
@@ -541,8 +155,9 @@
 	$xml='<?xml version="1.0" encoding="UTF-8"?>'.$xml;
 	my $xmlhash=XML_xml2hash_onerecord($xml);
 	# adding an empty field
-	build_tabs ($template, $xmlhash, $dbh,$addedfield);
-	build_hidden_data;
+	build_tabs ($template, $xmlhash, $dbh,$addedfield,$tagslib,$authorised_values_sth,1);
+	$tagslib=build_hidden_data($tagslib);
+
 	$template->param(
 		authid                       => $authid,);
 
@@ -560,8 +175,8 @@
 	{
 		$authid = "";
 	}
-	build_tabs ($template, $xmlhash, $dbh);
-	build_hidden_data;
+	build_tabs($template, $xmlhash, $dbh,$addedfield,$tagslib,$authorised_values_sth,1);
+		$tagslib=build_hidden_data($tagslib);
 	$template->param(oldauthtypetagfield=>$oldauthtypetagfield, oldauthtypetagsubfield=>$oldauthtypetagsubfield,
 		oldauthnumtagfield=>$oldauthnumtagfield, oldauthnumtagsubfield=>$oldauthnumtagsubfield,
 		authid                      => $authid , authtypecode=>$authtypecode,	);





More information about the Koha-cvs mailing list