LocalTimes
Note: a function similar to this recipe was added to the PmWiki core for 2.3.0, with some changes, outlined below.
Description
When people from different countries use a wiki, it is annoying to see the date/time stamps in a single timezone, different from their own. For a reader in Europe or in New Zealand, having the dates in the Dallas/TX timezone makes it hard to estimate when an edit was actually made.
The recipe rewrites the timestamps in RecentChanges pages and on page histories to show the time in the local timezone of each reader. The original date/time string is moved to a tooltip/title and appears when the mouse cursor is positioned over the link.
If you reopen the RecentChanges
page, any new changes since your previous visit on that page will be highlighted in a light-yellow background. Different RecentChanges
pages retain their own last-visited-timestamps.
For the changes from the last 24 hours, after the page entry, a "+" plus sign is appended. Clicking on it will fetch and display the authors and summaries of the changes to that page from the last 48 hours.
The recipe is now enabled on pmwiki.org, see for example Site.AllRecentChangesShort.
Core function based on the recipe
A derivative of this recipe was added to the PmWiki core for version 2.3.0, with some differences and improvements.
If you have previously used the recipe, you can either continue using it, or disable it and enable the core function.
To enable the core function, please first disable the old recipe if you used it, and add to config.php
:
$EnableLocalTimes
= 2; # Enable long local times, in the visitor's timezone:- the full date+time are shown, as in
MM/DD/YYYY HH:MM:SS
(orDD/MM/YYYY HH:MM:SS
); - the server's time format (
$TimeFmt
) appears in a tooltip title when the mouse cursor is over the localized format.
- the full date+time are shown, as in
$EnableLocalTimes
= 1; # Enable compact (short) local times, in the visitor's timezone. This is similar to how some email and webmail clients display the dates:- if within 24 hours, only the time
HH:MM
is shown; - if within 11 months, only the month and date
MM/DD
(orDD/MM
) are shown; - if more than 11 months, the month, date and year
MM/DD/YYYY
(orDD/MM/YYYY
) are shown. - The full localized format appears in a tooltip title when the mouse cursor is over the short format.
- if within 24 hours, only the time
$EnableLocalTimes
= 3; # Enable compact dates even for very old dates.- Exactly like the compact mode, except if more than 11 months, only the month and the (short) year
MM'YY
are shown. - The full localized format appears in a tooltip title when the mouse cursor is over the short format.
- Exactly like the compact mode, except if more than 11 months, only the month and the (short) year
Enabling $EnableLocalTimes
will also make user signatures with 4 tildes to produce a time format that can be localized in the reader's timezone.
By default the "plus" button pulls the page history from 3 days (72 hours), plus one additional edit. To change this, set the number of days in $EnableLocalTimes
:
$EnableLocalTimes
= 81; # 8 days, ends with 1 => short format$EnableLocalTimes
= 142; # 14 days, ends with 2 => long format
Like the recipe, the core function rewrites the dates and times to the visitor's time zone, both in RecentChanges, and in page histories (?action=diff).
Differences between the core function and the recipe
In addition to be easier to update and maintained, the core version has the following differences:
- It does not modify the
$RecentChangesFmt
array; in fact, it relies on a new core variable$CurrentLocalTime
which is now used by default in the$RecentChangesFmt
array. Consequently, the *RecentChanges
pages will have a different, and much simpler/shorter wiki text. - It is possible to have a short or a long format for the dates and times.
- The core function detects whether the visitor's local date format is "Day/Month" (like in Europe) or "Month/Day" (like in the US), and will print that disposition.
- In
RecentChanges
, it will move the date-time at the beginning of the line; this aligns the times, and also the page names like in columns, easier to scan the list looking either for pages, or for dates/times. - The number of days that allow pulling the history (the "plus" button) is set to 3 days instead of 2.
- When the "plus" button is clicked, it will pull the page history from the last 3 days, plus one earlier edit, regardless of the time of the earlier edit. This is always useful when monitoring changes.
- The pulled page history also shows the dates/times aligned with the date/time above.
- The times of visits to recent changes pages are stored in a single LocalStorage entry, rather than one for each page. (These are used to highlight newly added lines since you last opened the
RecentChanges
page.) - Some of the CSS has different class names,
.rcnew
and.rcreload
instead of.ltnew
and.ltreload
.
The new core function should recognize old recent changes from the recipe and integrate those in the new format. If you never used the recipe, only pages modified after the 2.3.0 upgrade will have localized times in RecentChanges.
Similarly to the recipe, the core function has built-in the functionality "Better RecentChanges" from TrackChanges, and you cannot have the latter and $EnableLocalTimes
at the same time. If you previously used TrackChanges, please remove its installation code from config.php
.
Installation (recipe only)
Place the file localtimes.phpΔ into your pmwiki/cookbook
directory.
Copy localtimes.js to your pmwiki/pub directory. Add near the end of local/config.php such code:
include_once("$FarmD
/cookbook/localtimes.php");
Note that the installation code changed in version 20150906.
Note that LocalTimes
has built-in the functionality of the recipe "Better RecentChanges" from TrackChanges, but you cannot have the two recipes at the same time. If you previously used TrackChange
s, please remove its installation code from config.php
.
Configuration
You can configure the duration of the fetched page history.
In config.php
, set
$LastTimesHours = 24; // 24 hours; default is 48
To disable the "+" plus button and the fetching of recent history, set this variable to 0:
$LastTimesHours = 0;
To change the highlight color for new/unseen changes, add this to pub/css/local.css:
.ltnew{ background-color: orange; }
Usage
In a RecentChanges
page, or in a Page History, you will see the timestamps in the local time zone of your operating system.
Note that in RecentChanges
, only pages modified after the installation of the recipe will have their timestamps localized.
Click on the "+" plus sign after a page entry to see its recent history.
Notes
The visitors' browsers need to have JavaScript enabled or they will see the date/time in the timezone of the server.
The recipe expects the RecentChanges
format to be in standard bulleted or numbered lists. Other formats are not supported, eg. Tables may produce unexpected results and errors.
If the skin has a <div id="wikitext">
block, the recipe will only scan links in it and will work faster. If the page heading has the class "pagetitle", the recipe will append the current local time to the heading in light gray. (The default "pmwiki" and "pmwiki-responsive" skins and many other skins contain these elements.)
Change log / Release notes
- 20201220 - middle-click on the highlighted entries (except on the links) will now clear the background.
- 20191117 - add a CSS class "ltreload" to the 'time' reload text, used by PendingChanges.
- 20190818 - the browser will now save the last timestamp into localStorage, and will highlight entries that were added or modified since that last timestamp.
- 20160515 - click on the pagetitle timestamp will now reload the page.
- 20150906 - fix "+" plus signs, no longer displayed if no more edits in 48 hours (takes effect up to 48 hours after upgrade). No more need to edit localtimes.js. Added styles for the "+" signs. Please note that the installation code changed.
- 20150830a - silently ignore missing elements in skins, without generating JavaScript errors.
- 20150830 - bug fix: escape special characters in the fetched page summaries.
- 20150804 - add Ajax fetching of recent page history.
- 20150621 - append time to pagetitle heading.
- 20121231 - minor refactoring, changes from less than 24 hours show just the time.
- 20121109 - changed today's changes to show just the time.
- 20110607 - fix tooltip titles in Internet Explorer.
- 20110605 - first public release, ready to be tested.
See also
- Wikipedia:Time_zone on Wikipedia
- PendingChanges Browser and desktop notifications for page changes
- TrackChanges Ways to more easily detect and verify all recent edits
Contributors
- Petko is author and maintainer of this recipe (5ko [snail] 5ko [period] fr).
- If this recipe helps you or saves you time, you can help support its continued development by ♥ .
Comments
See discussion at LocalTimes-Talk
User notes +4: If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.