Bugzilla – Attachment 53831 Details for
Bug 5456
Create a link to opac-ics.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 5456 - Create a link to opac-ics.pl
Bug-5456---Create-a-link-to-opac-icspl.patch (text/plain), 6.74 KB, created by
Jonathan Druart
on 2016-08-01 11:11:51 UTC
(
hide
)
Description:
Bug 5456 - Create a link to opac-ics.pl
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2016-08-01 11:11:51 UTC
Size:
6.74 KB
patch
obsolete
>From 52f851d41a1808d75db8f7ac83b898c736c30f82 Mon Sep 17 00:00:00 2001 >From: Magnus Enger <magnus@libriotech.no> >Date: Sat, 23 Jul 2016 20:31:11 +0200 >Subject: [PATCH] Bug 5456 - Create a link to opac-ics.pl > >opac-ics.pl was added to Koha back in 2007, but there has not been a link to it >from anywhere. This patch adds the link from the main view on >/cgi-bin/koha/opac-user.pl, and makes some changes to opac-ics.pl itself. > >Changes to opac-ics.pl: >- Update the code to use date and time for when a loan is due >- Use dt_from_string to turn a MySQL time and date into a DateTime >- Add a timestamp and a UID (these were reported as necessary by a couple of > iCal validators) >- Remove DTEND from events, since we now have time as well as date for when a > loan is due >- For loans that are overdue, set the DTSTART to now(), to avoid creating > calendar events in the past >- Use a template to generate text strings, to make them translatable > >To test: >- Apply the patch >- Make sure you have at least a couple of loans, including one overdue >- Go to /cgi-bin/koha/opac-user.pl and click on the link labeled "Download as > iCal/.ics file" >- Inspect the file in a text editor and/or view the result in a calendar > appplication. Make sure the data makes sense. >- Sign off and go thee merrily on thine way. > >Update 2016-07-25 >- Force date_due to UTC to avoid problematic timezone info like this: > DTSTART:TZID=Europe/Zurich:20160724T235900 >- Remove quotes from summary and description > >Followed test plan, koha.ics file successfully imported to Thunderbird calendar >Signed-off-by: Marc <veron@veron.ch> > >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >--- > .../opac-tmpl/bootstrap/en/modules/opac-ics.tt | 8 +++ > .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 1 + > opac/opac-ics.pl | 66 +++++++++++++--------- > 3 files changed, 47 insertions(+), 28 deletions(-) > create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-ics.tt > >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-ics.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-ics.tt >new file mode 100644 >index 0000000..8743ec7 >--- /dev/null >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-ics.tt >@@ -0,0 +1,8 @@ >+[%# First line will be summary, second line will be description. Avoid indenting. -%] >+[%- IF overdue == 1 -%] >+[% title %] is overdue >+Your copy of [% title %] (barcode [% barcode %]) is overdue >+[%- ELSE -%] >+[% title %] is due >+Your copy of [% title %] (barcode [% barcode %]) is due back at the library today >+[%- END -%] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >index a1910f3..39a069d 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >@@ -303,6 +303,7 @@ Using this account is not recommended because some parts of Koha will not functi > <input type="submit" class="btn" value="Renew all" /> > </form> > [% END %] >+ <p><a href="opac-ics.pl">Download as iCal/.ics file</a></p> > [% ELSE %] > <table class="table table-bordered table-striped"> > <tr><td>You have nothing checked out</td></tr> >diff --git a/opac/opac-ics.pl b/opac/opac-ics.pl >index f92d5aa..c4da67e 100755 >--- a/opac/opac-ics.pl >+++ b/opac/opac-ics.pl >@@ -27,19 +27,19 @@ use Data::ICal; > use Data::ICal::Entry::Event; > use DateTime; > use DateTime::Format::ICal; >-use Date::Calc qw (Parse_Date); >-use DateTime; > use DateTime::Event::ICal; >+use URI; > > use C4::Auth; > use C4::Koha; > use C4::Circulation; > use C4::Members; >+use Koha::DateUtils; > > my $query = new CGI; > my ( $template, $borrowernumber, $cookie ) = get_template_and_user( > { >- template_name => "opac-user.tt", >+ template_name => "opac-ics.tt", > query => $query, > type => "opac", > authnotrequired => 0, >@@ -55,39 +55,49 @@ my $issues = GetPendingIssues($borrowernumber); > > foreach my $issue ( @$issues ) { > my $vevent = Data::ICal::Entry::Event->new(); >- my ($year,$month,$day)=Parse_Date($issue->{'date_due'}); >- ($year,$month,$day)=split /-|\/|\.|:/,$issue->{'date_due'} unless ($year && $month); >-# Decode_Date_EU2($string)) >- my $datestart = DateTime->new( >- day => $day, >- month => $month, >- year => $year, >- hour => 9, >- minute => 0, >- second => 0 >- ); >- my $dateend = DateTime->new( >- day => $day, >- month => $month, >- year => $year, >- hour => 10, >- minute => 0, >- second => 0 >+ my $timestamp = DateTime->now(); # Defaults to UTC >+ # Send some values to the template to generate summary and description >+ $template->param( >+ overdue => $issue->{'overdue'}, >+ title => $issue->{'title'}, >+ barcode => $issue->{'barcode'}, > ); >+ # Catch the result of the template and split on newline >+ my ($summary,$description) = split /\n/, $template->output; >+ my $datestart; >+ if ($issue->{'overdue'} && $issue->{'overdue'} == 1) { >+ # Not much use adding an event in the past for a book that is overdue >+ # so we set datestart = now >+ $datestart = $timestamp; >+ } else { >+ $datestart = dt_from_string($issue->{'date_due'}); >+ $datestart->set_time_zone('UTC'); >+ } >+ # Create a UID that includes the issue number and the domain >+ my $domain = ''; >+ my $baseurl = C4::Context->preference('OPACBaseURL'); >+ if ( $baseurl ne '' ) { >+ my $url = URI->new($baseurl); >+ $domain = $url->host; >+ } else { >+ warn "Make sure the systempreference OPACBaseURL is set!"; >+ } >+ my $uid = 'issue-' . $issue->{'issue_id'} . '@' . $domain; >+ # Create the event > $vevent->add_properties( >- summary => "$issue->{'title'} Due", >- description => >-"Your copy of $issue->{'title'} barcode $issue->{'barcode'} is due back at the library today", >- dtstart => DateTime::Format::ICal->format_datetime($datestart), >- dtend => DateTime::Format::ICal->format_datetime($dateend), >+ summary => $summary, >+ description => $description, >+ dtstamp => DateTime::Format::ICal->format_datetime($timestamp), >+ dtstart => DateTime::Format::ICal->format_datetime($datestart), >+ uid => $uid, > ); >+ # Add it to the calendar > $calendar->add_entry($vevent); > } > > print $query->header( >- -type => 'application/octet-stream', >+ -type => 'application/octet-stream', > -attachment => 'koha.ics' > ); > >- > print $calendar->as_string; >-- >2.8.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5456
:
53666
|
53670
|
53671
| 53831