-# now, build the item form for entering a new item
-my @loop_data =();
-my $i=0;
-my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
-my $query = qq{SELECT authorised_value, lib FROM authorised_values};
-$query .= qq{ LEFT JOIN authorised_values_branches ON ( id = av_id ) } if $branch_limit;
-$query .= qq{ WHERE category = ?};
-$query .= qq{ AND ( branchcode = ? OR branchcode IS NULL ) } if $branch_limit;
-$query .= qq{ GROUP BY lib ORDER BY lib, lib_opac};
-my $authorised_values_sth = $dbh->prepare( $query );
-
-my $branches = GetBranchesLoop(); # build once ahead of time, instead of multiple times later.
-
-# Adding a default choice, in case the user does not want to modify the branch
-my $nochange_branch = { branchname => '', value => '', selected => 1 };
-unshift (@$branches, $nochange_branch);
-
-my $pref_itemcallnumber = C4::Context->preference('itemcallnumber');
-
-
-foreach my $tag (sort keys %{$tagslib}) {
- # 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");
- # barcode and stocknumber are not meant to be batch-modified
- next if $tagslib->{$tag}->{$subfield}->{'kohafield'} eq 'items.barcode';
- next if $tagslib->{$tag}->{$subfield}->{'kohafield'} eq 'items.stocknumber';
- my %subfield_data;
-
- my $index_subfield = int(rand(1000000));
- if ($subfield eq '@'){
- $subfield_data{id} = "tag_".$tag."_subfield_00_".$index_subfield;
- } else {
- $subfield_data{id} = "tag_".$tag."_subfield_".$subfield."_".$index_subfield;
- }
- $subfield_data{tag} = $tag;
- $subfield_data{subfield} = $subfield;
- $subfield_data{random} = int(rand(1000000)); # why do we need 2 different randoms?
- # $subfield_data{marc_lib} = $tagslib->{$tag}->{$subfield}->{lib};
- $subfield_data{marc_lib} ="<span id=\"error$i\" title=\"".$tagslib->{$tag}->{$subfield}->{lib}."\">".$tagslib->{$tag}->{$subfield}->{lib}."</span>";
- $subfield_data{mandatory} = $tagslib->{$tag}->{$subfield}->{mandatory};
- $subfield_data{repeatable} = $tagslib->{$tag}->{$subfield}->{repeatable};
- my ($x,$value);
- $value =~ s/"/"/g;
- if ( !$value && $use_default_values) {
- $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
- # get today date & replace YYYY, MM, DD if provided in the default value
- my ( $year, $month, $day ) = split ',', $today_iso; # FIXME: iso dates don't have commas!
- $value =~ s/YYYY/$year/g;
- $value =~ s/MM/$month/g;
- $value =~ s/DD/$day/g;
- }
- $subfield_data{visibility} = "display:none;" if (($tagslib->{$tag}->{$subfield}->{hidden} > 4) || ($tagslib->{$tag}->{$subfield}->{hidden} < -4));
- # testing branch value if IndependentBranches.
-
- my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
- my $attributes = qq($attributes_no_value value="$value" );
-
- if ( $tagslib->{$tag}->{$subfield}->{authorised_value} ) {
- my @authorised_values;
- my %authorised_lib;
- # builds list, depending on authorised value...
-
- if ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "branches" ) {
- foreach my $thisbranch (@$branches) {
- push @authorised_values, $thisbranch->{value};
- $authorised_lib{$thisbranch->{value}} = $thisbranch->{branchname};
- }
- $value = "";
- }
- elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) {
- push @authorised_values, "";
- my $sth = $dbh->prepare("select itemtype,description from itemtypes order by description");
- $sth->execute;
- while ( my ( $itemtype, $description ) = $sth->fetchrow_array ) {
- push @authorised_values, $itemtype;
- $authorised_lib{$itemtype} = $description;
- }
- $value = "";
-
- #---- class_sources
- }
- elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) {
- push @authorised_values, "" unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
-
- my $class_sources = GetClassSources();
- my $default_source = C4::Context->preference("DefaultClassificationSource");
-
- foreach my $class_source (sort keys %$class_sources) {
- next unless $class_sources->{$class_source}->{'used'} or
- ($value and $class_source eq $value) or
- ($class_source eq $default_source);
- push @authorised_values, $class_source;
- $authorised_lib{$class_source} = $class_sources->{$class_source}->{'description'};
- }
- $value = '';
-
- #---- "true" authorised value
- }
- else {
- push @authorised_values, ""; # unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
- $authorised_values_sth->execute( $tagslib->{$tag}->{$subfield}->{authorised_value}, $branch_limit ? $branch_limit : () );
- while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) {
- push @authorised_values, $value;
- $authorised_lib{$value} = $lib;
- }
- $value="";
- }
- $subfield_data{marc_value} =CGI::scrolling_list( # FIXME: factor out scrolling_list
- -name => "field_value",
- -values => \@authorised_values,
- -default => $value,
- -labels => \%authorised_lib,
- -override => 1,
- -size => 1,
- -multiple => 0,
- -tabindex => 1,
- -id => "tag_".$tag."_subfield_".$subfield."_".$index_subfield,
- -class => "input_marceditor",
- );
- # it's a thesaurus / authority field
- }
- elsif ( $tagslib->{$tag}->{$subfield}->{authtypecode} ) {
- $subfield_data{marc_value} = "<input type=\"text\" $attributes />
- <a href=\"#\" class=\"buttonDot\"
- onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
- ";
- # it's a plugin field
- }
- elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) {
- # opening plugin
- my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
- if (do $plugin) {
- my $temp;
- my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
- my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
- $subfield_data{marc_value} = qq[<input type="text" $attributes
- onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
- onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
- <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
- $javascript];
- } else {
- warn "Plugin Failed: $plugin";
- $subfield_data{marc_value} = "<input type=\"text\" $attributes />"; # supply default input form
- }
- }
- elsif ( $tag eq '' ) { # it's an hidden field
- $subfield_data{marc_value} = qq(<input type="hidden" $attributes />);
- }
- elsif ( $tagslib->{$tag}->{$subfield}->{'hidden'} ) { # FIXME: shouldn't input type be "hidden" ?
- $subfield_data{marc_value} = qq(<input type="text" $attributes />);
- }
- elsif ( length($value) > 100
- or (C4::Context->preference("marcflavour") eq "UNIMARC" and
- 300 <= $tag && $tag < 400 && $subfield eq 'a' )
- or (C4::Context->preference("marcflavour") eq "MARC21" and
- 500 <= $tag && $tag < 600 )
- ) {
- # oversize field (textarea)
- $subfield_data{marc_value} = "<textarea $attributes_no_value>$value</textarea>\n";
- } else {
- # it's a standard field
- $subfield_data{marc_value} = "<input type=\"text\" $attributes />";
- }
-# $subfield_data{marc_value}="<input type=\"text\" name=\"field_value\">";
- push (@loop_data, \%subfield_data);
- $i++
- }
-} # -- End foreach tag
-$authorised_values_sth->finish;
-