Code source wiki de RatingWidget

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

Masquer les derniers auteurs
Pascale STEIMETZ-LE CACHEUX 1.1 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
Pascale STEIMETZ-LE CACHEUX 3.1 19 .flora-stars button {
Pascale STEIMETZ-LE CACHEUX 1.1 20 background: none;
21 border: none;
Pascale STEIMETZ-LE CACHEUX 3.1 22 font-size: 22px;
Pascale STEIMETZ-LE CACHEUX 1.1 23 cursor: pointer;
24 color: #d4af37;
25 }
26
Pascale STEIMETZ-LE CACHEUX 3.1 27 .flora-stars button:hover {
Pascale STEIMETZ-LE CACHEUX 1.1 28 color: #f2c94c;
29 }
30
31 .flora-rating-result {
32 color: #2F2F2F;
33 }
34 </style>
Pascale STEIMETZ-LE CACHEUX 3.1 35 {{/html}}
Pascale STEIMETZ-LE CACHEUX 1.1 36
Pascale STEIMETZ-LE CACHEUX 3.1 37 {{velocity}}
38 #set($currentDoc = $doc.fullName)
39 {{/velocity}}
Pascale STEIMETZ-LE CACHEUX 1.1 40
Pascale STEIMETZ-LE CACHEUX 2.1 41 {{groovy}}
42 def store = xwiki.getDocument("Flora.RatingStore3")
43 def objects = store.getObjects("Flora.RatingVoteClass3")
44
Pascale STEIMETZ-LE CACHEUX 3.1 45 def total = 0
46 def count = 0
Pascale STEIMETZ-LE CACHEUX 2.1 47
48 if (objects != null) {
49 for (o in objects) {
Pascale STEIMETZ-LE CACHEUX 3.1 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 }
Pascale STEIMETZ-LE CACHEUX 2.1 58 }
59 }
60 }
61
Pascale STEIMETZ-LE CACHEUX 3.1 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>')
Pascale STEIMETZ-LE CACHEUX 2.1 70 }
Pascale STEIMETZ-LE CACHEUX 3.1 71 print('</div>')
Pascale STEIMETZ-LE CACHEUX 2.1 72
Pascale STEIMETZ-LE CACHEUX 3.1 73 print('<span class="flora-rating-result">')
74
Pascale STEIMETZ-LE CACHEUX 2.1 75 for (int i = 1; i <= 5; i++) {
Pascale STEIMETZ-LE CACHEUX 3.1 76 if (i <= Math.round(avg)) {
77 print('★')
Pascale STEIMETZ-LE CACHEUX 2.1 78 } else {
Pascale STEIMETZ-LE CACHEUX 3.1 79 print('☆')
Pascale STEIMETZ-LE CACHEUX 2.1 80 }
81 }
82
Pascale STEIMETZ-LE CACHEUX 3.1 83 print(' (' + count + ' votes)</span>')
84 print('</div>')
Pascale STEIMETZ-LE CACHEUX 2.1 85 {{/groovy}}