X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=admin%2Fmarc_subfields_structure.pl;h=2d10c41e5759a521c5f6782f8045ac54942182cd;hb=93d44d18759d43a09f6c623ffe4fa81dca4dcaa2;hp=0049376da4775cd7a6d6336b7722c980eee09a1a;hpb=ef8171ba425f766b67d9e139194b6a8d570e301e;p=koha-ffzg.git diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl index 0049376da4..2d10c41e57 100755 --- a/admin/marc_subfields_structure.pl +++ b/admin/marc_subfields_structure.pl @@ -4,80 +4,52 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -use strict; -#use warnings; FIXME - Bug 2505 -use C4::Output; -use C4::Auth; -use CGI; +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; +use Encode qw( encode_utf8 ); +use C4::Output qw( output_html_with_http_headers ); +use C4::Auth qw( get_template_and_user ); +use CGI qw ( -utf8 ); use C4::Context; +use Koha::Authority::Types; +use Koha::AuthorisedValueCategories; +use Koha::Filter::MARC::ViewPolicy; -sub string_search { - my ( $searchstring, $frameworkcode ) = @_; - my $dbh = C4::Context->dbh; - $searchstring =~ s/\'/\\\'/g; - my @data = split( ' ', $searchstring ); - my $count = @data; - my $sth = - $dbh->prepare( -"Select * from marc_subfield_structure where (tagfield like ? and frameworkcode=?) order by tagfield" - ); - $sth->execute( "$searchstring%", $frameworkcode ); - my @results; - my $cnt = 0; - my $u = 1; - - while ( my $data = $sth->fetchrow_hashref ) { - push( @results, $data ); - $cnt++; - $u++; - } - $sth->finish; - $dbh->disconnect; - return ( $cnt, \@results ); -} +use List::MoreUtils qw( uniq ); -sub marc_subfield_structure_exists { - my ($tagfield, $tagsubfield, $frameworkcode) = @_; - my $dbh = C4::Context->dbh; - my $sql = "select tagfield from marc_subfield_structure where tagfield = ? and tagsubfield = ? and frameworkcode = ?"; - my $rows = $dbh->selectall_arrayref($sql, {}, $tagfield, $tagsubfield, $frameworkcode); - return @$rows > 0; -} - -my $input = new CGI; +my $input = CGI->new; my $tagfield = $input->param('tagfield'); my $tagsubfield = $input->param('tagsubfield'); my $frameworkcode = $input->param('frameworkcode'); my $pkfield = "tagfield"; my $offset = $input->param('offset'); +$offset = 0 if not defined $offset or $offset < 0; my $script_name = "/cgi-bin/koha/admin/marc_subfields_structure.pl"; my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { - template_name => "admin/marc_subfields_structure.tmpl", + template_name => "admin/marc_subfields_structure.tt", query => $input, type => "intranet", - authnotrequired => 0, - flagsrequired => { parameters => 1 }, - debug => 1, + flagsrequired => { parameters => 'manage_marc_frameworks' }, } ); +my $cache = Koha::Caches->get_instance(); -my $op = $input->param('op'); +my $op = $input->param('op') || ""; $tagfield =~ s/\,//g; if ($op) { @@ -100,9 +72,7 @@ else { ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ( $op eq 'add_form' ) { - my $data; my $dbh = C4::Context->dbh; - my $more_subfields = $input->param("more_subfields") + 1; # builds kohafield tables my @kohafields; @@ -128,24 +98,10 @@ if ( $op eq 'add_form' ) { $sth2->finish; $sth2 = $dbh->prepare("select distinct category from authorised_values"); $sth2->execute; - my @authorised_values; - push @authorised_values, ""; - while ( ( my $category ) = $sth2->fetchrow_array ) { - push @authorised_values, $category; - } - push( @authorised_values, "branches" ); - push( @authorised_values, "itemtypes" ); - push( @authorised_values, "cn_source" ); + my @authorised_values= Koha::AuthorisedValueCategories->search->get_column('category_name'); # build thesaurus categories list - $sth2->finish; - $sth2 = $dbh->prepare("select authtypecode from auth_types"); - $sth2->execute; - my @authtypes; - push @authtypes, ""; - while ( ( my $authtypecode ) = $sth2->fetchrow_array ) { - push @authtypes, $authtypecode; - } + my @authtypes = uniq( "", map { $_->authtypecode } Koha::Authority::Types->search->as_list ); # build value_builder list my @value_builder = (''); @@ -154,14 +110,15 @@ if ( $op eq 'add_form' ) { # 2 cases here : on CVS install, $cgidir does not need a /cgi-bin # on a standard install, /cgi-bin need to be added. # test one, then the other - my $cgidir = C4::Context->intranetdir . "/cgi-bin"; + my $cgidir = C4::Context->config('intranetdir') . "/cgi-bin"; unless ( opendir( DIR, "$cgidir/cataloguing/value_builder" ) ) { - $cgidir = C4::Context->intranetdir; + $cgidir = C4::Context->config('intranetdir'); opendir( DIR, "$cgidir/cataloguing/value_builder" ) || die "can't opendir $cgidir/value_builder: $!"; } while ( my $line = readdir(DIR) ) { - if ( $line =~ /\.pl$/ ) { + if ( $line =~ /\.pl$/ && + $line !~ /EXAMPLE\.pl$/ ) { # documentation purposes push( @value_builder, $line ); } } @@ -169,208 +126,82 @@ if ( $op eq 'add_form' ) { closedir DIR; # build values list - my $sth = - $dbh->prepare( -"select * from marc_subfield_structure where tagfield=? and frameworkcode=?" - ); # and tagsubfield='$tagsubfield'"); - $sth->execute( $tagfield, $frameworkcode ); + my $mss = Koha::MarcSubfieldStructures->search( + { tagfield => $tagfield, frameworkcode => $frameworkcode }, + { order_by => 'display_order' } + )->unblessed; my @loop_data = (); my $i = 0; - while ( $data = $sth->fetchrow_hashref ) { - my %row_data; # get a fresh hash for the row data - $row_data{defaultvalue} = $data->{defaultvalue}; - $row_data{tab} = CGI::scrolling_list( - -name => 'tab', - -id => "tab$i", - -values => - [ '-1', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ], - -labels => { - '-1' => 'ignore', - '0' => '0', - '1' => '1', - '2' => '2', - '3' => '3', - '4' => '4', - '5' => '5', - '6' => '6', - '7' => '7', - '8' => '8', - '9' => '9', - '10' => 'items (10)', - }, - -default => $data->{'tab'}, - -size => 1, - -multiple => 0, - ); - $row_data{tagsubfield} = - $data->{'tagsubfield'} - . "{'tagsubfield'} - . "\" id=\"tagsubfield\" />"; - $row_data{subfieldcode} = $data->{'tagsubfield'} eq '@'?'_':$data->{'tagsubfield'}; - $row_data{urisubfieldcode} = $row_data{subfieldcode} eq '%' ? 'pct' : $row_data{subfieldcode}; - $row_data{liblibrarian} = CGI::escapeHTML( $data->{'liblibrarian'} ); - $row_data{libopac} = CGI::escapeHTML( $data->{'libopac'} ); - $row_data{seealso} = CGI::escapeHTML( $data->{'seealso'} ); - $row_data{kohafield} = CGI::scrolling_list( - -name => "kohafield", - -id => "kohafield$i", - -values => \@kohafields, - -default => "$data->{'kohafield'}", - -size => 1, - -multiple => 0, - ); - $row_data{authorised_value} = CGI::scrolling_list( - -name => "authorised_value", - -id => "authorised_value$i", - -values => \@authorised_values, - -default => $data->{'authorised_value'}, - -size => 1, - -multiple => 0, - ); - $row_data{value_builder} = CGI::scrolling_list( - -name => "value_builder", - -id => "value_builder$i", - -values => \@value_builder, - -default => $data->{'value_builder'}, - -size => 1, - -multiple => 0, - ); - $row_data{authtypes} = CGI::scrolling_list( - -name => "authtypecode", - -id => "authtypecode$i", - -values => \@authtypes, - -default => $data->{'authtypecode'}, - -size => 1, - -multiple => 0, - ); - $row_data{repeatable} = CGI::checkbox( - -name => "repeatable$i", - -checked => $data->{'repeatable'} ? 'checked' : '', - -value => 1, - -label => '', - -id => "repeatable$i" - ); - $row_data{mandatory} = CGI::checkbox( - -name => "mandatory$i", - -checked => $data->{'mandatory'} ? 'checked' : '', - -value => 1, - -label => '', - -id => "mandatory$i" - ); - $row_data{hidden} = CGI::escapeHTML( $data->{hidden} ); - $row_data{isurl} = CGI::checkbox( - -name => "isurl$i", - -id => "isurl$i", - -checked => $data->{'isurl'} ? 'checked' : '', - -value => 1, - -label => '' - ); - $row_data{row} = $i; - $row_data{link} = CGI::escapeHTML( $data->{'link'} ); + for my $m ( @$mss ) { + my %row_data = %$m; # get a fresh hash for the row data + $row_data{subfieldcode} = $m->{tagsubfield}; + $row_data{urisubfieldcode} = $row_data{subfieldcode} eq '%' ? 'pct' : $row_data{subfieldcode}; + $row_data{kohafields} = \@kohafields; + $row_data{authorised_values} = \@authorised_values; + $row_data{value_builders} = \@value_builder; + $row_data{authtypes} = \@authtypes; + $row_data{row} = $i; + + if ( defined $m->{kohafield} + and $m->{kohafield} eq 'biblio.biblionumber' ) + { + my $hidden_opac = Koha::Filter::MARC::ViewPolicy->should_hide_marc( + { + frameworkcode => $frameworkcode, + interface => "opac", + } + )->{biblionumber}; + + my $hidden_intranet = Koha::Filter::MARC::ViewPolicy->should_hide_marc( + { + frameworkcode => $frameworkcode, + interface => "intranet", + } + )->{biblionumber}; + + if ( $hidden_opac or $hidden_intranet ) { + # We should allow editing for fixing it + $row_data{hidden_protected} = 0; + } + else { + $row_data{hidden_protected} = 1; + } + } + push( @loop_data, \%row_data ); $i++; } - # add more_subfields empty lines for add if needed - for ( my $j = 1 ; $j <= 1 ; $j++ ) { - my %row_data; # get a fresh hash for the row data - $row_data{'new_subfield'} = 1; - $row_data{'subfieldcode'} = ''; - - $row_data{tab} = CGI::scrolling_list( - -name => 'tab', - -id => "tab$j", - -values => - [ '-1', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ], - -labels => { - '-1' => 'ignore', - '0' => '0', - '1' => '1', - '2' => '2', - '3' => '3', - '4' => '4', - '5' => '5', - '6' => '6', - '7' => '7', - '8' => '8', - '9' => '9', - '10' => 'items (10)', - }, - -default => "", - -size => 1, - -multiple => 0, - ); - $row_data{tagsubfield} = - "{'tagsubfield'} - . "\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\" />"; - $row_data{liblibrarian} = ""; - $row_data{libopac} = ""; - $row_data{seealso} = ""; - $row_data{kohafield} = CGI::scrolling_list( - -name => 'kohafield', - -id => "kohafield$j", - -values => \@kohafields, - -default => "", - -size => 1, - -multiple => 0, - ); - $row_data{hidden} = ""; - $row_data{repeatable} = CGI::checkbox( - -name => "repeatable$j", - -id => "repeatable$j", - -checked => '', - -value => 1, - -label => '' - ); - $row_data{mandatory} = CGI::checkbox( - -name => "mandatory$j", - -id => "mandatory$j", - -checked => '', - -value => 1, - -label => '' - ); - $row_data{isurl} = CGI::checkbox( - -name => "isurl$j", - -id => "isurl$j", - -checked => '', - -value => 1, - -label => '' - ); - $row_data{value_builder} = CGI::scrolling_list( - -name => "value_builder", - -id => "value_builder$j", - -values => \@value_builder, - -default => $data->{'value_builder'}, - -size => 1, - -multiple => 0, - ); - $row_data{authorised_value} = CGI::scrolling_list( - -name => "authorised_value", - -id => "authorised_value$j", - -values => \@authorised_values, - -size => 1, - -multiple => 0, - ); - $row_data{authtypes} = CGI::scrolling_list( - -name => "authtypecode", - -id => "authtypecode$j", - -values => \@authtypes, - -size => 1, - -multiple => 0, - ); - $row_data{link} = CGI::escapeHTML( $data->{'link'} ); - $row_data{row} = $j; - push( @loop_data, \%row_data ); - } + # Add a new row for the "New" tab + my %row_data; # get a fresh hash for the row data + $row_data{'new_subfield'} = 1; + $row_data{'subfieldcode'} = ''; + $row_data{'maxlength'} = 9999; + $row_data{tab} = -1; #ignore + $row_data{tagsubfield} = ""; + $row_data{liblibrarian} = ""; + $row_data{libopac} = ""; + $row_data{seealso} = ""; + $row_data{hidden} = ""; + $row_data{repeatable} = 0; + $row_data{mandatory} = 0; + $row_data{important} = 0; + $row_data{isurl} = 0; + $row_data{kohafields} = \@kohafields; + $row_data{authorised_values} = \@authorised_values; + $row_data{value_builders} = \@value_builder; + $row_data{authtypes} = \@authtypes; + $row_data{link} = ""; + $row_data{row} = $i; + push( @loop_data, \%row_data ); + $template->param( 'use_heading_flags_p' => 1 ); $template->param( 'heading_edit_subfields_p' => 1 ); $template->param( action => "Edit subfields", tagfield => $tagfield, + tagsubfield => $tagsubfield, loop => \@loop_data, - more_subfields => $more_subfields, more_tag => $tagfield ); @@ -381,106 +212,95 @@ if ( $op eq 'add_form' ) { elsif ( $op eq 'add_validate' ) { my $dbh = C4::Context->dbh; $template->param( tagfield => "$input->param('tagfield')" ); -# my $sth = $dbh->prepare( -# "replace marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue) -# values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" -# ); - my $sth_insert = $dbh->prepare(qq{ - insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue) - values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) - }); - my $sth_update = $dbh->prepare(qq{ - update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?, link=?, defaultvalue=? - where tagfield=? and tagsubfield=? and frameworkcode=? - }); - my @tagsubfield = $input->param('tagsubfield'); - my @liblibrarian = $input->param('liblibrarian'); - my @libopac = $input->param('libopac'); - my @kohafield = $input->param('kohafield'); - my @tab = $input->param('tab'); - my @seealso = $input->param('seealso'); - my @hidden = $input->param('hidden'); - my @authorised_values = $input->param('authorised_value'); - my @authtypecodes = $input->param('authtypecode'); - my @value_builder = $input->param('value_builder'); - my @link = $input->param('link'); - my @defaultvalue = $input->param('defaultvalue'); - - for ( my $i = 0 ; $i <= $#tagsubfield ; $i++ ) { - my $tagfield = $input->param('tagfield'); - my $tagsubfield = $tagsubfield[$i]; + my $tagfield = $input->param('tagfield'); + my @tagsubfield = $input->multi_param('tagsubfield'); + my @tab_ids = $input->multi_param('tab_id'); + + my $display_order; + for my $tagsubfield ( @tagsubfield ) { $tagsubfield = "@" unless $tagsubfield ne ''; - $tagsubfield = "@" if $tagsubfield eq '_'; - my $liblibrarian = $liblibrarian[$i]; - my $libopac = $libopac[$i]; - my $repeatable = $input->param("repeatable$i") ? 1 : 0; - my $mandatory = $input->param("mandatory$i") ? 1 : 0; - my $kohafield = $kohafield[$i]; - my $tab = $tab[$i]; - my $seealso = $seealso[$i]; - my $authorised_value = $authorised_values[$i]; - my $authtypecode = $authtypecodes[$i]; - my $value_builder = $value_builder[$i]; - my $hidden = $hidden[$i]; #input->param("hidden$i"); - my $isurl = $input->param("isurl$i") ? 1 : 0; - my $link = $link[$i]; - my $defaultvalue = $defaultvalue[$i]; - - if ($liblibrarian) { - unless ( C4::Context->config('demo') eq 1 ) { - if (marc_subfield_structure_exists($tagfield, $tagsubfield, $frameworkcode)) { - $sth_update->execute( - $tagfield, - $tagsubfield, - $liblibrarian, - $libopac, - $repeatable, - $mandatory, - $kohafield, - $tab, - $seealso, - $authorised_value, - $authtypecode, - $value_builder, - $hidden, - $isurl, - $frameworkcode, - $link, - $defaultvalue, - ( - $tagfield, - $tagsubfield, - $frameworkcode, - ), - ); - } else { - $sth_insert->execute( - $tagfield, - $tagsubfield, - $liblibrarian, - $libopac, - $repeatable, - $mandatory, - $kohafield, - $tab, - $seealso, - $authorised_value, - $authtypecode, - $value_builder, - $hidden, - $isurl, - $frameworkcode, - $link, - $defaultvalue, - ); + my $id = shift @tab_ids; + my $liblibrarian = $input->param("liblibrarian_$id"); + my $libopac = $input->param("libopac_$id"); + my $repeatable = $input->param("repeatable_$id") ? 1 : 0; + my $mandatory = $input->param("mandatory_$id") ? 1 : 0; + my $important = $input->param("important_$id") ? 1 : 0; + my $kohafield = $input->param("kohafield_$id"); + my $tab = $input->param("tab_$id"); + my $seealso = $input->param("seealso_$id"); + my $authorised_value = $input->param("authorised_value_$id"); + my $authtypecode = $input->param("authtypecode_$id"); + my $value_builder = $input->param("value_builder_$id"); + my $hidden = $input->param("hidden_$id"); + my $isurl = $input->param("isurl_$id") ? 1 : 0; + my $link = $input->param("link_$id"); + my $defaultvalue = $input->param("defaultvalue_$id"); + my $maxlength = $input->param("maxlength_$id") || 9999; + + if (defined($liblibrarian) && $liblibrarian ne "") { + my $mss = Koha::MarcSubfieldStructures->find({tagfield => $tagfield, tagsubfield => $tagsubfield, frameworkcode => $frameworkcode }); + if ($mss) { + $mss->update( + { + liblibrarian => $liblibrarian, + libopac => $libopac, + repeatable => $repeatable, + mandatory => $mandatory, + important => $important, + kohafield => $kohafield, + tab => $tab, + seealso => $seealso, + authorised_value => $authorised_value, + authtypecode => $authtypecode, + value_builder => $value_builder, + hidden => $hidden, + isurl => $isurl, + link => $link, + defaultvalue => $defaultvalue, + maxlength => $maxlength, + display_order => $display_order->{$tagfield} || 0 + } + ); + } else { + if( $frameworkcode ne q{} ) { + # BZ 19096: Overwrite kohafield from Default when adding a new record + my $rec = Koha::MarcSubfieldStructures->find( q{}, $tagfield, $tagsubfield ); + $kohafield = $rec->kohafield if $rec; } + Koha::MarcSubfieldStructure->new( + { + tagfield => $tagfield, + tagsubfield => $tagsubfield, + liblibrarian => $liblibrarian, + libopac => $libopac, + repeatable => $repeatable, + mandatory => $mandatory, + important => $important, + kohafield => $kohafield, + tab => $tab, + seealso => $seealso, + authorised_value => $authorised_value, + authtypecode => $authtypecode, + value_builder => $value_builder, + hidden => $hidden, + isurl => $isurl, + frameworkcode => $frameworkcode, + link => $link, + defaultvalue => $defaultvalue, + maxlength => $maxlength, + display_order => $display_order->{$tagfield} || 0, + } + )->store; } + $display_order->{$tagfield}++; } } - $sth_insert->finish; - $sth_update->finish; - print -"Content-Type: text/html\n\n"; + $cache->clear_from_cache("MarcStructure-0-$frameworkcode"); + $cache->clear_from_cache("MarcStructure-1-$frameworkcode"); + $cache->clear_from_cache("MarcSubfieldStructure-$frameworkcode"); + $cache->clear_from_cache("MarcCodedFields-$frameworkcode"); + + print $input->redirect("/cgi-bin/koha/admin/marc_subfields_structure.pl?tagfield=$tagfield&frameworkcode=$frameworkcode"); exit; # END $OP eq ADD_VALIDATE @@ -488,22 +308,16 @@ elsif ( $op eq 'add_validate' ) { # called by default form, used to confirm deletion of data in DB } elsif ( $op eq 'delete_confirm' ) { - my $dbh = C4::Context->dbh; - my $sth = - $dbh->prepare( -"select * from marc_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?" - ); - - $sth->execute( $tagfield, $tagsubfield, $frameworkcode ); - my $data = $sth->fetchrow_hashref; - $sth->finish; + my $mss = Koha::MarcSubfieldStructures->find( + { + tagfield => $tagfield, + tagsubfield => $tagsubfield, + frameworkcode => $frameworkcode + } + ); $template->param( - liblibrarian => $data->{'liblibrarian'}, - tagsubfield => $data->{'tagsubfield'}, + mss => $mss, delete_link => $script_name, - tagfield => $tagfield, - tagsubfield => $tagsubfield, - frameworkcode => $frameworkcode, ); # END $OP eq DELETE_CONFIRM @@ -511,50 +325,34 @@ elsif ( $op eq 'delete_confirm' ) { # called by delete_confirm, used to effectively confirm deletion of data in DB } elsif ( $op eq 'delete_confirmed' ) { - my $dbh = C4::Context->dbh; - unless ( C4::Context->config('demo') eq 1 ) { - my $sth = - $dbh->prepare( -"delete from marc_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?" - ); - $sth->execute( $tagfield, $tagsubfield, $frameworkcode ); - $sth->finish; - } - print -"Content-Type: text/html\n\n"; + Koha::MarcSubfieldStructures->find( + { + tagfield => $tagfield, + tagsubfield => $tagsubfield, + frameworkcode => $frameworkcode + } + )->delete; + + $cache->clear_from_cache("MarcStructure-0-$frameworkcode"); + $cache->clear_from_cache("MarcStructure-1-$frameworkcode"); + $cache->clear_from_cache("MarcSubfieldStructure-$frameworkcode"); + $cache->clear_from_cache("MarcCodedFields-$frameworkcode"); + print $input->redirect("/cgi-bin/koha/admin/marc_subfields_structure.pl?tagfield=$tagfield&frameworkcode=$frameworkcode"); exit; - $template->param( tagfield => $tagfield ); # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## } else { # DEFAULT - my ( $count, $results ) = string_search( $tagfield, $frameworkcode ); - my @loop_data = (); - for ( my $i = 0; $i < $count; $i++ ) { - my %row_data; # get a fresh hash for the row data - $row_data{tagfield} = $results->[$i]{'tagfield'}; - $row_data{tagsubfield} = $results->[$i]{'tagsubfield'}; - $row_data{liblibrarian} = $results->[$i]{'liblibrarian'}; - $row_data{kohafield} = $results->[$i]{'kohafield'}; - $row_data{repeatable} = $results->[$i]{'repeatable'}; - $row_data{mandatory} = $results->[$i]{'mandatory'}; - $row_data{tab} = $results->[$i]{'tab'}; - $row_data{seealso} = $results->[$i]{'seealso'}; - $row_data{authorised_value} = $results->[$i]{'authorised_value'}; - $row_data{authtypecode} = $results->[$i]{'authtypecode'}; - $row_data{value_builder} = $results->[$i]{'value_builder'}; - $row_data{hidden} = $results->[$i]{'hidden'}; - $row_data{isurl} = $results->[$i]{'isurl'}; - $row_data{link} = $results->[$i]{'link'}; - - if ( $row_data{tab} eq -1 ) { - $row_data{subfield_ignored} = 1; - } + my $mss = Koha::MarcSubfieldStructures->search( + { + tagfield => { -like => "$tagfield%" }, + frameworkcode => $frameworkcode + }, + { order_by => [ 'tagfield', 'display_order' ] } + )->unblessed; - push( @loop_data, \%row_data ); - } - $template->param( loop => \@loop_data ); + $template->param( loop => $mss ); $template->param( edit_tagfield => $tagfield, edit_frameworkcode => $frameworkcode