#
# 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 <http://www.gnu.org/licenses>.
+
+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) {
################## 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;
$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 = ('');
# 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 );
}
}
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{maxlength} = $data->{maxlength};
- $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'}
- . "<input type=\"hidden\" name=\"tagsubfield\" value=\""
- . $data->{'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
- 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$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 => "",
- -size => 1,
- -multiple => 0,
- );
- $row_data{tagsubfield} =
- "<input type=\"text\" name=\"tagsubfield\" value=\""
- . $data->{'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$i",
- -values => \@kohafields,
- -default => "",
- -size => 1,
- -multiple => 0,
- );
- $row_data{hidden} = "";
- $row_data{repeatable} = CGI::checkbox(
- -name => "repeatable$i",
- -id => "repeatable$i",
- -checked => '',
- -value => 1,
- -label => ''
- );
- $row_data{mandatory} = CGI::checkbox(
- -name => "mandatory$i",
- -id => "mandatory$i",
- -checked => '',
- -value => 1,
- -label => ''
- );
- $row_data{isurl} = CGI::checkbox(
- -name => "isurl$i",
- -id => "isurl$i",
- -checked => '',
- -value => 1,
- -label => ''
- );
- $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{authorised_value} = CGI::scrolling_list(
- -name => "authorised_value",
- -id => "authorised_value$i",
- -values => \@authorised_values,
- -size => 1,
- -multiple => 0,
- );
- $row_data{authtypes} = CGI::scrolling_list(
- -name => "authtypecode",
- -id => "authtypecode$i",
- -values => \@authtypes,
- -size => 1,
- -multiple => 0,
- );
- $row_data{link} = CGI::escapeHTML( $data->{'link'} );
- $row_data{row} = $i;
- 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
);
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,maxlength)
- 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=?, maxlength=?
- 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');
- my @maxlength = $input->param('maxlength');
-
- 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];
- my $maxlength = $maxlength[$i];
-
+ 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 "") {
- 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,
- $maxlength,
- (
- $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,
- $maxlength,
- );
+ 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<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=marc_subfields_structure.pl?tagfield=$tagfield&frameworkcode=$frameworkcode\"></html>";
+ $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
# 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
# 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<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=marc_subfields_structure.pl?tagfield=$tagfield&frameworkcode=$frameworkcode\"></html>";
+ 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