Code source wiki de RatingWidget

Modifié par Pascale STEIMETZ-LE CACHEUX le 2026/03/27 17:23

Afficher les derniers auteurs
1 {{velocity}}
2 #set($currentDoc = $xcontext.doc.fullName)
3
4 #set($storeDoc = $xwiki.getDocument("Flora.RatingStore3"))
5 #set($objects = $storeDoc.getObjects("Flora.RatingVoteClass3"))
6
7 #set($total = 0)
8 #set($count = 0)
9
10 #foreach($obj in $objects)
11 #if($obj && $obj.getValue("document") && $obj.getValue("document").toString() == $currentDoc)
12 #set($note = $obj.getValue("note"))
13 #if($note)
14 #set($total = $total + $note)
15 #set($count = $count + 1)
16 #end
17 #end
18 #end
19
20 #if($count > 0)
21 #set($avg = $total / $count)
22 #else
23 #set($avg = 0)
24 #end
25
26 #set($stars = "")
27 #foreach($i in [1..5])
28 #if($i <= $avg.round())
29 #set($stars = "${stars}★")
30 #else
31 #set($stars = "${stars}☆")
32 #end
33 #end
34 {{html clean="false"}}
35 <style>
36 .flora-rating-wrap {
37 margin-top: 16px;
38 padding-top: 10px;
39 border-top: 1px solid #D9DFEE;
40 display: flex;
41 align-items: center;
42 gap: 14px;
43 flex-wrap: wrap;
44 font-size: 14px;
45 }
46 .flora-rating-label {
47 font-weight: 600;
48 color: #2A2B69;
49 }
50 .flora-stars {
51 display: inline-flex;
52 gap: 4px;
53 }
54 .flora-stars button {
55 background: none;
56 border: none;
57 font-size: 24px;
58 cursor: pointer;
59 color: #ffffff;
60 padding: 0;
61 margin: 0;
62 line-height: 1;
63 text-shadow:
64 -1px 0 #5b63c3,
65 0 1px #5b63c3,
66 1px 0 #5b63c3,
67 0 -1px #5b63c3;
68 transition: color 0.15s ease, transform 0.15s ease;
69 }
70
71 .flora-stars button:hover,
72 .flora-stars button.hovered,
73 .flora-stars button.selected {
74 color: #f2c94c;
75 text-shadow:
76 -1px 0 #5b63c3,
77 0 1px #5b63c3,
78 1px 0 #5b63c3,
79 0 -1px #5b63c3;
80 transform: scale(1.08);
81 }
82
83 .flora-rating-result {
84 color: #2F2F2F;
85 }
86 </style>
87
88 <div class="flora-rating-wrap" data-doc="$escapetool.xml($currentDoc)">
89 <span class="flora-rating-label">Votre avis compte pour nous, que pensez-vous de cet article&nbsp;?</span>
90
91 <div class="flora-stars">
92 <button class="flora-star" data-note="1" type="button">★</button>
93 <button class="flora-star" data-note="2" type="button">★</button>
94 <button class="flora-star" data-note="3" type="button">★</button>
95 <button class="flora-star" data-note="4" type="button">★</button>
96 <button class="flora-star" data-note="5" type="button">★</button>
97 </div>
98
99 <span class="flora-rating-result">$stars ($count votes)</span>
100 </div>
101 {{/html}}
102 {{/velocity}}