Code source wiki de RatingWidget

Version 3.1 par Pascale STEIMETZ-LE CACHEUX le 2026/03/24 12:46

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