mirror of https://github.com/xwiki-labs/cryptpad
Fix date parser on Daylight Saving time day with 12h format #1011
This commit is contained in:
parent
210606758b
commit
0a1ac01a45
|
@ -19,6 +19,7 @@ define([
|
||||||
'/calendar/export.js',
|
'/calendar/export.js',
|
||||||
'/calendar/recurrence.js',
|
'/calendar/recurrence.js',
|
||||||
'/lib/datepicker/flatpickr.js',
|
'/lib/datepicker/flatpickr.js',
|
||||||
|
'/lib/calendar/date-picker.js',
|
||||||
|
|
||||||
'/common/inner/share.js',
|
'/common/inner/share.js',
|
||||||
'/common/inner/access.js',
|
'/common/inner/access.js',
|
||||||
|
@ -51,6 +52,7 @@ define([
|
||||||
Export,
|
Export,
|
||||||
Rec,
|
Rec,
|
||||||
Flatpickr,
|
Flatpickr,
|
||||||
|
DatePicker,
|
||||||
Share, Access, Properties
|
Share, Access, Properties
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -283,9 +285,9 @@ define([
|
||||||
var obj = data.content[uid];
|
var obj = data.content[uid];
|
||||||
obj.title = obj.title || "";
|
obj.title = obj.title || "";
|
||||||
obj.location = obj.location || "";
|
obj.location = obj.location || "";
|
||||||
if (obj.isAllDay && obj.startDay) { obj.start = +Flatpickr.parseDate((obj.startDay)); }
|
if (obj.isAllDay && obj.startDay) { obj.start = +DatePicker.parseDate((obj.startDay)); }
|
||||||
if (obj.isAllDay && obj.endDay) {
|
if (obj.isAllDay && obj.endDay) {
|
||||||
var endDate = Flatpickr.parseDate(obj.endDay);
|
var endDate = DatePicker.parseDate(obj.endDay);
|
||||||
endDate.setHours(23);
|
endDate.setHours(23);
|
||||||
endDate.setMinutes(59);
|
endDate.setMinutes(59);
|
||||||
endDate.setSeconds(59);
|
endDate.setSeconds(59);
|
||||||
|
@ -1639,7 +1641,7 @@ APP.recurrenceRule = {
|
||||||
minDate: date,
|
minDate: date,
|
||||||
//dateFormat: dateFormat,
|
//dateFormat: dateFormat,
|
||||||
onChange: function () {
|
onChange: function () {
|
||||||
//endPickr.set('minDate', startPickr.parseDate(s.value));
|
//endPickr.set('minDate', DatePicker.parseDate(s.value));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var endDate = new Date(+date);
|
var endDate = new Date(+date);
|
||||||
|
@ -1817,7 +1819,7 @@ APP.recurrenceRule = {
|
||||||
if (until === "count") {
|
if (until === "count") {
|
||||||
rec.count = $(radioCount).find('input[type="number"]').val();
|
rec.count = $(radioCount).find('input[type="number"]').val();
|
||||||
} else if (until === "date") {
|
} else if (until === "date") {
|
||||||
var _date = Flatpickr.parseDate(pickr.value);
|
var _date = DatePicker.parseDate(pickr.value);
|
||||||
_date.setDate(_date.getDate()+1);
|
_date.setDate(_date.getDate()+1);
|
||||||
rec.until = +_date - 1;
|
rec.until = +_date - 1;
|
||||||
}
|
}
|
||||||
|
@ -2110,7 +2112,7 @@ APP.recurrenceRule = {
|
||||||
var $button = $el.find('.tui-full-calendar-section-button-save');
|
var $button = $el.find('.tui-full-calendar-section-button-save');
|
||||||
|
|
||||||
var $startDate = $el.find('#tui-full-calendar-schedule-start-date');
|
var $startDate = $el.find('#tui-full-calendar-schedule-start-date');
|
||||||
var startDate = Flatpickr.parseDate($startDate.val());
|
var startDate = DatePicker.parseDate($startDate.val());
|
||||||
|
|
||||||
var divRec = getRecurrenceInput(startDate);
|
var divRec = getRecurrenceInput(startDate);
|
||||||
$button.before(divRec);
|
$button.before(divRec);
|
||||||
|
|
|
@ -8,8 +8,8 @@ define([
|
||||||
'/common/common-constants.js',
|
'/common/common-constants.js',
|
||||||
'/customize/messages.js',
|
'/customize/messages.js',
|
||||||
'/customize/pages.js',
|
'/customize/pages.js',
|
||||||
'/lib/datepicker/flatpickr.js',
|
'/lib/calendar/date-picker.js',
|
||||||
], function($, h, Hash, UI, UIElements, Util, Constants, Messages, Pages, Flatpickr) {
|
], function($, h, Hash, UI, UIElements, Util, Constants, Messages, Pages, DatePicker) {
|
||||||
|
|
||||||
var handlers = {};
|
var handlers = {};
|
||||||
|
|
||||||
|
@ -544,7 +544,7 @@ define([
|
||||||
var nowDateStr = new Date().toLocaleDateString();
|
var nowDateStr = new Date().toLocaleDateString();
|
||||||
var startDate = new Date(start);
|
var startDate = new Date(start);
|
||||||
if (msg.isAllDay && msg.startDay) {
|
if (msg.isAllDay && msg.startDay) {
|
||||||
startDate = Flatpickr.parseDate(msg.startDay);
|
startDate = DatePicker.parseDate(msg.startDay);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Missed events
|
// Missed events
|
||||||
|
|
|
@ -8,10 +8,10 @@ define([
|
||||||
'/customize/messages.js',
|
'/customize/messages.js',
|
||||||
'/components/nthen/index.js',
|
'/components/nthen/index.js',
|
||||||
'chainpad-listmap',
|
'chainpad-listmap',
|
||||||
'/lib/datepicker/flatpickr.js',
|
'/lib/calendar/date-picker.js',
|
||||||
'/components/chainpad-crypto/crypto.js',
|
'/components/chainpad-crypto/crypto.js',
|
||||||
'/components/chainpad/chainpad.dist.js',
|
'/components/chainpad/chainpad.dist.js',
|
||||||
], function (Util, Hash, Constants, Realtime, Cache, Rec, Messages, nThen, Listmap, FP, Crypto, ChainPad) {
|
], function (Util, Hash, Constants, Realtime, Cache, Rec, Messages, nThen, Listmap, DatePicker, Crypto, ChainPad) {
|
||||||
var Calendar = {};
|
var Calendar = {};
|
||||||
|
|
||||||
var getStore = function (ctx, id) {
|
var getStore = function (ctx, id) {
|
||||||
|
@ -132,9 +132,9 @@ define([
|
||||||
var last = ctx.store.data.lastVisit;
|
var last = ctx.store.data.lastVisit;
|
||||||
|
|
||||||
if (ev.isAllDay) {
|
if (ev.isAllDay) {
|
||||||
if (ev.startDay) { ev.start = +FP.parseDate(ev.startDay); }
|
if (ev.startDay) { ev.start = +DatePicker.parseDate(ev.startDay); }
|
||||||
if (ev.endDay) {
|
if (ev.endDay) {
|
||||||
var endDate = FP.parseDate(ev.endDay);
|
var endDate = DatePicker.parseDate(ev.endDay);
|
||||||
endDate.setHours(23);
|
endDate.setHours(23);
|
||||||
endDate.setMinutes(59);
|
endDate.setMinutes(59);
|
||||||
endDate.setSeconds(59);
|
endDate.setSeconds(59);
|
||||||
|
|
|
@ -23,6 +23,7 @@ define([
|
||||||
'/common/text-cursor.js',
|
'/common/text-cursor.js',
|
||||||
'cm/lib/codemirror',
|
'cm/lib/codemirror',
|
||||||
'/components/chainpad/chainpad.dist.js',
|
'/components/chainpad/chainpad.dist.js',
|
||||||
|
'/lib/calendar/date-picker.js',
|
||||||
|
|
||||||
'/common/inner/share.js',
|
'/common/inner/share.js',
|
||||||
'/common/inner/access.js',
|
'/common/inner/access.js',
|
||||||
|
@ -70,6 +71,7 @@ define([
|
||||||
TextCursor,
|
TextCursor,
|
||||||
CMeditor,
|
CMeditor,
|
||||||
ChainPad,
|
ChainPad,
|
||||||
|
DatePicker,
|
||||||
Share, Access, Properties,
|
Share, Access, Properties,
|
||||||
Flatpickr,
|
Flatpickr,
|
||||||
Sortable
|
Sortable
|
||||||
|
@ -2046,7 +2048,7 @@ define([
|
||||||
tag: tag,
|
tag: tag,
|
||||||
isEmpty: function () { return !$tag.val().trim(); },
|
isEmpty: function () { return !$tag.val().trim(); },
|
||||||
getValue: function () {
|
getValue: function () {
|
||||||
var d = picker.parseDate(tag.value);
|
var d = DatePicker.parseDate(tag.value);
|
||||||
return +d;
|
return +d;
|
||||||
},
|
},
|
||||||
setValue: function (val) {
|
setValue: function (val) {
|
||||||
|
@ -4797,7 +4799,7 @@ define([
|
||||||
if (datePicker.value === '') {
|
if (datePicker.value === '') {
|
||||||
return void refreshEndDate();
|
return void refreshEndDate();
|
||||||
}
|
}
|
||||||
var d = picker.parseDate(datePicker.value);
|
var d = DatePicker.parseDate(datePicker.value);
|
||||||
content.answers.endDate = +d;
|
content.answers.endDate = +d;
|
||||||
framework.localChange();
|
framework.localChange();
|
||||||
framework._.cpNfInner.chainpad.onSettle(function () {
|
framework._.cpNfInner.chainpad.onSettle(function () {
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
define([
|
define([
|
||||||
'jquery',
|
'jquery',
|
||||||
'/lib/datepicker/flatpickr.js',
|
'/lib/datepicker/flatpickr.js',
|
||||||
|
'/lib/calendar/moment.min.js',
|
||||||
|
|
||||||
'css!/lib/datepicker/flatpickr.min.css',
|
'css!/lib/datepicker/flatpickr.min.css',
|
||||||
], function ($, Flatpickr) {
|
], function ($, Flatpickr, Moment) {
|
||||||
var createRangePicker = function (cfg) {
|
var createRangePicker = function (cfg) {
|
||||||
var start = cfg.startpicker;
|
var start = cfg.startpicker;
|
||||||
var end = cfg.endpicker;
|
var end = cfg.endpicker;
|
||||||
|
@ -15,6 +16,10 @@ define([
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
if (!is24h) { dateFormat = "Y-m-d h:i K"; }
|
if (!is24h) { dateFormat = "Y-m-d h:i K"; }
|
||||||
|
|
||||||
|
var parseDate = (value) => {
|
||||||
|
return Moment(value, 'YYYY-MM-DD HH:mm a').toDate();
|
||||||
|
};
|
||||||
|
|
||||||
var e = $(end.input)[0];
|
var e = $(end.input)[0];
|
||||||
var endPickr = Flatpickr(e, {
|
var endPickr = Flatpickr(e, {
|
||||||
enableTime: true,
|
enableTime: true,
|
||||||
|
@ -30,7 +35,7 @@ define([
|
||||||
time_24hr: is24h,
|
time_24hr: is24h,
|
||||||
dateFormat: dateFormat,
|
dateFormat: dateFormat,
|
||||||
onChange: function () {
|
onChange: function () {
|
||||||
endPickr.set('minDate', startPickr.parseDate(s.value));
|
endPickr.set('minDate', parseDate(s.value));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
startPickr.setDate(start.date);
|
startPickr.setDate(start.date);
|
||||||
|
@ -39,11 +44,11 @@ define([
|
||||||
|
|
||||||
var getStartDate = function () {
|
var getStartDate = function () {
|
||||||
setTimeout(function () { $(startPickr.calendarContainer).remove(); });
|
setTimeout(function () { $(startPickr.calendarContainer).remove(); });
|
||||||
return startPickr.parseDate(s.value);
|
return parseDate(s.value);
|
||||||
};
|
};
|
||||||
var getEndDate = function () {
|
var getEndDate = function () {
|
||||||
setTimeout(function () { $(endPickr.calendarContainer).remove(); });
|
setTimeout(function () { $(endPickr.calendarContainer).remove(); });
|
||||||
var d = endPickr.parseDate(e.value);
|
var d = parseDate(e.value);
|
||||||
|
|
||||||
if (endPickr.config.dateFormat === "Y-m-d") { // All day event
|
if (endPickr.config.dateFormat === "Y-m-d") { // All day event
|
||||||
// Tui-calendar will remove 1s (1000ms) to the date for an unknown reason...
|
// Tui-calendar will remove 1s (1000ms) to the date for an unknown reason...
|
||||||
|
@ -59,6 +64,7 @@ define([
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
|
parseDate: parseDate,
|
||||||
createRangePicker: createRangePicker
|
createRangePicker: createRangePicker
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -15,4 +15,5 @@ This file is intended to be used as a log of what third-party source we have ven
|
||||||
* [asciidoc.js 2.0.0](https://github.com/asciidoctor/codemirror-asciidoc/releases/tag/2.0.0) with slight changes to match the format of other codemirror modes
|
* [asciidoc.js 2.0.0](https://github.com/asciidoctor/codemirror-asciidoc/releases/tag/2.0.0) with slight changes to match the format of other codemirror modes
|
||||||
* [Asciidoctor.js 2.2.6](https://github.com/asciidoctor/asciidoctor.js/releases/tag/v2.2.6) for AsciiDoc rendering
|
* [Asciidoctor.js 2.2.6](https://github.com/asciidoctor/asciidoctor.js/releases/tag/v2.2.6) for AsciiDoc rendering
|
||||||
* [Rangy 1.3.0](https://github.com/timdown/rangy/tree/1.3.0) for cursor management. NOTE: [A CVE](https://github.com/advisories/GHSA-65rp-mhqf-8gj3) exists for this version but CryptPad isn't affected
|
* [Rangy 1.3.0](https://github.com/timdown/rangy/tree/1.3.0) for cursor management. NOTE: [A CVE](https://github.com/advisories/GHSA-65rp-mhqf-8gj3) exists for this version but CryptPad isn't affected
|
||||||
|
* [Moment v2.29.4](http://momentjs.com/) for providing a date parser
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue