Wiki source code of Add Extensions
Last modified by superadmin on 2022/05/03 16:48
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{velocity output="false"}} | ||
| 2 | ## NOTE: We don't use #template because it currently registers the Velocity macros in a different namespace which makes | ||
| 3 | ## them unavailable in the current wiki page or the current template. We also tried #parse but it "randomly" fails to | ||
| 4 | ## register the Velocity macros from the parsed template. The only solution we found is to use #evaluate with #include | ||
| 5 | ## but unfortunately this doesn't allow the template to be overridden from the skin. | ||
| 6 | #evaluate("#include('extension.vm')") | ||
| 7 | {{/velocity}} | ||
| 8 | |||
| 9 | {{velocity}} | ||
| 10 | ## HTML cleaner messes up the content of the legend tag. | ||
| 11 | {{html clean="false"}} | ||
| 12 | #if ($isAjaxRequest) | ||
| 13 | #handleExtensionRequest() | ||
| 14 | #else | ||
| 15 | <div class="full column"> | ||
| 16 | #displayExtensionSearchBar() | ||
| 17 | |||
| 18 | #if ($request.extensionId && $request.extensionVersion) | ||
| 19 | ## Advanced search. | ||
| 20 | #handleExtensionRequest() | ||
| 21 | #else | ||
| 22 | ## Simple search. | ||
| 23 | #set ($noResultsMessageKey = 'extensions.search.noResults') | ||
| 24 | #set ($paginationParams = {}) | ||
| 25 | ## Dump whitespace generated by the pagination macro | ||
| 26 | #set ($discard = "#paginationPrepareParams($paginationParams)") | ||
| 27 | #set ($repository = $extensionManager) | ||
| 28 | #if ($request.repo) | ||
| 29 | #set ($selectedRepositoryId = $request.repo) | ||
| 30 | #end | ||
| 31 | #if ("$!selectedRepositoryId" != '') | ||
| 32 | #set ($repository = $extensionManager.getRepository($selectedRepositoryId)) | ||
| 33 | #if ("$!request.search" == '') | ||
| 34 | ## Fetch extensions from known repositories. | ||
| 35 | #if ($selectedRepositoryId == 'core') | ||
| 36 | #set($extensions = $services.extension.core.getCoreExtensions()) | ||
| 37 | #elseif ($selectedRepositoryId == 'installed') | ||
| 38 | #if ($xcontext.isMainWiki()) | ||
| 39 | #set($extensions = $services.extension.installed.getInstalledExtensions()) | ||
| 40 | #else | ||
| 41 | #set($extensions = $services.extension.installed.getInstalledExtensions($extensionNamespace)) | ||
| 42 | #end | ||
| 43 | #elseif ($selectedRepositoryId == 'local') | ||
| 44 | #set($extensions = $services.extension.local.getLocalExtensions()) | ||
| 45 | #end | ||
| 46 | #if ($extensions) | ||
| 47 | #set ($totalHits = $extensions.size()) | ||
| 48 | #if ($totalHits == 0) | ||
| 49 | #set ($noResultsMessageKey = "extensions.search.repository.${selectedRepositoryId}.empty") | ||
| 50 | #end | ||
| 51 | ## All extensions from the specified repository have been fetched. We need to display only the current page. | ||
| 52 | #set ($extensions = $extensions.subList($paginationParams.firstItem, $mathtool.min($extensions.size(), $mathtool.add($paginationParams.firstItem, $paginationParams.itemsPerPage)))) | ||
| 53 | #end | ||
| 54 | #end | ||
| 55 | #end | ||
| 56 | #if (!$extensions) | ||
| 57 | #if ($selectedRepositoryId == 'installed' && !$xcontext.isMainWiki()) | ||
| 58 | ## When searching for installed extensions we need to take the namespace into account. | ||
| 59 | #set ($extensions = $services.extension.installed.repository.searchInstalledExtensions("$!request.search", | ||
| 60 | $extensionNamespace, $paginationParams.firstItem, $paginationParams.itemsPerPage)) | ||
| 61 | #else | ||
| 62 | #set ($extensions = $repository.search("$!request.search", $paginationParams.firstItem, $paginationParams.itemsPerPage)) | ||
| 63 | #end | ||
| 64 | #set ($totalHits = $extensions.totalHits) | ||
| 65 | #end | ||
| 66 | #if (!$extensions.iterator().hasNext()) | ||
| 67 | <div class="box infomessage">$services.localization.render($noResultsMessageKey, ["<em>$!escapetool.xml($request.search)</em>"])</div> | ||
| 68 | #else | ||
| 69 | #if ($totalHits && $totalHits > $paginationParams.itemsPerPage) | ||
| 70 | #set ($hasPagination = true) | ||
| 71 | #set ($paginationParams.totalItems = $totalHits) | ||
| 72 | #set ($paginationParams.url = $doc.getURL($xcontext.action, $request.getQueryString().replaceAll('(^|&)firstIndex=[^&]++&?', '$1'))) | ||
| 73 | #pagination($paginationParams) | ||
| 74 | #end | ||
| 75 | #foreach($extension in $extensions) | ||
| 76 | #displayExtension($extension) | ||
| 77 | #end | ||
| 78 | #if ($hasPagination) | ||
| 79 | #set ($discard = $paginationParams.put('position', 'bottom')) | ||
| 80 | #pagination($paginationParams) | ||
| 81 | #end | ||
| 82 | #end | ||
| 83 | #end | ||
| 84 | </div> | ||
| 85 | #end | ||
| 86 | {{/html}} | ||
| 87 | {{/velocity}} |