Loading...
 
Skip to main content

Malformed date syntax in tiki-calendar_nav.tpl

Status
Open
Subject
Malformed date syntax in tiki-calendar_nav.tpl
Version
18.x
21.x Regression
22.x
Category
  • Consistency
  • Upgrade Blocker
  • Easy for Newbie Dev
  • Less than 30-minutes fix
Feature
Calendar
Resolution status
New
Submitted by
hman
Lastmod by
hman
Rating
(1)
Related-to
Description

In tiki-calendar_nav.tpl the display of calendar dates is formed (template), but in a IMHO rather bizarre mix of hard-coded and localizable syntax, which
a) does not make use and thus circumvents the existing user pref for date formats and
b) effectively makes correct localization impossible.

I quote from this template a code snippet:

Copy to clipboard
{if $viewlist ne 'list' or $prefs.calendar_list_begins_focus ne 'y'} {if $calendarViewMode eq 'month'} {$daystart|tiki_date_format:"%B %Y"} {elseif $calendarViewMode eq 'week'} {* test display_field_order and use %d/%m or %m/%d *} {if ($prefs.display_field_order eq 'DMY') || ($prefs.display_field_order eq 'DYM') || ($prefs.display_field_order eq 'YDM')} {$daystart|tiki_date_format:"{tr}%d/%m{/tr}/%Y"} - {$dayend|tiki_date_format:"{tr}%d/%m{/tr}/%Y"} {else} {$daystart|tiki_date_format:"{tr}%m/%d{/tr}/%Y"} - {$dayend|tiki_date_format:"{tr}%m/%d{/tr}/%Y"} {/if} {else} {$daystart|tiki_date_format:"%B %Y"} - {$dayend|tiki_date_format:"%B %Y"} {/if} {else} {$daystart|tiki_date_format:"{tr}%m/%d{/tr}/%Y"} - {$dayend|tiki_date_format:"{tr}%m/%d{/tr}/%Y"} {/if}


So there is some testing for localized date format, but it assumes that only the order of day and month may be swapped through translation? This only works inside the USA or partly in the UK. It does not work in Germany, and not in Japan and possibly conflicts with other countries as well.

Germany uses

Copy to clipboard
%d.%m.%Y


Japan uses

Copy to clipboard
%Y-%m-%d


Look at the peculiar coding in tiki-calendar_nav.php. To magnify, I have extracted one example that clearly shows the logical error in it:

Copy to clipboard
{$dayend|tiki_date_format:"{tr}%d/%m{/tr}/%Y"}


The year was excluded from translation and also the slash that comes before the year (at least in the USA...). So the slash cannot be removed by custom.php, because it is outside the translation. And it would be even worse for a localization into Japanese, because of their year leading the date...

It would be far better if date format was used in the form of the user pref that exists! But for a faster "quick resolution" moving the %Y into the translation braces would do the trick, and later introduce the "proper" way... Thanks.

Importance
7
Easy to solve?
10 easy
Priority
70
Demonstrate Bug on Tiki 19+
Demonstrate Bug (older Tiki versions)
Ticket ID
7412
Created
Wednesday 08 July, 2020 15:38:47 UTC
by hman
LastModif
Sunday 14 February, 2021 09:22:28 UTC


Show PHP error messages