Версия 1.1 от superadmin на 2020/10/06 10:51

Последние авторы
1 {{template name="extension.vm" output="false"/}}
2
3 {{velocity}}
4 ## HTML cleaner messes up the content of the legend tag.
5 {{html clean="false"}}
6 #if ($isAjaxRequest)
7 #handleExtensionRequest()
8 #else
9 <div class="full column">
10 #displayExtensionSearchBar()
11
12 #if ($request.extensionId && $request.extensionVersion)
13 ## Advanced search.
14 #handleExtensionRequest()
15 #else
16 ## Simple search.
17 #set ($noResultsMessageKey = 'extensions.search.noResults')
18 #set ($paginationParams = {})
19 ## Dump whitespace generated by the pagination macro
20 #set ($discard = "#paginationPrepareParams($paginationParams)")
21 #set ($repository = $extensionManager)
22 #if ($request.repo)
23 #set ($selectedRepositoryId = $request.repo)
24 #elseif (!$selectedRepositoryId)
25 #set ($selectedRepositoryId = 'recommended')
26 #end
27 #if ("$!selectedRepositoryId" != '')
28 #set ($repository = $extensionManager.getRepository($selectedRepositoryId))
29 #if ("$!request.search" == '')
30 ## Fetch extensions from known repositories.
31 #if ($selectedRepositoryId == 'core')
32 #set($extensions = $services.extension.core.getCoreExtensions())
33 #elseif ($selectedRepositoryId == 'installed')
34 #if ($xcontext.isMainWiki())
35 #set($extensions = $services.extension.installed.getInstalledExtensions())
36 #else
37 #set($extensions = $services.extension.installed.getInstalledExtensions($extensionNamespace))
38 #end
39 #elseif ($selectedRepositoryId == 'local')
40 #set($extensions = $services.extension.local.getLocalExtensions())
41 #end
42 #if ($extensions)
43 #set ($totalHits = $extensions.size())
44 #if ($totalHits == 0)
45 #set ($noResultsMessageKey = "extensions.search.repository.${selectedRepositoryId}.empty")
46 #end
47 ## All extensions from the specified repository have been fetched. We need to display only the current page.
48 #set ($extensions = $extensions.subList($paginationParams.firstItem, $mathtool.min($extensions.size(), $mathtool.add($paginationParams.firstItem, $paginationParams.itemsPerPage))))
49 #end
50 #end
51 #end
52 #if (!$extensions)
53 #set($extensionQuery = $services.extension.newQuery("$!request.search"))
54 #set($void = $extensionQuery.setOffset($paginationParams.firstItem))
55 #set($void = $extensionQuery.setLimit($paginationParams.itemsPerPage))
56 #if ($selectedRepositoryId == 'installed')
57 #if ($xcontext.isMainWiki())
58 #set ($extensions = $services.extension.installed.repository.searchInstalledExtensions($extensionQuery))
59 #else
60 ## When searching for installed extensions in a subwiki we need to take the namespace into account.
61 #set ($extensions = $services.extension.installed.repository.searchInstalledExtensions($extensionNamespace, $extensionQuery))
62 #end
63 #else
64 #set ($extensions = $repository.search("$!request.search", $paginationParams.firstItem, $paginationParams.itemsPerPage))
65 #end
66 #set ($totalHits = $extensions.totalHits)
67 #end
68 #if ($selectedRepositoryId == 'recommended')
69 #if (!$extensions.iterator().hasNext())
70 <div class="box warningmessage">$services.localization.render('extensions.search.repository.recommended.fallback', ["<em>$!escapetool.xml($request.search)</em>", "<strong>$services.localization.render('extensions.search.repository.remote.label')</strong>"])</div>
71 ## Fallback to all remote extensions
72 #set ($repository = $extensionManager)
73 #set($selectedRepositoryId = '')
74 #set ($extensions = $repository.search("$!request.search", $paginationParams.firstItem, $paginationParams.itemsPerPage))
75 #else
76 <div class="box infomessage">$services.localization.render('extensions.search.repository.recommended.disclaimer')
77 <form action="${xwiki.relativeRequestURL}">
78 #if ($request.section)
79 <input type="hidden" name="section" value="${escapetool.xml($request.section)}" />
80 #end
81 <input type="hidden" name="search" value="$!{escapetool.xml($request.search)}" />
82 <input type="hidden" name="repo" value="" />
83 <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.repository.remote.label'))}" class="button secondary"/>
84 </form>
85 </div>
86 #end
87 #end
88 #if (!$extensions.iterator().hasNext())
89 <div class="box infomessage">$services.localization.render($noResultsMessageKey, ["<em>$!escapetool.xml($request.search)</em>"])</div>
90 #else
91 #if ($totalHits && $totalHits > $paginationParams.itemsPerPage)
92 #set ($hasPagination = true)
93 #set ($paginationParams.totalItems = $totalHits)
94 #set ($paginationParams.url = $doc.getURL($xcontext.action, $request.getQueryString().replaceAll('(^|&)firstIndex=[^&]++&?', '$1')))
95 #pagination($paginationParams)
96 #end
97 #foreach($extension in $extensions)
98 #displayExtension($extension)
99 #end
100 #if ($hasPagination)
101 #set ($discard = $paginationParams.put('position', 'bottom'))
102 #pagination($paginationParams)
103 #end
104 #end
105 #end
106 </div>
107 #end
108 {{/html}}
109 {{/velocity}}