diff --git a/koha-tmpl/intranet-tmpl/prog/en/intranet-main.tmpl b/koha-tmpl/intranet-tmpl/prog/en/intranet-main.tmpl
index d2653eb6f6..9ad6b65784 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/intranet-main.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/intranet-main.tmpl
@@ -70,5 +70,21 @@
+
OPAC & KOHA News
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No news loaded
+
+
+
+
+
+
+
diff --git a/tools/exceptionHolidays.pl b/tools/exceptionHolidays.pl
new file mode 100755
index 0000000000..ed5e976d0c
--- /dev/null
+++ b/tools/exceptionHolidays.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+use strict;
+use CGI;
+
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Database;
+use HTML::Template;
+use C4::Calendar;
+
+my $input = new CGI;
+my $dbh = C4::Context->dbh();
+
+my $branchcode = $input->param('showBranchName');
+my $weekday = $input->param('showWeekday');
+my $day = $input->param('showDay');
+my $month = $input->param('showMonth');
+my $year = $input->param('showYear');
+my $title = $input->param('showTitle');
+my $description = $input->param('showDescription');
+
+my $calendar = C4::Calendar->new(branchcode => $branchcode);
+
+if ($input->param('showOperation') eq 'exception') {
+ $calendar->insert_exception_holiday(day => $day,
+ month => $month,
+ year => $year,
+ title => $title,
+ description => $description);
+} elsif ($input->param('showOperation') eq 'delete') {
+ $calendar->delete_holiday(weekday => $weekday,
+ day => $day,
+ month => $month,
+ year => $year);
+}
+print $input->redirect("/cgi-bin/koha/tools/holidays.pl?branch=$branchcode");
diff --git a/tools/holidays.pl b/tools/holidays.pl
new file mode 100755
index 0000000000..f4b5c7909a
--- /dev/null
+++ b/tools/holidays.pl
@@ -0,0 +1,103 @@
+#!/usr/bin/perl
+#####Sets holiday periods for each branch. Datedues will be extended if branch is closed -TG
+use strict;
+use CGI;
+
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Database;
+use HTML::Template;
+use C4::Calendar;
+
+my $input = new CGI;
+#my $branch = $input->param('branch');
+my $branch=C4::Context->preference('defaultbranch') || $input->param('branch');
+my $dbh = C4::Context->dbh();
+# Get the template to use
+my ($template, $loggedinuser, $cookie)
+ = get_template_and_user({template_name => "tools/holidays.tmpl",
+ type => "intranet",
+ query => $input,
+ authnotrequired => 0,
+ flagsrequired => {parameters => 1},
+ debug => 1,
+ });
+
+# Set all the branches.
+my $branches = $dbh->prepare("select branchcode, branchname from branches");
+$branches->execute;
+# It creates a list of branches
+my %list;
+while (my ($branchcode, $branchname) = $branches->fetchrow) {
+ $list{$branchcode} = $branchname;
+}
+my @listValues = keys(%list);
+if (!defined($branch)) {
+ $branch =$listValues[4];
+}
+my $branchesList = CGI::scrolling_list(-name => 'branch',
+ -values => \@listValues,
+ -labels => \%list,
+ -size => 1,
+ -default => [$branch],
+ -multiple => 0,
+ -id => "branch",
+ -onChange => "changeBranch()");
+
+$branches->finish;
+
+# Get all the holidays
+warn "BRANCH : $branch";
+my $calendar = C4::Calendar->new(branchcode => $branch);
+my $week_days_holidays = $calendar->get_week_days_holidays();
+my @week_days;
+foreach my $weekday (keys %$week_days_holidays) {
+warn "WEEK DAY : $weekday";
+ my %week_day;
+ %week_day = (KEY => $weekday,
+ TITLE => $week_days_holidays->{$weekday}{title},
+ DESCRIPTION => $week_days_holidays->{$weekday}{description});
+ push @week_days, \%week_day;
+}
+
+my $day_month_holidays = $calendar->get_day_month_holidays();
+my @day_month_holidays;
+foreach my $monthDay (keys %$day_month_holidays) {
+ my %day_month;
+ %day_month = (KEY => $monthDay,
+ TITLE => $day_month_holidays->{$monthDay}{title},
+ DESCRIPTION => $day_month_holidays->{$monthDay}{description});
+ push @day_month_holidays, \%day_month;
+}
+
+my $exception_holidays = $calendar->get_exception_holidays();
+my @exception_holidays;
+foreach my $yearMonthDay (keys %$exception_holidays) {
+ my %exception_holiday;
+ %exception_holiday = (KEY => $yearMonthDay,
+ TITLE => $exception_holidays->{$yearMonthDay}{title},
+ DESCRIPTION => $exception_holidays->{$yearMonthDay}{description});
+ push @exception_holidays, \%exception_holiday;
+}
+
+my $single_holidays = $calendar->get_single_holidays();
+my @holidays;
+foreach my $yearMonthDay (keys %$single_holidays) {
+ my %holiday;
+ %holiday = (KEY => $yearMonthDay,
+ TITLE => $single_holidays->{$yearMonthDay}{title},
+ DESCRIPTION => $single_holidays->{$yearMonthDay}{description});
+ push @holidays, \%holiday;
+}
+
+# Replace the template values with the real ones
+$template->param(BRANCHES => $branchesList);
+$template->param(WEEK_DAYS_LOOP => \@week_days);
+$template->param(HOLIDAYS_LOOP => \@holidays);
+$template->param(EXCEPTION_HOLIDAYS_LOOP => \@exception_holidays);
+$template->param(DAY_MONTH_HOLIDAYS_LOOP => \@day_month_holidays);
+$template->param(branch => $branch);
+
+# Shows the template with the real values replaced
+output_html_with_http_headers $input, $cookie, $template->output;
diff --git a/tools/koha-news.pl b/tools/koha-news.pl
new file mode 100755
index 0000000000..ccf455d26b
--- /dev/null
+++ b/tools/koha-news.pl
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+# Script to manage the opac news.
+# written 11/04
+# Castaņeda, Carlos Sebastian - seba3c@yahoo.com.ar - Physics Library UNLP Argentina
+# Modified to include news to KOHA intranet - tgarip@neu.edu.tr NEU library -Cyprus
+# 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::NewsChannels;
+use HTML::Template;
+
+my $cgi = new CGI;
+
+my $id = $cgi->param('id');
+my $title = $cgi->param('title');
+my $new = $cgi->param('new');
+my $lang = $cgi->param('lang');
+my $new_detail = get_opac_new($id);
+
+my ($template, $borrowernumber, $cookie)
+ = get_template_and_user({template_name => "tools/koha-news.tmpl",
+ query => $cgi,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {management => 1},
+ debug => 1,
+ });
+
+# get lang list
+my @lang_list;
+
+foreach my $language (getalllanguages()) {
+ push @lang_list, { language => $language,
+ selected => ($new_detail->{lang} eq $language?1:0),
+ };
+}
+$template->param(lang_list => \@lang_list);
+
+my $op = $cgi->param('op');
+
+if ($op eq 'add_form') {
+ $template->param(add_form => 1);
+ if ($id) {
+ $template->param(op => 'edit');
+ $template->param($new_detail);
+ $template->param(id => $new_detail->{'idnew'});
+ } else {
+ $template->param(op => 'add');
+ }
+
+} elsif ($op eq 'add') {
+
+ add_opac_new($title, $new, $lang);
+ print $cgi->redirect('/cgi-bin/koha/tools/koha-news.pl');
+
+} elsif ($op eq 'edit') {
+
+ upd_opac_new($id, $title, $new, $lang);
+ print $cgi->redirect('/cgi-bin/koha/tools/koha-news.pl');
+
+} elsif ($op eq 'del') {
+ my @ids = $cgi->param('ids');
+ del_opac_new(join ",", @ids);
+ print $cgi->redirect('/cgi-bin/koha/tools/koha-news.pl');
+
+} else {
+
+ 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/tools/newHolidays.pl b/tools/newHolidays.pl
new file mode 100755
index 0000000000..9a8345c985
--- /dev/null
+++ b/tools/newHolidays.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use strict;
+use CGI;
+
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Database;
+use HTML::Template;
+use C4::Calendar;
+
+my $input = new CGI;
+my $dbh = C4::Context->dbh();
+
+my $branchcode = $input->param('newBranchName');
+my $weekday = $input->param('newWeekday');
+my $day = $input->param('newDay');
+my $month = $input->param('newMonth');
+my $year = $input->param('newYear');
+my $title = $input->param('newTitle');
+my $description = $input->param('newDescription');
+
+my $calendar = C4::Calendar->new(branchcode => $branchcode);
+
+if ($input->param('newOperation') eq 'weekday') {
+ $calendar->insert_week_day_holiday(weekday => $weekday,
+ title => $title,
+ description => $description);
+} elsif ($input->param('newOperation') eq 'repeatable') {
+ $calendar->insert_day_month_holiday(day => $day,
+ month => $month,
+ title => $title,
+ description => $description);
+} elsif ($input->param('newOperation') eq 'holiday') {
+ $calendar->insert_single_holiday(day => $day,
+ month => $month,
+ year => $year,
+ title => $title,
+ description => $description);
+
+}
+print $input->redirect("/cgi-bin/koha/tools/holidays.pl?branch=$branchcode");
diff --git a/updater/updatedatabase b/updater/updatedatabase
index 7384058926..77217884a9 100755
--- a/updater/updatedatabase
+++ b/updater/updatedatabase
@@ -93,6 +93,35 @@ my %requiretables = (
KEY borrowernumber (borrowernumber),
KEY type (type,externalid)
)",
+ opac_news => "(
+ `idnew` int(10) unsigned NOT NULL auto_increment,
+ `title` varchar(250) NOT NULL default '',
+ `new` text NOT NULL,
+ `lang` varchar(4) NOT NULL default '',
+ `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+ PRIMARY KEY (`idnew`)
+ )",
+ repeatable_holidays => "(
+ `id` int(11) NOT NULL auto_increment,
+ `branchcode` varchar(4) NOT NULL default '',
+ `weekday` smallint(6) default NULL,
+ `day` smallint(6) default NULL,
+ `month` smallint(6) default NULL,
+ `title` varchar(50) NOT NULL default '',
+ `description` text NOT NULL,
+ PRIMARY KEY (`id`)
+ )",
+ special_holidays => "(
+ `id` int(11) NOT NULL auto_increment,
+ `branchcode` varchar(4) NOT NULL default '',
+ `day` smallint(6) NOT NULL default '0',
+ `month` smallint(6) NOT NULL default '0',
+ `year` smallint(6) NOT NULL default '0',
+ `isexception` smallint(1) NOT NULL default '1',
+ `title` varchar(50) NOT NULL default '',
+ `description` text NOT NULL,
+ PRIMARY KEY (`id`)
+ )",
overduerules =>"(`branchcode` varchar(255) NOT NULL default '',
`categorycode` char(2) NOT NULL default '',
`delay1` int(4) default '0',
@@ -913,7 +942,7 @@ foreach my $table ( keys %indexes ) {
if ($existingindexes{$key_name} eq 1) {
# print "$key_name existing";
} else {
- print "Creating $key_name in $table\n";
+ print "\tCreating index $key_name in $table\n";
my $sql;
if ($row->{indexname} eq 'PRIMARY') {
$sql = "alter table $table ADD PRIMARY KEY ($row->{content})";
@@ -944,7 +973,7 @@ foreach my $table ( keys %foreign_keys ) {
if ($stat->{'Comment'} =~/$foreign_table/) {
# print "$foreign_table existing\n";
} else {
- print "Creating $foreign_table in $table\n";
+ print "\tCreating foreign key $foreign_table in $table\n";
# first, drop any orphan value in child table
if ($row->{onDelete} ne "RESTRICT") {
my $sql = "delete from $table where $row->{key} not in (select $row->{foreignkey} from $row->{foreigntable})";
@@ -1038,11 +1067,12 @@ $sth = $dbh->prepare("show table status");
$sth->execute;
while ( my $table = $sth->fetchrow_hashref ) {
if ($table->{Engine} ne 'InnoDB') {
- $dbh->do("ALTER TABLE $table->{Name} TYPE = innodb");
+# $dbh->do("ALTER TABLE $table->{Name} TYPE = innodb");
print "moving $table->{Name} to InnoDB\n";
}
unless ($table->{Collation} =~ /^utf8/) {
- $dbh->do("ALTER TABLE $table->{Name} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci");
+ #$dbh->do("ALTER TABLE $table->{Name} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci");
+# $dbh->do("ALTER TABLE $table->{Name} CONVERT TO CHARACTER SET utf8");
# FIXME : maybe a ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 would be better, def char set seems to work fine. If any problem encountered, let's try with convert !
print "moving $table->{Name} to utf8\n";
} else {
@@ -1241,6 +1271,21 @@ sub MARCgetitem {
exit;
# $Log$
+# Revision 1.130 2006/03/03 16:35:21 tipaul
+# commit for holidays and news management.
+#
+# Contrib from Tümer Garip (from Turkey) :
+# * holiday :
+# in /tools/ the holiday.pl script let you define holidays (days where the library is closed), branch by branch. You can define 3 types of holidays :
+# - single day : only this day is closed
+# - repet weekly (like "sunday") : the day is holiday every week
+# - repet yearly (like "July, 4") : this day is closed every year.
+#
+# You can also put exception :
+# - sunday is holiday, but "2006 March, 5th" the library will be open
+#
+# The holidays are used for return date calculation : the return date is set to the next date where the library is open. A systempreference (useDaysMode) set ON (Calendar) or OFF (Normal) the calendar calculation.
+#
# Revision 1.129 2006/02/27 18:19:33 hdl
# New table used in overduerules.pl tools page.
#