Show last authors
1 {{include reference="Store.Code.Macros"/}}
2
3 {{velocity output="false"}}
4 #macro(displayRatings $itemDoc)
5 #set ($averageRating = $services.ratings.getAverageRating($itemDoc.documentReference).orElse(
6 {'averageVote': 0, 'nbVotes': 0}))
7 #set ($averageVote = $averageRating.averageVote)
8 #set ($width = $averageVote * 20)
9 #set ($stars = $stringtool.repeat($services.icon.renderHTML('star'), 5))
10 #set ($votes = $averageRating.nbVotes)
11 <div class="stars-rating" title="${width}%">
12 <div class="back-stars">
13 $stars
14 <div class="front-stars" style="width:${width}%;">
15 $stars
16 </div>
17 </div>
18 <div class="rating-message">
19 <span title="${votes} Votes">
20 ${votes} <span>$services.icon.renderHTML('user')</span>
21 </span>
22 </div>
23 </div>
24 #end
25 #macro(displayStoreItem $sitem)
26 #set ($itemDoc = $xwiki.getDocument($sitem))
27 #set ($itemURL = $xwiki.getURL($sitem))
28 #set ($itemObj = $itemDoc.getObject('ExtensionCode.ExtensionClass'))
29 #set ($itemName = $itemObj.getValue('name'))
30 #set ($itemSummary = $itemObj.getValue('summary'))
31 #set ($itemIcon = $itemObj.getValue('icon'))
32 #set ($itemType = $itemObj.getValue('type'))
33 #set ($itemCategory = $itemObj.getValue('category'))
34 <div class="col-md-4 col-sm-6 item">
35 <div class="wrap-item-product">
36 <div class="wrap-to-click">
37 <div class="top-product $!itemType">
38 <a href="$!itemURL" title="$!itemName">
39 <label class="short-desc">$!itemName</label>
40 <span class="product-icon">
41 #if ("$!itemIcon" != '')
42 $!services.icon.renderHTML($itemIcon)
43 #else
44 <span class="fa fa-search"></span>
45 #end
46 </span>
47 </a>
48 </div>
49 <div class="bottom-product">
50 <div class="product-name">$!itemSummary</div>
51 <div class="price-reviews row">
52 <div class="col-xs-6">
53 <div class="product-ratings">
54 #displayRatings($itemDoc)
55 </div>
56 <div class="product-installedCount">
57 <p>$!itemObj.getValue('installedCount') Installs</p>
58 </div>
59 </div>
60 <div class="col-xs-6">
61 <div class="product-category">
62 $!itemCategory
63 </div>
64 <div class="product-price">
65 #getMinPrice($itemObj.getValue('id'))
66 #if ($minPrice)
67 from ${minPrice}€
68 #else
69 FREE
70 #end
71 </div>
72 </div>
73 </div>
74 </div>
75 </div>
76 </div>
77 </div>
78 #end
79 #macro(displayStoreItems)
80 #getStoreExtensions()
81 {{html clean="false"}}
82 <div class="bottom">
83 <h2>The best extensions to enhance your wiki</h2>
84 <div class="list-product">
85 #foreach ($item in $results)
86 ## Show 3 results per row.
87 #if ($foreach.index % 3 == 0)
88 ## Start a new row.
89 <div class="row">
90 #end
91 #displayStoreItem($item)
92 #if ($foreach.index % 3 == 2)
93 ## Close the open row.
94 </div>
95 #end
96 #end
97 ## Close the last open row in case the results count is not a multiple of 3.
98 #if ($results && $results.size() > 0 && $results.size() % 3 != 0)
99 </div>
100 #end
101 </div>
102 </div>
103 {{/html}}
104 #end
105 #macro(getStoreExtensions)
106 ## Get the list of recommended extensions.
107 #set ($query = ", BaseObject as obj, IntegerProperty as recommendedProp where doc.fullName = obj.name and obj.className = 'ExtensionCode.ExtensionClass' and recommendedProp.id.id = obj.id and recommendedProp.id.name='recommended' and recommendedProp.value = '1'")
108 #set ($query = "$query and doc.fullName like 'Extension.%' order by doc.fullName asc")
109 #set ($results = $services.query.hql($query).execute())
110 #end
111 {{/velocity}}
XWiki SAS Copyright © 2024