X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=admin%2Fmarc_subfields_structure.pl;h=2c697333180483a20a50b9d8947487e9fa2c165e;hb=b946d16ec51467ffd4fd0f710b45e822b980033d;hp=0a414e6637736f2c4a44276feb80bf8a06ab9db2;hpb=16b4aa6382a1bd1e7a6c4aea7b8610d2ce21a7b1;p=koha_fer diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl index 0a414e6637..2c69733318 100755 --- a/admin/marc_subfields_structure.pl +++ b/admin/marc_subfields_structure.pl @@ -13,18 +13,19 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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; use C4::Context; -sub StringSearch { +sub string_search { my ( $searchstring, $frameworkcode ) = @_; my $dbh = C4::Context->dbh; $searchstring =~ s/\'/\\\'/g; @@ -49,6 +50,14 @@ sub StringSearch { return ( $cnt, \@results ); } +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 $tagfield = $input->param('tagfield'); my $tagsubfield = $input->param('tagsubfield'); @@ -67,7 +76,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( debug => 1, } ); -my $pagesize = 30; + my $op = $input->param('op'); $tagfield =~ s/\,//g; @@ -126,6 +135,7 @@ if ( $op eq 'add_form' ) { } push( @authorised_values, "branches" ); push( @authorised_values, "itemtypes" ); + push( @authorised_values, "cn_source" ); # build thesaurus categories list $sth2->finish; @@ -165,16 +175,9 @@ if ( $op eq 'add_form' ) { ); # and tagsubfield='$tagsubfield'"); $sth->execute( $tagfield, $frameworkcode ); my @loop_data = (); - my $toggle = 1; my $i = 0; while ( $data = $sth->fetchrow_hashref ) { my %row_data; # get a fresh hash for the row data - if ( $toggle eq 1 ) { - $toggle = 0; - } - else { - $toggle = 1; - } $row_data{defaultvalue} = $data->{defaultvalue}; $row_data{tab} = CGI::scrolling_list( -name => 'tab', @@ -197,7 +200,6 @@ if ( $op eq 'add_form' ) { }, -default => $data->{'tab'}, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{tagsubfield} = @@ -206,6 +208,7 @@ if ( $op eq 'add_form' ) { . $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'} ); @@ -215,41 +218,36 @@ if ( $op eq 'add_form' ) { -values => \@kohafields, -default => "$data->{'kohafield'}", -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{authorised_value} = CGI::scrolling_list( - -name => 'authorised_value', - -id => 'authorised_value', + -name => "authorised_value", + -id => "authorised_value$i", -values => \@authorised_values, -default => $data->{'authorised_value'}, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{value_builder} = CGI::scrolling_list( - -name => 'value_builder', - -id => 'value_builder', + -name => "value_builder", + -id => "value_builder$i", -values => \@value_builder, -default => $data->{'value_builder'}, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{authtypes} = CGI::scrolling_list( - -name => 'authtypecode', - -id => 'authtypecode', + -name => "authtypecode", + -id => "authtypecode$i", -values => \@authtypes, -default => $data->{'authtypecode'}, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{repeatable} = CGI::checkbox( -name => "repeatable$i", -checked => $data->{'repeatable'} ? 'checked' : '', -value => 1, - -tabindex => '', -label => '', -id => "repeatable$i" ); @@ -257,7 +255,6 @@ if ( $op eq 'add_form' ) { -name => "mandatory$i", -checked => $data->{'mandatory'} ? 'checked' : '', -value => 1, - -tabindex => '', -label => '', -id => "mandatory$i" ); @@ -267,11 +264,9 @@ if ( $op eq 'add_form' ) { -id => "isurl$i", -checked => $data->{'isurl'} ? 'checked' : '', -value => 1, - -tabindex => '', -label => '' ); $row_data{row} = $i; - $row_data{toggle} = $toggle; $row_data{link} = CGI::escapeHTML( $data->{'link'} ); push( @loop_data, \%row_data ); $i++; @@ -304,7 +299,6 @@ if ( $op eq 'add_form' ) { }, -default => "", -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{tagsubfield} = @@ -320,7 +314,6 @@ if ( $op eq 'add_form' ) { -values => \@kohafields, -default => "", -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{hidden} = ""; @@ -329,7 +322,6 @@ if ( $op eq 'add_form' ) { -id => "repeatable$j", -checked => '', -value => 1, - -tabindex => '', -label => '' ); $row_data{mandatory} = CGI::checkbox( @@ -337,7 +329,6 @@ if ( $op eq 'add_form' ) { -id => "mandatory$j", -checked => '', -value => 1, - -tabindex => '', -label => '' ); $row_data{isurl} = CGI::checkbox( @@ -345,42 +336,36 @@ if ( $op eq 'add_form' ) { -id => "isurl$j", -checked => '', -value => 1, - -tabindex => '', -label => '' ); $row_data{value_builder} = CGI::scrolling_list( - -name => 'value_builder', - -id => 'value_builder', + -name => "value_builder", + -id => "value_builder$j", -values => \@value_builder, -default => $data->{'value_builder'}, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{authorised_value} = CGI::scrolling_list( - -name => 'authorised_value', - -id => 'authorised_value', + -name => "authorised_value", + -id => "authorised_value$j", -values => \@authorised_values, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{authtypes} = CGI::scrolling_list( - -name => 'authtypecode', - -id => 'authtypecode', + -name => "authtypecode", + -id => "authtypecode$j", -values => \@authtypes, -size => 1, - -tabindex => '', -multiple => 0, ); $row_data{link} = CGI::escapeHTML( $data->{'link'} ); - $row_data{toggle} = $toggle; $row_data{row} = $j; push( @loop_data, \%row_data ); - use Data::Dumper; } - $template->param( 'use-heading-flags-p' => 1 ); - $template->param( 'heading-edit-subfields-p' => 1 ); + $template->param( 'use_heading_flags_p' => 1 ); + $template->param( 'heading_edit_subfields_p' => 1 ); $template->param( action => "Edit subfields", tagfield => $tagfield, @@ -396,10 +381,18 @@ 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 = $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'); @@ -433,31 +426,59 @@ elsif ( $op eq 'add_validate' ) { my $link = $link[$i]; my $defaultvalue = $defaultvalue[$i]; - if ($liblibrarian) { + if (defined($liblibrarian) && $liblibrarian ne "") { unless ( C4::Context->config('demo') eq 1 ) { - $sth->execute( - $tagfield, - $tagsubfield, - $liblibrarian, - $libopac, - $repeatable, - $mandatory, - $kohafield, - $tab, - $seealso, - $authorised_value, - $authtypecode, - $value_builder, - $hidden, - $isurl, - $frameworkcode, - $link, - $defaultvalue, - ); + 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, + ); + } } } } - $sth->finish; + $sth_insert->finish; + $sth_update->finish; print "Content-Type: text/html\n\n"; exit; @@ -508,21 +529,9 @@ elsif ( $op eq 'delete_confirmed' ) { ################## DEFAULT ################################## } else { # DEFAULT - my ( $count, $results ) = StringSearch( $tagfield, $frameworkcode ); - my $toggle = 1; + my ( $count, $results ) = string_search( $tagfield, $frameworkcode ); my @loop_data = (); - for ( - my $i = $offset ; - $i < ( $offset + $pagesize < $count ? $offset + $pagesize : $count ) ; - $i++ - ) - { - if ( $toggle eq 1 ) { - $toggle = 0; - } - else { - $toggle = 1; - } + 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'}; @@ -538,11 +547,6 @@ else { # DEFAULT $row_data{hidden} = $results->[$i]{'hidden'}; $row_data{isurl} = $results->[$i]{'isurl'}; $row_data{link} = $results->[$i]{'link'}; - $row_data{delete} = -"$script_name?op=delete_confirm&tagfield=$tagfield&tagsubfield=" - . $results->[$i]{'tagsubfield'} - . "&frameworkcode=$frameworkcode"; - $row_data{toggle} = $toggle; if ( $row_data{tab} eq -1 ) { $row_data{subfield_ignored} = 1; @@ -556,16 +560,6 @@ else { # DEFAULT edit_frameworkcode => $frameworkcode ); - if ( $offset > 0 ) { - my $prevpage = $offset - $pagesize; - $template->param( - prev => "" ); - } - if ( $offset + $pagesize < $count ) { - my $nextpage = $offset + $pagesize; - $template->param( - next => "" ); - } } #---- END $OP eq DEFAULT output_html_with_http_headers $input, $cookie, $template->output;