Изменения документа Расширения
Редактировал(а) Андрей Ганьков 2025/07/06 04:58
От версии 1.1
отредактировано superadmin
на 2020/10/06 10:51
на 2020/10/06 10:51
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-extension-ui/12.8]
К версии 3.1
отредактировано Андрей Ганьков
на 2021/05/26 11:10
на 2021/05/26 11:10
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-extension-ui/13.3]
Сводка
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. superadmin1 +xwiki:XWiki.gav - Содержимое
-
... ... @@ -13,17 +13,14 @@ 13 13 ## Advanced search. 14 14 #handleExtensionRequest() 15 15 #else 16 + #if ($request.index_start) 17 + #set ($void = $extensionManager.getRepository('index').index("wiki:${xcontext.database}")) 18 + #end 16 16 ## Simple search. 17 17 #set ($noResultsMessageKey = 'extensions.search.noResults') 18 18 #set ($paginationParams = {}) 19 19 ## Dump whitespace generated by the pagination macro 20 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 27 #if ("$!selectedRepositoryId" != '') 28 28 #set ($repository = $extensionManager.getRepository($selectedRepositoryId)) 29 29 #if ("$!request.search" == '') ... ... @@ -50,7 +50,7 @@ 50 50 #end 51 51 #end 52 52 #if (!$extensions) 53 - #set($extensionQuery = $services.extension.newQuery("$!request.search")) 50 + #set($extensionQuery = $services.extension.index.newQuery("$!request.search")) 54 54 #set($void = $extensionQuery.setOffset($paginationParams.firstItem)) 55 55 #set($void = $extensionQuery.setLimit($paginationParams.itemsPerPage)) 56 56 #if ($selectedRepositoryId == 'installed') ... ... @@ -60,31 +60,57 @@ 60 60 ## When searching for installed extensions in a subwiki we need to take the namespace into account. 61 61 #set ($extensions = $services.extension.installed.repository.searchInstalledExtensions($extensionNamespace, $extensionQuery)) 62 62 #end 60 + #elseif ($repository) 61 + #set ($extensions = $repository.search($extensionQuery)) 63 63 #else 64 - #set ($extensions = $repository.search("$!request.search", $paginationParams.firstItem, $paginationParams.itemsPerPage)) 63 + #if ($recommended) 64 + #set($void = $extensionQuery.addFilter('recommended', true, 'EQUAL')) 65 + #end 66 + #if ($indexed) 67 + #set ($repository = $extensionManager.index.repository) 68 + #if ($compatible) 69 + #set ($void = $extensionQuery.setCompatible(true, '', "wiki:$xcontext.database")) 70 + #end 71 + #else 72 + #set ($repository = $extensionManager) 73 + #end 74 + #set ($extensions = $repository.search($extensionQuery)) 65 65 #end 66 66 #set ($totalHits = $extensions.totalHits) 67 67 #end 68 - #if ($selectedRepositoryId == 'recommended') 78 + 79 + #if ($recommended) 69 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 = '') 81 + <div class="box warningmessage">$services.localization.render('extensions.search.recommended.fallback', ["<em>$!escapetool.xml($request.search)</em>"])</div> 82 + ## Search again with the recommended filter 74 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') 84 + #set ($totalHits = $extensions.totalHits) 85 + #set ($recommended = false) 86 + #elseif (!$customExtensionFilter) 87 + <div class="box infomessage"> 88 + #if ($compatible) 89 + $services.localization.render('extensions.search.compatiblerecommended.disclaimer') 90 + #else 91 + $services.localization.render('extensions.search.recommended.disclaimer') 92 + #end 77 77 <form action="${xwiki.relativeRequestURL}"> 78 78 #if ($request.section) 79 79 <input type="hidden" name="section" value="${escapetool.xml($request.section)}" /> 80 80 #end 81 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"/> 98 + <input type="hidden" name="recommended" value="false" /> 99 + <input type="hidden" name="indexed" value="$indexed" /> 100 + <input type="hidden" name="compatible" value="$compatible" /> 101 + #if ($compatible) 102 + <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.compatible.all.label'))}" class="btn btn-default"/> 103 + #else 104 + <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.all.label'))}" class="btn btn-default"/> 105 + #end 84 84 </form> 85 85 </div> 86 86 #end 87 87 #end 110 + 88 88 #if (!$extensions.iterator().hasNext()) 89 89 <div class="box infomessage">$services.localization.render($noResultsMessageKey, ["<em>$!escapetool.xml($request.search)</em>"])</div> 90 90 #else ... ... @@ -102,6 +102,42 @@ 102 102 #pagination($paginationParams) 103 103 #end 104 104 #end 128 + 129 + #if ($indexed) 130 + #set ($indexJobStatus = $repository.getStatus("wiki:${xcontext.database}")) 131 + #if ($indexJobStatus) 132 + <div class="box infomessage"> 133 + #if ($indexJobStatus.state != 'FINISHED') 134 + $escapetool.xml($services.localization.render('extensions.search.indexed.started', [$xwiki.formatDate($indexJobStatus.startDate)])) 135 + #set ($discard = $xwiki.jsfx.use('uicomponents/job/job.js', true)) 136 + #set ($jobStatusURL = $doc.getURL('get', $escapetool.url({ 137 + 'xpage': 'job_status_json', 138 + 'outputSyntax': 'plain', 139 + 'jobId': $indexJobStatus.request.id 140 + }))) 141 + <div class="xcontent job-status" data-url="$escapetool.xml($jobStatusURL)"> 142 + #displayJobProgressBar($indexJobStatus, true) 143 + </div> 144 + #else 145 + $escapetool.xml($services.localization.render('extensions.search.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) 146 + #end 147 + #else 148 + <div class="box warningmessage">$escapetool.xml($services.localization.render('extensions.search.indexed.nojob')) 149 + #end 150 + <form action="${xwiki.relativeRequestURL}"> 151 + #if ($request.section) 152 + <input type="hidden" name="section" value="${escapetool.xml($request.section)}" /> 153 + #end 154 + <input type="hidden" name="search" value="$!{escapetool.xml($request.search)}" /> 155 + <input type="hidden" name="recommended" value="$recommended" /> 156 + <input type="hidden" name="indexed" value="$indexed" /> 157 + <input type="hidden" name="compatible" value="$compatible" /> 158 + #if ($indexJobStatus.state != 'RUNNING') 159 + <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.indexed.reindex'))}" name="index_start" class="btn btn-default"/> 160 + #end 161 + </form> 162 + </div> 163 + #end 105 105 #end 106 106 </div> 107 107 #end