From fe59c6c516d456e7455947b195033b3f2380180e Mon Sep 17 00:00:00 2001 From: tgarip1957 Date: Fri, 1 Sep 2006 22:03:00 +0000 Subject: [PATCH] New framework handling. New koha_attr table for mapping MARC to koha --- admin/admin-home.pl | 3 +- admin/aqbookfund.pl | 333 +++++------- admin/aqbudget.pl | 472 +++++------------- admin/auth_subfields_structure.pl | 67 +-- admin/auth_tag_structure.pl | 20 +- admin/authorised_values.pl | 9 +- admin/authtypes.pl | 7 +- ...blio_framework.pl => biblios_framework.pl} | 30 +- ...ture.pl => biblios_subfields_structure.pl} | 168 ++++--- admin/bibliostagstructure.pl | 397 +++++++++++++++ admin/branches.pl | 87 +--- admin/categorie.pl | 73 ++- admin/categoryitem.pl | 7 +- admin/checkmarc.pl | 153 ++---- admin/currency.pl | 6 +- admin/holdings_subfields_structure.pl | 458 +++++++++++++++++ ...agstructure.pl => holdingstagstructure.pl} | 66 +-- admin/institutions-careers.pl | 74 +++ admin/issuingrules.pl | 25 +- admin/itemtypes.pl | 153 ++---- admin/koha-electronic.pl | 102 ++++ admin/koha-news.pl | 95 ++++ admin/koha2marclinks.pl | 144 ------ admin/koha_attr.pl | 321 ++++++++++++ admin/printers.pl | 6 +- admin/systempreferences.pl | 36 +- admin/thesaurus.pl | 8 +- admin/viewlog.pl | 9 +- admin/z3950servers.pl | 7 +- 29 files changed, 2044 insertions(+), 1292 deletions(-) rename admin/{biblio_framework.pl => biblios_framework.pl} (83%) mode change 100755 => 100644 rename admin/{marc_subfields_structure.pl => biblios_subfields_structure.pl} (79%) mode change 100755 => 100644 create mode 100644 admin/bibliostagstructure.pl create mode 100644 admin/holdings_subfields_structure.pl rename admin/{marctagstructure.pl => holdingstagstructure.pl} (73%) mode change 100755 => 100644 create mode 100644 admin/institutions-careers.pl create mode 100644 admin/koha-electronic.pl create mode 100644 admin/koha-news.pl delete mode 100755 admin/koha2marclinks.pl create mode 100644 admin/koha_attr.pl diff --git a/admin/admin-home.pl b/admin/admin-home.pl index 17f93e33ed..dc04c9c1a1 100755 --- a/admin/admin-home.pl +++ b/admin/admin-home.pl @@ -5,8 +5,7 @@ use CGI; use C4::Auth; use C4::Output; use C4::Interface::CGI::Output; -use C4::Database; -use HTML::Template; + my $query = new CGI; my ($template, $loggedinuser, $cookie) diff --git a/admin/aqbookfund.pl b/admin/aqbookfund.pl index 56c74f55a3..21de612ab6 100755 --- a/admin/aqbookfund.pl +++ b/admin/aqbookfund.pl @@ -1,6 +1,24 @@ #!/usr/bin/perl +#script to administer the aqbudget table #written 20/02/2002 by paul.poulain@free.fr +# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) + +# ALGO : +# this script use an $op to know what to do. +# if $op is empty or none of the above values, +# - the default screen is build (with all records, or filtered datas). +# - the user can clic on add, modify or delete record. +# if $op=add_form +# - if primkey exists, this is a modification,so we read the $primkey record +# - builds the add/modify form +# if $op=add_validate +# - the user has just send datas, so we create/modify the record +# if $op=delete_form +# - we show the record having primkey=$primkey and ask for deletion validation form +# if $op=delete_confirm +# - we delete the record having primkey=$primkey + # Copyright 2000-2002 Katipo Communications # @@ -19,91 +37,73 @@ # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA - -=head1 NAME - -aqbookfund.pl - -=head1 DESCRIPTION - -script to administer the aqbudget table. - -=head1 CGI PARAMETERS - -=over 4 - -=item op -this script use an C<$op> to know what to do. -C can be equal to: -* empty or none of the above values, then - - the default screen is build (with all records, or filtered datas). - - the user can clic on add, modify or delete record. -* add_form, then - - if primkey exists, this is a modification,so we read the $primkey record - - builds the add/modify form -* add_validate, then - - the user has just send datas, so we create/modify the record -* delete_form, then - - we show the record having primkey=$primkey and ask for deletion validation form -* delete_confirm, then - - we delete the record having primkey=$primkey - -=cut - use strict; use CGI; -use HTML::Template; -use List::Util qw/min/; use C4::Auth; -use C4::Koha; use C4::Context; -use C4::Bookfund; use C4::Output; use C4::Interface::CGI::Output; use C4::Search; use C4::Date; -my $dbh = C4::Context->dbh; +sub StringSearch { + my ($env,$searchstring,$type)=@_; + my $dbh = C4::Context->dbh; + $searchstring=~ s/\'/\\\'/g; + my @data=split(' ',$searchstring); + my $count=@data; + my $sth=$dbh->prepare("select bookfundid,bookfundname,bookfundgroup from aqbookfund where (bookfundname like ?) order by bookfundid"); + $sth->execute("%$data[0]%"); + my @results; + while (my $data=$sth->fetchrow_hashref){ + push(@results,$data); + } + # $sth->execute; + $sth->finish; + return (scalar(@results),\@results); +} + my $input = new CGI; +my $searchfield=$input->param('searchfield'); +my $offset=$input->param('offset'); my $script_name="/cgi-bin/koha/admin/aqbookfund.pl"; my $bookfundid=$input->param('bookfundid'); -my $pagesize = 10; -my $op = $input->param('op') || ''; +my $pagesize=20; +my $op = $input->param('op'); +$searchfield=~ s/\,//g; my ($template, $borrowernumber, $cookie) - = get_template_and_user( - {template_name => "admin/aqbookfund.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1, management => 1}, - debug => 1, - } - ); + = get_template_and_user({template_name => "admin/aqbookfund.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1, management => 1}, + debug => 1, + }); if ($op) { - $template->param( - script_name => $script_name, - $op => 1, - ); # we show only the TMPL_VAR names $op -} -else { - $template->param(script_name => $script_name, +$template->param(script_name => $script_name, + $op => 1); # we show only the TMPL_VAR names $op +} else { +$template->param(script_name => $script_name, else => 1); # we show only the TMPL_VAR names $op } $template->param(action => $script_name); -my $branches = GetBranches; ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { #---- if primkey exists, it's a modify action, so read values to modify... - my $dataaqbookfund; + my $data; my $header; if ($bookfundid) { - $dataaqbookfund = GetBookFund($bookfundid); - } + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select bookfundid,bookfundname,bookfundgroup from aqbookfund where bookfundid=?"); + $sth->execute($bookfundid); + $data=$sth->fetchrow_hashref; + $sth->finish; + } if ($bookfundid) { $header = "Modify book fund"; $template->param('header-is-modify-p' => 1); @@ -119,171 +119,78 @@ if ($op eq 'add_form') { } $template->param(add_or_modify => $add_or_modify); $template->param(bookfundid =>$bookfundid); - $template->param(bookfundname =>$dataaqbookfund->{'bookfundname'}); - - my @branchloop; - foreach my $branchcode (sort keys %{$branches}) { - my $row = { - branchcode => $branchcode, - branchname => $branches->{$branchcode}->{branchname}, - }; - - if (defined $bookfundid - and defined $dataaqbookfund->{branchcode} - and $dataaqbookfund->{branchcode} eq $branchcode) { - $row->{selected} = 1; - } - - push @branchloop, $row; - } - - $template->param(branches => \@branchloop); - -} # END $OP eq ADD_FORM + $template->param(bookfundname =>$data->{'bookfundname'}); + # END $OP eq ADD_FORM ################## ADD_VALIDATE ################################## # called by add_form, used to insert/modify data in DB -elsif ($op eq 'add_validate') { - my $bookfundid = uc $input->param('bookfundid'); - - my $number = Countbookfund($bookfundid); - - my $bookfund_already_exists = $number > 0 ? 1 : 0; - - if ($bookfund_already_exists) { - my $bookfundname = $input->param('bookfundname'); - my $branchcode = $input->param('branchcode') || undef; - - ModBookFund($bookfundname,$branchcode,$bookfundid); - } - else { - NewBookFund( - $bookfundid, - $input->param('bookfundname'), - $input->param('branchcode') - ); - } - $input->redirect('aqbookfund.pl'); -# END $OP eq ADD_VALIDATE -} +} elsif ($op eq 'add_validate') { + my $dbh = C4::Context->dbh; + my $bookfundid=uc($input->param('bookfundid')); + my $sth=$dbh->prepare("delete from aqbookfund where bookfundid =?"); + $sth->execute($bookfundid); + $sth->finish; + my $sth=$dbh->prepare("replace aqbookfund (bookfundid,bookfundname) values (?,?)"); + $sth->execute($input->param('bookfundid'),$input->param('bookfundname')); + $sth->finish; + print "Content-Type: text/html\n\n"; + exit; + + # END $OP eq ADD_VALIDATE ################## DELETE_CONFIRM ################################## # called by default form, used to confirm deletion of data in DB - -elsif ($op eq 'delete_confirm') { - my $data = GetBookFund($bookfundid); +} elsif ($op eq 'delete_confirm') { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select bookfundid,bookfundname,bookfundgroup from aqbookfund where bookfundid=?"); + $sth->execute($bookfundid); + my $data=$sth->fetchrow_hashref; + $sth->finish; $template->param(bookfundid => $bookfundid); $template->param(bookfundname => $data->{'bookfundname'}); -} # END $OP eq DELETE_CONFIRM - - + # END $OP eq DELETE_CONFIRM ################## DELETE_CONFIRMED ################################## # called by delete_confirm, used to effectively confirm deletion of data in DB -elsif ($op eq 'delete_confirmed') { - DelBookFund(uc($input->param('bookfundid'))); - -}# END $OP eq DELETE_CONFIRMED - - +} elsif ($op eq 'delete_confirmed') { + my $dbh = C4::Context->dbh; + my $bookfundid=uc($input->param('bookfundid')); + my $sth=$dbh->prepare("delete from aqbookfund where bookfundid=?"); + $sth->execute($bookfundid); + $sth->finish; + $sth=$dbh->prepare("delete from aqbudget where bookfundid=?"); + $sth->execute($bookfundid); + $sth->finish; + # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## -else { # DEFAULT - my ($query, $sth); - - $template->param(scriptname => $script_name); - - # filters - my @branchloop; - foreach my $branchcode (sort keys %{$branches}) { - my $row = { - code => $branchcode, - name => $branches->{$branchcode}->{branchname}, - }; - - if (defined $input->param('filter_branchcode') - and $input->param('filter_branchcode') eq $branchcode) { - $row->{selected} = 1; - } - - push @branchloop, $row; - } - - my @bookfundids_loop; - my $sth = GetBookFundsId(); - - while (my $row = $sth->fetchrow_hashref) { - if (defined $input->param('filter_bookfundid') and $input->param('filter_bookfundid') eq $row->{bookfundid}){ - $row->{selected} = 1; - } - push @bookfundids_loop, $row; - } - - $template->param( - filter_bookfundids => \@bookfundids_loop, - filter_branches => \@branchloop, - filter_bookfundname => $input->param('filter_bookfundname') || undef, - ); - - # searching the bookfunds corresponding to our filtering rules - my @results = SearchBookFund( - $input->param('filter'), - $input->param('filter_bookfundid'), - $input->param('filter_bookfundname'), - $input->param('filter_branchcode'), - ); - - # does the book funds have budgets? - my @loop_id; - my $sth = GetBookFundsId(); - while (my $row = $sth->fetchrow){ - push @loop_id, $row; - } - - my ($id,%nb_budgets_of); - foreach $id (@loop_id){ - my $number = Countbookfund($id); - $nb_budgets_of{$id} = $number; - } - - # pagination informations - my $page = $input->param('page') || 1; - my @loop; - - my $first = ($page - 1) * $pagesize; - - # if we are on the last page, the number of the last word to display - # must not exceed the length of the results array - my $last = min( - $first + $pagesize - 1, - scalar(@results) - 1, - ); - - my $toggle = 0; - foreach my $result (@results[$first .. $last]) { - push( - @loop, - { - %{$result}, - toggle => $toggle++%2, - branchname => - $branches->{ $result->{branchcode} }->{branchname}, - has_budgets => defined $nb_budgets_of{ $result->{bookfundid} }, - } - ); - } - - $template->param( - bookfund => \@loop, - pagination_bar => pagination_bar( - $script_name, - getnbpages(scalar @results, $pagesize), - $page, - 'page' - ) - ); +} else { # DEFAULT + $template->param(scriptname => $script_name); + if ($searchfield ne '') { + $template->param(search => 1); + $template->param(searchfield => $searchfield); + } + my $env; + my ($count,$results)=StringSearch($env,$searchfield,'web'); + my $toggle="white"; + my @loop_data =(); + my $dbh = C4::Context->dbh; + my $sth2 = $dbh->prepare("Select aqbudgetid,startdate,enddate,budgetamount from aqbudget where bookfundid = ? order by bookfundid"); + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ + my %row_data; + $row_data{bookfundid} =$results->[$i]{'bookfundid'}; + $row_data{bookfundname} = $results->[$i]{'bookfundname'}; + $sth2->execute($row_data{bookfundid}); + my @budget_loop; + while (my ($aqbudgetid,$startdate,$enddate,$budgetamount) = $sth2->fetchrow) { + my %budgetrow_data; + $budgetrow_data{aqbudgetid} = $aqbudgetid; + $budgetrow_data{startdate} = format_date($startdate); + $budgetrow_data{enddate} = format_date($enddate); + $budgetrow_data{budgetamount} = $budgetamount; + push @budget_loop,\%budgetrow_data; + } + $row_data{budget} = \@budget_loop; + push @loop_data,\%row_data; + } + $template->param(bookfund => \@loop_data); } #---- 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; diff --git a/admin/aqbudget.pl b/admin/aqbudget.pl index 5673a714f1..1b50c79b81 100755 --- a/admin/aqbudget.pl +++ b/admin/aqbudget.pl @@ -39,198 +39,115 @@ use strict; use CGI; -use HTML::Template; -use List::Util qw/min/; - use C4::Date; use C4::Auth; -use C4::Acquisition; use C4::Context; use C4::Output; use C4::Interface::CGI::Output; use C4::Search; -use C4::Koha; + + +sub StringSearch { + my ($env,$searchstring,$type)=@_; + my $dbh = C4::Context->dbh; + $searchstring=~ s/\'/\\\'/g; + my @data=split(' ',$searchstring); + my $count=@data; + my $sth=$dbh->prepare("Select aqbudgetid,bookfundid,startdate,enddate,budgetamount from aqbudget where (bookfundid like ?) order by bookfundid,aqbudgetid"); + $sth->execute("$data[0]%"); + my @results; + my $cnt=0; + while (my $data=$sth->fetchrow_hashref){ + push(@results,$data); + $cnt ++; + } + # $sth->execute; + $sth->finish; + return ($cnt,\@results); +} my $input = new CGI; +my $searchfield=$input->param('searchfield'); +my $offset=$input->param('offset'); my $script_name="/cgi-bin/koha/admin/aqbudget.pl"; my $bookfundid=$input->param('bookfundid'); my $aqbudgetid=$input->param('aqbudgetid'); -my $pagesize = 20; +my $pagesize=20; my $op = $input->param('op'); +$searchfield=~ s/\,//g; my ($template, $borrowernumber, $cookie) - = get_template_and_user( - {template_name => "admin/aqbudget.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1}, - debug => 1, - } - ); - -$template->param( - action => $script_name, - DHTMLcalendar_dateformat => get_date_format_string_for_DHTMLcalendar(), - script_name => $script_name, - $op || 'else' => 1, -); - -my $dbh = C4::Context->dbh; -my $sthtemp = $dbh->prepare("Select flags, branchcode from borrowers where borrowernumber = ?"); -$sthtemp->execute($borrowernumber); -my ($flags, $homebranch)=$sthtemp->fetchrow; - + = get_template_and_user({template_name => "admin/aqbudget.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, + }); + +if ($op) { +$template->param(script_name => $script_name, + $op => 1); # we show only the TMPL_VAR names $op +} else { +$template->param(script_name => $script_name, + else => 1); # we show only the TMPL_VAR names $op +} + +$template->param(action => $script_name); ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { - my ($query, $dataaqbudget, $dataaqbookfund, $sth); - my $dbh = C4::Context->dbh; - - #---- if primkey exists, it's a modify action, so read values to modify... - if ($aqbudgetid) { - $query = ' -SELECT aqbudgetid, - bookfundname, - aqbookfund.bookfundid, - startdate, - enddate, - budgetamount, - aqbudget.branchcode - FROM aqbudget - INNER JOIN aqbookfund ON aqbudget.bookfundid = aqbookfund.bookfundid - WHERE aqbudgetid = ? -'; - $sth=$dbh->prepare($query); - $sth->execute($aqbudgetid); - $dataaqbudget=$sth->fetchrow_hashref; - $sth->finish; - } - - $query = ' -SELECT aqbookfund.branchcode, - branches.branchname, - aqbookfund.bookfundname - FROM aqbookfund - LEFT JOIN branches ON aqbookfund.branchcode = branches.branchcode - WHERE bookfundid = ? -'; - $sth=$dbh->prepare($query); - $sth->execute( - defined $aqbudgetid ? $dataaqbudget->{bookfundid} : $bookfundid, - ); - $dataaqbookfund=$sth->fetchrow_hashref; - $sth->finish; - - if (defined $aqbudgetid) { - $template->param( - bookfundid => $dataaqbudget->{'bookfundid'}, - bookfundname => $dataaqbudget->{'bookfundname'} - ); - } - else { - $template->param( - bookfundid => $bookfundid, - bookfundname => $dataaqbookfund->{bookfundname}, - ); - } - - # Available branches - my @branches = (); - - $query = ' -SELECT branchcode, - branchname - FROM branches - ORDER BY branchname -'; - $sth=$dbh->prepare($query); - $sth->execute(); - while (my $row = $sth->fetchrow_hashref) { - my $branch = $row; - - if (defined $dataaqbookfund->{branchcode}) { - $branch->{selected} = - $dataaqbookfund->{branchcode} eq $row->{branchcode} ? 1 : 0; - } - elsif (defined $aqbudgetid) { - $branch->{selected} = - $dataaqbudget->{branchcode} eq $row->{branchcode} ? 1 : 0; - } - - push @branches, $branch; - } - $sth->finish; - - $template->param( - dateformat => display_date_format(), - aqbudgetid => $dataaqbudget->{'aqbudgetid'}, - startdate => format_date($dataaqbudget->{'startdate'}), - enddate => format_date($dataaqbudget->{'enddate'}), - budgetamount => $dataaqbudget->{'budgetamount'}, - branches => \@branches, - ); - - if (defined $dataaqbookfund->{branchcode}) { - $template->param( - disable_branchselection => 1, - branch => $dataaqbookfund->{branchcode}, - ); - } + #---- if primkey exists, it's a modify action, so read values to modify... + my $dataaqbudget; + my $dataaqbookfund; + if ($aqbudgetid) { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select aqbudgetid,bookfundname,aqbookfund.bookfundid,startdate,enddate,budgetamount from aqbudget,aqbookfund where aqbudgetid=? and aqbudget.bookfundid=aqbookfund.bookfundid"); + $sth->execute($aqbudgetid); + $dataaqbudget=$sth->fetchrow_hashref; + $sth->finish; + } + my $header; + if ($aqbudgetid) { + $header = "Modify budget"; + } else { + $header = "Add budget"; + } + $template->param(header => $header); + if ($aqbudgetid) { + $template->param(modify => 1); + $template->param(bookfundid => $dataaqbudget->{bookfundid}); + $template->param(bookfundname => $dataaqbudget->{bookfundname}); + } else { + $template->param(bookfundid => $bookfundid, + adding => 1); + } + $template->param(dateformat => display_date_format(), + aqbudgetid => $dataaqbudget->{'aqbudgetid'}, + startdate => format_date($dataaqbudget->{'startdate'}), + enddate => format_date($dataaqbudget->{'enddate'}), + budgetamount => $dataaqbudget->{'budgetamount'} + ); # END $OP eq ADD_FORM ################## ADD_VALIDATE ################################## # called by add_form, used to insert/modify data in DB } elsif ($op eq 'add_validate') { - my ($query, $sth); - - if (defined $aqbudgetid) { - $query = ' -UPDATE aqbudget - SET bookfundid = ?, - startdate = ?, - enddate = ?, - budgetamount = ?, - branchcode = ? - WHERE aqbudgetid = ? -'; - $sth=$dbh->prepare($query); - $sth->execute( - $input->param('bookfundid'), - format_date_in_iso($input->param('startdate')), - format_date_in_iso($input->param('enddate')), - $input->param('budgetamount'), - $input->param('branch') || undef, - $aqbudgetid, - ); - $sth->finish; - } - else { - $query = ' -INSERT - INTO aqbudget - (bookfundid, startdate, enddate, budgetamount, branchcode) - VALUES - (?, ?, ?, ?, ?) -'; - $sth=$dbh->prepare($query); - $sth->execute( - $input->param('bookfundid'), - format_date_in_iso($input->param('startdate')), - format_date_in_iso($input->param('enddate')), - $input->param('budgetamount'), - $input->param('branch') || undef, - ); - $sth->finish; - } - - $input->redirect("aqbudget.pl"); - + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("replace aqbudget (aqbudgetid,bookfundid,startdate,enddate,budgetamount) values (?,?,?,?,?)"); + $sth->execute($input->param('aqbudgetid'),$input->param('bookfundid'), + format_date_in_iso($input->param('startdate')), + format_date_in_iso($input->param('enddate')), + $input->param('budgetamount') + ); + $sth->finish; + print $input->redirect("aqbookfund.pl"); + exit; # END $OP eq ADD_VALIDATE ################## 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 aqbudgetid,bookfundid,startdate,enddate,budgetamount,branchcode from aqbudget where aqbudgetid=?"); + my $sth=$dbh->prepare("select aqbudgetid,bookfundid,startdate,enddate,budgetamount from aqbudget where aqbudgetid=?"); $sth->execute($aqbudgetid); my $data=$sth->fetchrow_hashref; $sth->finish; @@ -253,181 +170,54 @@ INSERT # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## } else { # DEFAULT - my ($query, $sth); - - # create a look-up table for bookfund names from bookfund ids, - # instead of having on query per budget - my %bookfundname_of = (); - $query = ' -SELECT bookfundid, bookfundname - FROM aqbookfund -'; - $sth=$dbh->prepare($query); - $sth->execute; - while (my $row = $sth->fetchrow_hashref) { - $bookfundname_of{ $row->{bookfundid} } = $row->{bookfundname}; - } - $sth->finish; - - # filters - my $branches = GetBranches(); - my @branchloop; - foreach my $branchcode (sort keys %{$branches}) { - my $row = { - code => $branchcode, - name => $branches->{$branchcode}->{branchname}, - }; - - if (defined $input->param('filter_branchcode') - and $input->param('filter_branchcode') eq $branchcode) { - $row->{selected} = 1; - } - - push @branchloop, $row; - } - - my @bookfundids_loop; - $query = ' -SELECT bookfundid - FROM aqbookfund -'; - $sth = $dbh->prepare($query); - $sth->execute(); - while (my $row = $sth->fetchrow_hashref) { - if (defined $input->param('filter_bookfundid') - and $input->param('filter_bookfundid') eq $row->{bookfundid}) { - $row->{selected} = 1; - } - - push @bookfundids_loop, $row; - } - $sth->finish; - - $template->param( - filter_bookfundids => \@bookfundids_loop, - filter_branches => \@branchloop, - filter_amount => $input->param('filter_amount') || undef, - filter_startdate => $input->param('filter_startdate') || undef, - filter_enddate => $input->param('filter_enddate') || undef, - ); - - my %sign_label_of = ( - '=' => 'equal', - '>=' => 'superior', - '<=' => 'inferior', - ); - - foreach my $field (qw/startdate enddate amount/) { - my $param = 'filter_'.$field.'_sign'; - - foreach my $sign (keys %sign_label_of) { - if ($input->param($param) eq $sign) { - $template->param( - $param.'_'.$sign_label_of{$sign}.'_selected' => 1, - ); - } - } - } - - # Search all available budgets - $query = ' -SELECT aqbudgetid, - bookfundid, - startdate, - enddate, - budgetamount, - branchcode - FROM aqbudget - WHERE 1 = 1'; - - my @bindings; - - if ($input->param('filter_bookfundid')) { - $query.= ' - AND bookfundid = ? -'; - push @bindings, $input->param('filter_bookfundid'); - } - if ($input->param('filter_branchcode')) { - $query.= ' - AND branchcode = ? -'; - push @bindings, $input->param('filter_branchcode'); - } - if ($input->param('filter_startdate')) { - $query.= ' - AND startdate '.$input->param('filter_startdate_sign').' ? -'; - push @bindings, format_date_in_iso($input->param('filter_startdate')); - } - if ($input->param('filter_enddate')) { - $query.= ' - AND enddate '.$input->param('filter_enddate_sign').' ? -'; - push @bindings, format_date_in_iso($input->param('filter_enddate')); - } - if ($input->param('filter_amount')) { - $query.= ' - AND budgetamount '.$input->param('filter_amount_sign').' ? -'; - # the amount must be a quantity, with 2 digits after the decimal - # separator - $input->param('filter_amount') =~ m{(\d* (?:\.\d{,2})? )}xms; - my ($amount) = $1; - push @bindings, $amount; - } - - $query.= ' - ORDER BY bookfundid, aqbudgetid -'; - $sth = $dbh->prepare($query); - $sth->execute(@bindings); - my @results; - while (my $row = $sth->fetchrow_hashref){ - push @results, $row; - } - $sth->finish; - - # filter budgets depending on the pagination - my $page = $input->param('page') || 1; - my $first = ($page - 1) * $pagesize; - - # if we are on the last page, the number of the last word to display - # must not exceed the length of the results array - my $last = min( - $first + $pagesize - 1, - scalar @results - 1, - ); - - my $toggle = 0; - my @loop; - foreach my $result (@results[$first .. $last]) { - push( - @loop, - { - %{$result}, - toggle => $toggle++%2, - bookfundname => $bookfundname_of{ $result->{'bookfundid'} }, - branchname => $branches->{ $result->{branchcode} }->{branchname}, - startdate => format_date($result->{startdate}), - enddate => format_date($result->{enddate}), - } - ); - } - - $template->param( - budget => \@loop, - pagination_bar => pagination_bar( - $script_name, - getnbpages(scalar @results, $pagesize), - $page, - 'page' - ) - ); + if ($searchfield ne '') { + $template->param(search => 1); + $template->param(searchfield => $searchfield); + } + my $env; + my ($count,$results)=StringSearch($env,$searchfield,'web'); + my $toggle="white"; + my @loop_data =(); + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ + #find out stats + # my ($od,$issue,$fines)=categdata2($env,$results->[$i]{'borrowernumber'}); + # $fines=$fines+0; + my $dataaqbookfund; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select bookfundid,bookfundname from aqbookfund where bookfundid=?"); + $sth->execute($results->[$i]{'bookfundid'}); + $dataaqbookfund=$sth->fetchrow_hashref; + $sth->finish; + my @toggle = (); + my @bookfundid = (); + my @bookfundname = (); + my @startdate = (); + my @enddate = (); + my @budgetamount = (); + push(@toggle,$toggle); + push(@bookfundid,$results->[$i]{'bookfundid'}); + push(@bookfundname,$dataaqbookfund->{'bookfundname'}); + push(@startdate,format_date($results->[$i]{'startdate'})); + push(@enddate,format_date($results->[$i]{'enddate'})); + push(@budgetamount,$results->[$i]{'budgetamount'}); + if ($toggle eq 'white'){ + $toggle="#ffffcc"; + } else { + $toggle="white"; + } + while (@toggle and @bookfundid and @bookfundname and @startdate and @enddate and @budgetamount) { + my %row_data; + $row_data{toggle} = shift @toggle; + $row_data{bookfundid} = shift @bookfundid; + $row_data{bookfundname} = shift @bookfundname; + $row_data{startdate} = shift @startdate; + $row_data{enddate} = shift @enddate; + $row_data{budgetamount} = shift @budgetamount; + push(@loop_data, \%row_data); + } + } + $template->param(budget => \@loop_data); } #---- 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; diff --git a/admin/auth_subfields_structure.pl b/admin/auth_subfields_structure.pl index 86531e989d..40318f2a31 100755 --- a/admin/auth_subfields_structure.pl +++ b/admin/auth_subfields_structure.pl @@ -25,7 +25,7 @@ use C4::Auth; use CGI; use C4::Search; use C4::Context; -use HTML::Template; + sub StringSearch { my ($env,$searchstring,$authtypecode)=@_; @@ -86,18 +86,10 @@ 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; - push @kohafields, ""; - my $sth2=$dbh->prepare("SHOW COLUMNS from auth_header"); - $sth2->execute; - while ((my $field) = $sth2->fetchrow_array) { - push @kohafields, "auth_header.".$field; - } # build authorised value list - $sth2->finish; - $sth2 = $dbh->prepare("select distinct category from authorised_values"); + +my $sth2 = $dbh->prepare("select distinct category from authorised_values"); $sth2->execute; my @authorised_values; push @authorised_values,""; @@ -147,23 +139,20 @@ if ($op eq 'add_form') { }, -default=>$data->{'tab'}, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', -id=>"ohidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, + -values=>['0','2'], + -labels => {'0'=>'Show','2' =>'Hide',}, -default=>substr($data->{'hidden'},0,1), -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', + -values=>['0','2'], + -labels => {'0'=>'Show', '2' =>'Hide', }, -default=>substr($data->{'hidden'},1,1), @@ -184,19 +173,11 @@ if ($op eq 'add_form') { $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', -values=> \@authorised_values, -default=>$data->{'authorised_value'}, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{value_builder} = CGI::scrolling_list(-name=>'value_builder', @@ -204,7 +185,6 @@ if ($op eq 'add_form') { -values=> \@value_builder, -default=>$data->{'value_builder'}, -size=>1, - -tabindex=>'', -multiple=>0, ); @@ -245,15 +225,12 @@ if ($op eq 'add_form') { }, -default=>"", -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', -id=>"ohidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, + -values=>['0','2'], + -labels => {'0'=>'Show','2' =>'Hide',}, -default=>"0", -size=>1, -multiple=>0, @@ -261,10 +238,8 @@ if ($op eq 'add_form') { $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', -id=>"ihidden$i", - -values=>['0','1','2'], - -labels => {'0'=>'Show','1'=>'Show Collapsed', - '2' =>'Hide', - }, + -values=>['0','2'], + -labels => {'0'=>'Show','2' =>'Hide',}, -default=>"0", -size=>1, -multiple=>0, @@ -299,18 +274,11 @@ if ($op eq 'add_form') { -checked => '', -value => 1, -label => ''); - $row_data{kohafield}= CGI::scrolling_list( -name=>'kohafield', - -id => "kohafield$i", - -values=> \@kohafields, - -default=> "", - -size=>1, - -multiple=>0, - ); + $row_data{authorised_value} = CGI::scrolling_list(-name=>'authorised_value', -id => 'authorised_value', -values=> \@authorised_values, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{link} = CGI::checkbox( -name => "link", @@ -326,7 +294,7 @@ if ($op eq 'add_form') { $template->param('use-heading-flags-p' => 1); $template->param('heading-edit-subfields-p' => 1); $template->param(action => "Edit subfields", - tagfield => "$tagfield", + tagfield => "$tagfield", loop => \@loop_data, more_subfields => $more_subfields, more_tag => $tagfield); @@ -337,12 +305,11 @@ 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 auth_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl, link) - values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + my $sth=$dbh->prepare("replace auth_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl, link) + values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 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'); @@ -362,7 +329,7 @@ if ($op eq 'add_form') { 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]; @@ -379,7 +346,6 @@ if ($op eq 'add_form') { $libopac, $repeatable, $mandatory, - $kohafield, $tab, $seealso, $authorised_value, @@ -445,7 +411,6 @@ if ($op eq 'add_form') { $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'}; diff --git a/admin/auth_tag_structure.pl b/admin/auth_tag_structure.pl index 5ad9d205bc..b86a17ed67 100755 --- a/admin/auth_tag_structure.pl +++ b/admin/auth_tag_structure.pl @@ -27,7 +27,7 @@ use C4::Output; use C4::Interface::CGI::Output; use C4::Search; use C4::Context; -use HTML::Template; + # retrieve parameters my $input = new CGI; @@ -118,7 +118,6 @@ if ($op eq 'add_form') { my $authorised_value = CGI::scrolling_list(-name=>'authorised_value', -values=> \@authorised_values, -size=>1, - -tabindex=>'', -multiple=>0, -default => $data->{'authorised_value'}, ); @@ -211,13 +210,13 @@ if ($op eq 'add_form') { } my $env; my ($count,$results)=StringSearch($env,$searchfield,$authtypecode); - my $toggle=1; + my $toggle="white"; my @loop_data = (); for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ - if ($toggle eq 1){ - $toggle=0; + if ($toggle eq 'white'){ + $toggle="#ffffcc"; } else { - $toggle=1; + $toggle="white"; } my %row_data; # get a fresh hash for the row data $row_data{tagfield} = $results->[$i]{'tagfield'}; @@ -228,7 +227,7 @@ if ($op eq 'add_form') { $row_data{subfield_link} ="auth_subfields_structure.pl?tagfield=".$results->[$i]{'tagfield'}."&authtypecode=".$authtypecode; $row_data{edit} = "$script_name?op=add_form&searchfield=".$results->[$i]{'tagfield'}."&authtypecode=".$authtypecode; $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results->[$i]{'tagfield'}."&authtypecode=".$authtypecode; - $row_data{toggle} = $toggle; + $row_data{bgcolor} = $toggle; push(@loop_data, \%row_data); } $template->param(loop => \@loop_data, @@ -251,12 +250,7 @@ if ($op eq 'add_form') { } } #---- END $OP eq DEFAULT -$template->param(loggeninuser => $loggedinuser, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); - +$template->param(loggeninuser => $loggedinuser); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/admin/authorised_values.pl b/admin/authorised_values.pl index bdd102bebb..28f4b13a3a 100755 --- a/admin/authorised_values.pl +++ b/admin/authorised_values.pl @@ -24,7 +24,6 @@ use C4::Context; use C4::Output; use C4::Interface::CGI::Output; use C4::Search; -use HTML::Template; use C4::Context; @@ -126,6 +125,7 @@ if ($op eq 'add_form') { $sth->execute($id); my $data=$sth->fetchrow_hashref; $sth->finish; + $template->param(searchfield => $searchfield, Tvalue => $data->{'authorised_value'}, id =>$id, @@ -139,6 +139,7 @@ if ($op eq 'add_form') { my $sth=$dbh->prepare("delete from authorised_values where id=?"); $sth->execute($id); $sth->finish; + print "Content-Type: text/html\n\n"; exit; @@ -157,7 +158,6 @@ if ($op eq 'add_form') { -values=> \@category_list, -default=>"", -size=>1, - -tabindex=>'', -multiple=>0, ); if (!$searchfield) { @@ -203,8 +203,5 @@ if ($op eq 'add_form') { ); } } #---- 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; diff --git a/admin/authtypes.pl b/admin/authtypes.pl index fa5522dc44..bbfede9541 100755 --- a/admin/authtypes.pl +++ b/admin/authtypes.pl @@ -28,7 +28,6 @@ use C4::Output; use C4::Search; use C4::Auth; use C4::Interface::CGI::Output; -use HTML::Template; sub StringSearch { my ($env,$searchstring,$type)=@_; @@ -84,7 +83,7 @@ if ($op eq 'add_form') { $data=$sth->fetchrow_hashref; $sth->finish; } - warn "=> $data->{'authtypetext'} : ".$data->{'summary'}; +# warn "=> $data->{'authtypetext'} : ".$data->{'summary'}; $template->param(authtypecode => $authtypecode, authtypetext => $data->{'authtypetext'}, auth_tag_to_report => $data->{'auth_tag_to_report'}, @@ -171,10 +170,6 @@ if ($op eq 'add_form') { $template->param(next => "$script_name?offset=".$nextpage); } } #---- 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; # Local Variables: diff --git a/admin/biblio_framework.pl b/admin/biblios_framework.pl old mode 100755 new mode 100644 similarity index 83% rename from admin/biblio_framework.pl rename to admin/biblios_framework.pl index 96a6447271..2054c5df43 --- a/admin/biblio_framework.pl +++ b/admin/biblios_framework.pl @@ -28,7 +28,7 @@ use C4::Output; use C4::Search; use C4::Auth; use C4::Interface::CGI::Output; -use HTML::Template; + sub StringSearch { my ($env,$searchstring,$type)=@_; @@ -36,7 +36,7 @@ sub StringSearch { $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); my $count=@data; - my $sth=$dbh->prepare("Select * from biblio_framework where (frameworkcode like ?) order by frameworktext"); + my $sth=$dbh->prepare("Select * from biblios_framework where (frameworkcode like ?) order by frameworktext"); $sth->execute("$data[0]%"); my @results; while (my $data=$sth->fetchrow_hashref){ @@ -50,13 +50,13 @@ sub StringSearch { my $input = new CGI; my $searchfield=$input->param('frameworkcode'); my $offset=$input->param('offset'); -my $script_name="/cgi-bin/koha/admin/biblio_framework.pl"; +my $script_name="/cgi-bin/koha/admin/biblios_framework.pl"; my $frameworkcode=$input->param('frameworkcode'); my $pagesize=20; my $op = $input->param('op'); $searchfield=~ s/\,//g; my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "admin/biblio_framework.tmpl", + = get_template_and_user({template_name => "admin/biblios_framework.tmpl", query => $input, type => "intranet", authnotrequired => 0, @@ -83,7 +83,7 @@ if ($op eq 'add_form') { my $data; if ($frameworkcode) { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select * from biblio_framework where frameworkcode=?"); + my $sth=$dbh->prepare("select * from biblios_framework where frameworkcode=?"); $sth->execute($frameworkcode); $data=$sth->fetchrow_hashref; $sth->finish; @@ -97,10 +97,10 @@ if ($op eq 'add_form') { # called by add_form, used to insert/modify data in DB } elsif ($op eq 'add_validate') { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("replace biblio_framework (frameworkcode,frameworktext) values (?,?)"); + my $sth=$dbh->prepare("replace biblios_framework (frameworkcode,frameworktext) values (?,?)"); $sth->execute($input->param('frameworkcode'),$input->param('frameworktext')); $sth->finish; - print "Content-Type: text/html\n\n"; + print "Content-Type: text/html\n\n"; exit; # END $OP eq ADD_VALIDATE ################## DELETE_CONFIRM ################################## @@ -111,14 +111,14 @@ if ($op eq 'add_form') { # Check both categoryitem and biblioitems, see Bug 199 my $total = 0; - for my $table ('marc_tag_structure') { + for my $table ('biblios_tag_structure') { my $sth=$dbh->prepare("select count(*) as total from $table where frameworkcode=?"); $sth->execute($frameworkcode); $total += $sth->fetchrow_hashref->{total}; $sth->finish; } - my $sth=$dbh->prepare("select * from biblio_framework where frameworkcode=?"); + my $sth=$dbh->prepare("select * from biblios_framework where frameworkcode=?"); $sth->execute($frameworkcode); my $data=$sth->fetchrow_hashref; $sth->finish; @@ -133,14 +133,14 @@ if ($op eq 'add_form') { #start the page and read in includes my $dbh = C4::Context->dbh; my $frameworkcode=uc($input->param('frameworkcode')); - my $sth=$dbh->prepare("delete from marc_tag_structure where frameworkcode=?"); + my $sth=$dbh->prepare("delete from biblios_tag_structure where frameworkcode=?"); $sth->execute($frameworkcode); - $sth=$dbh->prepare("delete from marc_subfield_structure where frameworkcode=?"); + $sth=$dbh->prepare("delete from biblios_subfield_structure where frameworkcode=?"); $sth->execute($frameworkcode); - $sth=$dbh->prepare("delete from biblio_framework where frameworkcode=?"); + $sth=$dbh->prepare("delete from biblios_framework where frameworkcode=?"); $sth->execute($frameworkcode); $sth->finish; - print "Content-Type: text/html\n\n"; + print "Content-Type: text/html\n\n"; exit; # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## @@ -170,10 +170,6 @@ if ($op eq 'add_form') { $template->param(next => "$script_name?offset=".$nextpage); } } #---- 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; # Local Variables: diff --git a/admin/marc_subfields_structure.pl b/admin/biblios_subfields_structure.pl old mode 100755 new mode 100644 similarity index 79% rename from admin/marc_subfields_structure.pl rename to admin/biblios_subfields_structure.pl index e8ca2bf965..016dc1dcd8 --- a/admin/marc_subfields_structure.pl +++ b/admin/biblios_subfields_structure.pl @@ -25,7 +25,6 @@ use C4::Auth; use CGI; use C4::Search; use C4::Context; -use HTML::Template; sub StringSearch { my ($env,$searchstring,$frameworkcode)=@_; @@ -33,7 +32,7 @@ sub StringSearch { $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"); + my $sth=$dbh->prepare("Select * from biblios_subfield_structure where (tagfield like ? and frameworkcode=?) order by tagfield"); $sth->execute("$searchstring%",$frameworkcode); my @results; my $cnt=0; @@ -54,10 +53,10 @@ my $tagsubfield=$input->param('tagsubfield'); my $frameworkcode=$input->param('frameworkcode'); my $pkfield="tagfield"; my $offset=$input->param('offset'); -my $script_name="/cgi-bin/koha/admin/marc_subfields_structure.pl"; +my $script_name="/cgi-bin/koha/admin/biblios_subfields_structure.pl"; my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "admin/marc_subfields_structure.tmpl", + = get_template_and_user({template_name => "admin/biblios_subfields_structure.tmpl", query => $input, type => "intranet", authnotrequired => 0, @@ -86,33 +85,11 @@ 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; - push @kohafields, ""; - my $sth2=$dbh->prepare("SHOW COLUMNS from biblio"); - $sth2->execute; - while ((my $field) = $sth2->fetchrow_array) { - push @kohafields, "biblio.".$field; - } - my $sth2=$dbh->prepare("SHOW COLUMNS from biblioitems"); - $sth2->execute; - while ((my $field) = $sth2->fetchrow_array) { - if ($field eq 'notes') { $field = 'bnotes'; } - push @kohafields, "biblioitems.".$field; - } - my $sth2=$dbh->prepare("SHOW COLUMNS from items"); - $sth2->execute; - while ((my $field) = $sth2->fetchrow_array) { - push @kohafields, "items.".$field; - } - # other subfields - push @kohafields, "additionalauthors.author"; - push @kohafields, "bibliosubject.subject"; - push @kohafields, "bibliosubtitle.subtitle"; + # build authorised value list - $sth2->finish; - $sth2 = $dbh->prepare("select distinct category from authorised_values"); + +my $sth2 = $dbh->prepare("select distinct category from authorised_values"); $sth2->execute; my @authorised_values; push @authorised_values,""; @@ -150,7 +127,7 @@ if ($op eq 'add_form') { closedir DIR; # build values list - my $sth=$dbh->prepare("select * from marc_subfield_structure where tagfield=? and frameworkcode=?"); # and tagsubfield='$tagsubfield'"); + my $sth=$dbh->prepare("select * from biblios_subfield_structure where tagfield=? and frameworkcode=?"); # and tagsubfield='$tagsubfield'"); $sth->execute($tagfield,$frameworkcode); my @loop_data = (); my $toggle=1; @@ -164,35 +141,54 @@ if ($op eq 'add_form') { } $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', + -values=>['-1','0','1','2','3','4','5','6','7','8','9'], + -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)', - }, + '8' =>'8','9'=>'9',}, -default=>$data->{'tab'}, -size=>1, - -tabindex=>'', + -multiple=>0, + ); + $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', + -id=>"ohidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show', + '2' =>'Hide', + }, + -default=>substr($data->{'hidden'},0,1), + -size=>1, + -multiple=>0, + ); + $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', + -id=>"ihidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show', + '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{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, - -tabindex=>'', - -multiple=>0, - ); + $row_data{authorised_value} = CGI::scrolling_list(-name=>'authorised_value', -id=>'authorised_value', -values=> \@authorised_values, -default=>$data->{'authorised_value'}, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{value_builder} = CGI::scrolling_list(-name=>'value_builder', @@ -200,7 +196,6 @@ if ($op eq 'add_form') { -values=> \@value_builder, -default=>$data->{'value_builder'}, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{authtypes} = CGI::scrolling_list(-name=>'authtypecode', @@ -208,19 +203,16 @@ if ($op eq 'add_form') { -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"); $row_data{mandatory} = CGI::checkbox(-name => "mandatory$i", -checked => $data->{'mandatory'}?'checked':'', -value => 1, - -tabindex=>'', -label => '', -id => "mandatory$i"); $row_data{hidden} = CGI::escapeHTML($data->{hidden}); @@ -228,7 +220,6 @@ if ($op eq 'add_form') { -id => "isurl$i", -checked => $data->{'isurl'}?'checked':'', -value => 1, - -tabindex=>'', -label => ''); $row_data{row} = $i; $row_data{toggle} = $toggle; @@ -241,60 +232,74 @@ if ($op eq 'add_form') { my %row_data; # get a fresh hash for the row data $row_data{tab} = CGI::scrolling_list(-name=>'tab', -id => "tab$i", - -values=>['-1','0','1','2','3','4','5','6','7','8','9','10'], + -values=>['-1','0','1','2','3','4','5','6','7','8','9'], -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)', + '8' =>'8','9'=>'9', }, -default=>"", -size=>1, - -tabindex=>'', + -multiple=>0, + ); + $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', + -id=>"ohidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show','2' =>'Hide',}, + -default=>"0", + -size=>1, + -multiple=>0, + ); + + $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', + -id=>"ihidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show','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{liblibrarian} = ""; $row_data{libopac} = ""; $row_data{seealso} = ""; - $row_data{hidden} = ""; + $row_data{hidden} = "000"; $row_data{repeatable} = CGI::checkbox( -name=> 'repeatable', -id => "repeatable$i", -checked => '', -value => 1, - -tabindex=>'', -label => ''); $row_data{mandatory} = CGI::checkbox( -name=> 'mandatory', -id => "mandatory$i", -checked => '', -value => 1, - -tabindex=>'', -label => ''); $row_data{isurl} = CGI::checkbox(-name => 'isurl', -id => "isurl$i", -checked => '', -value => 1, - -tabindex=>'', -label => ''); - $row_data{kohafield}= CGI::scrolling_list( -name=>'kohafield', - -id => "kohafield$i", - -values=> \@kohafields, - -default=> "", - -size=>1, - -tabindex=>'', - -multiple=>0, - ); + $row_data{authorised_value} = CGI::scrolling_list(-name=>'authorised_value', -id => 'authorised_value', -values=> \@authorised_values, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{authtypes} = CGI::scrolling_list(-name=>'authtypecode', -id => 'authtypecode', -values=> \@authtypes, -size=>1, - -tabindex=>'', -multiple=>0, ); $row_data{link} = CGI::escapeHTML($data->{'link'}); @@ -316,15 +321,19 @@ 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) - values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + my $sth=$dbh->prepare("replace biblios_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link) + values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 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 @hidden = $input->param('hidden'); + my @hidden; + my @ohidden = $input->param('ohidden'); + my @ihidden = $input->param('ihidden'); + my @ehidden = $input->param('ehidden'); my @authorised_values = $input->param('authorised_value'); my @authtypecodes = $input->param('authtypecode'); my @value_builder =$input->param('value_builder'); @@ -337,13 +346,13 @@ if ($op eq 'add_form') { 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 $hidden = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens; my $isurl = $input->param("isurl$i")?1:0; my $link = $link[$i]; if ($liblibrarian) { @@ -354,7 +363,7 @@ if ($op eq 'add_form') { $libopac, $repeatable, $mandatory, - $kohafield, + $tab, $seealso, $authorised_value, @@ -370,7 +379,7 @@ if ($op eq 'add_form') { } } $sth->finish; - print "Content-Type: text/html\n\n"; + print "Content-Type: text/html\n\n"; exit; # END $OP eq ADD_VALIDATE @@ -378,7 +387,7 @@ if ($op eq 'add_form') { # 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=?"); + my $sth=$dbh->prepare("select * from biblios_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?"); #FIXME : called with 2 bind variables when 3 are needed $sth->execute($tagfield,$tagsubfield); my $data=$sth->fetchrow_hashref; @@ -396,11 +405,11 @@ if ($op eq 'add_form') { } 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=?"); + my $sth=$dbh->prepare("delete from biblios_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?"); $sth->execute($tagfield,$tagsubfield,$frameworkcode); $sth->finish; } - print "Content-Type: text/html\n\n"; + print "Content-Type: text/html\n\n"; exit; $template->param(tagfield => $tagfield); # END $OP eq DELETE_CONFIRMED @@ -420,7 +429,6 @@ if ($op eq 'add_form') { $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'}; @@ -428,7 +436,7 @@ if ($op eq 'add_form') { $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{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'}."&frameworkcode=$frameworkcode"; diff --git a/admin/bibliostagstructure.pl b/admin/bibliostagstructure.pl new file mode 100644 index 0000000000..5255e44e17 --- /dev/null +++ b/admin/bibliostagstructure.pl @@ -0,0 +1,397 @@ +#!/usr/bin/perl + + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use CGI; +use C4::Auth; +use C4::Koha; +use C4::Context; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::Search; + + +# retrieve parameters +my $input = new CGI; +my $frameworkcode = $input->param('frameworkcode'); # set to select framework +$frameworkcode="" unless $frameworkcode; +my $existingframeworkcode = $input->param('existingframeworkcode'); # set when we have to create a new framework (in frameworkcode) by copying an old one (in existingframeworkcode) +$existingframeworkcode = "" unless $existingframeworkcode; +my $frameworkinfo = getframeworkinfo($frameworkcode); +my $searchfield=$input->param('searchfield'); +$searchfield=0 unless $searchfield; +$searchfield=~ s/\,//g; + +my $offset=$input->param('offset'); +my $op = $input->param('op'); +my $dspchoice = $input->param('select_display'); +my $pagesize=20; + +my $script_name="/cgi-bin/koha/admin/bibliostagstructure.pl"; + +my $dbh = C4::Context->dbh; + +# open template +my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "admin/bibliostagstructure.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, + }); + +# get framework list +my $frameworks = getframeworks(); +my @frameworkloop; +foreach my $thisframeworkcode (keys %$frameworks) { + my $selected = 1 if $thisframeworkcode eq $frameworkcode; + my %row =(value => $thisframeworkcode, + selected => $selected, + frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'}, + ); + push @frameworkloop, \%row; +} + +# check that framework is defined in biblios_tag_structure +my $sth=$dbh->prepare("select count(*) from biblios_tag_structure where frameworkcode=?"); +$sth->execute($frameworkcode); +my ($frameworkexist) = $sth->fetchrow; +if ($frameworkexist) { +} else { + # if frameworkcode does not exists, then OP must be changed to "create framework" if we are not on the way to create it + # (op = itemtyp_create_confirm) + if ($op eq "framework_create_confirm") { + duplicate_framework($frameworkcode, $existingframeworkcode); + $op=""; # unset $op to go back to framework list + } else { + $op = "framework_create"; + } +} +$template->param(frameworkloop => \@frameworkloop, + frameworkcode => $frameworkcode, + frameworktext => $frameworkinfo->{frameworktext}); +if ($op) { +$template->param(script_name => $script_name, + $op => 1); # we show only the TMPL_VAR names $op +} else { +$template->param(script_name => $script_name, + else => 1); # we show only the TMPL_VAR names $op +} + + +################## ADD_FORM ################################## +# called by default. Used to create form to add or modify a record +if ($op eq 'add_form') { + #---- if primkey exists, it's a modify action, so read values to modify... + my $data; + if ($searchfield) { + $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from biblios_tag_structure where tagfield=? and frameworkcode=?"); + $sth->execute($searchfield,$frameworkcode); + $data=$sth->fetchrow_hashref; + $sth->finish; + } + 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(action => "Modify tag", + searchfield => "$searchfield"); + $template->param('heading-modify-tag-p' => 1); + } else { + $template->param(action => "Add tag", + searchfield => ""); + $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(-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 biblios_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 + ); + } + $sth->finish; + print "Content-Type: text/html\n\n"; + exit; + # END $OP eq ADD_VALIDATE +################## DELETE_CONFIRM ################################## +# called by default form, used to confirm deletion of data in DB +} elsif ($op eq 'delete_confirm') { + $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from biblios_tag_structure where tagfield=? and frameworkcode=?"); + $sth->execute($searchfield,$frameworkcode); + my $data=$sth->fetchrow_hashref; + $sth->finish; + $template->param(liblibrarian => $data->{'liblibrarian'}, + searchfield => $searchfield, + frameworkcode => $frameworkcode, + ); + # END $OP eq DELETE_CONFIRM +################## 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') eq 1) { + $dbh->do("delete from biblios_tag_structure where tagfield='$searchfield' and frameworkcode='$frameworkcode'"); + $dbh->do("delete from biblios_subfield_structure where tagfield='$searchfield' and frameworkcode='$frameworkcode'"); + + } + # END $OP eq DELETE_CONFIRMED +################## ITEMTYPE_CREATE ################################## +# called automatically if an unexisting frameworkis selected +} elsif ($op eq 'framework_create') { + $sth = $dbh->prepare("select count(*),biblios_tag_structure.frameworkcode,frameworktext from biblios_tag_structure,biblios_framework where biblios_framework.frameworkcode=biblios_tag_structure.frameworkcode group by biblios_tag_structure.frameworkcode"); + $sth->execute; + my @existingframeworkloop; + while (my ($tot,$thisframeworkcode,$frameworktext) = $sth->fetchrow) { + if ($tot>0) { + my %line = ( value => $thisframeworkcode, + frameworktext => $frameworktext, + ); + push @existingframeworkloop,\%line; + } + } + $template->param(existingframeworkloop => \@existingframeworkloop, + frameworkcode => $frameworkcode, +# FRtext => $frameworkinfo->{frameworktext}, + ); +################## DEFAULT ################################## +} else { # DEFAULT + # here, $op can be unset or set to "framework_create_confirm". + if ($searchfield ne '') { + $template->param(searchfield => $searchfield); + } + my $cnt=0; + if ($dspchoice) { + #here, user only wants used tags/subfields displayed + my $env; + $searchfield=~ s/\'/\\\'/g; + my @data=split(' ',$searchfield); + my $sth=$dbh->prepare("Select biblios_tag_structure.tagfield as mts_tagfield,biblios_tag_structure.liblibrarian as mts_liblibrarian,biblios_tag_structure.libopac as mts_libopac,biblios_tag_structure.repeatable as mts_repeatable,biblios_tag_structure.mandatory as mts_mandatory,biblios_tag_structure.authorised_value as mts_authorized_value,biblios_subfield_structure.* from biblios_tag_structure LEFT JOIN biblios_subfield_structure ON (biblios_tag_structure.tagfield=biblios_subfield_structure.tagfield AND biblios_tag_structure.frameworkcode=biblios_subfield_structure.frameworkcode) where (biblios_tag_structure.tagfield >= ? and biblios_tag_structure.frameworkcode=?) AND biblios_subfield_structure.tab>=0 order by biblios_tag_structure.tagfield,biblios_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} ="biblios_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))) { + if ($toggle eq 0) { + $toggle=1; + } else { + $toggle=0; + } + my %subfield_data; + $subfield_data{tagsubfield} = $results[$j]->{'tagsubfield'}; + $subfield_data{liblibrarian} = $results[$j]->{'liblibrarian'}; + $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 $env; + my ($count,$results)=StringSearch($env,$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} ="biblios_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); + } + if ($offset>0) { + my $prevpage = $offset-$pagesize; + $template->param(isprevpage => $offset, + prevpage=> $prevpage, + searchfield => $searchfield, + script_name => $script_name, + frameworkcode => $frameworkcode, + ); + } + if ($offset+$pagesize<$cnt) { + my $nextpage =$offset+$pagesize; + $template->param(nextpage =>$nextpage, + searchfield => $searchfield, + script_name => $script_name, + frameworkcode => $frameworkcode, + ); + } +} #---- END $OP eq DEFAULT + +$template->param(loggeninuser => $loggedinuser, + intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), + intranetstylesheet => C4::Context->preference("intranetstylesheet"), + IntranetNav => C4::Context->preference("IntranetNav"), + ); +output_html_with_http_headers $input, $cookie, $template->output; + + +# +# the sub used for searches +# +sub StringSearch { + my ($env,$searchstring,$frameworkcode)=@_; + my $dbh = C4::Context->dbh; + $searchstring=~ s/\'/\\\'/g; + my @data=split(' ',$searchstring); + my $count=@data; + my $sth=$dbh->prepare("Select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from biblios_tag_structure where (tagfield >= ? and frameworkcode=?) order by tagfield"); + $sth->execute($data[0], $frameworkcode); + my @results; + while (my $data=$sth->fetchrow_hashref){ + push(@results,$data); + } + # $sth->execute; + $sth->finish; + return (scalar(@results),\@results); +} + +# +# the sub used to duplicate a framework from an existing one in MARC parameters tables. +# +sub duplicate_framework { + my ($newframeworkcode,$oldframeworkcode) = @_; + my $sth = $dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from biblios_tag_structure where frameworkcode=?"); + $sth->execute($oldframeworkcode); + my $sth_insert = $dbh->prepare("insert into biblios_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); + } + + $sth = $dbh->prepare("select frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,authorised_value,authtypecode,value_builder,seealso from biblios_subfield_structure where frameworkcode=?"); + $sth->execute($oldframeworkcode); + $sth_insert = $dbh->prepare("insert into biblios_subfield_structure (frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,authorised_value,authtypecode,value_builder,seealso) values (?,?,?,?,?,?,?,?,?,?,?,?)"); + while ( my ($frameworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso) = $sth->fetchrow) { + $sth_insert->execute($newframeworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso); + } + +## now the same for holdings + $sth = $dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from holdings_tag_structure where frameworkcode=?"); + $sth->execute($oldframeworkcode); + my $sth_insert = $dbh->prepare("insert into holdings_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); + } + + $sth = $dbh->prepare("select frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,authorised_value,authtypecode,value_builder,seealso from holdings_subfield_structure where frameworkcode=?"); + $sth->execute($oldframeworkcode); + $sth_insert = $dbh->prepare("insert into holdings_subfield_structure (frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,authorised_value,authtypecode,value_builder,seealso) values (?,?,?,?,?,?,?,?,?,?,?,?)"); + while ( my ($frameworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso) = $sth->fetchrow) { + $sth_insert->execute($newframeworkcode, $tagfield, $tagsubfield, $liblibrarian, $libopac, $repeatable, $mandatory, $tab, $authorised_value, $thesaurus_category, $value_builder, $seealso); + } +} + diff --git a/admin/branches.pl b/admin/branches.pl index 6a6b88a1d0..677d93638f 100755 --- a/admin/branches.pl +++ b/admin/branches.pl @@ -50,8 +50,6 @@ use C4::Auth; use C4::Context; use C4::Output; use C4::Interface::CGI::Output; -use HTML::Template; -use C4::Koha; # Fixed variables my $linecolor1='#ffffcc'; @@ -89,24 +87,25 @@ if ($op eq 'add') { # If the user has pressed the "add new branch" button. heading("Branches: Add Branch"); $template->param('heading-branches-add-branch-p' => 1); + $template->param('use-heading-flags-p' => 1); editbranchform(); } elsif ($op eq 'edit') { # if the user has pressed the "edit branch settings" button. heading("Branches: Edit Branch"); $template->param('heading-branches-edit-branch-p' => 1); + $template->param('use-heading-flags-p' => 1); $template->param(add => 1); editbranchform($branchcode); } elsif ($op eq 'add_validate') { # confirm settings change... my $params = $input->Vars; unless ($params->{'branchcode'} && $params->{'branchname'}) { - $template->param(else => 1); - default ("MESSAGE1"); + default ("Cannot change branch record: You must specify a Branchname and a Branchcode"); } else { setbranchinfo($params); $template->param(else => 1); - default ("MESSAGE2"); + default ("Branch record changed for branch: $params->{'branchname'}"); } } elsif ($op eq 'delete') { # if the user has pressed the "delete branch" button. @@ -123,21 +122,22 @@ if ($op eq 'add') { # actually delete branch and return to the main screen.... deletebranch($branchcode); $template->param(else => 1); - default("MESSAGE3"); + default("The branch \"$branchname\" ($branchcode) has been deleted."); } elsif ($op eq 'editcategory') { # If the user has pressed the "add new category" or "modify" buttons. + heading("Branches: Edit Category"); $template->param('heading-branches-edit-category-p' => 1); + $template->param('use-heading-flags-p' => 1); editcatform($categorycode); } elsif ($op eq 'addcategory_validate') { # confirm settings change... my $params = $input->Vars; unless ($params->{'categorycode'} && $params->{'categoryname'}) { - $template->param(else => 1); - default ("MESSAGE4"); + default ("Cannot change branch record: You must specify a Branchname and a Branchcode"); } else { setcategoryinfo($params); $template->param(else => 1); - default ("MESSAGE5"); + default ("Category record changed for category $params->{'categoryname'}"); } } elsif ($op eq 'delete_category') { # if the user has pressed the "delete branch" button. @@ -153,7 +153,7 @@ if ($op eq 'add') { # actually delete branch and return to the main screen.... deletecategory($categorycode); $template->param(else => 1); - default("MESSAGE6"); + default("The category with code $categorycode has been deleted."); } else { # if no operation has been set... @@ -170,7 +170,8 @@ sub default { my ($message) = @_; heading("Branches"); $template->param('heading-branches-p' => 1); - $template->param("$message" => 1); + $template->param('use-heading-flags-p' => 1); + $template->param(message => $message); $template->param(action => $script_name); branchinfotable(); } @@ -183,52 +184,20 @@ sub heading { sub editbranchform { # prepares the edit form... - -# initiate the scrolling-list to select the printers - my %env; - my $printers=getprinters(\%env); - my @printerloop; - my $printercount=0; - my $oldprinter; - my $CGIprinter; my ($branchcode) = @_; my $data; - if ($branchcode) { $data = getbranchinfo($branchcode); $data = $data->[0]; - # get the old printer of the branch - $oldprinter = $data->{'branchprinter'}; -# printer loop - foreach my $thisprinter (keys %$printers) { - my $selected = 1 if $oldprinter eq $printers->{$thisprinter}->{'printqueue'}; - my %row =(value => $thisprinter, - selected => $selected, - branchprinter => $printers->{$thisprinter}->{'printqueue'}, - ); - push @printerloop, \%row; - } - - $template->param(printerloop => \@printerloop ); $template->param(branchcode => $data->{'branchcode'}); - $template->param(branch_name => $data->{'branchname'}); + $template->param(branchname => $data->{'branchname'}); $template->param(branchaddress1 => $data->{'branchaddress1'}); $template->param(branchaddress2 => $data->{'branchaddress2'}); $template->param(branchaddress3 => $data->{'branchaddress3'}); $template->param(branchphone => $data->{'branchphone'}); $template->param(branchfax => $data->{'branchfax'}); $template->param(branchemail => $data->{'branchemail'}); - $template->param(branchip => $data->{'branchip'}); - } - else { #case of an add branch select printer - foreach my $thisprinter (keys %$printers) { - my %row =(value => $thisprinter, - branchprinter => $printers->{$thisprinter}->{'printqueue'}, - ); - push @printerloop, \%row; - } - $template->param(printerloop => \@printerloop ); - } + } # make the checkboxs..... # @@ -293,11 +262,10 @@ sub branchinfotable { } else { $branchinfo = getbranchinfo(); } - my $toggle; - my $i; + my $color; my @loop_data =(); foreach my $branch (@$branchinfo) { - ($i % 2) ? ($toggle = 1) : ($toggle = 0); + ($color eq $linecolor1) ? ($color=$linecolor2) : ($color=$linecolor1); # # We export the following fields to the template. These are not # pre-composed as a single "address" field because the template @@ -325,7 +293,7 @@ sub branchinfotable { # Handle address fields separately my $address_empty_p = 1; for my $field ('branchaddress1', 'branchaddress2', 'branchaddress3', - 'branchphone', 'branchfax', 'branchemail', 'branchip', 'branchprinter') { + 'branchphone', 'branchfax', 'branchemail') { $row{$field} = $branch->{$field}; if ( $branch->{$field} ) { $address_empty_p = 0; @@ -353,27 +321,21 @@ sub branchinfotable { # Handle all other fields $row{'branch_name'} = $branch->{'branchname'}; $row{'branch_code'} = $branch->{'branchcode'}; - $row{'toggle'} = $toggle; + $row{'color'} = $color; $row{'value'} = $branch->{'branchcode'}; $row{'action'} = '/cgi-bin/koha/admin/branches.pl'; push @loop_data, { %row }; - $i++; } my @branchcategories =(); my $catinfo = getcategoryinfo(); - my $toggle; - my $i = 0; foreach my $cat (@$catinfo) { - ($i % 2) ? ($toggle = 1) : ($toggle = 0); push @branchcategories, { - toggle => $toggle, categoryname => $cat->{'categoryname'}, categorycode => $cat->{'categorycode'}, codedescription => $cat->{'codedescription'}, }; - $i++; - } + } $template->param(branches => \@loop_data, branchcategories => \@branchcategories); @@ -456,11 +418,11 @@ sub setbranchinfo { # sets the data from the editbranch form, and writes to the database... my ($data) = @_; my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("replace branches (branchcode,branchname,branchaddress1,branchaddress2,branchaddress3,branchphone,branchfax,branchemail,branchip,branchprinter) values (?,?,?,?,?,?,?,?,?,?)"); + my $sth=$dbh->prepare("replace branches (branchcode,branchname,branchaddress1,branchaddress2,branchaddress3,branchphone,branchfax,branchemail) values (?,?,?,?,?,?,?,?)"); $sth->execute(uc($data->{'branchcode'}), $data->{'branchname'}, $data->{'branchaddress1'}, $data->{'branchaddress2'}, $data->{'branchaddress3'}, $data->{'branchphone'}, - $data->{'branchfax'}, $data->{'branchemail'}, $data->{'branchip'},$data->{'branchprinter'}); + $data->{'branchfax'}, $data->{'branchemail'}); $sth->finish; # sort out the categories.... @@ -538,7 +500,7 @@ sub checkdatabasefor { my $message; if ($total) { # FIXME: need to be replaced by an exported boolean parameter - $message = "MESSAGE7"; + $message = "Branch cannot be deleted because there are $total items using that branch."; } return $message; } @@ -558,10 +520,7 @@ sub checkcategorycode { } return $message; } -$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; # Local Variables: diff --git a/admin/categorie.pl b/admin/categorie.pl index b33dcc00f2..9a5b90e8e2 100755 --- a/admin/categorie.pl +++ b/admin/categorie.pl @@ -38,10 +38,10 @@ use strict; use CGI; + use C4::Context; use C4::Output; use C4::Search; -use HTML::Template; use C4::Auth; use C4::Interface::CGI::Output; @@ -51,7 +51,7 @@ sub StringSearch { $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); my $count=@data; - my $sth=$dbh->prepare("Select * from categories where (description like ?) order by category_type,description"); + my $sth=$dbh->prepare("Select * from categories where (description like ?)"); $sth->execute("$data[0]%"); my @results; while (my $data=$sth->fetchrow_hashref){ @@ -73,7 +73,7 @@ my ($template, $loggedinuser, $cookie) query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => {parameters => 1, management => 1}, + flagsrequired => {parameters => 1}, debug => 1, }); @@ -92,35 +92,34 @@ if ($op eq 'add_form') { my $data; if ($categorycode) { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired,category_type from categories where categorycode=?"); + my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired, canmakepublicshelves, addRequestToShelves, allowrenewsfromopac from categories where categorycode=?"); $sth->execute($categorycode); $data=$sth->fetchrow_hashref; $sth->finish; } - $template->param(description => $data->{'description'}, + $template->param(description => $data->{'description'}, enrolmentperiod => $data->{'enrolmentperiod'}, upperagelimit => $data->{'upperagelimit'}, dateofbirthrequired => $data->{'dateofbirthrequired'}, - enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), + enrolmentfee => $data->{'enrolmentfee'}, overduenoticerequired => $data->{'overduenoticerequired'}, issuelimit => $data->{'issuelimit'}, - reservefee => sprintf("%.2f",$data->{'reservefee'}), - category_type => $data->{'category_type'}, - "type_".$data->{'category_type'} => " SELECTED ", - ); + reservefee => $data->{'reservefee'}, + canmakepublicshelves => $data->{'canmakepublicshelves'}, + addRequestToShelves => $data->{'addRequestToShelves'}, + allowrenewsfromopac => $data->{'allowrenewsfromopac'} + ); # END $OP eq ADD_FORM ################## ADD_VALIDATE ################################## # called by add_form, used to insert/modify data in DB } elsif ($op eq 'add_validate') { $template->param(add_validate => 1); my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("replace categories (categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?)"); - $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','overduenoticerequired','category_type')); + my $sth=$dbh->prepare("replace categories (categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,overduenoticerequired, issuelimit, canmakepublicshelves, addRequestToShelves , allowrenewsfromopac) values (?,?,?,?,?,?,?,?,?,?,?,?)"); + $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','overduenoticerequired', 'issuelimit', 'canmakepublicshelves', 'addRequestToShelves', 'allowrenewsfromopac')); $sth->finish; - print "Content-Type: text/html\n\n"; - exit; - + # END $OP eq ADD_VALIDATE ################## DELETE_CONFIRM ################################## # called by default form, used to confirm deletion of data in DB @@ -134,7 +133,7 @@ if ($op eq 'add_form') { $sth->finish; $template->param(total => $total->{'total'}); - my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired,category_type from categories where categorycode=?"); + my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired, canmakepublicshelves, addRequestToShelves,allowrenewsfromopac from categories where categorycode=?"); $sth2->execute($categorycode); my $data=$sth2->fetchrow_hashref; $sth2->finish; @@ -146,12 +145,17 @@ if ($op eq 'add_form') { enrolmentperiod => $data->{'enrolmentperiod'}, upperagelimit => $data->{'upperagelimit'}, dateofbirthrequired => $data->{'dateofbirthrequired'}, - enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), + enrolmentfee => $data->{'enrolmentfee'}, overduenoticerequired => $data->{'overduenoticerequired'}, issuelimit => $data->{'issuelimit'}, - reservefee => sprintf("%.2f",$data->{'reservefee'}), - category_type => $data->{'category_type'} - ); + reservefee => $data->{'reservefee'}, + canmakepublicshelves => $data->{'canmakepublicshelves'}, + addRequestToShelves => $data->{'addRequestToShelves'}, + allowrenewsfromopac => $data->{'allowrenewsfromopac'}, + + ); + + # END $OP eq DELETE_CONFIRM ################## DELETE_CONFIRMED ################################## # called by delete_confirm, used to effectively confirm deletion of data in DB @@ -162,9 +166,6 @@ if ($op eq 'add_form') { my $sth=$dbh->prepare("delete from categories where categorycode=?"); $sth->execute($categorycode); $sth->finish; - print "Content-Type: text/html\n\n"; - exit; - # END $OP eq DELETE_CONFIRMED } else { # DEFAULT $template->param(else => 1); @@ -178,30 +179,25 @@ if ($op eq 'add_form') { enrolmentperiod => $results->[$i]{'enrolmentperiod'}, upperagelimit => $results->[$i]{'upperagelimit'}, dateofbirthrequired => $results->[$i]{'dateofbirthrequired'}, - enrolmentfee => sprintf("%.2f",$results->[$i]{'enrolmentfee'}), + enrolmentfee => $results->[$i]{'enrolmentfee'}, overduenoticerequired => $results->[$i]{'overduenoticerequired'}, issuelimit => $results->[$i]{'issuelimit'}, - reservefee => sprintf("%.2f",$results->[$i]{'reservefee'}), - category_type => $results->[$i]{'category_type'}, + reservefee => $results->[$i]{'reservefee'}, + canmakepublicshelves => $results->[$i]{'canmakepublicshelves'}, + addRequestToShelves => $results->[$i]{'addRequestToShelves'}, + allowrenewsfromopac => $results->[$i]{'allowrenewsfromopac'}, toggle => $toggle ); push @loop, \%row; - if ( $toggle eq 0 ) - { - $toggle = 1; - } - else - { - $toggle = 0; - } + $toggle = not $toggle; } $template->param(loop => \@loop); # check that I (institution) and C (child) exists. otherwise => warning to the user my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select category_type from categories where category_type='C'"); + my $sth=$dbh->prepare("select categorycode from categories where categorycode='C'"); $sth->execute; my ($categoryChild) = $sth->fetchrow; $template->param(categoryChild => $categoryChild); - $sth=$dbh->prepare("select category_type from categories where category_type='I'"); + $sth=$dbh->prepare("select categorycode from categories where categorycode='I'"); $sth->execute; my ($categoryInstitution) = $sth->fetchrow; $template->param(categoryInstitution => $categoryInstitution); @@ -211,9 +207,6 @@ if ($op eq 'add_form') { } #---- 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; diff --git a/admin/categoryitem.pl b/admin/categoryitem.pl index e99f0571bb..8714eb58f6 100644 --- a/admin/categoryitem.pl +++ b/admin/categoryitem.pl @@ -39,10 +39,10 @@ use strict; use CGI; + use C4::Context; use C4::Output; use C4::Search; -use HTML::Template; use C4::Auth; use C4::Interface::CGI::Output; @@ -193,10 +193,7 @@ if ($op eq 'add_form') { } #---- 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; diff --git a/admin/checkmarc.pl b/admin/checkmarc.pl index 206301be58..8d71a1f196 100755 --- a/admin/checkmarc.pl +++ b/admin/checkmarc.pl @@ -26,7 +26,6 @@ use CGI; use C4::Search; use C4::Context; use C4::Biblio; -use HTML::Template; my $input = new CGI; @@ -41,111 +40,81 @@ my ($template, $borrowernumber, $cookie) my $dbh = C4::Context->dbh; my $total; -# checks itemnum field -my $sth = $dbh->prepare("select tab from marc_subfield_structure where kohafield=\"items.itemnumber\""); +# checks itemnumber field +my $sth = $dbh->prepare("select tagfield from koha_attr where marctokoha=\"itemnumber\""); $sth->execute; my ($res) = $sth->fetchrow; -if ($res==-1) { - $template->param(itemnum => 0); -} else { - $template->param(itemnum => 1); +unless ($res) { + $template->param(itemnumber => 1); $total++; } - -# checks biblio.biblionumber and biblioitem.biblioitemnumber (same tag and tab=-1) -$sth = $dbh->prepare("select tagfield,tab from marc_subfield_structure where kohafield=\"biblio.biblionumber\""); -$sth->execute; -my $tab; -($res,$tab) = $sth->fetchrow; -$sth = $dbh->prepare("select tagfield,tab from marc_subfield_structure where kohafield=\"biblioitems.biblioitemnumber\""); +#check biblionumber +my $sth = $dbh->prepare("select tagfield from koha_attr where marctokoha=\"biblionumber\""); $sth->execute; -my ($res2,$tab2) = $sth->fetchrow; -if ($res && $res2 && ($res eq $res2) && $tab==-1 && $tab2==-1) { - $template->param(biblionumber => 0); -} else { +my ($res) = $sth->fetchrow; +if ($res ){ + ($res) = $sth->fetchrow; + unless ($res){ $template->param(biblionumber => 1); $total++; -} - -# checks all item fields are in the same tag and in tab 10 - -$sth = $dbh->prepare("select tagfield,tab,kohafield from marc_subfield_structure where kohafield like \"items.%\""); -$sth->execute; -my $field; -($res,$res2,$field) = $sth->fetchrow; -my $tagfield = $res; -my $tab = $res2; -my $subtotal=0; -warn "TAGF : $tagfield"; -while (($res,$res2,$field) = $sth->fetchrow) { - # (ignore itemnumber, that must be in -1 tab) - if (($res ne $tagfield or $res2 ne $tab ) && $res2 ne -1) { - $subtotal++; - } -} -$sth = $dbh->prepare("select kohafield from marc_subfield_structure where tagfield=?"); -$sth->execute($tagfield); -while (($res2) = $sth->fetchrow) { - if (!$res2 || $res2 =~ /^items/) { - } else { - $subtotal++; } } -if ($subtotal eq 0) { - $template->param(itemfields => 0); -} else { - $template->param(itemfields => 1); +#check barcode +my $sth = $dbh->prepare("select tagfield from koha_attr where marctokoha=\"barcode\""); +$sth->execute; +my ($res) = $sth->fetchrow; +unless ($res){ + $template->param(barcode=> 1); $total++; } - -$sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where tab = 10"); +#check isbn +my $sth = $dbh->prepare("select tagfield from koha_attr where marctokoha=\"isbn\""); $sth->execute; -my $totaltags = 0; -my $list = ""; -while (($res2) = $sth->fetchrow) { - $totaltags++; - $list.=$res2.","; -} -if ($totaltags > 1) { - $template->param(itemtags => $list); +my ($res) = $sth->fetchrow; +unless ($res){ + $template->param(isbn => 1); $total++; -} else { - $template->param(itemtags => 0); } - - -# checks biblioitems.itemtype must be mapped and use authorised_value=itemtype -$sth = $dbh->prepare("select tagfield,tab,authorised_value from marc_subfield_structure where kohafield = \"biblioitems.itemtype\""); +## Check for itemtype +my $sth = $dbh->prepare("select tagfield,tagsubfield from koha_attr where marctokoha=\"itemtype\""); $sth->execute; -($res,$res2,$field) = $sth->fetchrow; -if ($res && $res2>=0 && $field eq "itemtypes") { - $template->param(itemtype => 0); -} else { +my ($res,$res2) = $sth->fetchrow; +if ($res) { +$sth = $dbh->prepare("select authorised_value from biblios_subfield_structure where tagfield=? and tagsubfield=?"); +$sth->execute($res,$res2); + my ($item)=$sth->fetchrow; + unless ($item eq "itemtypes"){ $template->param(itemtype => 1); $total++; + } } -# checks items.homebranch must be mapped and use authorised_value=branches -$sth = $dbh->prepare("select tagfield,tab,authorised_value from marc_subfield_structure where kohafield = \"items.homebranch\""); +## Check for homebranch +my $sth = $dbh->prepare("select tagfield from koha_attr where marctokoha=\"homebranch\""); $sth->execute; -($res,$res2,$field) = $sth->fetchrow; -if ($res && $res2 eq 10 && $field eq "branches") { - $template->param(branch => 0); -} else { +my ($res) = $sth->fetchrow; +unless ($res) { $template->param(branch => 1); $total++; + } -# checks items.homebranch must be mapped and use authorised_value=branches -$sth = $dbh->prepare("select tagfield,tab,authorised_value from marc_subfield_structure where kohafield = \"items.holdingbranch\""); + +## Check for holdingbranch +my $sth = $dbh->prepare("select tagfield,tagsubfield from koha_attr where marctokoha=\"holdingbranch\""); $sth->execute; -($res,$res2,$field) = $sth->fetchrow; -if ($res && $res2 eq 10 && $field eq "branches") { - $template->param(holdingbranch => 0); -} else { +my ($res,$res2) = $sth->fetchrow; +if ($res) { +$sth = $dbh->prepare("select authorised_value from biblios_subfield_structure where tagfield=? and tagsubfield=?"); +$sth->execute($res,$res2); + my ($item)=$sth->fetchrow; + unless ($item eq "branches"){ $template->param(holdingbranch => 1); $total++; + } } + + # checks that itemtypes & branches tables are not empty $sth = $dbh->prepare("select count(*) from itemtypes"); $sth->execute; @@ -163,31 +132,5 @@ unless ($res) { $total++; } -$sth = $dbh->prepare("select count(*) from marc_biblio where frameworkcode is NULL"); -$sth->execute; -($res) = $sth->fetchrow; -if ($res) { - $template->param(frameworknull =>1); - $total++; -} -$sth = $dbh->prepare("select count(*) from marc_subfield_structure where frameworkcode is NULL"); -$sth->execute; -($res) = $sth->fetchrow; -if ($res) { - $template->param(frameworknull =>1); - $total++; -} -$sth = $dbh->prepare("select count(*) from marc_tag_structure where frameworkcode is NULL"); -$sth->execute; -($res) = $sth->fetchrow; -if ($res) { - $template->param(frameworknull =>1); - $total++; -} - -$template->param(total => $total, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); +$template->param(total => $total); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/admin/currency.pl b/admin/currency.pl index f78f0e6ccb..5af5536d1a 100755 --- a/admin/currency.pl +++ b/admin/currency.pl @@ -42,7 +42,6 @@ use CGI; use C4::Context; use C4::Output; use C4::Search; -use HTML::Template; use C4::Auth; use C4::Interface::CGI::Output; @@ -194,9 +193,6 @@ if ($op eq 'add_form') { nextpage => $offset+$pagesize); } } #---- 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; diff --git a/admin/holdings_subfields_structure.pl b/admin/holdings_subfields_structure.pl new file mode 100644 index 0000000000..21486e5740 --- /dev/null +++ b/admin/holdings_subfields_structure.pl @@ -0,0 +1,458 @@ +#!/usr/bin/perl + + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::Auth; +use CGI; +use C4::Search; +use C4::Context; + + +sub StringSearch { + my ($env,$searchstring,$frameworkcode)=@_; + my $dbh = C4::Context->dbh; + $searchstring=~ s/\'/\\\'/g; + my @data=split(' ',$searchstring); + my $count=@data; + my $sth=$dbh->prepare("Select * from holdings_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); +} + +my $input = new CGI; +my $tagfield=$input->param('tagfield'); +my $tagsubfield=$input->param('tagsubfield'); +my $frameworkcode=$input->param('frameworkcode'); +my $pkfield="tagfield"; +my $offset=$input->param('offset'); +my $script_name="/cgi-bin/koha/admin/holdings_subfields_structure.pl"; + +my ($template, $borrowernumber, $cookie) + = get_template_and_user({template_name => "admin/holdings_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; + +if ($op) { +$template->param(script_name => $script_name, + tagfield =>$tagfield, + frameworkcode => $frameworkcode, + $op => 1); # we show only the TMPL_VAR names $op +} else { +$template->param(script_name => $script_name, + tagfield =>$tagfield, + frameworkcode => $frameworkcode, + else => 1); # we show only the TMPL_VAR names $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; + + + # build authorised value list + +my $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"); + # 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; + } + # build value_builder list + my @value_builder=(''); + + # read value_builder directory. + # 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"; + unless (opendir(DIR, "$cgidir/value_builder")) { + $cgidir = C4::Context->intranetdir; + opendir(DIR, "$cgidir/value_builder") || die "can't opendir $cgidir/value_builder: $!"; + } + while (my $line = readdir(DIR)) { + if ($line =~ /\.pl$/) { + push (@value_builder,$line); + } + } + closedir DIR; + + # build values list + my $sth=$dbh->prepare("select * from holdings_subfield_structure where tagfield=? and frameworkcode=?"); # 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{tab} = CGI::scrolling_list(-name=>'tab', + -id=>"tab$i", + -values=>['-1','10'], + -labels => {'-1' =>'ignore','10'=>'items (10)', }, + -default=>$data->{'tab'}, + -size=>1, + -multiple=>0, + ); + $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', + -id=>"ohidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show','2' =>'Hide',}, + -default=>substr($data->{'hidden'},0,1), + -size=>1, + -multiple=>0, + ); + $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', + -id=>"ihidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show','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{liblibrarian} = CGI::escapeHTML($data->{'liblibrarian'}); + $row_data{libopac} = CGI::escapeHTML($data->{'libopac'}); + $row_data{seealso} = CGI::escapeHTML($data->{'seealso'}); + + $row_data{authorised_value} = CGI::scrolling_list(-name=>'authorised_value', + -id=>'authorised_value', + -values=> \@authorised_values, + -default=>$data->{'authorised_value'}, + -size=>1, + -multiple=>0, + ); + $row_data{value_builder} = CGI::scrolling_list(-name=>'value_builder', + -id=>'value_builder', + -values=> \@value_builder, + -default=>$data->{'value_builder'}, + -size=>1, + -multiple=>0, + ); + $row_data{authtypes} = CGI::scrolling_list(-name=>'authtypecode', + -id=>'authtypecode', + -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{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{tab} = CGI::scrolling_list(-name=>'tab', + -id => "tab$i", + -values=>['-1','10'], + -labels => {'-1' =>'ignore','10'=>'items (10)',}, + -default=>"", + -size=>1, + -multiple=>0, + ); + $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden', + -id=>"ohidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show','2' =>'Hide',}, + -default=>"0", + -size=>1, + -multiple=>0, + ); + $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden', + -id=>"ihidden$i", + -values=>['0','2'], + -labels => {'0'=>'Show','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{liblibrarian} = ""; + $row_data{libopac} = ""; + $row_data{seealso} = ""; + $row_data{hidden} = "000"; + $row_data{repeatable} = CGI::checkbox( -name=> 'repeatable', + -id => "repeatable$i", + -checked => '', + -value => 1, + -label => ''); + $row_data{mandatory} = CGI::checkbox( -name=> 'mandatory', + -id => "mandatory$i", + -checked => '', + -value => 1, + -label => ''); + $row_data{isurl} = CGI::checkbox(-name => 'isurl', + -id => "isurl$i", + -checked => '', + -value => 1, + -label => ''); + + $row_data{authorised_value} = CGI::scrolling_list(-name=>'authorised_value', + -id => 'authorised_value', + -values=> \@authorised_values, + -size=>1, + -multiple=>0, + ); + $row_data{authtypes} = CGI::scrolling_list(-name=>'authtypecode', + -id => 'authtypecode', + -values=> \@authtypes, + -size=>1, + -multiple=>0, + ); + $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(action => "Edit subfields", + tagfield => "$tagfield", + loop => \@loop_data, + more_subfields => $more_subfields, + more_tag => $tagfield); + + # END $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 holdings_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link) + values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + my @tagsubfield = $input->param('tagsubfield'); + my @liblibrarian = $input->param('liblibrarian'); + my @libopac = $input->param('libopac'); + + my @tab = $input->param('tab'); + my @seealso = $input->param('seealso'); +# my @hidden = $input->param('hidden'); + my @hidden; + my @ohidden = $input->param('ohidden'); + my @ihidden = $input->param('ihidden'); + my @ehidden = $input->param('ehidden'); + my @authorised_values = $input->param('authorised_value'); + my @authtypecodes = $input->param('authtypecode'); + my @value_builder =$input->param('value_builder'); + my @link =$input->param('link'); + for (my $i=0; $i<= $#tagsubfield ; $i++) { + my $tagfield =$input->param('tagfield'); + my $tagsubfield =$tagsubfield[$i]; + $tagsubfield="@" unless $tagsubfield ne ''; + 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 $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 = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens; + my $isurl = $input->param("isurl$i")?1:0; + my $link = $link[$i]; + if ($liblibrarian) { + unless (C4::Context->config('demo') eq 1) { + $sth->execute ($tagfield, + $tagsubfield, + $liblibrarian, + $libopac, + $repeatable, + $mandatory, + + $tab, + $seealso, + $authorised_value, + $authtypecode, + $value_builder, + $hidden, + $isurl, + $frameworkcode, + + $link, + ); + } + } + } + $sth->finish; + print "Content-Type: text/html\n\n"; + exit; + + # END $OP eq ADD_VALIDATE +################## 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 holdings_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?"); + #FIXME : called with 2 bind variables when 3 are needed + $sth->execute($tagfield,$tagsubfield); + my $data=$sth->fetchrow_hashref; + $sth->finish; + $template->param(liblibrarian => $data->{'liblibrarian'}, + tagsubfield => $data->{'tagsubfield'}, + delete_link => $script_name, + tagfield =>$tagfield, + tagsubfield => $tagsubfield, + frameworkcode => $frameworkcode, + ); + # END $OP eq DELETE_CONFIRM +################## 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 holdings_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?"); + $sth->execute($tagfield,$tagsubfield,$frameworkcode); + $sth->finish; + } + print "Content-Type: text/html\n\n"; + exit; + $template->param(tagfield => $tagfield); + # END $OP eq DELETE_CONFIRMED +################## DEFAULT ################################## +} else { # DEFAULT + my $env; + my ($count,$results)=StringSearch($env,$tagfield,$frameworkcode); + my $toggle=1; + 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'}; + $row_data{liblibrarian} = $results->[$i]{'liblibrarian'}; + + $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'} 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'}."&frameworkcode=$frameworkcode"; + $row_data{toggle} = $toggle; + if ($row_data{tab} eq -1) { + $row_data{subfield_ignored} = 1; + } + + push(@loop_data, \%row_data); + } + $template->param(loop => \@loop_data); + $template->param(edit_tagfield => $tagfield, + 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 +$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; diff --git a/admin/marctagstructure.pl b/admin/holdingstagstructure.pl old mode 100755 new mode 100644 similarity index 73% rename from admin/marctagstructure.pl rename to admin/holdingstagstructure.pl index c6fa2fef74..61578d5c05 --- a/admin/marctagstructure.pl +++ b/admin/holdingstagstructure.pl @@ -26,8 +26,7 @@ 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; @@ -40,18 +39,18 @@ my $searchfield=$input->param('searchfield'); $searchfield=0 unless $searchfield; $searchfield=~ s/\,//g; -my $offset=$input->param('offset') || 0; -my $op = $input->param('op') || ''; +my $offset=$input->param('offset'); +my $op = $input->param('op'); my $dspchoice = $input->param('select_display'); my $pagesize=20; -my $script_name="/cgi-bin/koha/admin/marctagstructure.pl"; +my $script_name="/cgi-bin/koha/admin/holdingstagstructure.pl"; my $dbh = C4::Context->dbh; # open template my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "admin/marctagstructure.tmpl", + = get_template_and_user({template_name => "admin/holdingstagstructure.tmpl", query => $input, type => "intranet", authnotrequired => 0, @@ -71,8 +70,8 @@ foreach my $thisframeworkcode (keys %$frameworks) { push @frameworkloop, \%row; } -# check that framework is defined in marc_tag_structure -my $sth=$dbh->prepare("select count(*) from marc_tag_structure where frameworkcode=?"); +# check that framework is defined in holdings_tag_structure +my $sth=$dbh->prepare("select count(*) from holdings_tag_structure where frameworkcode=?"); $sth->execute($frameworkcode); my ($frameworkexist) = $sth->fetchrow; if ($frameworkexist) { @@ -104,7 +103,7 @@ if ($op eq 'add_form') { #---- if primkey exists, it's a modify action, so read values to modify... my $data; if ($searchfield) { - $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where tagfield=? and frameworkcode=?"); + $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from holdings_tag_structure where tagfield=? and frameworkcode=?"); $sth->execute($searchfield,$frameworkcode); $data=$sth->fetchrow_hashref; $sth->finish; @@ -119,7 +118,6 @@ if ($op eq 'add_form') { my $authorised_value = CGI::scrolling_list(-name=>'authorised_value', -values=> \@authorised_values, -size=>1, - -tabindex=>'', -id=>"authorised_value", -multiple=>0, -default => $data->{'authorised_value'}, @@ -127,10 +125,11 @@ if ($op eq 'add_form') { if ($searchfield) { $template->param(action => "Modify tag", - searchfield => $searchfield); + searchfield => "$searchfield"); $template->param('heading-modify-tag-p' => 1); } else { - $template->param(action => "Add tag"); + $template->param(action => "Add tag", + searchfield => ""); $template->param('heading-add-tag-p' => 1); } $template->param('use-heading-flags-p' => 1); @@ -139,13 +138,11 @@ if ($op eq 'add_form') { repeatable => CGI::checkbox(-name=>'repeatable', -checked=> $data->{'repeatable'}?'checked':'', -value=> 1, - -tabindex=>'', -label => '', -id=> 'repeatable'), mandatory => CGI::checkbox(-name => 'mandatory', -checked => $data->{'mandatory'}?'checked':'', -value => 1, - -tabindex=>'', -label => '', -id => 'mandatory'), authorised_value => $authorised_value, @@ -155,7 +152,7 @@ if ($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 (?,?,?,?,?,?,?)"); + $sth=$dbh->prepare("replace holdings_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'); @@ -173,13 +170,13 @@ if ($op eq 'add_form') { ); } $sth->finish; - print "Content-Type: text/html\n\n"; + print "Content-Type: text/html\n\n"; exit; # END $OP eq ADD_VALIDATE ################## DELETE_CONFIRM ################################## # called by default form, used to confirm deletion of data in DB } elsif ($op eq 'delete_confirm') { - $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where tagfield=? and frameworkcode=?"); + $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from holdings_tag_structure where tagfield=? and frameworkcode=?"); $sth->execute($searchfield,$frameworkcode); my $data=$sth->fetchrow_hashref; $sth->finish; @@ -192,14 +189,15 @@ if ($op eq 'add_form') { # called by delete_confirm, used to effectively confirm deletion of data in DB } elsif ($op eq 'delete_confirmed') { unless (C4::Context->config('demo') eq 1) { - $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'"); + $dbh->do("delete from holdings_tag_structure where tagfield='$searchfield' and frameworkcode='$frameworkcode'"); + $dbh->do("delete from holdings_subfield_structure where tagfield='$searchfield' and frameworkcode='$frameworkcode'"); + } # END $OP eq DELETE_CONFIRMED ################## ITEMTYPE_CREATE ################################## # called automatically if an unexisting frameworkis selected } elsif ($op eq 'framework_create') { - $sth = $dbh->prepare("select count(*),marc_tag_structure.frameworkcode,frameworktext from marc_tag_structure,biblio_framework where biblio_framework.frameworkcode=marc_tag_structure.frameworkcode group by marc_tag_structure.frameworkcode"); + $sth = $dbh->prepare("select count(*),holdings_tag_structure.frameworkcode,frameworktext from holdings_tag_structure,biblio_framework where biblio_framework.frameworkcode=holdings_tag_structure.frameworkcode group by holdings_tag_structure.frameworkcode"); $sth->execute; my @existingframeworkloop; while (my ($tot,$thisframeworkcode,$frameworktext) = $sth->fetchrow) { @@ -226,7 +224,7 @@ if ($op eq 'add_form') { my $env; $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"); + my $sth=$dbh->prepare("Select holdings_tag_structure.tagfield as mts_tagfield,holdings_tag_structure.liblibrarian as mts_liblibrarian,holdings_tag_structure.libopac as mts_libopac,holdings_tag_structure.repeatable as mts_repeatable,holdings_tag_structure.mandatory as mts_mandatory,holdings_tag_structure.authorised_value as mts_authorized_value,holdings_subfield_structure.* from holdings_tag_structure LEFT JOIN holdings_subfield_structure ON (holdings_tag_structure.tagfield=holdings_subfield_structure.tagfield AND holdings_tag_structure.frameworkcode=holdings_subfield_structure.frameworkcode) where (holdings_tag_structure.tagfield >= ? and holdings_tag_structure.frameworkcode=?) AND holdings_subfield_structure.tab>=0 order by holdings_tag_structure.tagfield,holdings_subfield_structure.tagsubfield"); #could be ordoned by tab $sth->execute($data[0], $frameworkcode); my @results = (); @@ -252,7 +250,7 @@ if ($op eq 'add_form') { $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{subfield_link} ="holdings_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; @@ -267,7 +265,7 @@ if ($op eq 'add_form') { 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'}; @@ -308,7 +306,7 @@ if ($op eq 'add_form') { $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{subfield_link} ="holdings_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; @@ -352,12 +350,11 @@ sub StringSearch { $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); my $count=@data; - my $sth=$dbh->prepare("Select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where (tagfield >= ? and frameworkcode=?) order by tagfield"); + my $sth=$dbh->prepare("Select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from holdings_tag_structure where (tagfield >= ? and frameworkcode=?) order by tagfield"); $sth->execute($data[0], $frameworkcode); my @results; while (my $data=$sth->fetchrow_hashref){ push(@results,$data); - warn "=> ".$data->{liblibrarian}; } # $sth->execute; $sth->finish; @@ -365,22 +362,5 @@ sub StringSearch { } # -# the sub used to duplicate a framework from an existing one in MARC parameters tables. -# -sub duplicate_framework { - my ($newframeworkcode,$oldframeworkcode) = @_; - 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); - } - $sth = $dbh->prepare("select frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso 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) 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); - } -} diff --git a/admin/institutions-careers.pl b/admin/institutions-careers.pl new file mode 100644 index 0000000000..911efc9597 --- /dev/null +++ b/admin/institutions-careers.pl @@ -0,0 +1,74 @@ +#!/usr/bin/perl + +# Script to manage the educational institutions and its careers. +# written 12/04 +# Castañeda, Carlos Sebastian - seba3c@yahoo.com.ar - Physics Library UNLP Argentina + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use CGI; + +use C4::Auth; +use C4::Context; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::AcademicInfo; + +my $cgi = new CGI; + +my ($template, $borrowernumber, $cookie) + = get_template_and_user({template_name => "admin/institutions-careers.tmpl", + query => $cgi, + type => "intranet", + authnotrequired => 0, + flagsrequired => {editcatalogue => 1}, + debug => 1, + }); + +my $op = $cgi->param('op'); +my $id_institution = $cgi->param('id_institution'); +my $institution_name = $cgi->param('institution_name'); + +if ($op eq 'add_form') { + $template->param(add_form => 1); + + if ($id_institution) { + my $info = get_educational_institution($id_institution); + $template->param(op => 'edit'); + $template->param(institution_name => $info->{'institution_name'}); + $template->param(id_institution => $id_institution); + } else { + $template->param(op => 'add'); + } + +} elsif ($op eq 'add') { + add_educational_institution($institution_name); + print $cgi->redirect('/cgi-bin/koha/admin/institutions-careers.pl'); +} elsif ($op eq 'edit') { + update_educational_institution($id_institution, $institution_name); + print $cgi->redirect('/cgi-bin/koha/admin/institutions-careers.pl'); +} elsif ($op eq 'del') { + del_educational_institution($id_institution); + print $cgi->redirect('/cgi-bin/koha/admin/institutions-careers.pl'); +} else { + my @educ_institutions = &get_careers_by_institution(); + $template->param(institutions => \@educ_institutions); +} + +output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/admin/issuingrules.pl b/admin/issuingrules.pl index 5c98718275..5f8281fa91 100755 --- a/admin/issuingrules.pl +++ b/admin/issuingrules.pl @@ -21,12 +21,10 @@ use strict; use CGI; use C4::Context; use C4::Output; -use C4::Database; use C4::Auth; use C4::Output; use C4::Koha; use C4::Interface::CGI::Output; -use HTML::Template; my $input = new CGI; my $dbh = C4::Context->dbh; @@ -55,8 +53,8 @@ if ($op eq 'save') { my $sth_Fupdate=$dbh->prepare("Update issuingrules set fine=?,firstremind=?,chargeperiod=? where branchcode=? and categorycode=? and itemtype=?"); my $sth_Fdelete=$dbh->prepare("delete from issuingrules where branchcode=? and categorycode=? and itemtype=? and issuelength=0"); - my $sth_Iinsert = $dbh->prepare("insert into issuingrules (branchcode,categorycode,itemtype,maxissueqty,issuelength,rentaldiscount) values (?,?,?,?,?,?)"); - my $sth_Iupdate=$dbh->prepare("Update issuingrules set maxissueqty=?, issuelength=?, rentaldiscount=? where branchcode=? and categorycode=? and itemtype=?"); + my $sth_Iinsert = $dbh->prepare("insert into issuingrules (branchcode,categorycode,itemtype,maxissueqty,issuelength) values (?,?,?,?,?)"); + my $sth_Iupdate=$dbh->prepare("Update issuingrules set maxissueqty=?, issuelength=? where branchcode=? and categorycode=? and itemtype=?"); my $sth_Idelete=$dbh->prepare("delete from issuingrules where branchcode=? and categorycode=? and itemtype=? and fine=0"); foreach my $key (@names){ # ISSUES @@ -65,14 +63,14 @@ if ($op eq 'save') { my $bor = $2; # borrower category my $cat = $3; # item type my $data=$input->param($key); - my ($issuelength,$maxissueqty,$rentaldiscount)=split(',',$data); + my ($issuelength,$maxissueqty)=split(',',$data); # if ($maxissueqty >0) { $sth_search->execute($br,$bor,$cat); my $res = $sth_search->fetchrow_hashref(); if ($res->{total}) { - $sth_Iupdate->execute($maxissueqty,$issuelength,$rentaldiscount,$br,$bor,$cat); + $sth_Iupdate->execute($maxissueqty,$issuelength,$br,$bor,$cat); } else { - $sth_Iinsert->execute($br,$bor,$cat,$maxissueqty,$issuelength,$rentaldiscount); + $sth_Iinsert->execute($br,$bor,$cat,$maxissueqty,$issuelength); } # } else { # $sth_Idelete->execute($br,$bor,$cat); @@ -100,7 +98,7 @@ if ($op eq 'save') { } } -my $branches = GetBranches; +my $branches = getbranches; my @branchloop; foreach my $thisbranch (keys %$branches) { my $selected = 1 if $thisbranch eq $branch; @@ -113,7 +111,7 @@ foreach my $thisbranch (keys %$branches) { my $sth=$dbh->prepare("Select description,categorycode from categories order by description"); $sth->execute; -my @trow3; + my @trow3; my @title_loop; # my $i=0; while (my $data=$sth->fetchrow_hashref){ @@ -158,12 +156,11 @@ foreach my $data (@itemtypes) { my $fine=$dat->{'fine'}+0; my $maxissueqty = $dat->{'maxissueqty'}+0; my $issuelength = $dat->{'issuelength'}+0; - my $rentaldiscount = $dat->{'rentaldiscount'}+0; my $finesvalue; $finesvalue= "$fine,$dat->{'firstremind'},$dat->{'chargeperiod'}" if $fine+$dat->{'firstremind'}+$dat->{'chargeperiod'}>0; my $issuingvalue; # if ($maxissueqty>0) { - $issuingvalue = "$issuelength,$maxissueqty,$rentaldiscount" if $issuelength+$maxissueqty>0; + $issuingvalue = "$issuelength,$maxissueqty" if $issuelength+$maxissueqty>0; # } # else { # $issuingvalue = "$issuelength, 5"; @@ -186,9 +183,5 @@ $sth->finish; $template->param(title => \@title_loop, row => \@row_loop, branchloop => \@branchloop, - branch => $branch, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); + branch => $branch); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/admin/itemtypes.pl b/admin/itemtypes.pl index cbc34e3550..1aec1438e4 100755 --- a/admin/itemtypes.pl +++ b/admin/itemtypes.pl @@ -40,16 +40,13 @@ use strict; use CGI; -use HTML::Template; -use List::Util qw/min/; - -use C4::Koha; use C4::Context; use C4::Output; use C4::Search; use C4::Auth; use C4::Interface::CGI::Output; + sub StringSearch { my ($env,$searchstring,$type)=@_; my $dbh = C4::Context->dbh; @@ -69,9 +66,10 @@ sub StringSearch { my $input = new CGI; my $searchfield=$input->param('description'); +my $offset=$input->param('offset'); my $script_name="/cgi-bin/koha/admin/itemtypes.pl"; my $itemtype=$input->param('itemtype'); -my $pagesize=5; +my $pagesize=20; my $op = $input->param('op'); $searchfield=~ s/\,//g; my ($template, $borrowernumber, $cookie) @@ -98,76 +96,28 @@ if ($op eq 'add_form') { my $data; if ($itemtype) { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select * from itemtypes where itemtype=?"); + my $sth=$dbh->prepare("select itemtype,description,renewalsallowed,rentalcharge,notforloan from itemtypes where itemtype=?"); $sth->execute($itemtype); $data=$sth->fetchrow_hashref; $sth->finish; } - # build list of images - my $imagedir_filesystem = getitemtypeimagedir(); - my $imagedir_web = getitemtypeimagesrc(); - opendir(DIR, $imagedir_filesystem) - or die "can't opendir ".$imagedir_filesystem.": ".$!; - my @imagelist; - while (my $line = readdir(DIR)) { - if ($line =~ /\.(gif|png)$/i) { - push( - @imagelist, - { - KohaImage => $line, - KohaImageSrc => $imagedir_web.'/'.$line, - checked => $line eq $data->{imageurl} ? 1 : 0, - } - ); - } - } - closedir DIR; - - my $remote_image = undef; - if (defined $data->{imageurl} and $data->{imageurl} =~ m/^http/) { - $remote_image = $data->{imageurl}; - } - - $template->param( - itemtype => $itemtype, - description => $data->{'description'}, - renewalsallowed => $data->{'renewalsallowed'}, - rentalcharge => sprintf("%.2f",$data->{'rentalcharge'}), - notforloan => $data->{'notforloan'}, - imageurl => $data->{'imageurl'}, - template => C4::Context->preference('template'), - IMAGESLOOP => \@imagelist, - remote_image => $remote_image, - ); + $template->param(itemtype => $itemtype, + description => $data->{'description'}, + renewalsallowed => $data->{'renewalsallowed'}, + rentalcharge => sprintf("%.2f",$data->{'rentalcharge'}), + notforloan => $data->{'notforloan'} + ); +; # END $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; - - my $query = ' -UPDATE itemtypes - SET description = ? - , renewalsallowed = ? - , rentalcharge = ? - , notforloan = ? - , imageurl = ? - WHERE itemtype = ? -'; - my $sth=$dbh->prepare($query); + my $sth=$dbh->prepare("replace itemtypes (itemtype,description,renewalsallowed,rentalcharge,notforloan) values (?,?,?,?,?)"); $sth->execute( - $input->param('description'), - $input->param('renewalsallowed'), - $input->param('rentalcharge'), - $input->param('notforloan') ? 1 : 0, - $input->param('image') eq 'removeImage' - ? undef - : $input->param('image') eq 'remoteImage' - ? $input->param('remoteImage') - : $input->param('image'), - $input->param('itemtype'), - ); - + $input->param('itemtype'),$input->param('description'), + $input->param('renewalsallowed'),$input->param('rentalcharge'), + $input->param('notforloan')?1:0); $sth->finish; print "Content-Type: text/html\n\n"; exit; @@ -193,10 +143,9 @@ UPDATE itemtypes $sth->finish; $template->param(itemtype => $itemtype, - description => $data->{description}, - renewalsallowed => $data->{renewalsallowed}, - rentalcharge => sprintf("%.2f",$data->{rentalcharge}), - imageurl => $data->{imageurl}, + description => $data->{'description'}, + renewalsallowed => $data->{'renewalsallowed'}, + rentalcharge => sprintf("%.2f",$data->{'rentalcharge'}), total => $total); # END $OP eq DELETE_CONFIRM ################## DELETE_CONFIRMED ################################## @@ -215,45 +164,35 @@ UPDATE itemtypes # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## } else { # DEFAULT - my $env; - my ($count,$results)=StringSearch($env,$searchfield,'web'); - - my $page = $input->param('page') || 1; - my $first = ($page - 1) * $pagesize; - - # if we are on the last page, the number of the last word to display - # must not exceed the length of the results array - my $last = min( - $first + $pagesize - 1, - scalar @{$results} - 1, - ); - - my $toggle = 0; - my @loop; - foreach my $result (@{$results}[$first .. $last]) { - my $itemtype = $result; - $itemtype->{toggle} = ($toggle++%2 eq 0 ? 1 : 0); - $itemtype->{imageurl} = - getitemtypeimagesrcfromurl($itemtype->{imageurl}); - $itemtype->{rentalcharge} = sprintf('%.2f', $itemtype->{rentalcharge}); - - push(@loop, $itemtype); - } - - $template->param( - loop => \@loop, - pagination_bar => pagination_bar( - $script_name, - getnbpages(scalar @{$results}, $pagesize), - $page, - 'page' - ) - ); + my $env; + my ($count,$results)=StringSearch($env,$searchfield,'web'); + my $toggle=0; + my @loop_data; + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ + my %row_data; + if ($toggle eq 0){ + $toggle=1; + } else { + $toggle=0; + } + $row_data{toggle} = $toggle; + $row_data{itemtype} = $results->[$i]{itemtype}; + $row_data{description} = $results->[$i]{description}; + $row_data{renewalsallowed} = $results->[$i]{renewalsallowed}; + $row_data{notforloan} = $results->[$i]{notforloan}; + $row_data{rentalcharge} = sprintf("%.2f",$results->[$i]{rentalcharge}); + push(@loop_data, \%row_data); + } + $template->param(loop => \@loop_data); + if ($offset>0) { + my $prevpage = $offset-$pagesize; + $template->param(previous => "$script_name?offset=".$prevpage); + } + if ($offset+$pagesize<$count) { + my $nextpage =$offset+$pagesize; + $template->param(next => "$script_name?offset=".$nextpage); + } } #---- 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; # Local Variables: diff --git a/admin/koha-electronic.pl b/admin/koha-electronic.pl new file mode 100644 index 0000000000..f402bc00c6 --- /dev/null +++ b/admin/koha-electronic.pl @@ -0,0 +1,102 @@ +#!/usr/bin/perl + +# Script to manage the opac news. +# written 11/04 +# Castañeda, Carlos Sebastian - seba3c@yahoo.com.ar - Physics Library UNLP Argentina + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use CGI; + +use C4::Auth; +use C4::Context; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::NewsChannels; + + +my $cgi = new CGI; + +my ($template, $borrowernumber, $cookie) + = get_template_and_user({template_name => "admin/koha-electronic.tmpl", + query => $cgi, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, + }); + +my $op = $cgi->param('op'); + +if ($op eq 'add_form') { + $template->param(add_form => 1); + my $id = $cgi->param("id"); + my $edata; +# warn "add_form"; + if ($id) { + $template->param(op => 'edit'); + $edata = get_opac_electronic($id); + $template->param($edata); + $template->param(id => $edata->{'idelectronic'}); + } else { + $template->param(op => 'add'); + } + +} elsif ($op eq 'add') { +# warn "add"; + my $title = $cgi->param('title'); + my $edata = $cgi->param('edata'); + my $lang = $cgi->param('lang'); + my $image = $cgi->param('image'); + my $href = $cgi->param('href'); + my $section = $cgi->param('section'); + add_opac_electronic($title, $edata, $lang,$image, $href,$section); + print $cgi->redirect('/cgi-bin/koha/admin/opac-electronic.pl'); + +} elsif ($op eq 'edit') { +# warn "edit"; + my $id = $cgi->param('id'); + my $title = $cgi->param('title'); + my $edata = $cgi->param('edata'); + my $lang = $cgi->param('lang'); + my $image = $cgi->param('image'); + my $href = $cgi->param('href'); + my $section = $cgi->param('section'); + upd_opac_electronic($id, $title, $edata, $lang,$image,$href,$section); + print $cgi->redirect('/cgi-bin/koha/admin/opac-electronic.pl'); + +} elsif ($op eq 'del') { +# warn "del"; + my @ids = $cgi->param('ids'); + del_opac_electronic(join ",", @ids); + print $cgi->redirect('/cgi-bin/koha/admin/opac-electronic.pl'); + +} else { +# warn "else"; + + my $lang = $cgi->param('lang'); + + my ($opac_electronic_count, $opac_electronic) = &get_opac_electronics(undef, $lang); + $template->param($lang => 1); + $template->param(opac_electronic => $opac_electronic); + $template->param(opac_electronic_count => $opac_electronic_count); + +} + +output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/admin/koha-news.pl b/admin/koha-news.pl new file mode 100644 index 0000000000..869710e73d --- /dev/null +++ b/admin/koha-news.pl @@ -0,0 +1,95 @@ +#!/usr/bin/perl + +# Script to manage the opac news. +# written 11/04 +# Castañeda, Carlos Sebastian - seba3c@yahoo.com.ar - Physics Library UNLP Argentina + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use CGI; + +use C4::Auth; +use C4::Context; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::NewsChannels; + + +my $cgi = new CGI; + +my ($template, $borrowernumber, $cookie) + = get_template_and_user({template_name => "admin/koha-news.tmpl", + query => $cgi, + type => "intranet", + authnotrequired => 0, + flagsrequired => {management => 1}, + debug => 1, + }); + +my $op = $cgi->param('op'); + +if ($op eq 'add_form') { + $template->param(add_form => 1); + my $id = $cgi->param("id"); + my $new; + + if ($id) { + $template->param(op => 'edit'); + $new = get_opac_new($id); + $template->param($new); + $template->param(id => $new->{'idnew'}); + } else { + $template->param(op => 'add'); + } + +} elsif ($op eq 'add') { + + my $title = $cgi->param('title'); + my $new = $cgi->param('new'); + my $lang = $cgi->param('lang'); + + add_opac_new($title, $new, $lang); + print $cgi->redirect('/cgi-bin/koha/admin/koha-news.pl'); + +} elsif ($op eq 'edit') { + + my $id = $cgi->param('id'); + my $title = $cgi->param('title'); + my $new = $cgi->param('new'); + my $lang = $cgi->param('lang'); + + upd_opac_new($id, $title, $new, $lang); + print $cgi->redirect('/cgi-bin/koha/admin/koha-news.pl'); + +} elsif ($op eq 'del') { + my @ids = $cgi->param('ids'); + del_opac_new(join ",", @ids); + print $cgi->redirect('/cgi-bin/koha/admin/koha-news.pl'); + +} else { + + my $lang = $cgi->param('lang'); + my ($opac_news_count, $opac_news) = &get_opac_news(undef, $lang); + $template->param($lang => 1); + $template->param(opac_news => $opac_news); + $template->param(opac_news_count => $opac_news_count); + +} + +output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/admin/koha2marclinks.pl b/admin/koha2marclinks.pl deleted file mode 100755 index 48818b03d3..0000000000 --- a/admin/koha2marclinks.pl +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/perl - - -# Copyright 2000-2002 Katipo Communications -# -# 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 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA - -use strict; -use C4::Output; -use C4::Interface::CGI::Output; -use C4::Auth; -use CGI; -use C4::Search; -use C4::Context; -use C4::Biblio; -use HTML::Template; - -my $input = new CGI; -my $tablename=$input->param('tablename'); -$tablename="biblio" unless ($tablename); -my $kohafield = $input->param('kohafield'); -my $op=$input->param('op'); -my $script_name = 'koha2marclinks.pl'; - -my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "admin/koha2marclinks.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1}, - debug => 1, - }); - -if ($op) { -$template->param(script_name => $script_name, - $op => 1); # we show only the TMPL_VAR names $op -} else { -$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 $sth = $dbh->prepare("select tagfield,tagsubfield,liblibrarian as lib,tab from marc_subfield_structure where kohafield=?"); - $sth->execute($tablename.".".$kohafield); - my ($defaulttagfield, $defaulttagsubfield,$defaultliblibrarian) = $sth->fetchrow; - - for (my $i=0;$i<=9;$i++) { - my $sth2=$dbh->prepare("select tagfield,tagsubfield,liblibrarian as lib,tab from marc_subfield_structure where tagfield like ?"); - $sth2->execute("$i%"); - my @marcarray; - push @marcarray," "; - while (my ($field, $tagsubfield, $liblibrarian) = $sth2->fetchrow_array) { - push @marcarray, "$field $tagsubfield - $liblibrarian"; - } - my $marclist = CGI::scrolling_list(-name=>"marc", - -values=> \@marcarray, - -default=>"$defaulttagfield $defaulttagsubfield - $defaultliblibrarian", - -size=>1, - -tabindex=>'', - -multiple=>0, - ); - $template->param("marclist$i" => $marclist); - } - $template->param( tablename => $tablename, - kohafield => $kohafield); - - # END $OP eq ADD_FORM -################## ADD_VALIDATE ################################## -# called by add_form, used to insert/modify data in DB -} elsif ($op eq 'add_validate') { - #----- empty koha field : - $dbh->do("update marc_subfield_structure set kohafield='' where kohafield='$tablename.$kohafield'"); - #---- reload if not empty - my @temp = split / /,$input->param('marc'); - $dbh->do("update marc_subfield_structure set kohafield='$tablename.$kohafield' where tagfield='$temp[0]' and tagsubfield='$temp[1]'"); - print "Content-Type: text/html\n\n"; - exit; - - # END $OP eq ADD_VALIDATE -################## DEFAULT ################################## -} else { # DEFAULT - my $env; - my $sth=$dbh->prepare("Select tagfield,tagsubfield,liblibrarian,kohafield from marc_subfield_structure"); - $sth->execute; - my %fields; - while ((my $tagfield,my $tagsubfield,my $liblibrarian,my $kohafield) = $sth->fetchrow) { - $fields{$kohafield}->{tagfield} = $tagfield; - $fields{$kohafield}->{tagsubfield} = $tagsubfield; - $fields{$kohafield}->{liblibrarian} = $liblibrarian; - } - #XXX: This might not work. Maybe should use a DBI call instead of SHOW COLUMNS - my $sth2=$dbh->prepare("SHOW COLUMNS from $tablename"); - $sth2->execute; - - my $toggle="white"; - my @loop_data = (); - while ((my $field) = $sth2->fetchrow_array) { - if ($toggle eq 'white'){ - $toggle="#ffffcc"; - } else { - $toggle="white"; - } - my %row_data; # get a fresh hash for the row data - $row_data{tagfield} = $fields{$tablename.".".$field}->{tagfield}; - $row_data{tagsubfield} = $fields{$tablename.".".$field}->{tagsubfield}; - $row_data{liblibrarian} = $fields{$tablename.".".$field}->{liblibrarian}; - $row_data{kohafield} = $field; - $row_data{edit} = "$script_name?op=add_form&tablename=$tablename&kohafield=$field"; - $row_data{bgcolor} = $toggle; - push(@loop_data,\%row_data); - } - $template->param(loop => \@loop_data, - tablename => CGI::scrolling_list(-name=>'tablename', - -values=>['biblio','biblioitems','items','bibliosubject','bibliosubtitle','additionalauthors'], - -default=>$tablename, - -size=>1, - -tabindex=>'', - -multiple=>0 - ) - ); -} #---- 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; diff --git a/admin/koha_attr.pl b/admin/koha_attr.pl new file mode 100644 index 0000000000..21826983b8 --- /dev/null +++ b/admin/koha_attr.pl @@ -0,0 +1,321 @@ +#!/usr/bin/perl + + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use CGI; +use C4::Auth; +use C4::Koha; +use C4::Context; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::Search; + + +# retrieve parameters +my $input = new CGI; + +my $searchfield=$input->param('searchfield'); +$searchfield="" unless $searchfield; +my $id=$input->param('id'); +my $offset=$input->param('offset'); +$offset=0 unless $offset; +my $op = $input->param('op'); +my $dspchoice = $input->param('select_display'); +my $pagesize=20; +my @results = (); +my $script_name="/cgi-bin/koha/admin/koha_attr.pl"; + +my $dbh = C4::Context->dbh; +my $sth; +# open template +my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "admin/koha_attr.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, + }); + + +if ($op) { +$template->param(script_name => $script_name, + $op => 1); # we show only the TMPL_VAR names $op +} else { +$template->param(script_name => $script_name, + else => 1); # we show only the TMPL_VAR names $op +} + + +################## ADD_FORM ################################## +# called by default. Used to create form to add or modify a record +if ($op eq 'add_form') { + #---- if primkey exists, it's a modify action, so read values to modify... + my $data; + if ($id) { + $sth=$dbh->prepare("select id,marctokoha,attr,liblibrarian,sorts,recordtype,tagfield,tagsubfield,opacshow,intrashow from koha_attr where id=? "); + $sth->execute($id); + $data=$sth->fetchrow_hashref; + $sth->finish; + } + my $sth = $dbh->prepare("select authorised_value from authorised_values where category='recordtype'"); + $sth->execute; + my @authorised_values; + #push @authorised_values,""; + while ((my $category) = $sth->fetchrow_array) { + push @authorised_values, $category; + } + my $recordlist = CGI::scrolling_list(-name=>'recordtype', + -values=> \@authorised_values, + -size=>1, + -multiple=>0, + -default => $data->{'recordtype'}, + ); + my $sth = $dbh->prepare("select authorised_value from authorised_values where category='mfield' order by lib"); + $sth->execute; + my @authorised_values; + #push @authorised_values,""; + while ((my $category) = $sth->fetchrow_array) { + push @authorised_values, $category; + } + my $taglist = CGI::scrolling_list(-name=>'tagfield', + -values=> \@authorised_values, + -size=>1, + -multiple=>0, + -default => $data->{'tagfield'}, + ); + my $sth = $dbh->prepare("select authorised_value from authorised_values where category='subfield' order by lib "); + $sth->execute; + my @authorised_values; + #push @authorised_values,""; + while ((my $category) = $sth->fetchrow_array) { + push @authorised_values, $category; + } + my $tagsublist = CGI::scrolling_list(-name=>'tagsubfield', + -values=> \@authorised_values, + -size=>1, + -multiple=>0, + -default => $data->{'tagsubfield'}, + ); + + if ($searchfield) { + $template->param(action => "Modify tag",id=>$id ,searchfield => "$searchfield"); + $template->param('heading-modify-tag-p' => 1); + } else { + $template->param(action => "Add tag", + searchfield => ""); + $template->param('heading-add-tag-p' => 1); + } + $template->param('use-heading-flags-p' => 1); + $template->param(liblibrarian => $data->{'liblibrarian'}, + attr=> $data->{'attr'}, + recordtype=>$recordlist, + tagfield=>$taglist, + tagsubfield=>$tagsublist, + sorts => CGI::checkbox(-name=>'sorts', + -checked=> $data->{'sorts'}?'checked':'', + -value=> 1, + -label => '', + -id=> 'sorts'), + opacshow => CGI::checkbox(-name=>'opacshow', + -checked=> $data->{'opacshow'}?'checked':'', + -value=> 1, + -label => '', + -id=> 'opacshow'), + intrashow => CGI::checkbox(-name=>'intrashow', + -checked=> $data->{'intrashow'}?'checked':'', + -value=> 1, + -label => '', + -id=> 'intrashow'), + + + ); + # END $OP eq ADD_FORM +################## ADD_VALIDATE ################################## +# called by add_form, used to insert/modify data in DB +} elsif ($op eq 'add_validate') { +my $id =$input->param('id'); + + $sth=$dbh->prepare("replace koha_attr set id=?,marctokoha=?,attr=?,liblibrarian=?,sorts=?,recordtype=?,tagfield=?,tagsubfield=? ,opacshow=?,intrashow=? "); + + + my $marctokoha =$input->param('marctokoha'); + my $attr =$input->param('attr'); + my $liblibrarian = $input->param('liblibrarian'); + my $sorts =$input->param('sorts'); + my $opacshow =$input->param('opacshow'); + my $intrashow =$input->param('intrashow'); + my $recordtype =$input->param('recordtype'); + my $tagfield =$input->param('tagfield'); + my $tagsubfield =$input->param('tagsubfield'); + unless (C4::Context->config('demo') eq 1) { + $sth->execute( $id,$marctokoha,$attr,$liblibrarian,$sorts?1:0,$recordtype,$tagfield,$tagsubfield,$opacshow?1:0,$intrashow?1:0); + } + $sth->finish; + print "Content-Type: text/html\n\n"; + + exit; + # END $OP eq ADD_VALIDATE +################## DELETE_CONFIRM ################################## +# called by default form, used to confirm deletion of data in DB +} elsif ($op eq 'delete_confirm') { + $sth=$dbh->prepare("select id,marctokoha,liblibrarian,recordtype from koha_attr where id=? "); + $sth->execute($id); + my $data=$sth->fetchrow_hashref; + $sth->finish; + $template->param(liblibrarian => $data->{'liblibrarian'}."/". $data->{'recordtype'},id=>$data->{'id'}, + searchfield => $searchfield, + ); + # END $OP eq DELETE_CONFIRM +################## 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') eq 1) { + $dbh->do("delete from koha_attr where id=$id "); + } + # END $OP eq DELETE_CONFIRMED + +################## DEFAULT ################################## +} else { # DEFAULT + # here, $op can be unset or set + if ($searchfield ne '') { + $template->param(searchfield => $searchfield); + } + my $cnt=0; + if ($dspchoice) { + #here, user only wants used tags/subfields displayed + my $sth=$dbh->prepare("Select * from koha_attr where tagfield <>'' and marctokoha >= ? "); + #could be ordoned by tab + $sth->execute($searchfield); + + 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{id} = $results[$i]->{'id'}; + $row_data{marctokoha} = $results[$i]->{'marctokoha'}; + $row_data{liblibrarian} = $results[$i]->{'liblibrarian'}; + $row_data{sorts} = $results[$i]->{'sorts'}; + $row_data{attr} = $results[$i]->{'attr'}; + $row_data{recordtype} = $results[$i]->{'recordtype'}; + $row_data{tagfield} = $results[$i]->{'tagfield'}; + $row_data{tagsubfield} = $results[$i]->{'tagsubfield'}; + $row_data{opacshow} = $results[$i]->{'opacshow'}; + $row_data{intrashow} = $results[$i]->{'intrashow'}; + $row_data{edit} = "$script_name?op=add_form&searchfield=".$results[$i]->{'marctokoha'}."&id=".$results[$i]->{'id'}; + $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results[$i]->{'marctokoha'}."&id=".$results[$i]->{'id'}; + $row_data{toggle} = $toggle; + push(@loop_data, \%row_data); + $i++; + } + $template->param(select_display => "True", + loop => \@loop_data); + $sth->finish; + } else { + #here, normal old style : display every tags + my ($count,@results)=StringSearch($dbh,$searchfield); + $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{id} = $results[$i]->{'id'}; + $row_data{marctokoha} = $results[$i]->{marctokoha}; + $row_data{liblibrarian} = $results[$i]->{liblibrarian}; + $row_data{sorts} = $results[$i]->{sorts}; + $row_data{opacshow} = $results[$i]->{'opacshow'}; + $row_data{intrashow} = $results[$i]->{'intrashow'}; + $row_data{attr} = $results[$i]->{attr}; + $row_data{recordtype} = $results[$i]->{'recordtype'}; + $row_data{tagfield} = $results[$i]->{'tagfield'}; + $row_data{tagsubfield} = $results[$i]->{'tagsubfield'}; + $row_data{edit} = "$script_name?op=add_form&searchfield=".$results[$i]->{marctokoha}."&id=".$results[$i]->{'id'}; + $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results[$i]->{marctokoha}."&id=".$results[$i]->{'id'}; + $row_data{toggle} = $toggle; + push(@loop_data, \%row_data); + } + $template->param(loop => \@loop_data); + } + if ($offset>0) { + my $prevpage = $offset-$pagesize; + $template->param(isprevpage => $offset, + prevpage=> $prevpage, + searchfield => $searchfield, + script_name => $script_name, + + ); + } + if ($offset+$pagesize<$cnt) { + my $nextpage =$offset+$pagesize; + $template->param(nextpage =>$nextpage, + searchfield => $searchfield, + script_name => $script_name, + + ); + } +} #---- END $OP eq DEFAULT + +$template->param(loggeninuser => $loggedinuser, + intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), + intranetstylesheet => C4::Context->preference("intranetstylesheet"), + IntranetNav => C4::Context->preference("IntranetNav"), + ); +output_html_with_http_headers $input, $cookie, $template->output; + + +# +# the sub used for searches +# +sub StringSearch { + my ($dbh,$searchstring)=@_; + my $sth=$dbh->prepare("Select * from koha_attr where marctokoha >=? order by marctokoha"); + $sth->execute($searchstring); + my @dataresults; + while (my $data=$sth->fetchrow_hashref){ + push(@dataresults,$data); + + } + + $sth->finish; + return (scalar(@dataresults),@dataresults); +} + + + diff --git a/admin/printers.pl b/admin/printers.pl index 9ef1d0e7df..2c93cb18fb 100755 --- a/admin/printers.pl +++ b/admin/printers.pl @@ -42,7 +42,6 @@ use CGI; use C4::Context; use C4::Output; use C4::Search; -use HTML::Template; use C4::Auth; use C4::Interface::CGI::Output; @@ -181,9 +180,6 @@ if ($op eq 'add_form') { } } #---- 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; diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl index d0d7533adb..4d92f4ef74 100755 --- a/admin/systempreferences.pl +++ b/admin/systempreferences.pl @@ -45,12 +45,8 @@ use C4::Koha; use C4::Output; use C4::Interface::CGI::Output; use C4::Search; -use HTML::Template; use C4::Context; - -# Fix me, shouldnt we store this stuff in the systempreferences table? - my %tabsysprefs; # Acquisitions $tabsysprefs{acquisitions}="Acquisitions"; @@ -73,20 +69,37 @@ my %tabsysprefs; $tabsysprefs{marcflavour}="Catalogue"; $tabsysprefs{serialsadditems}="Catalogue"; $tabsysprefs{sortbynonfiling}="Catalogue"; + $tabsysprefs{MARCOrgCode}="Catalogue"; + $tabsysprefs{z3950AuthorAuthFields}="Catalogue"; + $tabsysprefs{z3950NormalizeAuthor}="Catalogue"; + $tabsysprefs{SQLorZEBRA}="Catalogue"; # Circulation $tabsysprefs{maxoutstanding}="Circulation"; $tabsysprefs{maxreserves}="Circulation"; $tabsysprefs{noissuescharge}="Circulation"; - $tabsysprefs{IssuingInProcess}="Circulation"; $tabsysprefs{patronimages}="Circulation"; $tabsysprefs{printcirculationslips}="Circulation"; $tabsysprefs{ReturnBeforeExpiry}="Circulation"; + $tabsysprefs{allowrenewalsbefore}="Circulation"; + $tabsysprefs{defaultBranch}="Circulation"; + $tabsysprefs{strictrenewals}="Circulation"; +# Intranet + $tabsysprefs{TemplateEncoding}="Intranet"; + $tabsysprefs{template}="Intranet"; + $tabsysprefs{intranetstylesheet}="Intranet"; + $tabsysprefs{IntranetNav}="Intranet"; + $tabsysprefs{intranetcolorstylesheet}="Intranet"; + $tabsysprefs{Activate_Log}="Intranet"; + $tabsysprefs{allowrenewalsbefore}="Intranet"; + + $tabsysprefs{zebrawait}="Intranet"; + $tabsysprefs{retrieve_from}="Intranet"; + $tabsysprefs{batchMode}="Intranet"; + # Members $tabsysprefs{automembernum}="Members"; $tabsysprefs{checkdigit}="Members"; $tabsysprefs{NotifyBorrowerDeparture}="Members"; - $tabsysprefs{memberofinstitution}="Members"; - $tabsysprefs{ReadingHistory}="Members"; # OPAC $tabsysprefs{AmazonAssocTag}="OPAC"; $tabsysprefs{AmazonContent}="OPAC"; @@ -113,6 +126,8 @@ my %tabsysprefs; $tabsysprefs{SubscriptionHistory}="OPAC"; $tabsysprefs{suggestion}="OPAC"; $tabsysprefs{virtualshelves}="OPAC"; + $tabsysprefs{opacheader}="OPAC"; + $tabsysprefs{allowrenewsfromopac}="OPAC"; sub StringSearch { my ($env,$searchstring,$type)=@_; @@ -157,14 +172,13 @@ sub StringSearch { return ($cnt,\@results); } - my $input = new CGI; my $searchfield=$input->param('searchfield'); my $offset=$input->param('offset'); my $script_name="/cgi-bin/koha/admin/systempreferences.pl"; my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "parameters/systempreferences.tmpl", + = get_template_and_user({template_name => "admin/systempreferences.tmpl", query => $input, type => "intranet", authnotrequired => 0, @@ -177,10 +191,10 @@ $searchfield=~ s/\,//g; if ($op) { $template->param(script_name => $script_name, - $op => 1,); # we show only the TMPL_VAR names $op + $op => 1); # we show only the TMPL_VAR names $op } else { $template->param(script_name => $script_name, - else => 1,); # we show only the TMPL_VAR names $op + else => 1); # we show only the TMPL_VAR names $op } if ($op eq 'update_and_reedit') { diff --git a/admin/thesaurus.pl b/admin/thesaurus.pl index 7ce3ac7286..f7b1f11a00 100755 --- a/admin/thesaurus.pl +++ b/admin/thesaurus.pl @@ -24,7 +24,6 @@ use C4::Interface::CGI::Output; use C4::Context; use C4::Output; use C4::Search; -use HTML::Template; use C4::Authorities; my $input = new CGI; @@ -153,7 +152,6 @@ if ($op eq 'add_form') { -values=> \@category_list, -default=>"$search_category", -size=>1, - -tabindex=>'', -multiple=>0, ); if (!$search_category) { @@ -202,7 +200,6 @@ if ($op eq 'add_form') { -values=> \@category_list, -default=>"$search_category", -size=>1, - -tabindex=>'', -multiple=>0, ); if (!$search_category) { @@ -265,8 +262,5 @@ if ($op eq 'add_form') { $template->param(next => "$script_name?branch=$branch&search_category=$search_category&searchstring=$searchstring&offset=$nextpage"); } } #---- 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; diff --git a/admin/viewlog.pl b/admin/viewlog.pl index 1991e6af27..3a8f369feb 100755 --- a/admin/viewlog.pl +++ b/admin/viewlog.pl @@ -23,7 +23,6 @@ use strict; use C4::Auth; use CGI; use C4::Context; -use HTML::Template; use C4::Koha; use C4::Interface::CGI::Output; use C4::Log; @@ -31,7 +30,7 @@ use Date::Manip; =head1 NAME -plugin that shows a stats on borrowers +plugin that shows a stats on catalogers =head1 DESCRIPTION @@ -42,7 +41,7 @@ plugin that shows a stats on borrowers my $input = new CGI; my $do_it=$input->param('do_it'); -my $fullreportname = "admin/viewlog.tmpl"; +my $fullreportname = "parameters/viewlog.tmpl"; my $modulename = $input->param("module"); my $userfilter = $input->param("user"); my $actionfilter = $input->param("action"); @@ -53,7 +52,7 @@ my $mime = $input->param("MIME"); my $del = $input->param("sep"); my $output = $input->param("output"); -#warn "module : ".$modulename; + my ($template, $borrowernumber, $cookie) = get_template_and_user({template_name => $fullreportname, query => $input, @@ -86,7 +85,7 @@ if ($do_it) { my ($count, $results) = displaylog( $modulename, @filters); if ($output eq "screen"){ # Printing results to screen - $template->param(modulename =>$modulename, $modulename => 1, looprow => $results); + $template->param(modulename =>$modulename, $modulename => 1, looprow => $results,counter=>$count); output_html_with_http_headers $input, $cookie, $template->output; exit(1); } else { diff --git a/admin/z3950servers.pl b/admin/z3950servers.pl index 23270b3124..6d2824bc12 100755 --- a/admin/z3950servers.pl +++ b/admin/z3950servers.pl @@ -23,9 +23,7 @@ use strict; use C4::Output; use CGI; use C4::Search; -use C4::Database; use C4::Context; -use HTML::Template; use C4::Auth; use C4::Interface::CGI::Output; @@ -200,8 +198,5 @@ if ($op eq 'add_form') { nextpage => $offset+$pagesize); } } #---- 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; -- 2.39.5