Изменения документа Расширения

Редактировал(а) Андрей Ганьков 2025/07/06 04:58

От версии 1.1
отредактировано superadmin
на 2020/10/06 10:51
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-extension-ui/12.8]
К версии 3.1
отредактировано Андрей Ганьков
на 2021/05/26 11:10
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-extension-ui/13.3]

Сводка

Подробности

Свойства страницы
Автор документа
... ... @@ -1,1 +1,1 @@
1 -XWiki.superadmin
1 +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