nodebb-plugin-onekite-calendar 1.0.0 → 1.0.1

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,45 +1,24 @@
1
- ## 1.1.0
2
-
3
- ## 1.3.4
4
- - Fix: HelloAsso OAuth token rate-limit (429/1015) by caching token, de-duplicating requests, and adding backoff retries (no extra logs).
5
- - Discord: add ⏳/💳 icons in embed titles.
6
- ### Perf / prod (NodeBB v4)
7
- - FullCalendar : passage au CDN **@latest** et utilisation de `main.min.css` (supprime l’erreur 404 `index.global.min.css`).
8
- - API `events` : payload allégé (les détails sont chargés à la demande), tri stable.
9
- - Cache intelligent : support **ETag** côté serveur + requêtes conditionnelles côté client (réduit les transferts lors des refetch).
10
- - Prefetch : préchargement du mois précédent/suivant (si l’utilisateur navigue, la vue est instantanée).
11
- - Robustesse : anti double-refetch (debounce sur les updates socket) et annulation des fetch concurrents.
12
-
13
-
14
- ## 1.0.1.1
15
- - ACP (NodeBB v4) : empêche l’affichage multiple des popups de succès lors de l’enregistrement (déduplication des alerts).
1
+ # Changelog – calendar-onekite
16
2
 
17
3
  ## 1.0.1
18
- - Correctif : après validation d'une réservation depuis l’ACP, le lien HelloAsso (paymentUrl) est maintenant bien enregistré et transmis au calendrier (bouton **Payer maintenant** visible dans la modale).
19
-
20
- # Changelog
21
-
22
- ## 1.3.2
23
-
24
- - Discord : notifications envoyées en **embed** (plus lisible) pour les demandes et paiements.
25
- - Discord : contenu texte désactivé (embed only) pour éviter le bruit.
4
+ - Correction ACP : les modales de validation et de refus s’affichent correctement
5
+ - Correction purge : les demandes purgées du calendrier ne bloquent plus de nouvelles réservations
6
+ - Optimisation scheduler (batch DB, réduction des scans inutiles)
7
+ - Amélioration intégration HelloAsso :
8
+ - mise en cache du token
9
+ - protection contre le rate limit (429 / Cloudflare 1015)
10
+ - Notifications Discord améliorées :
11
+ - utilisation d’embeds
12
+ - icônes ⏳ pour les demandes de réservation
13
+ - icônes 💳 pour les paiements reçus
14
+ - 1 action = 1 message
15
+ - Nettoyage du code et suppression des fichiers internes (refactor / review)
16
+ - Fonctionnement CDN conservé
26
17
 
27
18
  ## 1.0.0
28
-
29
- ### ACP
30
- - Locations en attente : validation/refus avec les **mêmes modales** que côté calendrier (adresse + carte + notes + heure / raison de refus) et **suppression de la ligne** après action.
31
- - Réglages : correction de l’enregistrement des **groupes** dans l’onglet Évènements (form + payload), et correction du décalage d’affichage des onglets.
32
-
33
- ### Calendrier (front)
34
- - Évènements : suppression de l’icône « pin-it ».
35
- - Évènements : alignement de l’horloge identique aux icônes des réservations (rendu sans colonne de temps FullCalendar).
36
- - Création d’évènement : clic sur un jour = valeur par défaut **07:00 → 07:00** (gestion robuste de l’`end` exclusif FullCalendar).
37
- - Modales : correction d’un cas où, après annulation (ESC/clic extérieur), les modales ne réapparaissaient plus.
38
- - **Nouveau** : conservation du dernier mode sélectionné (**Location** / **Évènement**) même après création/annulation/refetch (persisté par utilisateur via `localStorage`).
39
-
40
- ### Emails
41
- - Template relance : ajout du même bloc de paiement que dans pending (bouton + lien de secours).
42
-
43
- ### Maintenance
44
- - Nettoyage des CSS/handlers devenus inutiles suite aux corrections d’alignement.
45
- - Harmonisation des versions (`package.json` + `plugin.json`) en `1.0.0`.
19
+ - Première version stable du plugin calendar-onekite
20
+ - Gestion des réservations de matériel avec contrôle de disponibilité
21
+ - Calendrier FullCalendar via CDN
22
+ - Validation / refus des demandes depuis l’ACP
23
+ - Notifications Discord
24
+ - Intégration paiements HelloAsso
package/lib/api.js CHANGED
@@ -641,6 +641,9 @@ api.createReservation = async function (req, res) {
641
641
  const existingRows = await dbLayer.getReservations(candidateIds);
642
642
  for (const existing of (existingRows || [])) {
643
643
  if (!existing || !blocking.has(existing.status)) continue;
644
+ // Reservations can be purged from the calendar view (kept for accounting).
645
+ // Those must not block new booking requests.
646
+ if (existing.calendarPurgedAt) continue;
644
647
  const exStart = parseInt(existing.start, 10);
645
648
  const exEnd = parseInt(existing.end, 10);
646
649
  if (!(exStart < end && start < exEnd)) continue;
package/lib/widgets.js CHANGED
@@ -63,7 +63,7 @@ widgets.renderTwoWeeksWidget = async function (data) {
63
63
  const html = `
64
64
  <div class="onekite-twoweeks">
65
65
  <div class="d-flex justify-content-between align-items-center mb-1">
66
- <div style="font-weight: 600;">Calendrier</div>
66
+ <div style="font-weight: 600;">Calendrier (2 semaines)</div>
67
67
  <a href="${escapeHtml(calUrl)}" class="btn btn-sm btn-outline-secondary" style="line-height: 1.1;">Ouvrir</a>
68
68
  </div>
69
69
  <div id="${escapeHtml(id)}"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-onekite-calendar",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "id": "nodebb-plugin-calendar-onekite",
2
+ "id": "nodebb-plugin-onekite-calendar",
3
3
  "name": "Calendar OneKite",
4
4
  "description": "Equipment reservation calendar (FullCalendar) with admin approval & HelloAsso checkout",
5
5
  "url": "https://www.onekite.com/calendar",