@edifice.io/client 2.5.2-develop-pedago.20251201132016 → 2.5.2-develop-b2school-actualites.20251202141821
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/directory/interface.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +232 -217
- package/dist/rights/Service.d.ts +1 -1
- package/dist/share/Service.d.ts +7 -6
- package/dist/share/interface.d.ts +119 -9
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -97,7 +97,7 @@ const ERROR_CODE = {
|
|
|
97
97
|
INFOTIP: "infotip",
|
|
98
98
|
RGPD_COOKIES: "rgpdCookies"
|
|
99
99
|
// TODO compléter
|
|
100
|
-
},
|
|
100
|
+
}, R = class R {
|
|
101
101
|
constructor(e) {
|
|
102
102
|
n(this, "name");
|
|
103
103
|
n(this, "listeners", /* @__PURE__ */ new Set());
|
|
@@ -109,8 +109,8 @@ const ERROR_CODE = {
|
|
|
109
109
|
* @returns the channel instance
|
|
110
110
|
*/
|
|
111
111
|
static getChannel(e) {
|
|
112
|
-
let t =
|
|
113
|
-
return t || (t = new
|
|
112
|
+
let t = R.channels.get(e);
|
|
113
|
+
return t || (t = new R(e), R.channels.set(e, t)), t;
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
116
116
|
* Add a listener and return a revocation function to remove it.
|
|
@@ -135,11 +135,11 @@ const ERROR_CODE = {
|
|
|
135
135
|
* Close this channel: remove listeners and unregister from global map.
|
|
136
136
|
*/
|
|
137
137
|
close() {
|
|
138
|
-
this.listeners.clear(),
|
|
138
|
+
this.listeners.clear(), R.channels.delete(this.name);
|
|
139
139
|
}
|
|
140
140
|
};
|
|
141
|
-
n(
|
|
142
|
-
let SimpleChannel =
|
|
141
|
+
n(R, "channels", /* @__PURE__ */ new Map());
|
|
142
|
+
let SimpleChannel = R;
|
|
143
143
|
class Subscription {
|
|
144
144
|
constructor(e, t) {
|
|
145
145
|
n(this, "revoke");
|
|
@@ -970,10 +970,10 @@ class User {
|
|
|
970
970
|
let r = !0;
|
|
971
971
|
const i = [];
|
|
972
972
|
s.bookmarks.forEach((o, a) => {
|
|
973
|
-
const c = this._me.apps.find((
|
|
973
|
+
const c = this._me.apps.find((l) => l.name === o);
|
|
974
974
|
if (c) {
|
|
975
|
-
const
|
|
976
|
-
this._bookmarkedApps.push(
|
|
975
|
+
const l = Object.assign({}, c);
|
|
976
|
+
this._bookmarkedApps.push(l);
|
|
977
977
|
} else
|
|
978
978
|
i.push(o), r = !1;
|
|
979
979
|
}), i.forEach((o) => {
|
|
@@ -1080,10 +1080,10 @@ class Analytics {
|
|
|
1080
1080
|
if (!e.structureMap || !configure.Platform.apps.currentApp) return;
|
|
1081
1081
|
const t = await notify.onSessionReady().promise, s = session.session.description;
|
|
1082
1082
|
let r;
|
|
1083
|
-
for (const
|
|
1084
|
-
const
|
|
1085
|
-
if (
|
|
1086
|
-
r =
|
|
1083
|
+
for (const l of t.structures) {
|
|
1084
|
+
const h = e.structureMap[l];
|
|
1085
|
+
if (h && h.collectiviteId && h.UAI) {
|
|
1086
|
+
r = h;
|
|
1087
1087
|
break;
|
|
1088
1088
|
}
|
|
1089
1089
|
}
|
|
@@ -1094,11 +1094,11 @@ class Analytics {
|
|
|
1094
1094
|
if (!i) return;
|
|
1095
1095
|
const o = i.xiti;
|
|
1096
1096
|
if (!o || !o.LIBELLE_SERVICE || !r.UAI) return;
|
|
1097
|
-
function a(
|
|
1098
|
-
let
|
|
1099
|
-
for (let
|
|
1100
|
-
|
|
1101
|
-
return
|
|
1097
|
+
function a(l) {
|
|
1098
|
+
let h = "";
|
|
1099
|
+
for (let p = 0; p < l.length; p++)
|
|
1100
|
+
h += l.charCodeAt(p);
|
|
1101
|
+
return h;
|
|
1102
1102
|
}
|
|
1103
1103
|
const c = {
|
|
1104
1104
|
Student: "ELEVE",
|
|
@@ -1141,7 +1141,7 @@ class ConfigurationFramework {
|
|
|
1141
1141
|
}
|
|
1142
1142
|
async initialize(e, t) {
|
|
1143
1143
|
if (!e) {
|
|
1144
|
-
const r = (
|
|
1144
|
+
const r = (l) => (l < 10 ? "0" : "") + l.toFixed(0), i = /* @__PURE__ */ new Date(), o = i.getFullYear(), a = i.getMonth() + 1, c = i.getDate();
|
|
1145
1145
|
e = `${o}${r(a)}${r(c)}`;
|
|
1146
1146
|
}
|
|
1147
1147
|
const s = e;
|
|
@@ -1180,8 +1180,8 @@ class ConfigurationFramework {
|
|
|
1180
1180
|
// }
|
|
1181
1181
|
}
|
|
1182
1182
|
const configure = new ConfigurationFramework(), http = transport == null ? void 0 : transport.http;
|
|
1183
|
-
var
|
|
1184
|
-
const me = (
|
|
1183
|
+
var v;
|
|
1184
|
+
const me = (v = session == null ? void 0 : session.session) == null ? void 0 : v.user;
|
|
1185
1185
|
class Notification {
|
|
1186
1186
|
constructor(e) {
|
|
1187
1187
|
n(this, "_id");
|
|
@@ -1904,19 +1904,19 @@ class ConfService {
|
|
|
1904
1904
|
conf: t,
|
|
1905
1905
|
publicTheme: s
|
|
1906
1906
|
}) {
|
|
1907
|
-
var
|
|
1908
|
-
const r = await this.http.get("/theme"), i = (
|
|
1909
|
-
(
|
|
1907
|
+
var p;
|
|
1908
|
+
const r = await this.http.get("/theme"), i = (p = t == null ? void 0 : t.overriding) == null ? void 0 : p.find(
|
|
1909
|
+
(d) => (
|
|
1910
1910
|
// Fix #WB2-2660:
|
|
1911
1911
|
// If Public access => get the neo theme
|
|
1912
1912
|
// Else get the theme from the user preference
|
|
1913
|
-
s ?
|
|
1913
|
+
s ? d.parent === "theme-open-ent" && d.bootstrapVersion === "ode-bootstrap-neo" : d.child === (r == null ? void 0 : r.themeName)
|
|
1914
1914
|
)
|
|
1915
|
-
), o = s ? "default" : (r == null ? void 0 : r.skinName) || (i == null ? void 0 : i.skins[0]), a = (r == null ? void 0 : r.skin) || `/assets/themes/${i == null ? void 0 : i.child}/skins/${o}/`, c = i == null ? void 0 : i.skins,
|
|
1915
|
+
), o = s ? "default" : (r == null ? void 0 : r.skinName) || (i == null ? void 0 : i.skins[0]), a = (r == null ? void 0 : r.skin) || `/assets/themes/${i == null ? void 0 : i.child}/skins/${o}/`, c = i == null ? void 0 : i.skins, l = i == null ? void 0 : i.bootstrapVersion.split("-").slice(-1)[0], h = (i == null ? void 0 : i.parent) === "panda";
|
|
1916
1916
|
return {
|
|
1917
1917
|
basePath: `${this.cdnDomain}${a}../../`,
|
|
1918
|
-
bootstrapVersion:
|
|
1919
|
-
is1d:
|
|
1918
|
+
bootstrapVersion: l,
|
|
1919
|
+
is1d: h,
|
|
1920
1920
|
logoutCallback: (r == null ? void 0 : r.logoutCallback) || "",
|
|
1921
1921
|
skin: i == null ? void 0 : i.child,
|
|
1922
1922
|
skinName: o,
|
|
@@ -1962,25 +1962,26 @@ class DirectoryService {
|
|
|
1962
1962
|
}));
|
|
1963
1963
|
}
|
|
1964
1964
|
async getBookMarkById(e) {
|
|
1965
|
-
const { groups: t, id: s, name: r, users: i } = await this.http.get(
|
|
1965
|
+
const { groups: t, id: s, name: r, users: i, notVisibleCount: o } = await this.http.get(
|
|
1966
1966
|
`/directory/sharebookmark/${e}`
|
|
1967
1967
|
);
|
|
1968
1968
|
return {
|
|
1969
1969
|
id: s,
|
|
1970
1970
|
displayName: r,
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1971
|
+
notVisibleCount: o,
|
|
1972
|
+
groups: t.map(({ name: a, id: c, nbUsers: l }) => ({
|
|
1973
|
+
nbUsers: l,
|
|
1974
|
+
displayName: a,
|
|
1975
|
+
id: c
|
|
1975
1976
|
})),
|
|
1976
|
-
users: i.map(({ displayName:
|
|
1977
|
-
profile:
|
|
1978
|
-
displayName:
|
|
1977
|
+
users: i.map(({ displayName: a, id: c, profile: l }) => ({
|
|
1978
|
+
profile: l,
|
|
1979
|
+
displayName: a,
|
|
1979
1980
|
// these info are missing from api
|
|
1980
1981
|
firstName: "",
|
|
1981
1982
|
lastName: "",
|
|
1982
1983
|
login: "",
|
|
1983
|
-
id:
|
|
1984
|
+
id: c
|
|
1984
1985
|
}))
|
|
1985
1986
|
};
|
|
1986
1987
|
}
|
|
@@ -1990,27 +1991,27 @@ class DirectoryService {
|
|
|
1990
1991
|
users: r
|
|
1991
1992
|
}) {
|
|
1992
1993
|
this.cache.clearCache("/directory/sharebookmark/all");
|
|
1993
|
-
const i = r.map((
|
|
1994
|
-
if (typeof
|
|
1995
|
-
const { displayName:
|
|
1994
|
+
const i = r.map((d) => typeof d == "string" ? d : d.id), o = s.map((d) => typeof d == "string" ? d : d.id), a = t.map(async (d) => {
|
|
1995
|
+
if (typeof d == "string") {
|
|
1996
|
+
const { displayName: b, groups: E, id: g, users: A } = await this.getBookMarkById(d), f = A.map((F) => F.id), y = E.map((F) => F.id);
|
|
1996
1997
|
return {
|
|
1997
|
-
displayName:
|
|
1998
|
-
id:
|
|
1999
|
-
members: [...
|
|
1998
|
+
displayName: b,
|
|
1999
|
+
id: g,
|
|
2000
|
+
members: [...y, ...f]
|
|
2000
2001
|
};
|
|
2001
2002
|
} else
|
|
2002
|
-
return Promise.resolve(
|
|
2003
|
-
}),
|
|
2003
|
+
return Promise.resolve(d);
|
|
2004
|
+
}), l = (await Promise.all(a)).map((d) => d.members).reduce((d, b) => [...d, ...b], []), h = {
|
|
2004
2005
|
name: e,
|
|
2005
|
-
members: [...i, ...o, ...
|
|
2006
|
-
}, { id:
|
|
2006
|
+
members: [...i, ...o, ...l]
|
|
2007
|
+
}, { id: p } = await this.http.postJson(
|
|
2007
2008
|
"/directory/sharebookmark",
|
|
2008
|
-
|
|
2009
|
+
h
|
|
2009
2010
|
);
|
|
2010
2011
|
return {
|
|
2011
|
-
id:
|
|
2012
|
+
id: p,
|
|
2012
2013
|
displayName: e,
|
|
2013
|
-
members:
|
|
2014
|
+
members: h.members
|
|
2014
2015
|
};
|
|
2015
2016
|
}
|
|
2016
2017
|
}
|
|
@@ -2295,7 +2296,7 @@ class RightService {
|
|
|
2295
2296
|
return e.map((s) => this.parseResourceRight(s)).filter((s) => s !== void 0);
|
|
2296
2297
|
}
|
|
2297
2298
|
/**
|
|
2298
|
-
* Check wether a user has the expected right for a
|
|
2299
|
+
* Check wether a user has the expected right for a resource
|
|
2299
2300
|
* @param user the userId and groupId concerned by the check
|
|
2300
2301
|
* @param expect the expected right to check
|
|
2301
2302
|
* @param rights array of Right for the resource
|
|
@@ -2555,18 +2556,18 @@ class SessionService {
|
|
|
2555
2556
|
const i = [];
|
|
2556
2557
|
return r.bookmarks.forEach((o, a) => {
|
|
2557
2558
|
const c = ((e == null ? void 0 : e.apps) || []).find(
|
|
2558
|
-
(
|
|
2559
|
+
(l) => l.name === o
|
|
2559
2560
|
);
|
|
2560
2561
|
if (c) {
|
|
2561
|
-
const
|
|
2562
|
-
i.push(
|
|
2562
|
+
const l = Object.assign({}, c);
|
|
2563
|
+
i.push(l);
|
|
2563
2564
|
}
|
|
2564
2565
|
}), i;
|
|
2565
2566
|
}
|
|
2566
2567
|
async getUserProfile(e = {}) {
|
|
2567
|
-
var c,
|
|
2568
|
+
var c, l;
|
|
2568
2569
|
const { options: t = {}, params: s = {} } = e, r = new URLSearchParams(s).toString(), i = `/userbook/api/person${r ? `?${r}` : ""}`, { response: o, value: a } = await this.cache.httpGet(i, t);
|
|
2569
|
-
return o.status < 200 || o.status >= 300 || typeof a == "string" ? ["Guest"] : ((
|
|
2570
|
+
return o.status < 200 || o.status >= 300 || typeof a == "string" ? ["Guest"] : ((l = (c = a == null ? void 0 : a.result) == null ? void 0 : c[0]) == null ? void 0 : l.type) || ["Guest"];
|
|
2570
2571
|
}
|
|
2571
2572
|
async isAdml() {
|
|
2572
2573
|
const e = await this.getUser();
|
|
@@ -2892,83 +2893,88 @@ class ShareService {
|
|
|
2892
2893
|
get cache() {
|
|
2893
2894
|
return this.context.cache();
|
|
2894
2895
|
}
|
|
2895
|
-
async searchShareSubjects(e, t, s) {
|
|
2896
|
-
const
|
|
2897
|
-
`/${e}/share/json/${t}?search=${s}`
|
|
2898
|
-
),
|
|
2896
|
+
async searchShareSubjects(e, t, s, r) {
|
|
2897
|
+
const i = StringUtils.removeAccents(s).toLowerCase(), o = await this.cache.httpGetJson(
|
|
2898
|
+
r || `/${e}/share/json/${t}?search=${s}`
|
|
2899
|
+
), a = o.users.visibles.filter(({ username: p, firstName: d, lastName: b, login: E }) => {
|
|
2899
2900
|
const g = StringUtils.removeAccents(
|
|
2900
|
-
|
|
2901
|
+
b || ""
|
|
2901
2902
|
).toLowerCase(), A = StringUtils.removeAccents(
|
|
2902
|
-
|
|
2903
|
+
d || ""
|
|
2903
2904
|
).toLowerCase(), f = StringUtils.removeAccents(
|
|
2904
|
-
|
|
2905
|
-
).toLowerCase(), y = StringUtils.removeAccents(
|
|
2906
|
-
return f.includes(
|
|
2907
|
-
}).map((
|
|
2908
|
-
avatarUrl: this.directory.getAvatarUrl(
|
|
2909
|
-
directoryUrl: this.directory.getDirectoryUrl(
|
|
2910
|
-
displayName:
|
|
2911
|
-
id:
|
|
2912
|
-
profile:
|
|
2905
|
+
p || ""
|
|
2906
|
+
).toLowerCase(), y = StringUtils.removeAccents(E || "").toLowerCase();
|
|
2907
|
+
return f.includes(i) || A.includes(i) || g.includes(i) || y.includes(i);
|
|
2908
|
+
}).map((p) => ({
|
|
2909
|
+
avatarUrl: this.directory.getAvatarUrl(p.id, "user"),
|
|
2910
|
+
directoryUrl: this.directory.getDirectoryUrl(p.id, "user"),
|
|
2911
|
+
displayName: p.username,
|
|
2912
|
+
id: p.id,
|
|
2913
|
+
profile: p.profile,
|
|
2913
2914
|
type: "user"
|
|
2914
|
-
})),
|
|
2915
|
-
avatarUrl: this.directory.getAvatarUrl(
|
|
2916
|
-
directoryUrl: this.directory.getDirectoryUrl(
|
|
2917
|
-
displayName:
|
|
2918
|
-
id:
|
|
2915
|
+
})), c = o.groups.visibles.filter(({ name: p }) => StringUtils.removeAccents(p || "").toLowerCase().includes(i)).map((p) => ({
|
|
2916
|
+
avatarUrl: this.directory.getAvatarUrl(p.id, "group"),
|
|
2917
|
+
directoryUrl: this.directory.getDirectoryUrl(p.id, "group"),
|
|
2918
|
+
displayName: p.name,
|
|
2919
|
+
id: p.id,
|
|
2919
2920
|
type: "group",
|
|
2920
|
-
structureName:
|
|
2921
|
+
structureName: p.structureName
|
|
2921
2922
|
}));
|
|
2922
|
-
return [...(await this.directory.getBookMarks()).filter(({ displayName:
|
|
2923
|
-
|
|
2924
|
-
).toLowerCase().includes(
|
|
2923
|
+
return [...(await this.directory.getBookMarks()).filter(({ displayName: p }) => StringUtils.removeAccents(
|
|
2924
|
+
p || ""
|
|
2925
|
+
).toLowerCase().includes(i)).map((p) => ({
|
|
2925
2926
|
avatarUrl: "",
|
|
2926
2927
|
directoryUrl: "",
|
|
2927
2928
|
profile: "",
|
|
2928
|
-
displayName:
|
|
2929
|
-
id:
|
|
2929
|
+
displayName: p.displayName,
|
|
2930
|
+
id: p.id,
|
|
2930
2931
|
type: "sharebookmark"
|
|
2931
|
-
})), ...
|
|
2932
|
+
})), ...a, ...c];
|
|
2932
2933
|
}
|
|
2933
|
-
async getShareMapping(e) {
|
|
2934
|
-
const
|
|
2935
|
-
`/${e}/rights/sharing`
|
|
2934
|
+
async getShareMapping(e, t) {
|
|
2935
|
+
const s = await this.cache.httpGetJson(
|
|
2936
|
+
t || `/${e}/rights/sharing`
|
|
2936
2937
|
);
|
|
2937
|
-
for (const
|
|
2938
|
-
if (
|
|
2939
|
-
const
|
|
2940
|
-
delete
|
|
2938
|
+
for (const r of Object.keys(s))
|
|
2939
|
+
if (r.includes(".")) {
|
|
2940
|
+
const i = r.split(".")[1], o = s[r];
|
|
2941
|
+
delete s[r], s[i] = o;
|
|
2941
2942
|
}
|
|
2942
|
-
return
|
|
2943
|
+
return s;
|
|
2943
2944
|
}
|
|
2944
2945
|
getActionsAvailableFor({ id: e, type: t }, s, r) {
|
|
2945
2946
|
const o = (t === "user" ? s.users.checked[e] : s.groups.checked[e]) || [], a = Object.keys(r), c = [];
|
|
2946
|
-
for (const
|
|
2947
|
-
r[
|
|
2948
|
-
(
|
|
2949
|
-
).length > 0 && c.push(
|
|
2947
|
+
for (const l of a)
|
|
2948
|
+
r[l].filter(
|
|
2949
|
+
(d) => o.includes(d)
|
|
2950
|
+
).length > 0 && c.push(l);
|
|
2950
2951
|
return c;
|
|
2951
2952
|
}
|
|
2952
|
-
async getRightsForResource(e, t) {
|
|
2953
|
-
const
|
|
2953
|
+
async getRightsForResource(e, t, s) {
|
|
2954
|
+
const r = await this.directory.getBookMarks(), i = `/${e}/share/json/${t}?search=`, o = await this.cache.httpGetJson(
|
|
2955
|
+
(s == null ? void 0 : s.getResourceRights) || i
|
|
2956
|
+
), a = await this.getShareMapping(
|
|
2957
|
+
e,
|
|
2958
|
+
s == null ? void 0 : s.getShareMapping
|
|
2959
|
+
), c = await this.cache.httpGetJson(
|
|
2954
2960
|
"/infra/public/json/sharing-rights.json"
|
|
2955
|
-
),
|
|
2956
|
-
(A) => A.id ===
|
|
2957
|
-
)).filter((
|
|
2961
|
+
), l = Object.keys(o.users.checked).map((E) => o.users.visibles.find(
|
|
2962
|
+
(A) => A.id === E
|
|
2963
|
+
)).filter((E) => E !== void 0).map((E) => {
|
|
2958
2964
|
const g = this.getActionsAvailableFor(
|
|
2959
|
-
{ id:
|
|
2960
|
-
|
|
2961
|
-
|
|
2965
|
+
{ id: E.id, type: "user" },
|
|
2966
|
+
o,
|
|
2967
|
+
a
|
|
2962
2968
|
);
|
|
2963
2969
|
return {
|
|
2964
|
-
id:
|
|
2970
|
+
id: E.id,
|
|
2965
2971
|
type: "user",
|
|
2966
|
-
displayName:
|
|
2967
|
-
profile:
|
|
2968
|
-
avatarUrl: this.directory.getAvatarUrl(
|
|
2969
|
-
directoryUrl: this.directory.getDirectoryUrl(
|
|
2972
|
+
displayName: E.username,
|
|
2973
|
+
profile: E.profile,
|
|
2974
|
+
avatarUrl: this.directory.getAvatarUrl(E.id, "user"),
|
|
2975
|
+
directoryUrl: this.directory.getDirectoryUrl(E.id, "user"),
|
|
2970
2976
|
actions: g.map((f) => {
|
|
2971
|
-
const y =
|
|
2977
|
+
const y = c[f];
|
|
2972
2978
|
return {
|
|
2973
2979
|
displayName: f,
|
|
2974
2980
|
id: f,
|
|
@@ -2976,23 +2982,23 @@ class ShareService {
|
|
|
2976
2982
|
};
|
|
2977
2983
|
})
|
|
2978
2984
|
};
|
|
2979
|
-
}).sort((
|
|
2980
|
-
(A) => A.id ===
|
|
2981
|
-
)).filter((
|
|
2985
|
+
}).sort((E, g) => (E.displayName || "").localeCompare(g.displayName)), h = Object.keys(o.groups.checked).map((E) => o.groups.visibles.find(
|
|
2986
|
+
(A) => A.id === E
|
|
2987
|
+
)).filter((E) => E !== void 0).map((E) => {
|
|
2982
2988
|
const g = this.getActionsAvailableFor(
|
|
2983
|
-
{ id:
|
|
2984
|
-
|
|
2985
|
-
|
|
2989
|
+
{ id: E.id, type: "group" },
|
|
2990
|
+
o,
|
|
2991
|
+
a
|
|
2986
2992
|
);
|
|
2987
2993
|
return {
|
|
2988
|
-
id:
|
|
2994
|
+
id: E.id,
|
|
2989
2995
|
type: "group",
|
|
2990
|
-
displayName:
|
|
2996
|
+
displayName: E.name,
|
|
2991
2997
|
profile: void 0,
|
|
2992
|
-
avatarUrl: this.directory.getAvatarUrl(
|
|
2993
|
-
directoryUrl: this.directory.getDirectoryUrl(
|
|
2998
|
+
avatarUrl: this.directory.getAvatarUrl(E.id, "group"),
|
|
2999
|
+
directoryUrl: this.directory.getDirectoryUrl(E.id, "group"),
|
|
2994
3000
|
actions: g.map((f) => {
|
|
2995
|
-
const y =
|
|
3001
|
+
const y = c[f];
|
|
2996
3002
|
return {
|
|
2997
3003
|
displayName: f,
|
|
2998
3004
|
id: f,
|
|
@@ -3000,58 +3006,67 @@ class ShareService {
|
|
|
3000
3006
|
};
|
|
3001
3007
|
})
|
|
3002
3008
|
};
|
|
3003
|
-
}).sort((
|
|
3004
|
-
({ groupDisplayName:
|
|
3009
|
+
}).sort((E, g) => (E.displayName || "").localeCompare(g.displayName)), p = [...l, ...h], d = o.groups.visibles.map(
|
|
3010
|
+
({ groupDisplayName: E, id: g, name: A, labels: f }) => ({
|
|
3005
3011
|
labels: f,
|
|
3006
|
-
displayName:
|
|
3012
|
+
displayName: E || A,
|
|
3007
3013
|
id: g
|
|
3008
3014
|
})
|
|
3009
|
-
),
|
|
3010
|
-
({ id:
|
|
3015
|
+
), b = o.users.visibles.map(
|
|
3016
|
+
({ id: E, profile: g, username: A, firstName: f, lastName: y, login: D }) => ({
|
|
3011
3017
|
displayName: A,
|
|
3012
3018
|
firstName: f,
|
|
3013
3019
|
lastName: y,
|
|
3014
|
-
login:
|
|
3020
|
+
login: D,
|
|
3015
3021
|
profile: g,
|
|
3016
|
-
id:
|
|
3022
|
+
id: E
|
|
3017
3023
|
})
|
|
3018
3024
|
);
|
|
3019
3025
|
return {
|
|
3020
|
-
rights:
|
|
3021
|
-
visibleBookmarks:
|
|
3022
|
-
visibleGroups:
|
|
3023
|
-
visibleUsers:
|
|
3026
|
+
rights: p,
|
|
3027
|
+
visibleBookmarks: r,
|
|
3028
|
+
visibleGroups: d,
|
|
3029
|
+
visibleUsers: b
|
|
3024
3030
|
};
|
|
3025
3031
|
}
|
|
3026
|
-
async
|
|
3027
|
-
const r =
|
|
3028
|
-
|
|
3032
|
+
async getPutSharePayload(e, t, s) {
|
|
3033
|
+
const r = {
|
|
3034
|
+
users: {},
|
|
3029
3035
|
groups: {},
|
|
3030
|
-
|
|
3031
|
-
};
|
|
3032
|
-
for (const
|
|
3033
|
-
const
|
|
3034
|
-
|
|
3036
|
+
bookmarks: {}
|
|
3037
|
+
}, i = await this.getShareMapping(e, s);
|
|
3038
|
+
for (const o of t) {
|
|
3039
|
+
const a = o.actions.map((l) => i[l.id]).reduce((l, h) => Array.isArray(h) ? [...l, ...h] : l, []), c = [...new Set(a)];
|
|
3040
|
+
c.length > 0 && (o.type === "user" ? r.users[o.id] = c : o.type === "group" ? r.groups[o.id] = c : r.bookmarks[o.id] = c);
|
|
3035
3041
|
}
|
|
3036
|
-
|
|
3037
|
-
return this.cache.clearCache(`/${e}/share/json/${t}?search=`), await this.http.putJson(o, i);
|
|
3042
|
+
return r;
|
|
3038
3043
|
}
|
|
3039
|
-
async
|
|
3040
|
-
const
|
|
3044
|
+
async saveRights(e, t, s, r) {
|
|
3045
|
+
const i = await this.getPutSharePayload(
|
|
3046
|
+
e,
|
|
3047
|
+
s,
|
|
3048
|
+
r == null ? void 0 : r.getShareMapping
|
|
3049
|
+
), o = (r == null ? void 0 : r.saveResourceRights) || `/${e}/share/resource/${t}`;
|
|
3050
|
+
return this.cache.clearCache(
|
|
3051
|
+
(r == null ? void 0 : r.getResourceRights) || `/${e}/share/json/${t}?search=`
|
|
3052
|
+
), await this.http.putJson(o, i);
|
|
3053
|
+
}
|
|
3054
|
+
async getActionsForApp(e, t) {
|
|
3055
|
+
const s = await this.cache.httpGetJson(
|
|
3041
3056
|
"/infra/public/json/sharing-rights.json"
|
|
3042
|
-
),
|
|
3043
|
-
return Object.keys(
|
|
3044
|
-
const
|
|
3057
|
+
), r = await this.getShareMapping(e, t);
|
|
3058
|
+
return Object.keys(s).map((o) => {
|
|
3059
|
+
const a = s[o];
|
|
3045
3060
|
return {
|
|
3046
|
-
displayName:
|
|
3047
|
-
id:
|
|
3048
|
-
priority:
|
|
3049
|
-
requires:
|
|
3061
|
+
displayName: o,
|
|
3062
|
+
id: o,
|
|
3063
|
+
priority: a.priority,
|
|
3064
|
+
requires: a.requires
|
|
3050
3065
|
};
|
|
3051
|
-
}).filter((
|
|
3052
|
-
var
|
|
3053
|
-
return ((
|
|
3054
|
-
}).sort((
|
|
3066
|
+
}).filter((o) => {
|
|
3067
|
+
var a;
|
|
3068
|
+
return ((a = r[o.id]) == null ? void 0 : a.length) > 0;
|
|
3069
|
+
}).sort((o, a) => o.priority - a.priority);
|
|
3055
3070
|
}
|
|
3056
3071
|
}
|
|
3057
3072
|
const defaultMappers = {
|
|
@@ -3088,11 +3103,11 @@ const defaultMappers = {
|
|
|
3088
3103
|
zip: function({ type: u }) {
|
|
3089
3104
|
return u.indexOf("zip") !== -1 || u.indexOf("rar") !== -1 || u.indexOf("tar") !== -1 || u.indexOf("7z") !== -1;
|
|
3090
3105
|
}
|
|
3091
|
-
},
|
|
3106
|
+
}, _ = class _ {
|
|
3092
3107
|
/* Similar role notion as in infra-front > workspace > Model.ts */
|
|
3093
3108
|
static getRole(e) {
|
|
3094
3109
|
var t, s;
|
|
3095
|
-
return
|
|
3110
|
+
return _.role(
|
|
3096
3111
|
(t = e.metadata) == null ? void 0 : t["content-type"],
|
|
3097
3112
|
!1,
|
|
3098
3113
|
(s = e.metadata) == null ? void 0 : s.extension
|
|
@@ -3112,10 +3127,10 @@ const defaultMappers = {
|
|
|
3112
3127
|
}
|
|
3113
3128
|
};
|
|
3114
3129
|
// FIXME add edumedia support
|
|
3115
|
-
n(
|
|
3130
|
+
n(_, "roleMappers", [
|
|
3116
3131
|
(e) => Object.keys(defaultMappers).find((s) => defaultMappers[s](e))
|
|
3117
3132
|
]);
|
|
3118
|
-
let DocumentHelper =
|
|
3133
|
+
let DocumentHelper = _;
|
|
3119
3134
|
class WorkspaceService {
|
|
3120
3135
|
constructor(e) {
|
|
3121
3136
|
this.context = e;
|
|
@@ -3205,7 +3220,7 @@ class WorkspaceService {
|
|
|
3205
3220
|
throw this.http.latestResponse.statusText;
|
|
3206
3221
|
return r.forEach((o, a) => {
|
|
3207
3222
|
const c = e.findIndex(
|
|
3208
|
-
(
|
|
3223
|
+
(l) => l._id === o._id
|
|
3209
3224
|
);
|
|
3210
3225
|
0 <= c && c < e.length && (e[c] = i[a]);
|
|
3211
3226
|
}), e.filter((o) => !!o);
|
|
@@ -3224,8 +3239,8 @@ class WorkspaceService {
|
|
|
3224
3239
|
{
|
|
3225
3240
|
const a = `/workspace/${e.public ? "pub/" : ""}document/${e._id}?thumbnail=`, c = e.thumbnails;
|
|
3226
3241
|
if ((o = (i = e.metadata) == null ? void 0 : i["content-type"]) != null && o.includes("video")) {
|
|
3227
|
-
const
|
|
3228
|
-
return
|
|
3242
|
+
const l = c && Object.keys(c).length > 0 ? Object.keys(c)[0] : null;
|
|
3243
|
+
return l ? a + l : null;
|
|
3229
3244
|
} else
|
|
3230
3245
|
return a + r;
|
|
3231
3246
|
}
|
|
@@ -3357,10 +3372,10 @@ class AnalyticsService {
|
|
|
3357
3372
|
const t = await this.session.getUser(), s = await this.session.getUserProfile();
|
|
3358
3373
|
let r;
|
|
3359
3374
|
if (!(t != null && t.structures)) return;
|
|
3360
|
-
for (const
|
|
3361
|
-
const
|
|
3362
|
-
if (
|
|
3363
|
-
r =
|
|
3375
|
+
for (const l of t.structures) {
|
|
3376
|
+
const h = u.structureMap[l];
|
|
3377
|
+
if (h && h.collectiviteId && h.UAI) {
|
|
3378
|
+
r = h;
|
|
3364
3379
|
break;
|
|
3365
3380
|
}
|
|
3366
3381
|
}
|
|
@@ -3369,11 +3384,11 @@ class AnalyticsService {
|
|
|
3369
3384
|
if (!i) return;
|
|
3370
3385
|
const o = i.xiti;
|
|
3371
3386
|
if (!o || !o.LIBELLE_SERVICE || !r.UAI) return;
|
|
3372
|
-
function a(
|
|
3373
|
-
let
|
|
3374
|
-
for (let
|
|
3375
|
-
|
|
3376
|
-
return
|
|
3387
|
+
function a(l) {
|
|
3388
|
+
let h = "";
|
|
3389
|
+
for (let p = 0; p < l.length; p++)
|
|
3390
|
+
h += l.charCodeAt(p);
|
|
3391
|
+
return h;
|
|
3377
3392
|
}
|
|
3378
3393
|
const c = {
|
|
3379
3394
|
Student: "ELEVE",
|
|
@@ -3397,7 +3412,7 @@ class AnalyticsService {
|
|
|
3397
3412
|
};
|
|
3398
3413
|
}
|
|
3399
3414
|
}
|
|
3400
|
-
const
|
|
3415
|
+
const C = class C {
|
|
3401
3416
|
// in minutes. Applies to recorded videos.
|
|
3402
3417
|
constructor(e) {
|
|
3403
3418
|
this.context = e;
|
|
@@ -3418,8 +3433,8 @@ const R = class R {
|
|
|
3418
3433
|
APP$4.VIDEO
|
|
3419
3434
|
);
|
|
3420
3435
|
return {
|
|
3421
|
-
maxWeight: (e == null ? void 0 : e["max-videosize-mbytes"]) ??
|
|
3422
|
-
maxDuration: (e == null ? void 0 : e["max-videoduration-minutes"]) ??
|
|
3436
|
+
maxWeight: (e == null ? void 0 : e["max-videosize-mbytes"]) ?? C.MAX_WEIGHT,
|
|
3437
|
+
maxDuration: (e == null ? void 0 : e["max-videoduration-minutes"]) ?? C.MAX_DURATION,
|
|
3423
3438
|
acceptVideoUploadExtensions: ((t = e == null ? void 0 : e["accept-videoupload-extensions"]) == null ? void 0 : t.map(
|
|
3424
3439
|
(s) => s.toUpperCase()
|
|
3425
3440
|
)) ?? []
|
|
@@ -3450,35 +3465,35 @@ const R = class R {
|
|
|
3450
3465
|
{ headers: { "Content-Type": "multipart/form-data" } }
|
|
3451
3466
|
);
|
|
3452
3467
|
if (c.state == "running") {
|
|
3453
|
-
let
|
|
3468
|
+
let l = 0, h = 1;
|
|
3454
3469
|
do {
|
|
3455
|
-
const
|
|
3470
|
+
const p = h + l;
|
|
3456
3471
|
await new Promise(
|
|
3457
|
-
(
|
|
3458
|
-
),
|
|
3459
|
-
const
|
|
3472
|
+
(b) => setTimeout(b, p * 1e3)
|
|
3473
|
+
), l = h, h = Math.min(8, p);
|
|
3474
|
+
const d = await this.http.get(
|
|
3460
3475
|
`/video/status/${c.processid}`
|
|
3461
3476
|
);
|
|
3462
|
-
if (
|
|
3463
|
-
return
|
|
3464
|
-
|
|
3477
|
+
if (d.state == "succeed")
|
|
3478
|
+
return d.videoworkspaceid && d.videosize && this.context.data().trackVideoSave(
|
|
3479
|
+
d.videoworkspaceid,
|
|
3465
3480
|
Math.round(r),
|
|
3466
|
-
|
|
3481
|
+
d.videosize,
|
|
3467
3482
|
s,
|
|
3468
3483
|
e.url,
|
|
3469
3484
|
i,
|
|
3470
3485
|
e.device
|
|
3471
|
-
),
|
|
3472
|
-
if (
|
|
3486
|
+
), d;
|
|
3487
|
+
if (d.state == "error")
|
|
3473
3488
|
break;
|
|
3474
3489
|
} while (!0);
|
|
3475
3490
|
}
|
|
3476
3491
|
throw new Error("Video cannot be uploaded.");
|
|
3477
3492
|
}
|
|
3478
3493
|
};
|
|
3479
|
-
n(
|
|
3480
|
-
n(
|
|
3481
|
-
let VideoService =
|
|
3494
|
+
n(C, "MAX_WEIGHT", 50), // in Mbytes. Applies to uploaded videos.
|
|
3495
|
+
n(C, "MAX_DURATION", 3);
|
|
3496
|
+
let VideoService = C;
|
|
3482
3497
|
class EmbedderService {
|
|
3483
3498
|
constructor(e) {
|
|
3484
3499
|
this.context = e;
|
|
@@ -3515,10 +3530,10 @@ class EmbedderService {
|
|
|
3515
3530
|
const s = new RegExp("[^{}]+(?=(?:[^{}]*{[^}]*})*[^}]*$)", "g"), r = new RegExp("{[^}]*}", "g");
|
|
3516
3531
|
let i = !0;
|
|
3517
3532
|
const o = t.match(s) || [], a = [];
|
|
3518
|
-
return (t.match(r) || []).forEach((
|
|
3519
|
-
|
|
3520
|
-
}), a.forEach((
|
|
3521
|
-
if (!e.includes(
|
|
3533
|
+
return (t.match(r) || []).forEach((l, h) => {
|
|
3534
|
+
l.includes("ignore") || a.push(o[h]);
|
|
3535
|
+
}), a.forEach((l) => {
|
|
3536
|
+
if (!e.includes(l)) {
|
|
3522
3537
|
i = !1;
|
|
3523
3538
|
return;
|
|
3524
3539
|
}
|
|
@@ -3550,15 +3565,15 @@ class EmbedderService {
|
|
|
3550
3565
|
let o = e.embed;
|
|
3551
3566
|
for (const a of i) {
|
|
3552
3567
|
let c = s.split(a)[0];
|
|
3553
|
-
const
|
|
3554
|
-
|
|
3555
|
-
let
|
|
3556
|
-
if (!
|
|
3568
|
+
const l = c.split("}");
|
|
3569
|
+
l.length > 1 && (c = l[l.length - 1]);
|
|
3570
|
+
let h = t.split(c)[1];
|
|
3571
|
+
if (!h)
|
|
3557
3572
|
continue;
|
|
3558
|
-
const
|
|
3559
|
-
|
|
3560
|
-
const
|
|
3561
|
-
o = o.replace(
|
|
3573
|
+
const p = s.split(a)[1].split("{")[0];
|
|
3574
|
+
p && (h = h.split(p)[0]);
|
|
3575
|
+
const d = new RegExp("\\" + a.replace(/}/, "\\}"), "g");
|
|
3576
|
+
o = o.replace(d, h);
|
|
3562
3577
|
}
|
|
3563
3578
|
return o;
|
|
3564
3579
|
}
|
|
@@ -3987,17 +4002,17 @@ class WorkspaceBehaviour extends AbstractBehaviourService {
|
|
|
3987
4002
|
try {
|
|
3988
4003
|
let o = "/workspace/documents?filter=all&hierarchical=true";
|
|
3989
4004
|
s && s.length ? o += `&search=${t}` : t && t.length && (o += `&search=${t}`);
|
|
3990
|
-
const c = (await this.httpGet(o)).filter((
|
|
3991
|
-
const
|
|
4005
|
+
const c = (await this.httpGet(o)).filter((l) => !l.deleted).map((l) => {
|
|
4006
|
+
const h = l.metadata["content-type"] && l.metadata["content-type"].indexOf("image") !== -1 ? `/workspace/document/${l._id}?thumbnail=120x120` : "/img/icons/unknown-large.png";
|
|
3992
4007
|
return this.dataToResource({
|
|
3993
|
-
title:
|
|
3994
|
-
ownerName:
|
|
3995
|
-
owner:
|
|
3996
|
-
icon:
|
|
3997
|
-
path: `/workspace/document/${
|
|
3998
|
-
_id:
|
|
3999
|
-
shared: !!(
|
|
4000
|
-
modified:
|
|
4008
|
+
title: l.name,
|
|
4009
|
+
ownerName: l.ownerName,
|
|
4010
|
+
owner: l.owner,
|
|
4011
|
+
icon: h,
|
|
4012
|
+
path: `/workspace/document/${l._id}`,
|
|
4013
|
+
_id: l._id,
|
|
4014
|
+
shared: !!(l.shared && l.shared.length >= 0),
|
|
4015
|
+
modified: l.modified
|
|
4001
4016
|
});
|
|
4002
4017
|
});
|
|
4003
4018
|
r(c);
|
|
@@ -4564,18 +4579,18 @@ class WidgetFramework {
|
|
|
4564
4579
|
t.listSkins().then((r) => {
|
|
4565
4580
|
var a;
|
|
4566
4581
|
const i = ((a = r.find((c) => c.child === t.skin)) == null ? void 0 : a.parent) === "panda" ? secondLevelWidgets : firstLevelWidgets;
|
|
4567
|
-
this._widgets = this._widgets.filter((c,
|
|
4568
|
-
const
|
|
4569
|
-
return i.indexOf(
|
|
4570
|
-
index: defaultWidgetOrder[
|
|
4582
|
+
this._widgets = this._widgets.filter((c, l) => {
|
|
4583
|
+
const h = c.platformConf.name;
|
|
4584
|
+
return i.indexOf(h) !== -1 ? !1 : (this._userPrefs[h] || (this._userPrefs[h] = {
|
|
4585
|
+
index: defaultWidgetOrder[h] ?? 999,
|
|
4571
4586
|
show: !0,
|
|
4572
4587
|
position: c.platformConf.position
|
|
4573
|
-
}), c.platformConf.mandatory && (this._userPrefs[
|
|
4588
|
+
}), c.platformConf.mandatory && (this._userPrefs[h].show = !0, this._userPrefs[h].index = defaultWidgetOrder[h] ?? 999), c.platformConf.i18n && s.push(c.platformConf.i18n), c.applyUserPref(this._userPrefs[h]), !0);
|
|
4574
4589
|
});
|
|
4575
4590
|
const o = new Idiom();
|
|
4576
|
-
this._widgets = this._widgets.sort((c,
|
|
4577
|
-
const
|
|
4578
|
-
return
|
|
4591
|
+
this._widgets = this._widgets.sort((c, l) => {
|
|
4592
|
+
const h = o.translate(`timeline.settings.${c.platformConf.name}`).toLowerCase(), p = o.translate(`timeline.settings.${l.platformConf.name}`).toLowerCase();
|
|
4593
|
+
return h < p ? -1 : h > p ? 1 : 0;
|
|
4579
4594
|
});
|
|
4580
4595
|
});
|
|
4581
4596
|
}
|