Show last authors
author | version | line-number | content |
---|---|---|---|
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}} |