Skip to content

Commit 44eced9

Browse files
authored
Merge pull request #9081 from ProcessMaker/bugfix/FOUR-33514
FOUR-33514 | Due Date is Shown in Wrong Format
2 parents 0d63878 + 4283679 commit 44eced9

2 files changed

Lines changed: 37 additions & 8 deletions

File tree

‎resources/js/next/config/user.js‎

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,33 @@
11
import { getGlobalVariable, setGlobalPMVariables } from "../globalVariables";
22
import datetime_format from "../../data/datetime_formats.json";
33

4+
// Profile settings store PHP date tokens; Moment uses a different token set.
5+
export const momentFormatsFor = (phpFormat) => {
6+
const match = datetime_format.find((value) => value.format === phpFormat);
7+
if (!match) {
8+
return null;
9+
}
10+
return {
11+
datetime_format: match.momentFormat,
12+
calendar_format: match.calendarFormat,
13+
};
14+
};
15+
16+
export const withMomentDateFormats = (user) => {
17+
if (!user || typeof user !== "object") {
18+
return user;
19+
}
20+
const formats = momentFormatsFor(user.datetime_format);
21+
if (!formats) {
22+
return user;
23+
}
24+
return {
25+
...user,
26+
datetime_format: formats.datetime_format,
27+
calendar_format: formats.calendar_format,
28+
};
29+
};
30+
431
export default () => {
532
const moment = getGlobalVariable("moment");
633
const userID = document.head.querySelector("meta[name=\"user-id\"]");
@@ -25,12 +52,11 @@ export default () => {
2552
avatar: userAvatar?.content,
2653
};
2754

28-
datetime_format.forEach((value) => {
29-
if (formatDate.content === value.format) {
30-
user.datetime_format = value.momentFormat;
31-
user.calendar_format = value.calendarFormat;
32-
}
33-
});
55+
const formats = momentFormatsFor(formatDate?.content);
56+
if (formats) {
57+
user.datetime_format = formats.datetime_format;
58+
user.calendar_format = formats.calendar_format;
59+
}
3460

3561
if (user) {
3662
moment.tz.setDefault(user.timezone);

‎resources/js/vite/tasks/loaderTasks.js‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import "../../../js/vite/bootstrap-globals.js";
22
import { setupMain } from "../../../js/next/setupMain";
3+
import { withMomentDateFormats } from "../../next/config/user";
34
import vueFormElements from "../../../js/next/libraries/vueFormElements";
45
import modelerInspector from "../../../js/next/libraries/modelerInspector";
56
import modeler from "../../../js/next/modeler";
@@ -19,7 +20,9 @@ window.ProcessMaker.defaultColumns = window.temporal.defaultColumns;
1920
window.ProcessMaker.isDefaultColumns = window.temporal.isDefaultColumns;
2021
window.ProcessMaker.userConfiguration = window.temporal.userConfiguration;
2122
window.ProcessMaker.showOldTaskScreen = window.temporal.showOldTaskScreen;
22-
window.ProcessMaker.user = window.temporal.user;
23+
// Blade user stores a PHP datetime format; convert it before Moment formatters read it.
24+
const pageUser = withMomentDateFormats(window.temporal.user);
25+
window.ProcessMaker.user = pageUser;
2326
window.ProcessMaker.selectedProcess = window.temporal.selectedProcess;
2427
window.ProcessMaker.defaultSavedSearchId = window.temporal.defaultSavedSearchId;
2528
window.ProcessMaker.isTceCustomization = window.temporal.isTceCustomization;
@@ -30,6 +33,6 @@ window.ProcessMaker.packages = window.temporal.packages;
3033
// Legacy Mix keys (lowercase "m") used by TasksMixin / ParticipantHomeScreen
3134
window.Processmaker = window.Processmaker || {};
3235
window.Processmaker.defaultColumns = window.temporal.defaultColumns;
33-
window.Processmaker.user = window.temporal.user;
36+
window.Processmaker.user = pageUser;
3437
window.Processmaker.selectedProcess = window.temporal.selectedProcess;
3538
window.Processmaker.defaultSavedSearchId = window.temporal.defaultSavedSearchId;

0 commit comments

Comments
 (0)