Bugzilla – Attachment 53666 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.28 KB, created by
Magnus Enger
on 2016-07-23 18:33:05 UTC
(
hide
)
Description:
Bug 5456 - Create a link to opac-ics.pl
Filename:
MIME Type:
Creator:
Magnus Enger
Created:
2016-07-23 18:33:05 UTC
Size:
6.28 KB
patch
obsolete
>From 2644114f554cfa3e7f97a91b24f58cfc7369dc04 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. >--- > .../opac-tmpl/bootstrap/en/modules/opac-ics.tt | 8 +++ > .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 1 + > opac/opac-ics.pl | 65 ++++++++++++---------- > 3 files changed, 46 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..47ab923 >--- /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 264641f..240c02d 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >@@ -284,6 +284,7 @@ > <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..857ada5 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,48 @@ 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'},undef,'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; >-- >1.9.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