Code source wiki de RatingWidget

Version 4.1 par Pascale STEIMETZ-LE CACHEUX le 2026/03/24 12:50

Masquer les derniers auteurs
Pascale STEIMETZ-LE CACHEUX 4.1 1 {{velocity}}
2 #if(!$ratingTarget)
3 #set($ratingTarget = $doc.fullName)
4 #end
5 {{/velocity}}
6
7 {{groovy}}
8 def currentDoc = "$ratingTarget"
9
10 def store = xwiki.getDocument("Flora.RatingStore3")
11 def objects = store.getObjects("Flora.RatingVoteClass3")
12
13 def total = 0
14 def count = 0
15
16 if (objects != null) {
17 for (o in objects) {
18 if (o != null) {
19 def docValue = o.getValue("document")
20 def noteValue = o.getValue("note")
21
22 if (docValue != null && docValue.toString() == currentDoc && noteValue != null) {
23 total += Integer.parseInt(noteValue.toString())
24 count += 1
25 }
26 }
27 }
28 }
29
30 def avg = count > 0 ? total / count : 0
31 def stars = ""
32 for (int i = 1; i <= 5; i++) {
33 stars += (i <= Math.round(avg)) ? "★" : "☆"
34 }
35
36 xcontext.put("floraRatingDoc", currentDoc)
37 xcontext.put("floraRatingStars", stars)
38 xcontext.put("floraRatingCount", count)
39 {{/groovy}}
40
41 {{html clean="false"}}
42 <style>
43 .flora-rating-wrap {
44 margin-top: 16px;
45 padding-top: 10px;
46 border-top: 1px solid #D9DFEE;
47 display: flex;
48 align-items: center;
49 gap: 14px;
50 flex-wrap: wrap;
51 font-size: 14px;
52 }
53 .flora-rating-label {
54 font-weight: 600;
55 color: #2A2B69;
56 }
57 .flora-stars {
58 display: inline-flex;
59 gap: 4px;
60 }
61 .flora-stars button {
62 background: none;
63 border: none;
64 font-size: 22px;
65 cursor: pointer;
66 color: #d4af37;
67 padding: 0;
68 margin: 0;
69 }
70 .flora-stars button:hover,
71 .flora-stars button.hovered {
72 color: #f2c94c;
73 }
74 .flora-rating-result {
75 color: #2F2F2F;
76 }
77 </style>
78
79 <div class="flora-rating-wrap" data-doc="$escapetool.xml($floraRatingDoc)">
80 <span class="flora-rating-label">Noter cette page</span>
81
82 <div class="flora-stars">
83 <button class="flora-star" data-note="1" type="button">★</button>
84 <button class="flora-star" data-note="2" type="button">★</button>
85 <button class="flora-star" data-note="3" type="button">★</button>
86 <button class="flora-star" data-note="4" type="button">★</button>
87 <button class="flora-star" data-note="5" type="button">★</button>
88 </div>
89
90 <span class="flora-rating-result">$floraRatingStars ($floraRatingCount votes)</span>
91 </div>
92 {{/html}}