]> source.dussan.org Git - archiva.git/blob
14504c4a9bf175d01048d4e1fbd0bf96068fcdf5
[archiva.git] /
1 <!--
2   ~ Licensed to the Apache Software Foundation (ASF) under one
3   ~ or more contributor license agreements.  See the NOTICE file
4   ~ distributed with this work for additional information
5   ~ regarding copyright ownership.  The ASF licenses this file
6   ~ to you under the Apache License, Version 2.0 (the
7   ~ "License"); you may not use this file except in compliance
8   ~ with the License.  You may obtain a copy of the License at
9   ~
10   ~   http://www.apache.org/licenses/LICENSE-2.0
11   ~
12   ~ Unless required by applicable law or agreed to in writing,
13   ~ software distributed under the License is distributed on an
14   ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   ~ KIND, either express or implied.  See the License for the
16   ~ specific language governing permissions and limitations
17   ~ under the License.
18 -->
19 <script id="legacy-artifact-path-main" type="text/html">
20  <div id="legacy-artifact-path-screen">
21      <div class="page-header">
22        <h2>${$.i18n.prop('legacy-artifact-paths.list')}</h2>
23      </div>
24
25      <ul id="legacy-artifact-paths-view-tabs" class="nav nav-tabs">
26        <li id="legacy-artifact-paths-view-tabs-li-grid">
27          <a data-toggle="tab" href="#legacy-artifact-paths-view" id="legacy-artifact-paths-view-tabs-a-grid">${$.i18n.prop('legacy-artifact-paths.grid.tab.title')}</a>
28        </li>
29        <li id="legacy-artifact-paths-view-tabs-li-edit">
30          <a data-toggle="tab" href="#legacy-artifact-paths-edit">${$.i18n.prop('add')}</a>
31        </li>
32      </ul>
33      <div id="legacy-artifact-paths-view-tabs-content" class="tab-content">
34        <div id="legacy-artifact-paths-view" class="tab-pane">
35            <table class="table table-striped table-bordered" id="legacy-artifact-paths-table"
36                   data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko-legacy-artifact-paths-grid',pageLinksId:'legacy-artifact-pathsPagination'">
37            </table>
38            <div id="legacy-artifact-pathsPagination"></div>
39        </div>
40        <div id="legacy-artifact-paths-edit" class="tab-pane" data-bind='template: {name:"legacy-artifact-paths-edit-tmpl"}'></div>
41      </div>
42  </div>
43 </script>
44
45 <script id='ko-legacy-artifact-paths-grid' type='text/x-jquery-tmpl'>
46     <thead>
47     <tr>
48         {{each(i, columnDefinition) columns}}
49         <th>${ columnDefinition.headerText }</th>
50         {{/each}}
51         <th>${$.i18n.prop('delete')}</th>
52     </tr>
53     </thead>
54     <tbody>
55     {{each(i, row) itemsOnCurrentPage()}}
56       <tr data-bind="css:{ 'modified': row.modified()}">
57         {{each(j, columnDefinition) columns}}
58         {{var val = (typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText])}}
59           <td>
60               ${val}
61           </td>
62         {{/each}}
63           <td>
64             <a href="#" data-bind="click: function(){ removeLegacyArtifactPath(row) }">
65               <img src="images/edit-cut.png" title="${$.i18n.prop('delete')}"/>
66             </a>
67           </td>
68     </tr>
69     {{/each}}
70     </tbody>
71
72 </script>
73
74 <script id="legacy-artifact-paths-edit-tmpl" type="text/html">
75     <form id="legacy-artifact-paths-edit-form" class="well form-horizontal">
76       <fieldset id="legacy-artifact-paths-edit-fieldset">
77         <div class="control-group">
78           <label class="control-label" for="groupId">${$.i18n.prop('legacy-artifact-paths.groupId')}</label>
79           <div class="controls">
80             <input type="text" class="xlarge required" id="groupId" name="groupId" size="8"
81                    data-bind="value: legacyArtifactPath.groupId"/>
82           </div>
83         </div>
84         <div class="control-group">
85           <label class="control-label" for="artifactId">${$.i18n.prop('legacy-artifact-paths.artifactId')}</label>
86           <div class="controls">
87             <input type="text" class="xlarge required" id="artifactId" name="artifactId" size="8"
88                    data-bind="value: legacyArtifactPath.artifactId"/>
89           </div>
90         </div>
91         <div class="control-group">
92           <label class="control-label" for="version">${$.i18n.prop('legacy-artifact-paths.version')}</label>
93           <div class="controls">
94             <input type="text" class="xlarge required" id="version" name="version" size="8"
95                    data-bind="value: legacyArtifactPath.version"/>
96           </div>
97         </div>
98         <div class="control-group">
99           <label class="control-label" for="classifier">${$.i18n.prop('legacy-artifact-paths.classifier')}</label>
100           <div class="controls">
101             <input type="text" class="xlarge" id="classifier" name="classifier" size="8"
102                    data-bind="value: legacyArtifactPath.classifier"/>
103           </div>
104         </div>
105         <div class="control-group">
106           <label class="control-label" for="type">${$.i18n.prop('legacy-artifact-paths.type')}</label>
107           <div class="controls">
108             <input type="text" class="xlarge required" id="type" name="type" size="8"
109                    data-bind="value: legacyArtifactPath.type"/>
110           </div>
111         </div>
112         <div class="control-group">
113           <label class="control-label" for="path">${$.i18n.prop('legacy-artifact-paths.path')}</label>
114           <div class="controls">
115             <input type="text" class="xlarge required" id="path" name="path" size="8"
116                    data-bind="value: legacyArtifactPath.path"/>
117           </div>
118         </div>
119         <div class="control-group">
120           <label class="control-label" for="artifact">${$.i18n.prop('legacy-artifact-paths.artifact')}</label>
121           <div class="controls">
122             <span title="calculated from values" class="uneditable-input"
123                   id="artifact" data-bind="text: legacyArtifactPath.artifact"></span>
124           </div>
125         </div>
126
127       </fieldset>
128       <button id="network-proxy-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
129       <button id="network-proxy-btn-cancel" data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
130       <button id="network-proxy-btn-calculate-path" data-bind="click: calculatePath" class="btn btn-success">${$.i18n.prop('legacy-artifact-paths.calculatePath')}</button>
131     </form>
132 </script>
133
134 <script id="legacy-artifact-path-delete-warning-tmpl" type="text/html">
135     <div>
136       <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
137     </div>
138 </script>
139
140 <script id="repository-scanning-main" type="text/html">
141   <div id="repository-scanning-screen">
142     <div class="page-header">
143       <h2>${$.i18n.prop('repository-scanning.head')}</h2>
144     </div>
145   </div>
146
147   <ul id="repositories-tabs" class="nav nav-tabs">
148     <li class="active">
149       <a data-toggle="tab" href="#file-types-content">${$.i18n.prop('repository-scanning.file-types.head')}</a>
150     </li>
151     <li>
152       <a data-toggle="tab" href="#consumers-content">${$.i18n.prop('repository-scanning.consumers.head')}</a>
153     </li>
154   </ul>
155
156   <div class="tab-content">
157     <div id="file-types-content" class="tab-pane active" data-bind='template: {name:"file-types-tmpl"}'>
158     </div>
159     <div id="consumers-content" class="tab-pane">
160       <div id="consumers-known-content" data-bind='template: {name:"consumers-known-content-tmpl"}'></div>
161       <div id="consumers-invalid-content" data-bind='template: {name:"consumers-invalid-content-tmpl"}'></div>
162     </div>
163   </div>
164
165 </script>
166
167 <script id="file-types-tmpl" type="text/html">
168 <div class="accordion" id="accordion-file-types">
169   <div class="span4">
170   {{each(i, fileType) fileTypes}}
171   <div class="accordion-group">
172     <div class="accordion-heading">
173       <a class="accordion-toggle" href="#collapse-pattern-${fileType.id}"
174          data-parent="#accordion-file-types" data-toggle="collapse">${fileType.id}&nbsp;<i class="icon-resize-vertical"/></a>
175     </div>
176     <div id="collapse-pattern-${fileType.id}" class="accordion-body collapse">
177     <table class="table table-condensed">
178       {{each(j,pattern) fileType.patterns}}
179       <tr>
180         <td>${pattern}</td>
181         <td>
182           <a href="#" data-bind="click: function(){ removeFileTypePattern(fileType.id(),pattern) }">
183             <img src="images/edit-cut-22-22.png" title="${$.i18n.prop('delete')}"/>
184           </a>
185         </td>
186       </tr>
187       {{/each}}
188       <tr>
189         <td><input type="text" id="pattern-${fileType.id}"/></td>
190         <td>
191           <a href="#" data-bind="click: function(){addFileTypePattern(fileType.id())}">
192             <img src="images/list-add-22-22.png" title="${$.i18n.prop('add')}"/>
193           </a>
194         </td>
195       </tr>
196     </table>
197     </div>
198   </div>
199   {{/each}}
200   </div>
201 </div>
202 </script>
203
204 <script id="consumers-known-content-tmpl" type="text/html">
205   <div class="page-header">
206     <h4>${$.i18n.prop('repository-scanning.consumers.know-content.head')}</h4>
207   </div>
208   <table class="table table-condensed">
209     <thead>
210       <tr>
211         <th>${$.i18n.prop('repository-scanning.consumers.grid.enabled')}</th>
212         <th>${$.i18n.prop('repository-scanning.consumers.grid.id')}</th>
213         <th>${$.i18n.prop('repository-scanning.consumers.grid.description')}</th>
214       </tr>
215     </thead>
216     <tbody>
217       {{each(i,knownAdminRepositoryConsumer) knownAdminRepositoryConsumers}}
218       <tr>
219         {{if knownAdminRepositoryConsumer.enabled()==true}}
220           <td>
221             <a href="#" data-bind="click: function(){ disableKnowContentConsumer(knownAdminRepositoryConsumer) }">
222               <img src="images/weather-clear-22-22.png"/>
223             </a>
224           </td>
225           {{else}}
226           <td>
227             <a href="#" data-bind="click: function(){ enableKnowContentConsumer(knownAdminRepositoryConsumer) }">
228               <img src="images/dialog-error-22-22.png"/>
229             </a>
230           </td>
231         {{/if}}
232
233         <td>${knownAdminRepositoryConsumer.id}</td>
234         <td>${knownAdminRepositoryConsumer.description}</td>
235       </tr>
236       {{/each}}
237     </tbody>
238   </table>
239 </script>
240
241 <script id="consumers-invalid-content-tmpl" type="text/html">
242   <div class="page-header">
243     <h4>${$.i18n.prop('repository-scanning.consumers.invalid-content.head')}</h4>
244   </div>
245   <table class="table table-condensed">
246     <thead>
247       <tr>
248         <th>${$.i18n.prop('repository-scanning.consumers.grid.enabled')}</th>
249         <th>${$.i18n.prop('repository-scanning.consumers.grid.id')}</th>
250         <th>${$.i18n.prop('repository-scanning.consumers.grid.description')}</th>
251       </tr>
252     </thead>
253     <tbody>
254       {{each(i,invalidAdminRepositoryConsumer) invalidAdminRepositoryConsumers}}
255       <tr>
256         {{if invalidAdminRepositoryConsumer.enabled()==true}}
257           <td>
258             <a href="#" data-bind="click: function(){ disableInvalidContentConsumer(invalidAdminRepositoryConsumer) }">
259               <img src="images/weather-clear-22-22.png"/>
260             </a>
261           </td>
262           {{else}}
263           <td>
264             <a href="#" data-bind="click: function(){ enableInvalidContentConsumer(invalidAdminRepositoryConsumer) }">
265               <img src="images/dialog-error-22-22.png"/>
266             </a>
267           </td>
268         {{/if}}
269         <td>${invalidAdminRepositoryConsumer.id}</td>
270         <td>${invalidAdminRepositoryConsumer.description}</td>
271       </tr>
272       {{/each}}
273     </tbody>
274   </table>
275 </script>
276
277 <script id="network-configuration-screen" type="text/html">
278   <div class="page-header">
279     <h3>${$.i18n.prop('network-configuration.header')}</h3>
280   </div>
281   <div id="network-configuration-form" data-bind='template: {name:"network-configuration-form-tmpl"}'></div>
282 </script>
283
284 <script id="network-configuration-form-tmpl" type="text/html">
285     <form id="network-proxy-edit-form" class="well form-horizontal">
286       <fieldset id="network-proxy-edit-fieldset">
287         <div class="control-group">
288           <label class="control-label" for="maxTotal">${$.i18n.prop('network-configuration.maxTotal')}</label>
289           <div class="controls">
290             <input type="text" class="xlarge required digits" id="maxTotal" name="maxTotal" size="8"
291                    data-bind="value: networkConfiguration().maxTotal"/>
292           </div>
293         </div>
294         <div class="control-group">
295           <label class="control-label" for="maxTotal">${$.i18n.prop('network-configuration.maxTotalPerHost')}</label>
296           <div class="controls">
297             <input type="text" class="xlarge required digits" id="maxTotalPerHost" name="maxTotalPerHost" size="8"
298                    data-bind="value: networkConfiguration().maxTotalPerHost"/>
299           </div>
300         </div>
301         <div class="control-group">
302           <label class="control-label" for="usePooling">${$.i18n.prop('network-configuration.usePooling')}</label>
303           <div class="controls">
304             <input type="checkbox" id="usePooling" name="usePooling" data-bind="checked: networkConfiguration().usePooling"/>
305           </div>
306         </div>
307       </fieldset>
308       <button id="network-configuration-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
309     </form>
310 </script>
311
312 <script id="system-status-main" type="text/html">
313
314   <div class="page-header">
315     <h3>${$.i18n.prop('system-status.header.main')}&nbsp;<a href="#" onclick="refreshSystemStatus()"><img src="images/view-refresh-22-22.png"/></a></h3>
316   </div>
317   <div class="page-header">
318     <h4>${$.i18n.prop('system-status.header.queues')}</h4>
319   </div>
320   <div id="status_queues">
321     <img src="images/small-spinner.gif"/>
322   </div>
323
324   <div class="page-header">
325     <h4>${$.i18n.prop('system-status.header.scanning')}&nbsp;<a href="#" onclick="displayScanningStats()"><img src="images/view-refresh.png"/></a></h4>
326   </div>
327   <div id="status_scanning">
328     <img src="images/small-spinner.gif"/>
329   </div>
330
331   <div class="page-header">
332     <h4>${$.i18n.prop('system-status.header.caches')}&nbsp;<a href="#" onclick="displayCacheEntries()"><img src="images/view-refresh.png"/></a></h4>
333   </div>
334   <div id="status_caches">
335       <img src="images/small-spinner.gif"/>
336   </div>
337
338   <div class="page-header">
339     <h4>${$.i18n.prop('system-status.header.memory')}&nbsp;<a href="#" onclick="displayMemoryUsage()"><img src="images/view-refresh.png"/></a></h4>
340   </div>
341   <div id="status_memory_info">
342     <img src="images/small-spinner.gif"/>
343   </div>
344
345   <div class="page-header">
346     <h4>${$.i18n.prop('system-status.header.current.time')}</h4>
347   </div>
348   <div id="status_current_time">
349     <img src="images/small-spinner.gif"/>
350   </div>
351
352   <div class="page-header">
353     <h4>${$.i18n.prop('system-status.header.version.info')}</h4>
354   </div>
355   <div id="status_version_info">
356     <img src="images/small-spinner.gif"/>
357   </div>
358
359 </script>
360
361 <script id="status_caches_tmpl" type="text/html">
362   <a href="#" class="btn btn-warning" onclick="flushAllCaches()">
363     ${$.i18n.prop('system-status.caches.flushAll')}
364   </a>
365   <table class="table table-condensed">
366     <thead>
367       <tr>
368         <th>${$.i18n.prop('system-status.caches.grid.header.key')}</th>
369         <th>${$.i18n.prop('system-status.caches.grid.header.size')}</th>
370         <th>${$.i18n.prop('system-status.caches.grid.header.cacheHits')}</th>
371         <th>${$.i18n.prop('system-status.caches.grid.header.cacheMiss')}</th>
372         <th>${$.i18n.prop('system-status.caches.grid.header.cacheHitRate')}</th>
373         <th>${$.i18n.prop('system-status.caches.grid.header.flush')}</th>
374       </tr>
375     </thead>
376     <tbody>
377     {{each(i,cacheEntry) cacheEntries}}
378       <tr>
379         <td>${cacheEntry.key}</td>
380         <td>${cacheEntry.size}</td>
381         <td>${cacheEntry.cacheHits}</td>
382         <td>${cacheEntry.cacheMiss}</td>
383         <td>${cacheEntry.cacheHitRate}</td>
384         <td>
385           <a href="#" onclick="flushCache('${cacheEntry.key}')">
386             {{if  cacheEntry.size > 0 }}
387               <img src="images/user-trash-full.png"/>
388             {{else}}
389               <img src="images/user-trash.png"/>
390             {{/if}}
391           </a>
392         </td>
393       </tr>
394     {{/each}}
395     </tbody>
396   </table>
397 </script>
398
399
400 <script id="status_queues_tmpl" type="text/html">
401   <table class="table table-condensed">
402     <thead>
403       <tr>
404         <th>${$.i18n.prop('system-status.queues.grid.header.key')}</th>
405         <th>${$.i18n.prop('system-status.queues.grid.header.size')}</th>
406       </tr>
407     </thead>
408     <tbody>
409     {{each(i,queueEntry) queueEntries}}
410       <tr>
411         <td>${queueEntry.key}</td>
412         <td>${queueEntry.entriesNumber}</td>
413       </tr>
414     {{/each}}
415     </tbody>
416   </table>
417 </script>
418
419 <script id="status_scanning_tmpl" type="text/html">
420   {{if repositoryScannerStatisticsList.length == 0}}
421     <h5>No scans in progress.</h5>
422   {{else}}
423     <table class="table table-condensed">
424       <thead>
425         <tr>
426           <th>${$.i18n.prop('system-status.scanning.grid.header.repository')}</th>
427           <th>${$.i18n.prop('system-status.scanning.grid.header.files.processed')}</th>
428           <th>${$.i18n.prop('system-status.scanning.grid.header.files.new')}</th>
429           <th>${$.i18n.prop('system-status.scanning.grid.header.stats')}</th>
430         </tr>
431       </thead>
432       <tbody>
433       {{each(i,repositoryScannerStatistics) repositoryScannerStatisticsList}}
434         <tr>
435           <td>${repositoryScannerStatistics.managedRepository.name()}</td>
436           <td>${repositoryScannerStatistics.totalFileCount}</td>
437           <td>${repositoryScannerStatistics.newFileCount}</td>
438           <td>
439             <blockquote>
440             <table>
441               <thead>
442                 <tr>
443                   <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.name')}</th>
444                   <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.total')}</th>
445                   <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.average')} ms</th>
446                   <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.invocations.time')}</th>
447                 </tr>
448               </thead>
449               <tbody>
450                 {{each(j,consumerScanningStatistics) repositoryScannerStatistics.consumerScanningStatisticsList}}
451                 <tr>
452                   <td>${consumerScanningStatistics.consumerKey}</td>
453                   <td>${consumerScanningStatistics.count}</td>
454                   <td>${consumerScanningStatistics.average}ms</td>
455                   <td>${consumerScanningStatistics.time}ms</td>
456                 </tr>
457                 {{/each}}
458               </tbody>
459             </table>
460             </blockquote>
461           </td>
462         </tr>
463       {{/each}}
464       </tbody>
465     </table>
466   {{/if}}
467 </script>
468
469 <script id="changeAppearance" type="text/html">
470     <div class="page-header">
471         <h2>${$.i18n.prop('appearance-configuration.title-page')}</h2>
472     </div>
473
474     <h2>${$.i18n.prop('appearance-configuration.organisation-details')}</h2>
475
476     <p>
477         ${$.i18n.prop('apperance-configuration.details-description')}
478     </p>
479     
480     <form id="appearance-configuration-form-id" class="well form-horizontal">
481         <fieldset id="appearance-configuration-fielset-id">
482             <div class="control-group">
483                 <label class="control-label" for="name">${$.i18n.prop('appearance-configuration.name-label')}</label>
484                 <div class="controls">
485                     <input type="text" class="xlarge required" id="name" name="name" size="50"
486                            data-bind="value: organisationInformation().name"/>
487                 </div>
488             </div>
489             <div class="control-group">
490                 <label class="control-label" for="name">${$.i18n.prop('appearance-configuration.url-label')}</label>
491                 <div class="controls">
492                     <input type="text" class="xlarge required" id="url" name="url" size="50"
493                            data-bind="value: organisationInformation().url"/>
494                 </div>
495             </div>
496             <div class="control-group">
497                 <label class="control-label"
498                        for="name">${$.i18n.prop('appearance-configuration.logoLocation-label')}</label>
499                 <div class="controls">
500                     <input type="text" class="xlarge" id="logoLocation" name="logoLocation" size="50"
501                            data-bind="value: organisationInformation().logoLocation"/>
502                 </div>
503             </div>
504         </fieldset>
505         <button id="appearance-configuration-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
506     </form>
507 </script>
508
509