nodebb-plugin-onekite-calendar 2.0.32 → 2.0.34

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.
Files changed (29) hide show
  1. package/lib/api.js +3 -0
  2. package/package.json +1 -1
  3. package/plugin.json +1 -1
  4. package/templates/emails/calendar-onekite_pending.tpl +2 -0
  5. package/templates/emails/calendar-onekite_validator_expired.tpl +0 -2
  6. package/pkg/package/CHANGELOG.md +0 -161
  7. package/pkg/package/lib/admin.js +0 -698
  8. package/pkg/package/lib/api.js +0 -1468
  9. package/pkg/package/lib/controllers.js +0 -11
  10. package/pkg/package/lib/db.js +0 -224
  11. package/pkg/package/lib/discord.js +0 -190
  12. package/pkg/package/lib/helloasso.js +0 -352
  13. package/pkg/package/lib/helloassoWebhook.js +0 -389
  14. package/pkg/package/lib/scheduler.js +0 -201
  15. package/pkg/package/lib/widgets.js +0 -468
  16. package/pkg/package/library.js +0 -164
  17. package/pkg/package/package.json +0 -14
  18. package/pkg/package/plugin.json +0 -43
  19. package/pkg/package/public/admin.js +0 -1493
  20. package/pkg/package/public/client.js +0 -2379
  21. package/pkg/package/templates/admin/plugins/calendar-onekite.tpl +0 -307
  22. package/pkg/package/templates/calendar-onekite.tpl +0 -51
  23. package/pkg/package/templates/emails/calendar-onekite_approved.tpl +0 -40
  24. package/pkg/package/templates/emails/calendar-onekite_cancelled.tpl +0 -15
  25. package/pkg/package/templates/emails/calendar-onekite_expired.tpl +0 -11
  26. package/pkg/package/templates/emails/calendar-onekite_paid.tpl +0 -15
  27. package/pkg/package/templates/emails/calendar-onekite_pending.tpl +0 -15
  28. package/pkg/package/templates/emails/calendar-onekite_refused.tpl +0 -15
  29. package/pkg/package/templates/emails/calendar-onekite_reminder.tpl +0 -20
package/lib/api.js CHANGED
@@ -1042,6 +1042,9 @@ api.createReservation = async function (req, res) {
1042
1042
  start: formatFR(start),
1043
1043
  end: formatFR(end),
1044
1044
  total: resv.total || 0,
1045
+ // Link to the plugin ACP page so managers can process the request quickly.
1046
+ // Kept as `adminUrl` to match the email template placeholder.
1047
+ adminUrl: `${normalizeBaseUrl(meta)}/admin/plugins/calendar-onekite`,
1045
1048
  });
1046
1049
  }
1047
1050
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-onekite-calendar",
3
- "version": "2.0.32",
3
+ "version": "2.0.34",
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.32"
42
+ "version": "2.0.34"
43
43
  }
@@ -13,3 +13,5 @@
13
13
  <p>{dateRange}</p>
14
14
 
15
15
  <p><strong>Total estimé :</strong> {total} €</p>
16
+
17
+ <p><a href="{adminUrl}">Ouvrir l'ACP</a></p>
@@ -13,5 +13,3 @@
13
13
  </ul>
14
14
 
15
15
  <p>{dateRange}</p>
16
-
17
- <p><a href="{adminUrl}">Ouvrir l'ACP</a></p>
@@ -1,161 +0,0 @@
1
- # Changelog – calendar-onekite
2
-
3
- ## 1.3.21
4
- - Comptabilisation : les **sorties gratuites annulées** ne sont plus comptées (elles sont exclues si `cancelledAt` est présent, même si le statut est resté `paid`).
5
-
6
- ## 1.3.20
7
- - Temps réel : le **widget** (Calendrier 2 semaines) se met à jour dynamiquement comme la page calendrier (créations / changements de statut / annulations…), sans rechargement.
8
-
9
- ## 1.3.19
10
- - Annulation : un validateur/gestionnaire peut désormais annuler **même sa propre** réservation après paiement (la restriction `cannot-cancel-paid` ne s'applique plus aux validateurs).
11
-
12
- ## 1.3.18
13
- - Fix HelloAsso webhook : suppression d'une double déclaration `realtime` qui empêchait le plugin de se charger (SyntaxError).
14
-
15
- ## 1.3.17
16
- - Temps réel : les **créations** (locations / évènements), **changements de statut** (validation, refus, annulation, paiement reçu) et **expirations** se répercutent automatiquement sur le calendrier pour **tous les utilisateurs connectés**, sans rechargement de page.
17
-
18
- ## 1.3.16
19
- - Calendrier : le **jour actuel** n’est plus affiché comme indisponible (gris + panneau sens interdit). Seules les **dates passées** restent désactivées visuellement.
20
-
21
- ## 1.3.15
22
- - 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**).
23
-
24
- ## 1.3.14
25
- - 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).
26
-
27
- ## 1.3.13
28
- - Réservations : il est désormais possible de réserver pour le jour même (seules les dates passées sont refusées).
29
- - Annulation : les validateurs peuvent annuler une réservation déjà payée.
30
-
31
- ## 1.3.12
32
- - Expiration automatique : envoi d’un email au demandeur avec la raison :
33
- - « Demande non prise en charge dans le temps imparti » (demande en attente)
34
- - « Paiement non reçu dans le temps imparti » (paiement en attente)
35
- - ACP : ajout de 2 paramètres pour envoyer un rappel email aux validateurs sur les demandes en attente / paiement en attente.
36
- - Emails validateurs : nouveaux templates (rappel + expiration) avec lien vers l’ACP.
37
-
38
- ## 1.3.11
39
- - ACP (Demandes en attente) : affichage du pseudo du demandeur avec lien vers sa fiche utilisateur.
40
-
41
- ## 1.3.10
42
- - Mobile FAB : surlignage de la sélection de dates rendu lisible en light mode (contraste renforcé, start/end en primary).
43
-
44
- ## 1.3.9
45
- - Mobile FAB : correction de la sélection de plage (tous les jours sélectionnés sont désormais bien inclus dans la surbrillance).
46
- - Mobile FAB : amélioration du rendu en mode sombre (bordures/fonds adaptés, contraste renforcé).
47
-
48
- ## 1.3.8
49
- - ACP Comptabilisation : ajout d’un **grand total** (montant total des locations payées sur la période) + compteurs (payées / sorties gratuites).
50
-
51
- ## 1.3.7
52
- - Mobile FAB : remplacement des 2 champs date par un **sélecteur unique** (calendrier) permettant de choisir directement une plage (clic début puis fin, fin incluse), avec dates passées/aujourd'hui désactivées.
53
-
54
- ## 1.3.6
55
- - ACP Comptabilisation : ajout d’un tableau séparé « Détails des sorties gratuites » (avec le nom du matériel).
56
- - Mobile FAB : la modale utilise maintenant des champs date avec calendrier (type="date") et empêche toute réservation pour le jour même ou dans le passé.
57
-
58
- ## 1.3.5
59
- - ACP : ajout d’un paramètre « Location longue durée (jours) pour validateurs ». Si une réservation faite par un validateur dépasse ce nombre de jours, elle redevient payante et suit le workflow normal (demande → validation → paiement HelloAsso). Mets 0 pour conserver le comportement « toujours gratuit ».
60
-
61
- ## 1.3.4
62
- - Réservations gratuites (validateurs) : ne sont plus comptées comme chiffre d’affaires dans la comptabilisation. Elles apparaissent désormais sur une ligne séparée « Sorties gratuites » (et sont marquées (gratuit) dans le détail).
63
-
64
- ## 1.3.3
65
- - Comptabilité : les réservations « auto-checkées » (réservations faites par un validateur) recalculent désormais le total côté serveur (catalogue HelloAsso × nb jours calendaires) afin d’être comptabilisées correctement.
66
-
67
- ## 1.3.2
68
- - Les membres validateurs (ceux qui peuvent valider/supprimer une demande) voient leurs propres réservations passer directement en statut payé/checked (pas de workflow paiement).
69
- - UI : message de succès adapté (réservation confirmée).
70
-
71
- ## 1.3.1
72
- - ACP : ajout de 2 actions rapides dans l’onglet Maintenance : « Tout mettre en maintenance » et « Tout enlever de maintenance » (avec audit).
73
-
74
- ## 1.3.0
75
- - Maintenance (sans dates) : blocage manuel ON/OFF par matériel (ACP + API). Les matériels en maintenance sont grisés et affichés comme : 🔧 Nom (en maintenance).
76
- - Audit : journal des actions (demande, validation, refus, annulation, maintenance) avec consultation et purge par année (ACP + API).
77
-
78
- ## 1.2.18
79
- - API events + anti double booking : les tests de chevauchement utilisent désormais en priorité startDate/endDate (YYYY-MM-DD) quand disponibles (logique calendaire pure, endDate exclusive). Cela supprime définitivement les faux chevauchements liés aux timestamps/fuseaux/DST, notamment sur mobile et « Durée rapide ».
80
-
81
- ## 1.2.17
82
- - Modale réservation : la requête de disponibilité initiale utilise aussi des dates calendaires (YYYY-MM-DD) au lieu de startStr/endStr/toISOString(), ce qui corrige le grisé erroné (mobile + durée rapide).
83
-
84
- ## 1.2.16
85
- - Modale réservation (Durée rapide) : correction du grisé erroné des matériels réservés la veille. Les requêtes de disponibilité utilisent désormais des dates calendaires (YYYY-MM-DD) au lieu de toISOString() (UTC), pour éviter tout faux chevauchement lié au fuseau/DST.
86
-
87
- ## 1.2.15
88
- - Réservations (Durée rapide) : génération des évènements all-day basée sur startDate/endDate (YYYY-MM-DD) quand disponibles, pour éviter tout décalage lié à toISOString() (UTC) et empêcher un grisé « non disponible » le jour suivant.
89
-
90
- ## 1.2.14
91
- - Réservations : correction d’un faux chevauchement (problème 1h) quand FullCalendar envoie des bornes all-day à minuit UTC (Z / +00:00) — le lendemain n’est plus marqué « non disponible ».
92
-
93
- ## 1.2.13
94
- - ACP (mode sombre) : correction de la visibilité de la liste d’autocomplete d’adresse (couleurs via variables Bootstrap)
95
-
96
- ## 1.2.12
97
- - Modales (calendrier + ACP) : autocomplete adresse rendu identique et compatible Bootstrap input-group (plus de wrapper qui casse l’affichage)
98
-
99
- ## 1.2.11
100
- - ACP : ajout de la recherche automatique d’adresse (autocomplete Nominatim) dans la modale de validation (unitaire + batch), comme sur le calendrier
101
-
102
- ## 1.2.10
103
- - HelloAsso : calcul des jours 100% fiable (différence en jours calendaires Y/M/J, sans dépendance aux heures/au fuseau/DST)
104
- - FullCalendar : endDate traitée comme exclusive partout (UI + checkout)
105
- - HelloAsso : montant du checkout recalculé côté serveur à partir du catalogue (prix/jour × nbJours)
106
-
107
- ## 1.2.9
108
- - Modale réservation : retour du grisé des matériels indisponibles (API events expose à nouveau itemIds)
109
-
110
- ## 1.2.8
111
- - Popup réservation : correction « Durée rapide » (la période envoyée correspond bien à la durée sélectionnée)
112
-
113
- ## 1.2.7
114
- - UI : suppression du bouton flottant mobile « + Réserver »
115
- - Client : nettoyage du code associé (suppression du bloc FAB)
116
-
117
- ## 1.2.6
118
- - ACP : anti double action (verrou UI + boutons désactivés/spinner) sur valider/refuser (unitaire + batch)
119
-
120
- ## 1.2.5
121
- - Mobile : bouton flottant « + Réserver »
122
- - Création : anti double-tap/click (verrou actions) + invalidation cache events + refetch léger
123
- - Calendrier : jours passés / aujourd’hui affichés comme non-sélectionnables (règle visuelle)
124
- - Popup réservation : raccourcis de durée (1j/2j/3j/7j) + recalcul total + mise à jour des matériels bloqués
125
- - ACP : actions en batch (valider/refuser une sélection) + compteur de sélection
126
- - API : idempotence sur valider/refuser + audit enrichi (refusedBy, cancelledByUsername)
127
-
128
- ## 1.0.3
129
- - Suppression du texte d’archivage dans le toast de purge (plus de « 0 archivés »)
130
- - Renommage du plugin : nodebb-plugin-onekite-calendar
131
- - Discord : notification « ❌ Réservation annulée » (annulation manuelle + annulation automatique) + option ACP
132
-
133
- ## 1.0.2
134
- - Purge calendrier : suppression réelle des réservations (aucune logique d’archivage)
135
- - Compta conservée séparément (la purge n’y touche jamais)
136
-
137
- ## 1.0.1
138
- - ACP : modales Valider / Refuser OK (plus de retour au premier onglet)
139
- - Scheduler : optimisation (batch DB, scans réduits)
140
- - API events : pagination interne + ETag optimisé
141
- - HelloAsso : token mis en cache + protection rate-limit (429 / Cloudflare 1015), sans logs supplémentaires
142
- - Discord : notifications en embeds + icônes ⏳ (demande) et 💳 (paiement)
143
- - Widget : suppression de “2 semaines” dans le titre affiché
144
- - Correctifs divers de stabilité/performance (dont crash au démarrage)
145
-
146
- ## 1.0.0
147
- - Première version stable du plugin calendar-onekite
148
- - Gestion des réservations de matériel avec contrôle de disponibilité
149
- - Calendrier FullCalendar via CDN
150
- - Validation / refus des demandes depuis l’ACP
151
- - Notifications Discord
152
- - Intégration paiements HelloAsso
153
-
154
- ## 1.2.19
155
- - Mobile: ajout d’un bouton flottant (FAB) sur la page calendrier uniquement.
156
- - Le FAB ouvre une mini-modale de sélection de dates (dd/mm/yyyy) puis ouvre la modale standard de réservation.
157
- - Le FAB est automatiquement retiré quand on navigue hors de la page calendrier.
158
-
159
- ## 1.3.10
160
- - Widget : ne pas afficher le statut « Payée » pour les sorties gratuites (validateurs).
161
- - Modale réservation : affichage de la période corrigé (fin affichée inclusive, fin stockée exclusive).