Calendar: Fix invalid time in event dialog title

This commit is contained in:
Aleksander Machniak 2023-01-06 12:39:35 +01:00
parent a3ef1eedf1
commit 53e29186b0

View file

@ -70,6 +70,15 @@ function rcube_libcalendaring(settings)
return String(str).replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); return String(str).replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}; };
/**
* Convert Moment.js object into a Date object
*/
this.moment2date = function(moment)
{
// Moment.toDate() is different regarding timezone handling
return new Date(moment.format('YYYY-MM-DD[T]HH:mm:ss'));
};
/** /**
* Create a nice human-readable string for the date/time range * Create a nice human-readable string for the date/time range
*/ */
@ -81,8 +90,8 @@ function rcube_libcalendaring(settings)
event.end = event.start; event.end = event.start;
// Support Moment.js objects // Support Moment.js objects
var start = 'toDate' in event.start ? event.start.toDate() : event.start, var start = 'toDate' in event.start ? this.moment2date(event.start) : event.start,
end = event.end && 'toDate' in event.end ? event.end.toDate() : event.end; end = event.end && 'toDate' in event.end ? this.moment2date(event.end) : event.end;
var fromto, duration = end.getTime() / 1000 - start.getTime() / 1000, var fromto, duration = end.getTime() / 1000 - start.getTime() / 1000,
until = voice ? ' ' + rcmail.gettext('until','libcalendaring') + ' ' : ' — '; until = voice ? ' ' + rcmail.gettext('until','libcalendaring') + ' ' : ' — ';
@ -258,18 +267,19 @@ function rcube_libcalendaring(settings)
*/ */
this.format_datetime = function(date, mode, voice) this.format_datetime = function(date, mode, voice)
{ {
var res = ''; var res = [];
if (!mode || mode == 1) { if (!mode || mode == 1) {
res += $.datepicker.formatDate(voice ? 'MM d yy' : this.datepicker_settings.dateFormat, date, this.datepicker_settings); res.push($.datepicker.formatDate(voice ? 'MM d yy' : this.datepicker_settings.dateFormat, date, this.datepicker_settings));
} }
if (!mode) { if (!mode && voice) {
res += voice ? ' ' + rcmail.gettext('at','libcalendaring') + ' ' : ' '; res.push(rcmail.gettext('at','libcalendaring'));
} }
if (!mode || mode == 2) { if (!mode || mode == 2) {
res += this.format_time(date, voice); res.push(this.format_time(date, voice));
} }
return res; return res.join(' ');
} }
/** /**
@ -293,6 +303,7 @@ function rcube_libcalendaring(settings)
var i, i2, c, formatter, res = '', var i, i2, c, formatter, res = '',
format = voice ? settings['time_format'].replace(':',' ').replace('HH','H').replace('hh','h').replace('mm','m').replace('ss','s') : settings['time_format']; format = voice ? settings['time_format'].replace(':',' ').replace('HH','H').replace('hh','h').replace('mm','m').replace('ss','s') : settings['time_format'];
for (i=0; i < format.length; i++) { for (i=0; i < format.length; i++) {
c = format.charAt(i); c = format.charAt(i);
for (i2=Math.min(i+2, format.length); i2 > i; i2--) { for (i2=Math.min(i+2, format.length); i2 > i; i2--) {