X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=admin%2Fauth_subfields_structure.pl;h=d9f10b4e706f08dd9cfdd409948e095805892cda;hb=9706908b269ebc068b19a0989ca8af6804b1a540;hp=6e465b64f6d04ad17cdcb7612fe5b9f76a2bdf02;hpb=100e6a9808ead4ee8d951da59ead1550e75bb4c3;p=koha.git diff --git a/admin/auth_subfields_structure.pl b/admin/auth_subfields_structure.pl index 6e465b64f6..d9f10b4e70 100755 --- a/admin/auth_subfields_structure.pl +++ b/admin/auth_subfields_structure.pl @@ -1,6 +1,5 @@ #!/usr/bin/perl - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -14,57 +13,56 @@ # 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,$authtypecode)=@_; my $dbh = C4::Context->dbh; $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); - my $count=@data; my $sth=$dbh->prepare("Select * from auth_subfield_structure where (tagfield like ? and authtypecode=?) order by tagfield"); $sth->execute("$searchstring%",$authtypecode); - 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); + my $results = $sth->fetchall_arrayref({}); + return (scalar(@$results), $results); +} + +sub auth_subfield_structure_exists { + my ($authtypecode, $tagfield, $tagsubfield) = @_; + my $dbh = C4::Context->dbh; + my $sql = "select tagfield from auth_subfield_structure where authtypecode = ? and tagfield = ? and tagsubfield = ?"; + my $rows = $dbh->selectall_arrayref($sql, {}, $authtypecode, $tagfield, $tagsubfield); + return @$rows > 0; } -my $input = new CGI; -my $tagfield=$input->param('tagfield'); -my $tagsubfield=$input->param('tagsubfield'); -my $authtypecode=$input->param('authtypecode'); -my $pkfield="tagfield"; -my $offset=$input->param('offset'); -my $script_name="/cgi-bin/koha/admin/auth_subfields_structure.pl"; +my $input = new CGI; +my $tagfield = $input->param('tagfield'); +my $tagsubfield = $input->param('tagsubfield'); +my $authtypecode = $input->param('authtypecode'); +my $offset = $input->param('offset'); +my $op = $input->param('op') || ''; +my $script_name = "/cgi-bin/koha/admin/auth_subfields_structure.pl"; -my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "admin/auth_subfields_structure.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1}, - debug => 1, - }); -my $pagesize=30; -my $op = $input->param('op'); -$tagfield=~ s/\,//g; +my ($template, $borrowernumber, $cookie) = get_template_and_user( + { template_name => "admin/auth_subfields_structure.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { parameters => 'parameters_remaining_permissions' }, + debug => 1, + } +); +my $pagesize = 30; +$tagfield =~ s/\,//g; if ($op) { $template->param(script_name => $script_name, @@ -78,11 +76,11 @@ $template->param(script_name => $script_name, else => 1); # we show only the TMPL_VAR names $op } +my $dbh = C4::Context->dbh; ################## 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; @@ -94,7 +92,6 @@ if ($op eq 'add_form') { } # build authorised value list - $sth2->finish; $sth2 = $dbh->prepare("select distinct category from authorised_values"); $sth2->execute; my @authorised_values; @@ -106,7 +103,6 @@ if ($op eq 'add_form') { push (@authorised_values,"itemtypes"); # build thesaurus categories list - $sth2->finish; $sth2 = $dbh->prepare("select authtypecode from auth_types"); $sth2->execute; my @authtypes; @@ -132,27 +128,35 @@ if ($op eq 'add_form') { push (@value_builder,$line); } } + @value_builder= sort {$a cmp $b} @value_builder; closedir DIR; # build values list my $sth=$dbh->prepare("select * from auth_subfield_structure where tagfield=? and authtypecode=?"); # and tagsubfield='$tagsubfield'"); $sth->execute($tagfield,$authtypecode); 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', -id=>"tab$i", - -values=>['-1','0'], - -labels => {'-1' =>'ignore','0'=>'0', - }, + -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', + }, -default=>$data->{'tab'}, -size=>1, -tabindex=>'', @@ -160,35 +164,39 @@ if ($op eq 'add_form') { ); $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', -id=>"ohidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, - -default=>substr($data->{'hidden'},0,1), + #-values=>['0','1','2'], + #-labels => {'0'=>'Show','1'=>'Show Collapsed', + # '2' =>'Hide', + # }, + -values=>['0','-5'], + -labels => {'0'=>'Show All','-5'=>'Hide All',}, + -default=>$data->{'hidden'}, + #-default=>"-5", -size=>1, -multiple=>0, ); - $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', - -id=>"ihidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, - -default=>substr($data->{'hidden'},1,1), - -size=>1, - -multiple=>0, - ); - $row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden', - -id=>"ehidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, - -default=>substr($data->{'hidden'}." ",2,1), - -size=>1, - -multiple=>0, - ); - $row_data{tagsubfield} =$data->{'tagsubfield'}."{'tagsubfield'}."\" id=\"tagsubfield\">"; + #$row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', + # -id=>"ihidden$i", + # -values=>['0','1','2'], + # -labels => {'0'=>'Show','1'=>'Show Collapsed', + # '2' =>'Hide', + # }, + # -default=>substr($data->{'hidden'},1,1), + # -size=>1, + # -multiple=>0, + # ); + #$row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden', + # -id=>"ehidden$i", + # -values=>['0','1','2'], + # -labels => {'0'=>'Show','1'=>'Show Collapsed', + # '2' =>'Hide', + # }, + # -default=>substr($data->{'hidden'}." ",2,1), + # -size=>1, + # -multiple=>0, + # ); + $row_data{tagsubfieldinput} = "{'tagsubfield'}."\" id=\"tagsubfield\" />"; + $row_data{tagsubfield} = $data->{'tagsubfield'}; $row_data{liblibrarian} = CGI::escapeHTML($data->{'liblibrarian'}); $row_data{libopac} = CGI::escapeHTML($data->{'libopac'}); $row_data{seealso} = CGI::escapeHTML($data->{'seealso'}); @@ -200,7 +208,7 @@ if ($op eq 'add_form') { -multiple=>0, ); $row_data{authorised_value} = CGI::scrolling_list(-name=>'authorised_value', - -id=>'authorised_value', + -id=>"authorised_value$i", -values=> \@authorised_values, -default=>$data->{'authorised_value'}, -size=>1, @@ -208,7 +216,7 @@ if ($op eq 'add_form') { -multiple=>0, ); $row_data{frameworkcode} = CGI::scrolling_list(-name=>'frameworkcode', - -id=>'frameworkcode', + -id=>"frameworkcode$i", -values=> \@authtypes, -default=>$data->{'frameworkcode'}, -size=>1, @@ -216,7 +224,7 @@ if ($op eq 'add_form') { -multiple=>0, ); $row_data{value_builder} = CGI::scrolling_list(-name=>'value_builder', - -id=>'value_builder', + -id=>"value_builder$i", -values=> \@value_builder, -default=>$data->{'value_builder'}, -size=>1, @@ -240,25 +248,31 @@ if ($op eq 'add_form') { -checked => $data->{'isurl'}?'checked':'', -value => 1, -label => ''); - $row_data{link} = CGI::checkbox( -name => "link$i", - -id => "link$i", - -checked => $data->{'link'}?'checked':'', - -value => 1, - -label => ''); $row_data{row} = $i; - $row_data{toggle} = $toggle; - # $row_data{link} = CGI::escapeHTML($data->{'link'}); push(@loop_data, \%row_data); $i++; } # add more_subfields empty lines for add if needed for (my $i=1;$i<=$more_subfields;$i++) { my %row_data; # get a fresh hash for the row data + $row_data{'new_subfield'} = 1; $row_data{tab} = CGI::scrolling_list(-name=>'tab', -id => "tab$i", - -values=>['-1','0'], - -labels => {'-1' =>'ignore','0'=>'0', - }, + -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', + }, -default=>"", -size=>1, -tabindex=>'', @@ -266,36 +280,45 @@ if ($op eq 'add_form') { ); $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', -id=>"ohidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, - -default=>"0", + #-values=>['0','1','2'], + #-labels => {'0'=>'Show','1'=>'Show Collapsed', + # '2' =>'Hide', + # }, + -values=>['0','-5'], + -labels => {'0'=>'Show All','-5'=>'Hide All',}, + #-default=>"0", + -default=>$data->{'hidden'}, + #-default=>"-5", -size=>1, -multiple=>0, ); - $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', - -id=>"ihidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, - -default=>"0", - -size=>1, - -multiple=>0, - ); - $row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden', - -id=>"ehidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, - -default=>"0", - -size=>1, - -multiple=>0, - ); - $row_data{tagsubfield} = "{'tagsubfield'}."\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\">"; + #$row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', + # -id=>"ihidden$i", + # -values=>['0','1','2'], + # -labels => {'0'=>'Show','1'=>'Show Collapsed', + # '2' =>'Hide', + # }, + # -default=>"0", + # -size=>1, + # -multiple=>0, + # ); + #$row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden', + # -id=>"ehidden$i", + # -values=>['0','1','2'], + # -labels => {'0'=>'Show','1'=>'Show Collapsed', + # '2' =>'Hide', + # }, + # -default=>"0", + # -size=>1, + # -multiple=>0, + # ); + $row_data{tagsubfieldinput} = "{'tagsubfield'}."\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\" />"; + $row_data{tagsubfieldinput} = + ""; + $row_data{tagsubfield} = $data->{'tagsubfield'}; $row_data{liblibrarian} = ""; $row_data{libopac} = ""; $row_data{seealso} = ""; @@ -345,20 +368,14 @@ if ($op eq 'add_form') { -tabindex=>'', -multiple=>0, ); - $row_data{link} = CGI::checkbox( -name => "link", - -id => "link$i", - -checked => '', - -value => 1, - -label => ''); - # $row_data{link} = CGI::escapeHTML($data->{'link'}); - $row_data{toggle} = $toggle; $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('use_heading_flags_p' => 1); + $template->param('heading_edit_subfields_p' => 1); $template->param(action => "Edit subfields", - tagfield => "$tagfield", + tagfield => $tagfield, + tagfieldinput => "", loop => \@loop_data, more_subfields => $more_subfields, more_tag => $tagfield); @@ -367,25 +384,28 @@ if ($op eq 'add_form') { ################## ADD_VALIDATE ################################## # called by add_form, used to insert/modify data in DB } elsif ($op eq 'add_validate') { - my $dbh = C4::Context->dbh; $template->param(tagfield => "$input->param('tagfield')"); - my $sth=$dbh->prepare("replace auth_subfield_structure (authtypecode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,frameworkcode,value_builder,hidden,isurl, link) - values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); +# my $sth=$dbh->prepare("replace auth_subfield_structure (authtypecode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,frameworkcode,value_builder,hidden,isurl) +# values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + my $sth_insert = $dbh->prepare("insert into auth_subfield_structure (authtypecode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,frameworkcode,value_builder,hidden,isurl,defaultvalue) + values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + my $sth_update = $dbh->prepare("update auth_subfield_structure set authtypecode=?, tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, frameworkcode=?, value_builder=?, hidden=?, isurl=?, defaultvalue=? + where authtypecode=? and tagfield=? and tagsubfield=?"); my @tagsubfield = $input->param('tagsubfield'); my @liblibrarian = $input->param('liblibrarian'); my @libopac = $input->param('libopac'); - my @kohafield = $input->param('kohafield'); + my @kohafield = ''.$input->param('kohafield'); my @tab = $input->param('tab'); my @seealso = $input->param('seealso'); my @hidden; my @ohidden = $input->param('ohidden'); - my @ihidden = $input->param('ihidden'); - my @ehidden = $input->param('ehidden'); + #my @ihidden = $input->param('ihidden'); + #my @ehidden = $input->param('ehidden'); my @authorised_values = $input->param('authorised_value'); my $authtypecode = $input->param('authtypecode'); my @frameworkcodes = $input->param('frameworkcode'); 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]; @@ -400,32 +420,59 @@ if ($op eq 'add_form') { my $authorised_value =$authorised_values[$i]; my $frameworkcode =$frameworkcodes[$i]; my $value_builder=$value_builder[$i]; - my $hidden = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens; + my $defaultvalue = $defaultvalue[$i]; + #my $hidden = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens; + my $hidden = $ohidden[$i]; #collate from 3 hiddens; my $isurl = $input->param("isurl$i")?1:0; - my $link = $input->param("link$i")?1:0; if ($liblibrarian) { unless (C4::Context->config('demo') eq 1) { - $sth->execute($authtypecode, - $tagfield, - $tagsubfield, - $liblibrarian, - $libopac, - $repeatable, - $mandatory, - $kohafield, - $tab, - $seealso, - $authorised_value, - $frameworkcode, - $value_builder, - $hidden, - $isurl, - $link, - ); + if (auth_subfield_structure_exists($authtypecode, $tagfield, $tagsubfield)) { + $sth_update->execute( + $authtypecode, + $tagfield, + $tagsubfield, + $liblibrarian, + $libopac, + $repeatable, + $mandatory, + $kohafield, + $tab, + $seealso, + $authorised_value, + $frameworkcode, + $value_builder, + $hidden, + $isurl, + $defaultvalue, + ( + $authtypecode, + $tagfield, + $tagsubfield + ), + ); + } else { + $sth_insert->execute( + $authtypecode, + $tagfield, + $tagsubfield, + $liblibrarian, + $libopac, + $repeatable, + $mandatory, + $kohafield, + $tab, + $seealso, + $authorised_value, + $frameworkcode, + $value_builder, + $hidden, + $isurl, + $defaultvalue, + ); + } } } } - $sth->finish; print "Content-Type: text/html\n\n"; exit; @@ -433,12 +480,9 @@ if ($op eq 'add_form') { ################## DELETE_CONFIRM ################################## # 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 auth_subfield_structure where tagfield=? and tagsubfield=? and authtypecode=?"); - #FIXME : called with 2 bind variables when 3 are needed - $sth->execute($tagfield,$tagsubfield); + $sth->execute($tagfield,$tagsubfield,$authtypecode); my $data=$sth->fetchrow_hashref; - $sth->finish; $template->param(liblibrarian => $data->{'liblibrarian'}, tagsubfield => $data->{'tagsubfield'}, delete_link => $script_name, @@ -450,11 +494,9 @@ if ($op eq 'add_form') { ################## DELETE_CONFIRMED ################################## # 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 auth_subfield_structure where tagfield=? and tagsubfield=? and authtypecode=?"); $sth->execute($tagfield,$tagsubfield,$authtypecode); - $sth->finish; } print "Content-Type: text/html\n\n"; exit; @@ -462,15 +504,9 @@ if ($op eq 'add_form') { # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## } else { # DEFAULT - my ($count,$results)=StringSearch($tagfield,$authtypecode); - my $toggle=1; + my ($count,$results)=string_search($tagfield,$authtypecode); my @loop_data = (); for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ - if ($toggle eq 1){ - $toggle=0; - } else { - $toggle=1; - } my %row_data; # get a fresh hash for the row data $row_data{tagfield} = $results->[$i]{'tagfield'}; $row_data{tagsubfield} = $results->[$i]{'tagsubfield'}; @@ -485,9 +521,7 @@ if ($op eq 'add_form') { $row_data{value_builder} = $results->[$i]{'value_builder'}; $row_data{hidden} = $results->[$i]{'hidden'} if($results->[$i]{'hidden'} gt "000") ; $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'}."&authtypecode=$authtypecode"; - $row_data{toggle} = $toggle; + $row_data{delete} = "$script_name?op=delete_confirm&tagfield=$tagfield&tagsubfield=".$results->[$i]{'tagsubfield'}."&authtypecode=$authtypecode"; if ($row_data{tab} eq -1) { $row_data{subfield_ignored} = 1; } @@ -507,8 +541,4 @@ if ($op eq 'add_form') { $template->param(next => ""); } } #---- END $OP eq DEFAULT -$template->param(intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); output_html_with_http_headers $input, $cookie, $template->output;