nodebb-plugin-onekite-calendar 2.0.20 → 2.0.21

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog – calendar-onekite
2
2
 
3
+ ## 1.3.15
4
+ - Permissions : les **modérateurs globaux / gestionnaires** (groupe NodeBB « Global Moderators », selon le slug) sont désormais considérés comme validateurs pour les actions de modération (dont l’**annulation**).
5
+
6
+ ## 1.3.14
7
+ - Mobile FAB : la modale de sélection de dates autorise désormais la réservation **le jour même** (seules les dates passées sont désactivées).
8
+
3
9
  ## 1.3.13
4
10
  - Réservations : il est désormais possible de réserver pour le jour même (seules les dates passées sont refusées).
5
11
  - Annulation : les validateurs peuvent annuler une réservation déjà payée.
package/lib/api.js CHANGED
@@ -317,6 +317,16 @@ async function canValidate(uid, settings) {
317
317
  try {
318
318
  const isAdmin = await groups.isMember(uid, 'administrators');
319
319
  if (isAdmin) return true;
320
+
321
+ // NodeBB has a built-in "Global Moderators" group (slug can vary by install/version).
322
+ // Allow them as validators as well.
323
+ const globalModeratorCandidates = ['global-moderators', 'Global Moderators', 'global moderators'];
324
+ for (const g of globalModeratorCandidates) {
325
+ try {
326
+ // eslint-disable-next-line no-await-in-loop
327
+ if (await groups.isMember(uid, g)) return true;
328
+ } catch (e) {}
329
+ }
320
330
  } catch (e) {}
321
331
 
322
332
  const allowed = normalizeAllowedGroups(settings.validatorGroups || '');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-onekite-calendar",
3
- "version": "2.0.20",
3
+ "version": "2.0.21",
4
4
  "description": "FullCalendar-based equipment reservation workflow with admin approval & HelloAsso payment for NodeBB",
5
5
  "main": "library.js",
6
6
  "license": "MIT",
@@ -1,5 +1,32 @@
1
1
  # Changelog – calendar-onekite
2
2
 
3
+ ## 1.3.15
4
+ - Permissions : les **modérateurs globaux / gestionnaires** (groupe NodeBB « Global Moderators », selon le slug) sont désormais considérés comme validateurs pour les actions de modération (dont l’**annulation**).
5
+
6
+ ## 1.3.14
7
+ - Mobile FAB : la modale de sélection de dates autorise désormais la réservation **le jour même** (seules les dates passées sont désactivées).
8
+
9
+ ## 1.3.13
10
+ - Réservations : il est désormais possible de réserver pour le jour même (seules les dates passées sont refusées).
11
+ - Annulation : les validateurs peuvent annuler une réservation déjà payée.
12
+
13
+ ## 1.3.12
14
+ - Expiration automatique : envoi d’un email au demandeur avec la raison :
15
+ - « Demande non prise en charge dans le temps imparti » (demande en attente)
16
+ - « Paiement non reçu dans le temps imparti » (paiement en attente)
17
+ - ACP : ajout de 2 paramètres pour envoyer un rappel email aux validateurs sur les demandes en attente / paiement en attente.
18
+ - Emails validateurs : nouveaux templates (rappel + expiration) avec lien vers l’ACP.
19
+
20
+ ## 1.3.11
21
+ - ACP (Demandes en attente) : affichage du pseudo du demandeur avec lien vers sa fiche utilisateur.
22
+
23
+ ## 1.3.10
24
+ - Mobile FAB : surlignage de la sélection de dates rendu lisible en light mode (contraste renforcé, start/end en primary).
25
+
26
+ ## 1.3.9
27
+ - Mobile FAB : correction de la sélection de plage (tous les jours sélectionnés sont désormais bien inclus dans la surbrillance).
28
+ - Mobile FAB : amélioration du rendu en mode sombre (bordures/fonds adaptés, contraste renforcé).
29
+
3
30
  ## 1.3.8
4
31
  - ACP Comptabilisation : ajout d’un **grand total** (montant total des locations payées sur la période) + compteurs (payées / sorties gratuites).
5
32
 
@@ -317,6 +317,16 @@ async function canValidate(uid, settings) {
317
317
  try {
318
318
  const isAdmin = await groups.isMember(uid, 'administrators');
319
319
  if (isAdmin) return true;
320
+
321
+ // NodeBB has a built-in "Global Moderators" group (slug can vary by install/version).
322
+ // Allow them as validators as well.
323
+ const globalModeratorCandidates = ['global-moderators', 'Global Moderators', 'global moderators'];
324
+ for (const g of globalModeratorCandidates) {
325
+ try {
326
+ // eslint-disable-next-line no-await-in-loop
327
+ if (await groups.isMember(uid, g)) return true;
328
+ } catch (e) {}
329
+ }
320
330
  } catch (e) {}
321
331
 
322
332
  const allowed = normalizeAllowedGroups(settings.validatorGroups || '');
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-onekite-calendar",
3
- "version": "1.3.13",
3
+ "version": "1.3.15",
4
4
  "description": "FullCalendar-based equipment reservation workflow with admin approval & HelloAsso payment for NodeBB",
5
5
  "main": "library.js",
6
6
  "license": "MIT",
package/plugin.json CHANGED
@@ -39,5 +39,5 @@
39
39
  "acpScripts": [
40
40
  "public/admin.js"
41
41
  ],
42
- "version": "2.0.20"
42
+ "version": "2.0.21"
43
43
  }
package/public/client.js CHANGED
@@ -2091,11 +2091,10 @@ function toDatetimeLocalValue(date) {
2091
2091
  async function openFabDatePicker() {
2092
2092
  if (!lockAction('fab-date-picker', 700)) return;
2093
2093
 
2094
- // Cannot book today or past (mobile FAB).
2094
+ // Cannot book past dates (mobile FAB). Same-day booking is allowed.
2095
2095
  const today = new Date();
2096
2096
  today.setHours(0, 0, 0, 0);
2097
2097
  const minStart = new Date(today);
2098
- minStart.setDate(minStart.getDate() + 1);
2099
2098
 
2100
2099
  // Month cursor for the single-calendar range picker
2101
2100
  const cursor = new Date(minStart);
@@ -2120,7 +2119,7 @@ async function openFabDatePicker() {
2120
2119
  </div>
2121
2120
  <div class="onekite-range-grid" id="onekite-range-grid"></div>
2122
2121
  <div class="onekite-range-summary" id="onekite-range-summary"></div>
2123
- <div class="form-text mt-2">Sélectionne une date de début puis une date de fin (incluse). Les dates d'aujourd'hui et passées sont désactivées.</div>
2122
+ <div class="form-text mt-2">Sélectionne une date de début puis une date de fin (incluse). Les dates passées sont désactivées.</div>
2124
2123
  </div>
2125
2124
  `;
2126
2125