X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=admin%2Fcategorie.pl;h=521346b15df48c82a6a16f2b8270550049a5a3b6;hb=2bc542789fdf9d551a408bc8349daa062a37c496;hp=b4cad0bbeeb8ca18929b3b576cf98998044dedb5;hpb=dbca39823f826d5e8d1cd7c0fc8d768be1f57b64;p=koha_gimpoz diff --git a/admin/categorie.pl b/admin/categorie.pl index b4cad0bbee..521346b15d 100755 --- a/admin/categorie.pl +++ b/admin/categorie.pl @@ -32,34 +32,34 @@ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; +#use warnings; FIXME - Bug 2505 use CGI; use C4::Context; +use C4::Auth; use C4::Output; -use C4::Search; +use C4::Dates; +use C4::Form::MessagingPreferences; sub StringSearch { - my ($env,$searchstring,$type)=@_; + my ($searchstring,$type)=@_; my $dbh = C4::Context->dbh; $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); my $count=@data; - my $query="Select * from categories where (description like \"$data[0]%\")"; - my $sth=$dbh->prepare($query); - $sth->execute; + my $sth=$dbh->prepare("Select * from categories where (description like ?) order by category_type,description,categorycode"); + $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); + return (scalar(@results),\@results); } my $input = new CGI; @@ -67,227 +67,192 @@ my $searchfield=$input->param('description'); my $script_name="/cgi-bin/koha/admin/categorie.pl"; my $categorycode=$input->param('categorycode'); my $op = $input->param('op'); -$searchfield=~ s/\,//g; -print $input->header; -#start the page and read in includes -print startpage(); -print startmenu('admin'); + +my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "admin/categorie.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, + }); + + +$template->param(script_name => $script_name, + categorycode => $categorycode, + searchfield => $searchfield); + ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { + $template->param(add_form => 1); + #---- if primkey exists, it's a modify action, so read values to modify... my $data; if ($categorycode) { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,finetype,bulk,enrolmentfee,issuelimit,reservefee,overduenoticerequired from categories where categorycode='$categorycode'"); - $sth->execute; + my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?"); + $sth->execute($categorycode); $data=$sth->fetchrow_hashref; $sth->finish; } - print < - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - function isNotNull(f,noalert) { - if (f.value.length ==0) { - return false; - } - return true; - } - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - function toUC(f) { - var x=f.value.toUpperCase(); - f.value=x; - return true; - } - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - function isNum(v,maybenull) { - var n = new Number(v.value); - if (isNaN(n)) { - return false; - } - if (maybenull==0 && v.value=='') { - return false; - } - return true; - } - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - function isDate(f) { - var t = Date.parse(f.value); - if (isNaN(t)) { - return false; - } - } - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - function Check(f) { - var ok=1; - var _alertString=""; - var alertString2; - if (f.categorycode.value.length==0) { - _alertString += "- categorycode missing\\n"; - } -// alert(window.document.Aform.description.value); - if (!(isNotNull(window.document.Aform.description,1))) { - _alertString += "- description missing\\n"; - } - if (!isNum(f.upperagelimit,0)) { - _alertString += "- upperagelimit is not a number\\n"; - } - if (_alertString.length==0) { - document.Aform.submit(); - } else { - alertString2 = "Form not submitted because of the following problem(s)\\n"; - alertString2 += "------------------------------------------------------------------------------------\\n\\n"; - alertString2 += _alertString; - alert(alertString2); - } - } - -printend -;#/ - if ($categorycode) { - print "

Modify category

"; - } else { - print "

Add category

"; - } - print "
"; - print ""; - print ""; - print ""; - if ($categorycode) { - print ""; - } else { - print ""; - } - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; -print "
Category code$categorycode
Category code
Description 
Enrolment period
Upperage limit
Date of birth Required (14/02/2002)
Fine type
Bulk
Enrolment fee
Overdue notice required
Issue limit
Reserve fee
 
"; - print "
"; -; + + $data->{'enrolmentperioddate'} = undef if ($data->{'enrolmentperioddate'} eq '0000-00-00'); + + $template->param(description => $data->{'description'}, + enrolmentperiod => $data->{'enrolmentperiod'}, + enrolmentperioddate => C4::Dates::format_date($data->{'enrolmentperioddate'}), + upperagelimit => $data->{'upperagelimit'}, + dateofbirthrequired => $data->{'dateofbirthrequired'}, + enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), + overduenoticerequired => $data->{'overduenoticerequired'}, + issuelimit => $data->{'issuelimit'}, + reservefee => sprintf("%.2f",$data->{'reservefee'}), + hidelostitems => $data->{'hidelostitems'}, + category_type => $data->{'category_type'}, + DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + "type_".$data->{'category_type'} => 1, + SMSSendDriver => C4::Context->preference("SMSSendDriver") + ); + if (C4::Context->preference('EnhancedMessagingPreferences')) { + C4::Form::MessagingPreferences::set_form_values({ categorycode => $categorycode } , $template); + } # 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 $is_a_modif = $input->param("is_a_modif"); my $dbh = C4::Context->dbh; - my $query = "replace categories (categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,finetype,bulk,enrolmentfee,issuelimit,reservefee,overduenoticerequired) values ("; - $query.= $dbh->quote($input->param('categorycode')).","; - $query.= $dbh->quote($input->param('description')).","; - $query.= $dbh->quote($input->param('enrolmentperiod')).","; - $query.= $dbh->quote($input->param('upperagelimit')).","; - $query.= $dbh->quote($input->param('dateofbirthrequired')).","; - $query.= $dbh->quote($input->param('finetype')).","; - $query.= $dbh->quote($input->param('bulk')).","; - $query.= $dbh->quote($input->param('enrolmentfee')).","; - $query.= $dbh->quote($input->param('issuelimit')).","; - $query.= $dbh->quote($input->param('reservefee')).","; - $query.= $dbh->quote($input->param('overduenoticerequired')).")"; - my $sth=$dbh->prepare($query); - $sth->execute; - $sth->finish; - print "data recorded"; - print "
"; - print ""; - print "
"; + if($input->param('enrolmentperioddate')){ + $input->param('enrolmentperioddate' => C4::Dates::format_date_in_iso($input->param('enrolmentperioddate')) ); + } + + if ($is_a_modif) { + my $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,hidelostitems=?,overduenoticerequired=?,category_type=? WHERE categorycode=?"); + $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type','categorycode')); + $sth->finish; + } else { + my $sth=$dbh->prepare("INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,hidelostitems,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?,?,?)"); + $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type')); + $sth->finish; + } + if (C4::Context->preference('EnhancedMessagingPreferences')) { + C4::Form::MessagingPreferences::handle_form_action($input, + { categorycode => $input->param('categorycode') }, $template); + } + 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') { + $template->param(delete_confirm => 1); + my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select count(*) as total from categoryitem where categorycode='$categorycode'"); - $sth->execute; + my $sth=$dbh->prepare("select count(*) as total from borrowers where categorycode=?"); + $sth->execute($categorycode); my $total = $sth->fetchrow_hashref; - print "TOTAL : $categorycode : $total->{'total'}
"; - $sth->finish; - # FIXME - there's already a $sth in this scope. - my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,upperagelimit,dateofbirthrequired,finetype,bulk,enrolmentfee,issuelimit,reservefee,overduenoticerequired from categories where categorycode='$categorycode'"); - $sth->execute; - my $data=$sth->fetchrow_hashref; $sth->finish; - print mktablehdr; - print mktablerow(2,'#99cc33',bold('Category code'),bold("$categorycode"),'/images/background-mem.gif'); - print "
"; - print "Description$data->{'description'}"; - print "Enrolment period$data->{'enrolmentperiod'}"; - print "Upperage limit$data->{'upperagelimit'}"; - print "Date of birth Required$data->{'dateofbirthrequired'}"; - print "Fine type$data->{'finetype'}"; - print "Bulk$data->{'bulk'}"; - print "Enrolment fee$data->{'enrolmentfee'}"; - print "Overdue notice required$data->{'overduenoticerequired'}"; - print "Issue limit$data->{'issuelimit'}"; - print "Reserve fee$data->{'reservefee'}"; + $template->param(total => $total->{'total'}); + + my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?"); + $sth2->execute($categorycode); + my $data=$sth2->fetchrow_hashref; + $sth2->finish; if ($total->{'total'} >0) { - print "This record is used $total->{'total'} times. Deletion not possible"; - print "
"; - } else { - print "CONFIRM DELETION"; - print "
"; + $template->param(totalgtzero => 1); } + + $template->param( description => $data->{'description'}, + enrolmentperiod => $data->{'enrolmentperiod'}, + enrolmentperioddate => C4::Dates::format_date($data->{'enrolmentperioddate'}), + upperagelimit => $data->{'upperagelimit'}, + dateofbirthrequired => $data->{'dateofbirthrequired'}, + enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), + overduenoticerequired => $data->{'overduenoticerequired'}, + issuelimit => $data->{'issuelimit'}, + reservefee => sprintf("%.2f",$data->{'reservefee'}), + hidelostitems => $data->{'hidelostitems'}, + category_type => $data->{'category_type'}, + ); # 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') { + $template->param(delete_confirmed => 1); my $dbh = C4::Context->dbh; my $categorycode=uc($input->param('categorycode')); - my $query = "delete from categories where categorycode='$categorycode'"; - my $sth=$dbh->prepare($query); - $sth->execute; + my $sth=$dbh->prepare("delete from categories where categorycode=?"); + $sth->execute($categorycode); $sth->finish; - print "data deleted"; - print "
"; - print ""; - print "
"; + print "Content-Type: text/html\n\n"; + exit; + # END $OP eq DELETE_CONFIRMED } else { # DEFAULT - my @inputs=(["text","description",$searchfield], - ["reset","reset","clr"]); - print mkheadr(2,'Category admin'); - print mkformnotable("$script_name",@inputs); - print <"; - } - print mktablehdr; - print mktablerow(13,'#99cc33',bold('Category'),bold('Description'),bold('Enrolment'),bold('age max') - ,bold('birth needed'),bold('Fine'),bold('Bulk'),bold('fee'),bold('overdue'),bold('Issue limit'),bold('Reserve'),' ',' ','/images/background-mem.gif'); - my $env; - my ($count,$results)=StringSearch($env,$searchfield,'web'); - my $toggle="white"; + $template->param(else => 1); + my @loop; + my ($count,$results)=StringSearch($searchfield,'web'); for (my $i=0; $i < $count; $i++){ - #find out stats - # my ($od,$issue,$fines)=categdata2($env,$results->[$i]{'borrowernumber'}); - # $fines=$fines+0; - if ($toggle eq 'white'){ - $toggle="#ffffcc"; - } else { - $toggle="white"; - } - print mktablerow(13,$toggle,$results->[$i]{'categorycode'}, - $results->[$i]{'description'},$results->[$i]{'enrolmentperiod'}, - $results->[$i]{'upperagelimit'},$results->[$i]{'dateofbirthrequired'},$results->[$i]{'finetype'}, - $results->[$i]{'bulk'},$results->[$i]{'enrolmentfee'},$results->[$i]{'overduenoticerequired'},$results->[$i]{'issuelimit'},$results->[$i]{'reservefee'},mklink("$script_name?op=add_form&categorycode=".$results->[$i]{'categorycode'},'Edit'), - mklink("$script_name?op=delete_confirm&categorycode=".$results->[$i]{'categorycode'},'Delete')); + my %row = ( + categorycode => $results->[$i]{'categorycode'}, + description => $results->[$i]{'description'}, + enrolmentperiod => $results->[$i]{'enrolmentperiod'}, + enrolmentperioddate => C4::Dates::format_date($results->[$i]{'enrolmentperioddate'}), + upperagelimit => $results->[$i]{'upperagelimit'}, + dateofbirthrequired => $results->[$i]{'dateofbirthrequired'}, + enrolmentfee => sprintf("%.2f",$results->[$i]{'enrolmentfee'}), + overduenoticerequired => $results->[$i]{'overduenoticerequired'}, + issuelimit => $results->[$i]{'issuelimit'}, + reservefee => sprintf("%.2f",$results->[$i]{'reservefee'}), + hidelostitems => $results->[$i]{'hidelostitems'}, + category_type => $results->[$i]{'category_type'}, + "type_".$results->[$i]{'category_type'} => 1); + if (C4::Context->preference('EnhancedMessagingPreferences')) { + my $brief_prefs = _get_brief_messaging_prefs($results->[$i]{'categorycode'}); + $row{messaging_prefs} = $brief_prefs if @$brief_prefs; + } + push @loop, \%row; } - print mktableft; -print < - -
- -printend - ; + $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'"); + $sth->execute; + my ($categoryChild) = $sth->fetchrow; + $template->param(categoryChild => $categoryChild); + $sth=$dbh->prepare("select category_type from categories where category_type='I'"); + $sth->execute; + my ($categoryInstitution) = $sth->fetchrow; + $template->param(categoryInstitution => $categoryInstitution); + $sth->finish; + + } #---- END $OP eq DEFAULT -print endmenu('categorie'); -print endpage(); +output_html_with_http_headers $input, $cookie, $template->output; + +exit 0; + +sub _get_brief_messaging_prefs { + my $categorycode = shift; + my $messaging_options = C4::Members::Messaging::GetMessagingOptions(); + my $results = []; + PREF: foreach my $option ( @$messaging_options ) { + my $pref = C4::Members::Messaging::GetMessagingPreferences( { categorycode => $categorycode, + message_name => $option->{'message_name'} } ); + next unless $pref->{'transports'}; + my $brief_pref = { + message_attribute_id => $option->{'message_attribute_id'}, + message_name => $option->{'message_name'}, + $option->{'message_name'} => 1 + }; + foreach my $transport ( @{$pref->{'transports'}} ) { + push @{ $brief_pref->{'transports'} }, { transport => $transport }; + } + push @$results, $brief_pref; + } + return $results; +}