From bee8cebb41abc4cd3cf4a85159d31b35e00255e8 Mon Sep 17 00:00:00 2001 From: tipaul Date: Thu, 4 Aug 2005 08:55:54 +0000 Subject: [PATCH] Letters / alert system, continuing... * adding a package Letters.pm, that manages Letters & alerts. * adding feature : it's now possible to define a "letter" for any subscription created. If a letter is defined, users in OPAC can put an alert on the subscription. When an issue is marked "arrived", all users in the alert will recieve a mail (as defined in the "letter"). This last part (= send the mail) is not yet developped. (Should be done this week) * adding feature : it's now possible to "put to an alert" in OPAC, for any serial subscription. The alert is stored in a new table, called alert. An alert can be put only if the librarian has activated them in subscription (and they activate it just by choosing a "letter" to sent to borrowers on new issues) * adding feature : librarian can see in borrower detail which alerts they have put, and a user can see in opac-detail which alert they have put too. Note that the system should be generic enough to manage any type of alert. I plan to extend it soon to virtual shelves : a borrower will be able to put an alert on a virtual shelf, to be warned when something is changed in the virtual shelf (mail being sent once a day by cron, or manually by the shelf owner. Anyway, a mail won't be sent on every change, users would be spammed by Koha ;-) ) --- .../css/en/opac-alert-subscribe.tmpl | 36 +++++++++++ opac/opac-alert-subscribe.pl | 63 +++++++++++++++++++ updater/updatedatabase | 32 ++++++++++ 3 files changed, 131 insertions(+) create mode 100644 koha-tmpl/opac-tmpl/css/en/opac-alert-subscribe.tmpl create mode 100755 opac/opac-alert-subscribe.pl diff --git a/koha-tmpl/opac-tmpl/css/en/opac-alert-subscribe.tmpl b/koha-tmpl/opac-tmpl/css/en/opac-alert-subscribe.tmpl new file mode 100644 index 0000000000..6c3379e49a --- /dev/null +++ b/koha-tmpl/opac-tmpl/css/en/opac-alert-subscribe.tmpl @@ -0,0 +1,36 @@ + + +
+ +

Subscribe to an alert

+
+

Confirmation

+
+

Do you confirm you want to subscribe to alerts for () ?

+ "> + + "> + + + " class="button">No +
+
+ + +

Unsubscribe to an alert

+
+

Confirmation

+
+

Do you confirm you want to unsubscribe to alerts for () ?

+ "> + + "> + + + " class="button">No +
+
+ +
+ + diff --git a/opac/opac-alert-subscribe.pl b/opac/opac-alert-subscribe.pl new file mode 100755 index 0000000000..f3761304cf --- /dev/null +++ b/opac/opac-alert-subscribe.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl + +use strict; +use CGI; +use C4::Auth; +use C4::Date; +use C4::Output; +use C4::Interface::CGI::Output; +use C4::Context; +use C4::Koha; +use C4::Letters; +use C4::Bull; +# use C4::Search; +use HTML::Template; + +my $query = new CGI; +my $op = $query->param('op'); +my $dbh = C4::Context->dbh; + +my $sth; +my ($template, $loggedinuser, $cookie); +my $externalid = $query->param('externalid'); +my $alerttype = $query->param('alerttype'); +my $biblionumber = $query->param('biblionumber'); + +($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "opac-alert-subscribe.tmpl", + query => $query, + type => "opac", + authnotrequired => 1, + debug => 1, + }); + +if ($op eq 'alert_confirmed') { + addalert($loggedinuser,$alerttype,$externalid); + if ($alerttype eq 'issue') { + print $query->redirect("opac-serial-issues.pl?biblionumber=$biblionumber"); + exit; + } +} elsif ($op eq 'cancel_confirmed') { + my $alerts =getalert($loggedinuser,$alerttype,$externalid); + foreach (@$alerts) { # we are supposed to have only 1 result, but just in case... + delalert($_->{alertid}); + } + if ($alerttype eq 'issue') { + print $query->redirect("opac-serial-issues.pl?biblionumber=$biblionumber"); + exit; + } + +} else { + if ($alerttype eq 'issue') { # alert for subscription issues + my $subscription = &getsubscription($externalid); + $template->param("typeissue$op" => 1, + bibliotitle => $subscription->{bibliotitle}, + notes => $subscription->{notes}, + externalid => $externalid, + biblionumber => $biblionumber, + ); + } else { + } + +} +output_html_with_http_headers $query, $cookie, $template->output; diff --git a/updater/updatedatabase b/updater/updatedatabase index 38614fb57b..149298d0c4 100755 --- a/updater/updatedatabase +++ b/updater/updatedatabase @@ -80,9 +80,19 @@ my %requiretables = ( content text, PRIMARY KEY (module,code) )", + alert =>"( + alertid int(11) NOT NULL auto_increment, + borrowernumber int(11) NOT NULL default '0', + type varchar(10) NOT NULL default '', + externalid varchar(20) NOT NULL default '', + PRIMARY KEY (alertid), + KEY borrowernumber (borrowernumber), + KEY type (type,externalid) + )" ); my %requirefields = ( + subscription => { 'letter' => 'char(20) NULL'}, # tablename => { 'field' => 'fieldtype' }, ); @@ -358,6 +368,17 @@ $sth->finish; exit; # $Log$ +# Revision 1.116 2005/08/04 08:55:54 tipaul +# Letters / alert system, continuing... +# +# * adding a package Letters.pm, that manages Letters & alerts. +# * adding feature : it's now possible to define a "letter" for any subscription created. If a letter is defined, users in OPAC can put an alert on the subscription. When an issue is marked "arrived", all users in the alert will recieve a mail (as defined in the "letter"). This last part (= send the mail) is not yet developped. (Should be done this week) +# * adding feature : it's now possible to "put to an alert" in OPAC, for any serial subscription. The alert is stored in a new table, called alert. An alert can be put only if the librarian has activated them in subscription (and they activate it just by choosing a "letter" to sent to borrowers on new issues) +# * adding feature : librarian can see in borrower detail which alerts they have put, and a user can see in opac-detail which alert they have put too. +# +# Note that the system should be generic enough to manage any type of alert. +# I plan to extend it soon to virtual shelves : a borrower will be able to put an alert on a virtual shelf, to be warned when something is changed in the virtual shelf (mail being sent once a day by cron, or manually by the shelf owner. Anyway, a mail won't be sent on every change, users would be spammed by Koha ;-) ) +# # Revision 1.115 2005/08/02 16:15:34 tipaul # adding 2 fields to letter system : # * module (acquisition, catalogue...) : it will be usefull to show the librarian only letters he may be interested by. @@ -744,6 +765,17 @@ $sth->finish; exit; # $Log$ +# Revision 1.116 2005/08/04 08:55:54 tipaul +# Letters / alert system, continuing... +# +# * adding a package Letters.pm, that manages Letters & alerts. +# * adding feature : it's now possible to define a "letter" for any subscription created. If a letter is defined, users in OPAC can put an alert on the subscription. When an issue is marked "arrived", all users in the alert will recieve a mail (as defined in the "letter"). This last part (= send the mail) is not yet developped. (Should be done this week) +# * adding feature : it's now possible to "put to an alert" in OPAC, for any serial subscription. The alert is stored in a new table, called alert. An alert can be put only if the librarian has activated them in subscription (and they activate it just by choosing a "letter" to sent to borrowers on new issues) +# * adding feature : librarian can see in borrower detail which alerts they have put, and a user can see in opac-detail which alert they have put too. +# +# Note that the system should be generic enough to manage any type of alert. +# I plan to extend it soon to virtual shelves : a borrower will be able to put an alert on a virtual shelf, to be warned when something is changed in the virtual shelf (mail being sent once a day by cron, or manually by the shelf owner. Anyway, a mail won't be sent on every change, users would be spammed by Koha ;-) ) +# # Revision 1.115 2005/08/02 16:15:34 tipaul # adding 2 fields to letter system : # * module (acquisition, catalogue...) : it will be usefull to show the librarian only letters he may be interested by. -- 2.39.5