3 # This file is part of Koha.
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
28 use C4
::ItemCirculationAlertPreference
;
32 use Koha
::Patron
::Categories
;
34 # shortcut for long package name
35 our $preferences = 'C4::ItemCirculationAlertPreference';
37 # display item circulation alerts
40 my $dbh = C4
::Context
->dbh;
41 my ($template, $user, $cookie) = get_template_and_user
(
43 template_name
=> "admin/item_circulation_alerts.tt",
46 flagsrequired
=> { parameters
=> 'item_circ_alerts' },
47 debug
=> defined($input->param('debug')),
51 my $branch = $input->param('branch') || '*';
52 my @categories = Koha
::Patron
::Categories
->search_limited;
53 my @item_types = Koha
::ItemTypes
->search;
54 my $grid_checkout = $preferences->grid({ branchcode
=> $branch, notification
=> 'CHECKOUT' });
55 my $grid_checkin = $preferences->grid({ branchcode
=> $branch, notification
=> 'CHECKIN' });
57 $template->param(branch
=> $branch);
58 $template->param(categories
=> \
@categories);
59 $template->param(item_types
=> \
@item_types);
60 $template->param(grid_checkout
=> $grid_checkout);
61 $template->param(grid_checkin
=> $grid_checkin);
63 output_html_with_http_headers
$input, $cookie, $template->output;
66 # toggle a preference via ajax
69 my $id = $input->param('id');
70 my $branch = $input->param('branch');
71 my ($category, $item_type, $notification) = split('-', $id);
76 branchcode
=> $branch,
77 categorycode
=> $category,
78 item_type
=> $item_type,
79 notification
=> $notification,
82 my $restrictions = $preferences; # all the same thing...
83 my $notifications = $preferences; #
84 if ($notifications->is_enabled_for($settings)) {
85 # toggle by adding a restriction
86 $restrictions->create($settings);
88 # toggle by removing the restriction
89 $restrictions->delete($settings);
92 my $response = { success
=> 1 };
93 my @reasons = $notifications->is_disabled_for($settings);
95 $response->{classes
} = '';
97 my $default_exists = grep { $_->{branchcode
} eq '*' } @reasons;
98 my $non_default_also = grep { $_->{branchcode
} ne '*' } @reasons;
100 push @classes, 'default' if $default_exists;
101 push @classes, 'disabled' if $non_default_also;
102 $response->{classes
} = join(' ', @classes);
104 print $input->header;
105 print encode_json
($response);
108 # dispatch to various actions based on CGI parameter 'action'
114 my $input = CGI
->new;
115 my $action = $input->param('action') || 'show';
116 if (not exists $handler{$action}) {
118 print $input->header(-status
=> $status);
121 $input->p("$action is not supported.")
124 $handler{$action}->($input);
129 dispatch
if $ENV{REQUEST_URI
};
135 admin/item_circulation_alerts.pl - per-branch configuration for messaging
139 L<http://intranet.mydomain.com:8080/cgi-bin/koha/admin/item_circulation_alerts.pl>
143 This CGI script drives an interface for configuring item circulation alerts.
144 If you want to prevent alerts from going out for any combination of branch,
145 patron category, and item type, this is where that policy would be set.
152 Display a branches item circulation alert preferences.
160 What branch are we looking at. If none is specified, the virtual default
167 =head3 ?action=toggle
169 Toggle a preference via AJAX
177 The id should be string that can be split on "-" which contains:
178 "$categorycode-$item_type-$notification".
182 Branch code to apply this preference to