Hide last authors
author | version | line-number | content |
---|---|---|---|
3.1 | 1 | {{include reference="Store.Code.Macros"/}} | |
2 | |||
2.1 | 3 | {{velocity output="false"}} | |
3.1 | 4 | #macro(displayRatings $itemDoc) | |
11.1 | 5 | #set ($averageRating = $services.ratings.getAverageRating($itemDoc.documentReference).orElse( | |
6 | {'averageVote': 0, 'nbVotes': 0})) | ||
3.1 | 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}%"> | ||
11.1 | 12 | <div class="back-stars"> | |
3.1 | 13 | $stars | |
11.1 | 14 | <div class="front-stars" style="width:${width}%;"> | |
15 | $stars | ||
16 | </div> | ||
3.1 | 17 | </div> | |
12.1 | 18 | <div class="rating-message"> | |
19 | <span title="${votes} Votes"> | ||
20 | ${votes} <span>$services.icon.renderHTML('user')</span> | ||
21 | </span> | ||
22 | </div> | ||
3.1 | 23 | </div> | |
24 | #end | ||
1.1 | 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')) | ||
2.1 | 34 | <div class="col-md-4 col-sm-6 item"> | |
1.1 | 35 | <div class="wrap-item-product"> | |
2.1 | 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> | ||
3.1 | 51 | <div class="price-reviews row"> | |
52 | <div class="col-xs-6"> | ||
53 | <div class="product-ratings"> | ||
54 | #displayRatings($itemDoc) | ||
2.1 | 55 | </div> | |
3.1 | 56 | <div class="product-installedCount"> | |
7.1 | 57 | <p>$!itemObj.getValue('installedCount') Installs</p> | |
2.1 | 58 | </div> | |
1.1 | 59 | </div> | |
3.1 | 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')) | ||
5.2 | 66 | #if ($minPrice) | |
5.1 | 67 | from ${minPrice}€ | |
68 | #else | ||
69 | FREE | ||
70 | #end | ||
3.1 | 71 | </div> | |
72 | </div> | ||
2.1 | 73 | </div> | |
1.1 | 74 | </div> | |
2.1 | 75 | </div> | |
1.1 | 76 | </div> | |
2.1 | 77 | </div> | |
1.1 | 78 | #end | |
2.1 | 79 | #macro(displayStoreItems) | |
8.1 | 80 | #getStoreExtensions() | |
2.1 | 81 | {{html clean="false"}} | |
82 | <div class="bottom"> | ||
83 | <h2>The best extensions to enhance your wiki</h2> | ||
10.2 | 84 | <div class="list-product"> | |
2.1 | 85 | #foreach ($item in $results) | |
12.1 | 86 | ## Show 3 results per row. | |
10.2 | 87 | #if ($foreach.index % 3 == 0) | |
12.1 | 88 | ## Start a new row. | |
10.2 | 89 | <div class="row"> | |
90 | #end | ||
2.1 | 91 | #displayStoreItem($item) | |
12.1 | 92 | #if ($foreach.index % 3 == 2) | |
93 | ## Close the open row. | ||
94 | </div> | ||
95 | #end | ||
2.1 | 96 | #end | |
11.1 | 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 | ||
2.1 | 101 | </div> | |
102 | </div> | ||
103 | {{/html}} | ||
1.1 | 104 | #end | |
8.1 | 105 | #macro(getStoreExtensions) | |
12.2 | 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'") | ||
8.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 | ||
1.1 | 111 | {{/velocity}} |