X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=admin%2Fmarctagstructure.pl;h=b930271af59ddd6ab1f5b4c32a6840d88c2c86ad;hb=e6f3fb9591844659bb7e6ccf909ec53cf6b7116a;hp=495901f2f89cc1a0debd9662f834600d09807c8f;hpb=af996a21e8f7ab4717b863f65f30e0b312a9a527;p=koha.git diff --git a/admin/marctagstructure.pl b/admin/marctagstructure.pl index 495901f2f8..b930271af5 100755 --- a/admin/marctagstructure.pl +++ b/admin/marctagstructure.pl @@ -24,10 +24,8 @@ use C4::Auth; use C4::Koha; use C4::Context; use C4::Output; -use C4::Interface::CGI::Output; -use C4::Search; use C4::Context; -use HTML::Template; + # retrieve parameters my $input = new CGI; @@ -39,9 +37,11 @@ my $frameworkinfo = getframeworkinfo($frameworkcode); my $searchfield=$input->param('searchfield'); $searchfield=0 unless $searchfield; $searchfield=~ s/\,//g; +my $last_searchfield=$input->param('searchfield'); -my $offset=$input->param('offset'); -my $op = $input->param('op'); +my $offset=$input->param('offset') || 0; +my $op = $input->param('op') || ''; +my $dspchoice = $input->param('select_display'); my $pagesize=20; my $script_name="/cgi-bin/koha/admin/marctagstructure.pl"; @@ -50,7 +50,7 @@ my $dbh = C4::Context->dbh; # open template my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "parameters/marctagstructure.tmpl", + = get_template_and_user({template_name => "admin/marctagstructure.tmpl", query => $input, type => "intranet", authnotrequired => 0, @@ -118,50 +118,73 @@ if ($op eq 'add_form') { my $authorised_value = CGI::scrolling_list(-name=>'authorised_value', -values=> \@authorised_values, -size=>1, + -id=>"authorised_value", -multiple=>0, -default => $data->{'authorised_value'}, ); + $template->param(searchfield => $searchfield) if ($searchfield); if ($searchfield) { - $template->param(action => "Modify tag", - searchfield => "$searchfield"); + $template->param(action => "Modify tag"); $template->param('heading-modify-tag-p' => 1); } else { - $template->param(action => "Add tag", - searchfield => ""); + $template->param(action => "Add tag"); $template->param('heading-add-tag-p' => 1); } $template->param('use-heading-flags-p' => 1); $template->param(liblibrarian => $data->{'liblibrarian'}, - libopac => $data->{'libopac'}, - repeatable => CGI::checkbox('repeatable',$data->{'repeatable'}?'checked':'',1,''), - mandatory => CGI::checkbox('mandatory',$data->{'mandatory'}?'checked':'',1,''), - authorised_value => $authorised_value, - frameworkcode => $frameworkcode, - ); + libopac => $data->{'libopac'}, + repeatable => CGI::checkbox(-name=>'repeatable', + -checked=> $data->{'repeatable'}?'checked':'', + -value=> 1, + -label => '', + -id=> 'repeatable'), + mandatory => CGI::checkbox(-name => 'mandatory', + -checked => $data->{'mandatory'}?'checked':'', + -value => 1, + -label => '', + -id => 'mandatory'), + authorised_value => $authorised_value, + frameworkcode => $frameworkcode, + ); # END $OP eq ADD_FORM ################## ADD_VALIDATE ################################## # called by add_form, used to insert/modify data in DB } elsif ($op eq 'add_validate') { - $sth=$dbh->prepare("replace marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) values (?,?,?,?,?,?,?)"); my $tagfield =$input->param('tagfield'); my $liblibrarian = $input->param('liblibrarian'); my $libopac =$input->param('libopac'); my $repeatable =$input->param('repeatable'); my $mandatory =$input->param('mandatory'); my $authorised_value =$input->param('authorised_value'); - unless (C4::Context->config('demo') eq 1) { - $sth->execute($tagfield, - $liblibrarian, - $libopac, - $repeatable?1:0, - $mandatory?1:0, - $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=?"); + unless (C4::Context->config('demo') eq 1) { + $sth->execute( $liblibrarian, + $libopac, + $repeatable?1:0, + $mandatory?1:0, + $authorised_value, + $frameworkcode, + $tagfield + ); + } + $sth->finish; + } else { + $sth=$dbh->prepare("INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) values (?,?,?,?,?,?,?)"); + unless (C4::Context->config('demo') eq 1) { + $sth->execute($tagfield, + $liblibrarian, + $libopac, + $repeatable?1:0, + $mandatory?1:0, + $authorised_value, + $frameworkcode + ); + } + $sth->finish; } - $sth->finish; - print "Content-Type: text/html\n\n"; + print $input->redirect("/cgi-bin/koha/admin/marctagstructure.pl?searchfield=$tagfield&frameworkcode=$frameworkcode"); exit; # END $OP eq ADD_VALIDATE ################## DELETE_CONFIRM ################################## @@ -183,6 +206,9 @@ if ($op eq 'add_form') { $dbh->do("delete from marc_tag_structure where tagfield='$searchfield' and frameworkcode='$frameworkcode'"); $dbh->do("delete from marc_subfield_structure where tagfield='$searchfield' and frameworkcode='$frameworkcode'"); } + $template->param(searchfield => $searchfield, + frameworkcode => $frameworkcode, + ); # END $OP eq DELETE_CONFIRMED ################## ITEMTYPE_CREATE ################################## # called automatically if an unexisting frameworkis selected @@ -208,29 +234,104 @@ if ($op eq 'add_form') { if ($searchfield ne '') { $template->param(searchfield => $searchfield); } - my $env; - my ($count,$results)=StringSearch($env,$searchfield,$frameworkcode); - my $toggle="white"; - my @loop_data = (); - for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ - if ($toggle eq 'white'){ - $toggle="#ffffcc"; - } else { - $toggle="white"; - } - my %row_data; # get a fresh hash for the row data - $row_data{tagfield} = $results->[$i]{'tagfield'}; - $row_data{liblibrarian} = $results->[$i]{'liblibrarian'}; - $row_data{repeatable} = $results->[$i]{'repeatable'}; - $row_data{mandatory} = $results->[$i]{'mandatory'}; - $row_data{authorised_value} = $results->[$i]{'authorised_value'}; - $row_data{subfield_link} ="marc_subfields_structure.pl?tagfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; - $row_data{edit} = "$script_name?op=add_form&searchfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; - $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; - $row_data{bgcolor} = $toggle; - push(@loop_data, \%row_data); + my $cnt=0; + if ($dspchoice) { + #here, user only wants used tags/subfields displayed + $searchfield=~ s/\'/\\\'/g; + my @data=split(' ',$searchfield); + my $sth=$dbh->prepare(" + SELECT marc_tag_structure.tagfield AS mts_tagfield, + marc_tag_structure.liblibrarian as mts_liblibrarian, + marc_tag_structure.libopac as mts_libopac, + marc_tag_structure.repeatable as mts_repeatable, + marc_tag_structure.mandatory as mts_mandatory, + marc_tag_structure.authorised_value as mts_authorized_value, + marc_subfield_structure.* + FROM marc_tag_structure + LEFT JOIN marc_subfield_structure ON (marc_tag_structure.tagfield=marc_subfield_structure.tagfield AND marc_tag_structure.frameworkcode=marc_subfield_structure.frameworkcode) WHERE (marc_tag_structure.tagfield >= ? and marc_tag_structure.frameworkcode=?) AND marc_subfield_structure.tab>=0 ORDER BY marc_tag_structure.tagfield,marc_subfield_structure.tagsubfield"); + #could be ordoned by tab + $sth->execute($data[0], $frameworkcode); + my @results = (); + while (my $data=$sth->fetchrow_hashref){ + push(@results,$data); + $cnt++; + } + $sth->finish; + + my $toggle=0; + my @loop_data = (); + my $j=1; + my $i=$offset; + while ($i < ($offset+$pagesize<$cnt?$offset+$pagesize:$cnt)) { + if ($toggle eq 0){ + $toggle=1; + } else { + $toggle=0; + } + my %row_data; # get a fresh hash for the row data + $row_data{tagfield} = $results[$i]->{'mts_tagfield'}; + $row_data{liblibrarian} = $results[$i]->{'mts_liblibrarian'}; + $row_data{repeatable} = $results[$i]->{'mts_repeatable'}; + $row_data{mandatory} = $results[$i]->{'mts_mandatory'}; + $row_data{authorised_value} = $results[$i]->{'mts_authorised_value'}; + $row_data{subfield_link} ="marc_subfields_structure.pl?op=add_form&tagfield=".$results[$i]->{'mts_tagfield'}."&frameworkcode=".$frameworkcode; + $row_data{edit} = "$script_name?op=add_form&searchfield=".$results[$i]->{'mts_tagfield'}."&frameworkcode=".$frameworkcode; + $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results[$i]->{'mts_tagfield'}."&frameworkcode=".$frameworkcode; + $row_data{toggle} = $toggle; + $j=$i; + my @internal_loop = (); + while (($results[$i]->{'tagfield'}==$results[$j]->{'tagfield'}) and ($j< ($offset+$pagesize<$cnt?$offset+$pagesize:$cnt))) { + my %subfield_data; + $subfield_data{tagsubfield} = $results[$j]->{'tagsubfield'}; + $subfield_data{liblibrarian} = $results[$j]->{'liblibrarian'}; + $subfield_data{kohafield} = $results[$j]->{'kohafield'}; + $subfield_data{repeatable} = $results[$j]->{'repeatable'}; + $subfield_data{mandatory} = $results[$j]->{'mandatory'}; + $subfield_data{tab} = $results[$j]->{'tab'}; + $subfield_data{seealso} = $results[$j]->{'seealso'}; + $subfield_data{authorised_value} = $results[$j]->{'authorised_value'}; + $subfield_data{authtypecode}= $results[$j]->{'authtypecode'}; + $subfield_data{value_builder}= $results[$j]->{'value_builder'}; + $subfield_data{toggle} = $toggle; +# warn "tagfield : ".$results[$j]->{'tagfield'}." tagsubfield :".$results[$j]->{'tagsubfield'}; + push @internal_loop,\%subfield_data; + $j++; + } + $row_data{'subfields'}=\@internal_loop; + push(@loop_data, \%row_data); +# undef @internal_loop; + $i=$j; + } + $template->param(select_display => "True", + loop => \@loop_data); + # $sth->execute; + $sth->finish; + } else { + #here, normal old style : display every tags + my ($count,$results)=StringSearch($searchfield,$frameworkcode); + $cnt = $count; + my $toggle=0; + my @loop_data = (); + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ + if ($toggle eq 0){ + $toggle=1; + } else { + $toggle=0; + } + my %row_data; # get a fresh hash for the row data + $row_data{tagfield} = $results->[$i]{'tagfield'}; + $row_data{liblibrarian} = $results->[$i]{'liblibrarian'}; + $row_data{repeatable} = $results->[$i]{'repeatable'}; + $row_data{mandatory} = $results->[$i]{'mandatory'}; + $row_data{authorised_value} = $results->[$i]{'authorised_value'}; + $row_data{subfield_link} ="marc_subfields_structure.pl?tagfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; + $row_data{edit} = "$script_name?op=add_form&searchfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; + $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; + $row_data{toggle} = $toggle; + push(@loop_data, \%row_data); + } + $template->param(loop => \@loop_data); } - $template->param(loop => \@loop_data); if ($offset>0) { my $prevpage = $offset-$pagesize; $template->param(isprevpage => $offset, @@ -238,9 +339,9 @@ if ($op eq 'add_form') { searchfield => $searchfield, script_name => $script_name, frameworkcode => $frameworkcode, - ); + ); } - if ($offset+$pagesize<$count) { + if ($offset+$pagesize<$cnt) { my $nextpage =$offset+$pagesize; $template->param(nextpage =>$nextpage, searchfield => $searchfield, @@ -250,7 +351,8 @@ if ($op eq 'add_form') { } } #---- END $OP eq DEFAULT -$template->param(loggeninuser => $loggedinuser); +$template->param(loggeninuser => $loggedinuser, + ); output_html_with_http_headers $input, $cookie, $template->output; @@ -258,7 +360,7 @@ output_html_with_http_headers $input, $cookie, $template->output; # the sub used for searches # sub StringSearch { - my ($env,$searchstring,$frameworkcode)=@_; + my ($searchstring,$frameworkcode)=@_; my $dbh = C4::Context->dbh; $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); @@ -286,11 +388,11 @@ sub duplicate_framework { $sth_insert->execute($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value,$newframeworkcode); } - $sth = $dbh->prepare("select frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,thesaurus_category,value_builder,seealso from marc_subfield_structure where frameworkcode=?"); + $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,thesaurus_category,value_builder,seealso) values (?,?,?,?,?,?,?,?,?,?,?,?,?)"); - while ( my ($frameworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $kohafield, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso) = $sth->fetchrow) { - $sth_insert->execute($newframeworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $kohafield, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso); + $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); } }