Bug 24455: Add JS functions to format date and datetime strings
This patch adds the a js-date-format.inc file on each opac and staff interface (date-format.inc whas not available as name)
When you include that file in your TT, you'll get the following functions available:
1. $date(raw_date_string, options)
This function parses a date string, as produced by an api call, and returns the corresponding date formatted according to 'dateformat' and 'TimeFormat' parameters.
For example:
// dateformat: us
// timeformat: 12hr
// Timezone: UTC
$date('2020-03-23T15:00:00+01:00') // You will get '03/23/2020'
$date('2020-03-23T15:00:00+01:00', {withtime: true}) // You will get '03/23/2020 14:00'
$date('2020-03-23T15:00:00+01:00', {withtime: true, tz: 'Europe/Paris'}) // You will get '03/23/2020 15:00+01:00'
Options:
* dateformat: override date format as configured in staff interface (accepts also 'rfc3339')
* timeformat: override time format as configured in staff client (available options are '12hr' and '24hr')
* withtime: also print the time part (default false)
* tz: set the timezone
2. $datetime(raw_date_string, option)
The same as $date but sets withtime to true
3. $time(raw_date_string, option)
The same as $datetime but shows only the time part
To test you must implement and test bug 20936, where it will be used
Signed-off-by: Andrew Isherwood <andrew.isherwood@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
e7c240224f
commit
8412c19c50
|
|
@ -23,6 +23,7 @@ use Template::Plugin::Filter;
|
|||
use base qw( Template::Plugin::Filter );
|
||||
|
||||
use Koha::DateUtils;
|
||||
use C4::Context;
|
||||
our $DYNAMIC = 1;
|
||||
|
||||
sub filter {
|
||||
|
|
@ -42,4 +43,8 @@ sub output_preference {
|
|||
return output_pref( @params );
|
||||
}
|
||||
|
||||
sub tz {
|
||||
return C4::Context->tz->name;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
[% USE Koha %]
|
||||
[% USE raw %]
|
||||
[% USE Asset %]
|
||||
[% USE KohaDates %]
|
||||
[% Asset.js("lib/moment/moment.min.js") | $raw %]
|
||||
[% Asset.js("lib/moment/moment-timezone-with-data-10-year-range.min.js") | $raw %]
|
||||
<script>
|
||||
(function() {
|
||||
var def_date_format = '[% Koha.Preference('dateformat') | html %]';
|
||||
var def_time_format = '[% Koha.Preference('TimeFormat') | html %]';
|
||||
var def_tz = '[% KohaDates.tz | html %]';
|
||||
|
||||
var get_date_pattern = function(format) {
|
||||
var date_pattern = 'YYYY-MM-DD';
|
||||
if(format == 'us') date_pattern = 'MM/DD/YYYY';
|
||||
if(format == 'metric') date_pattern = 'DD/MM/YYYY';
|
||||
if(format == 'dmydot') date_pattern = 'DD.MM.YYYY';
|
||||
return date_pattern;
|
||||
};
|
||||
|
||||
var get_time_pattern = function(format) {
|
||||
var time_pattern = 'HH:mm';
|
||||
if(format == '12hr') time_pattern = 'hh:mm a';
|
||||
return time_pattern;
|
||||
};
|
||||
|
||||
window.$date = function(value, options) {
|
||||
var tz = (options&&options.tz)||def_tz;
|
||||
var m = moment(value);
|
||||
if(tz) m.tz(tz);
|
||||
|
||||
var dateformat = (options&&options.dateformat)||def_date_format;
|
||||
var withtime = (options&&options.withtime)||false;
|
||||
|
||||
if(dateformat=='rfc3339' && withtime) return m.format();
|
||||
|
||||
var timeformat = (options&&options.timeformat)||def_time_format;
|
||||
var date_pattern = get_date_pattern(dateformat);
|
||||
var time_pattern = !withtime?'':' '+get_time_pattern(timeformat);
|
||||
|
||||
return m.format(date_pattern+time_pattern);
|
||||
}
|
||||
|
||||
window.$datetime = function(value, options) {
|
||||
options = options||{};
|
||||
options.withtime = true;
|
||||
return $date(value, options);
|
||||
};
|
||||
|
||||
window.$time = function(value, options) {
|
||||
var tz = (opitons&&options.tz)||def_tz;
|
||||
var m = moment(value);
|
||||
if(tz) m.tz(tz);
|
||||
|
||||
var dateformat = (options&&options.dateformat);
|
||||
var timeformat = (dateformat=='rfc3339'&&'24hr')||(options&&options.timeformat)||def_time_format;
|
||||
|
||||
return m.format(get_time_pattern(timeformat)+(dateformat=='rfc3339'?':ss'+(!m.isUTC()?'Z':''):''))+(dateformat=='rfc3339' && m.isUTC()?'Z':'');
|
||||
}
|
||||
|
||||
})();
|
||||
</script>
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
[% USE Koha %]
|
||||
[% USE raw %]
|
||||
[% USE Asset %]
|
||||
[% USE KohaDates %]
|
||||
[% Asset.js("lib/moment.min.js") | $raw %]
|
||||
[% Asset.js("lib/moment-timezone-with-data-10-year-range.min.js") | $raw %]
|
||||
<script>
|
||||
(function() {
|
||||
var def_date_format = '[% Koha.Preference('dateformat') | html %]';
|
||||
var def_time_format = '[% Koha.Preference('TimeFormat') | html %]';
|
||||
var def_tz = '[% KohaDates.tz | html %]';
|
||||
|
||||
var get_date_pattern = function(format) {
|
||||
var date_pattern = 'YYYY-MM-DD';
|
||||
if(format == 'us') date_pattern = 'MM/DD/YYYY';
|
||||
if(format == 'metric') date_pattern = 'DD/MM/YYYY';
|
||||
if(format == 'dmydot') date_pattern = 'DD.MM.YYYY';
|
||||
return date_pattern;
|
||||
};
|
||||
|
||||
var get_time_pattern = function(format) {
|
||||
var time_pattern = 'HH:mm';
|
||||
if(format == '12hr') time_pattern = 'hh:mm a';
|
||||
return time_pattern;
|
||||
};
|
||||
|
||||
window.$date = function(value, options) {
|
||||
var tz = (options&&options.tz)||def_tz;
|
||||
var m = moment(value);
|
||||
if(tz) m.tz(tz);
|
||||
|
||||
var dateformat = (options&&options.dateformat)||def_date_format;
|
||||
var withtime = (options&&options.withtime)||false;
|
||||
|
||||
if(dateformat=='rfc3339' && withtime) return m.format();
|
||||
|
||||
var timeformat = (options&&options.timeformat)||def_time_format;
|
||||
var date_pattern = get_date_pattern(dateformat);
|
||||
var time_pattern = !withtime?'':' '+get_time_pattern(timeformat);
|
||||
|
||||
return m.format(date_pattern+time_pattern);
|
||||
}
|
||||
|
||||
window.$datetime = function(value, options) {
|
||||
options = options||{};
|
||||
options.withtime = true;
|
||||
return $date(value, options);
|
||||
};
|
||||
|
||||
window.$time = function(value, options) {
|
||||
var tz = (opitons&&options.tz)||def_tz;
|
||||
var m = moment(value);
|
||||
if(tz) m.tz(tz);
|
||||
|
||||
var dateformat = (options&&options.dateformat);
|
||||
var timeformat = (dateformat=='rfc3339'&&'24hr')||(options&&options.timeformat)||def_time_format;
|
||||
|
||||
return m.format(get_time_pattern(timeformat)+(dateformat=='rfc3339'?':ss'+(!m.isUTC()?'Z':''):''))+(dateformat=='rfc3339' && m.isUTC()?'Z':'');
|
||||
}
|
||||
|
||||
})();
|
||||
</script>
|
||||
Loading…
Reference in New Issue