#
# 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.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
-use strict;
-use warnings;
-use CGI;
+use Modern::Perl;
+use CGI qw ( -utf8 );
use C4::Auth;
use C4::Koha;
use C4::Context;
use C4::Output;
use C4::Context;
+use Koha::Caches;
+use Koha::AuthorisedValues;
+use Koha::BiblioFrameworks;
# retrieve parameters
my $input = new CGI;
my $frameworkcode = $input->param('frameworkcode') || ''; # set to select framework
my $existingframeworkcode = $input->param('existingframeworkcode') || '';
my $searchfield = $input->param('searchfield') || 0;
-# set when we have to create a new framework (in frameworkcode) by copying an old one (in existingframeworkcode)
-my $frameworkinfo = getframeworkinfo($frameworkcode);
$searchfield=~ s/\,//g;
my $offset = $input->param('offset') || 0;
my $op = $input->param('op') || '';
-my $dspchoice = $input->param('select_display');
+my $dspchoice = $input->cookie("marctagstructure_selectdisplay") // $input->param('select_display');
my $pagesize = 20;
my $script_name = "/cgi-bin/koha/admin/marctagstructure.pl";
my $dbh = C4::Context->dbh;
+my $cache = Koha::Caches->get_instance();
# open template
my ($template, $loggedinuser, $cookie)
debug => 1,
});
-# get framework list
-my $frameworks = getframeworks();
-my @frameworkloop;
-foreach my $thisframeworkcode (keys %$frameworks) {
- push @frameworkloop, {
- value => $thisframeworkcode,
- selected => ($thisframeworkcode eq $frameworkcode) ? 1 : 0,
- frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
- };
-}
+my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
# check that framework is defined in marc_tag_structure
my $sth=$dbh->prepare("select count(*) from marc_tag_structure where frameworkcode=?");
$op = "framework_create";
}
}
+
+my $framework = $frameworks->search({ frameworkcode => $frameworkcode })->next;
$template->param(
- frameworkloop => \@frameworkloop,
- frameworkcode => $frameworkcode,
- frameworktext => $frameworkinfo->{frameworktext},
+ frameworks => $frameworks,
+ framework => $framework,
script_name => $script_name,
- ($op||'else') => 1,
+ ( $op || 'else' ) => 1,
);
$sth->execute($searchfield,$frameworkcode);
$data=$sth->fetchrow_hashref;
}
- my $sth = $dbh->prepare("select distinct category from authorised_values");
- $sth->execute;
- my @authorised_values;
- push @authorised_values,"";
- while ((my $category) = $sth->fetchrow_array) {
- push @authorised_values, $category;
- }
- my $authorised_value = CGI::scrolling_list(-name=>'authorised_value',
- -values=> \@authorised_values,
- -size=>1,
- -id=>"authorised_value",
- -multiple=>0,
- -default => $data->{'authorised_value'},
- );
if ($searchfield) {
$template->param(searchfield => $searchfield);
libopac => $data->{'libopac'},
repeatable => $data->{'repeatable'},
mandatory => $data->{'mandatory'},
- authorised_value => $authorised_value,
+ authorised_value => $data->{authorised_value},
frameworkcode => $frameworkcode,
); # FIXME: move checkboxes to presentation layer
# END $OP eq ADD_FORM
my $repeatable = $input->param('repeatable') ? 1 : 0;
my $mandatory = $input->param('mandatory') ? 1 : 0;
my $authorised_value = $input->param('authorised_value');
- unless (C4::Context->config('demo')) {
- if ($input->param('modif')) {
- $sth = $dbh->prepare(
- "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,authorised_value=? WHERE frameworkcode=? AND tagfield=?"
- );
- $sth->execute( $liblibrarian,
- $libopac,
- $repeatable,
- $mandatory,
- $authorised_value,
- $frameworkcode,
- $tagfield
- );
- } else {
- $sth = $dbh->prepare(
- "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) values (?,?,?,?,?,?,?)"
- );
- $sth->execute($tagfield,
- $liblibrarian,
- $libopac,
- $repeatable,
- $mandatory,
- $authorised_value,
- $frameworkcode
- );
- }
- }
+ if ($input->param('modif')) {
+ $sth = $dbh->prepare(
+ "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,authorised_value=? WHERE frameworkcode=? AND tagfield=?"
+ );
+ $sth->execute( $liblibrarian,
+ $libopac,
+ $repeatable,
+ $mandatory,
+ $authorised_value,
+ $frameworkcode,
+ $tagfield
+ );
+ } else {
+ $sth = $dbh->prepare(
+ "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) values (?,?,?,?,?,?,?)"
+ );
+ $sth->execute($tagfield,
+ $liblibrarian,
+ $libopac,
+ $repeatable,
+ $mandatory,
+ $authorised_value,
+ $frameworkcode
+ );
+ }
+ $cache->clear_from_cache("MarcStructure-0-$frameworkcode");
+ $cache->clear_from_cache("MarcStructure-1-$frameworkcode");
+ $cache->clear_from_cache("default_value_for_mod_marc-");
+ $cache->clear_from_cache("MarcSubfieldStructure-$frameworkcode");
print $input->redirect("/cgi-bin/koha/admin/marctagstructure.pl?searchfield=$tagfield&frameworkcode=$frameworkcode");
- exit;
+ exit;
# END $OP eq ADD_VALIDATE
################## DELETE_CONFIRM ##################################
# called by default form, used to confirm deletion of data in DB
################## DELETE_CONFIRMED ##################################
# called by delete_confirm, used to effectively confirm deletion of data in DB
} elsif ($op eq 'delete_confirmed') {
- unless (C4::Context->config('demo')) {
- my $sth1 = $dbh->prepare("DELETE FROM marc_tag_structure WHERE tagfield=? AND frameworkcode=?");
- my $sth2 = $dbh->prepare("DELETE FROM marc_subfield_structure WHERE tagfield=? AND frameworkcode=?");
- $sth1->execute($searchfield, $frameworkcode);
- $sth2->execute($searchfield, $frameworkcode);
- }
+ my $sth1 = $dbh->prepare("DELETE FROM marc_tag_structure WHERE tagfield=? AND frameworkcode=?");
+ my $sth2 = $dbh->prepare("DELETE FROM marc_subfield_structure WHERE tagfield=? AND frameworkcode=?");
+ $sth1->execute($searchfield, $frameworkcode);
+ $sth2->execute($searchfield, $frameworkcode);
+ $cache->clear_from_cache("MarcStructure-0-$frameworkcode");
+ $cache->clear_from_cache("MarcStructure-1-$frameworkcode");
+ $cache->clear_from_cache("default_value_for_mod_marc-");
+ $cache->clear_from_cache("MarcSubfieldStructure-$frameworkcode");
$template->param(
searchfield => $searchfield,
frameworkcode => $frameworkcode,
}
$template->param(existingframeworkloop => \@existingframeworkloop,
frameworkcode => $frameworkcode,
-# FRtext => $frameworkinfo->{frameworktext},
);
################## DEFAULT ##################################
} else { # DEFAULT
$template->param(select_display => "True",
loop => \@loop_data);
} else {
+ # Hidden feature: If search was field$subfield, redirect to the subfield edit form
+ my ( $tagfield, $tagsubfield ) = split /\$/, $searchfield;
+ if ( $tagsubfield ) {
+ print $input->redirect('/cgi-bin/koha/admin/marc_subfields_structure.pl?op=add_form&tagfield='.$tagfield.'&frameworkcode='.$frameworkcode.'#sub'.$tagsubfield.'field');
+ exit;
+ }
#here, normal old style : display every tags
my ($count,$results)=StringSearch($searchfield,$frameworkcode);
$cnt = $count;
sub duplicate_framework {
my ($newframeworkcode,$oldframeworkcode) = @_;
my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where frameworkcode=?");
- $sth->execute($oldframeworkcode);
- my $sth_insert = $dbh->prepare("insert into marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, frameworkcode) values (?,?,?,?,?,?,?)");
- while ( my ($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value) = $sth->fetchrow) {
- $sth_insert->execute($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value,$newframeworkcode);
- }
+ $dbh->do(q|INSERT INTO marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, frameworkcode)
+ SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value, ? from marc_tag_structure where frameworkcode=?|, undef, $newframeworkcode, $oldframeworkcode );
- $sth = $dbh->prepare("select frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso,hidden from marc_subfield_structure where frameworkcode=?");
- $sth->execute($oldframeworkcode);
- $sth_insert = $dbh->prepare("insert into marc_subfield_structure (frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso,hidden) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
- while ( my ($frameworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $kohafield, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso,$hidden) = $sth->fetchrow) {
- $sth_insert->execute($newframeworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $kohafield, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso, $hidden);
- }
+ $dbh->do(q|INSERT INTO marc_subfield_structure (frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso,hidden)
+ SELECT ?,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso,hidden from marc_subfield_structure where frameworkcode=?
+ |, undef, $newframeworkcode, $oldframeworkcode );
}