The borrowers.dateexpiry field is a date, not a datetime, yet when it is used in a notice like MEMBERSHIP_EXPIRY, it displays as a datetime by default with the "12:00 AM" time ("MM/DD/YYYY 12:00 AM"). Bug 13622 added the option to strip times from datetimes by using a "dateonly" placeholder like so: <<borrowers.dateexpiry | dateonly>>, but if you use this option on borrowers.dateexpiry, it fails -- probably because the field is not a datetime? <<borrowers.dateexpiry>> outputs "MM/DD/YYYY 12:00 AM". <<borrowers.dateexpiry | dateonly>> outputs "<>" (a left-angle bracket followed by right-angle bracket).
In looking at the HTML source of the generated e-mail notice, it's actually just spitting out "<<borrowers.dateexpiry | dateonly>>" rather than "<>". That's just how my browser and e-mail client displayed the output, assuming it was an (invalid) HTML element.
Created attachment 82329 [details] [review] Bug 21829: Add tests for dateexpiry format in notices
Created attachment 82330 [details] [review] Bug 21829: Correctly format dateexpiry in notices (date only) dateexpiry is a date, we should not display the time part in notice. Test plan: Create a notice with borrowers.dateexpiry, generate this notice. The value should be displayed without the time part
Since 18.05 it is fixed by commit a236b684fdae8e0da83ca7263b948da971dfc849 Bug 17981: Add a preview mode for notice templates
Thanks for submitting this patch, Jonathan! I misunderstood your message to the Koha mailing list and didn't realize this issue was fixed in 18.05. Regardless, I hoped to test this patch and get it signed off, but since the Koha sandboxes are limited and do not yet allow testing features that require a cronjob, which the MEMBERSHIP_EXPIRY notice requires, I'm not able to.
My library was upgraded to Koha 18.05.05 a couple days ago, so I decided to try using the "dateonly" option for borrowers.dateexpiry in my MEMBERSHIP_EXPIRY notice, but I'm still seeing the same broken behavior. The generated e-mails are not interpreting <<borrowers.dateexpiry | dateonly>> correctly and are just spitting out that same string, which gets interpreted as an invalid HTML element, so from the patron's point of view, the e-mail says "Your account will expire on <>."
You can always try this instead: https://wiki.koha-community.org/wiki/Notices_with_Template_Toolkit#Example:_Format_dates
With this patch, only using <<borrowers.dateexpiry>> in your notices templates should be ok
Sophie, Thanks for your message! I was misunderstanding the already submitted patch. You are correct -- I just confirmed that today's messages only use a date, not a datetime, and all I have in the template is <<borrowers.dateexpiry>>. Problem solved!
Arturo, Could you signoff?
No problem -- signing off!
Created attachment 84965 [details] [review] Bug 21829: Add tests for dateexpiry format in notices Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Created attachment 84966 [details] [review] Bug 21829: Correctly format dateexpiry in notices (date only) dateexpiry is a date, we should not display the time part in notice. Test plan: Create a notice with borrowers.dateexpiry, generate this notice. The value should be displayed without the time part Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Created attachment 84967 [details] [review] Bug 21829: (QA Follow-up) - Update the number of unit tests Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
QA note, this bug was corrected by 17981 so these patches are not strictly necessary. However, the addition of unit tests and a more 'standard' use of dt_from_string make it's inclusion in Koha sensible.
Awesome work all! Pushed to master for 19.05
Pushed to 18.11.x for 18.11.03
backported to 18.05.x for 18.05.09
Pushed to 17.11.x for 17.11.15