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
10 ~ http://www.apache.org/licenses/LICENSE-2.0
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
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>
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>
29 <li id="legacy-artifact-paths-view-tabs-li-edit">
30 <a data-toggle="tab" href="#legacy-artifact-paths-edit">${$.i18n.prop('add')}</a>
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'">
38 <div id="legacy-artifact-pathsPagination"></div>
40 <div id="legacy-artifact-paths-edit" class="tab-pane" data-bind='template: {name:"legacy-artifact-paths-edit-tmpl"}'></div>
45 <script id='ko-legacy-artifact-paths-grid' type='text/html'>
48 {{each(i, columnDefinition) columns}}
49 <th>${ columnDefinition.headerText }</th>
51 <th>${$.i18n.prop('delete')}</th>
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])}}
64 <a href="#" data-bind="click: function(){ removeLegacyArtifactPath(row) }">
65 <span class="btn btn-danger">
66 <i class="icon-trash icon-white"/>
76 <script id="legacy-artifact-paths-edit-tmpl" type="text/html">
77 <form id="legacy-artifact-paths-edit-form" class="well form-horizontal">
78 <fieldset id="legacy-artifact-paths-edit-fieldset">
79 <div class="control-group">
80 <label class="control-label" for="groupId">${$.i18n.prop('legacy-artifact-paths.groupId')}</label>
81 <div class="controls">
82 <input type="text" class="xlarge required" id="groupId" name="groupId" size="8"
83 data-bind="value: legacyArtifactPath.groupId"/>
86 <div class="control-group">
87 <label class="control-label" for="artifactId">${$.i18n.prop('legacy-artifact-paths.artifactId')}</label>
88 <div class="controls">
89 <input type="text" class="xlarge required" id="artifactId" name="artifactId" size="8"
90 data-bind="value: legacyArtifactPath.artifactId"/>
93 <div class="control-group">
94 <label class="control-label" for="version">${$.i18n.prop('legacy-artifact-paths.version')}</label>
95 <div class="controls">
96 <input type="text" class="xlarge required" id="version" name="version" size="8"
97 data-bind="value: legacyArtifactPath.version"/>
100 <div class="control-group">
101 <label class="control-label" for="classifier">${$.i18n.prop('legacy-artifact-paths.classifier')}</label>
102 <div class="controls">
103 <input type="text" class="xlarge" id="classifier" name="classifier" size="8"
104 data-bind="value: legacyArtifactPath.classifier"/>
107 <div class="control-group">
108 <label class="control-label" for="type">${$.i18n.prop('legacy-artifact-paths.type')}</label>
109 <div class="controls">
110 <input type="text" class="xlarge required" id="type" name="type" size="8"
111 data-bind="value: legacyArtifactPath.type"/>
114 <div class="control-group">
115 <label class="control-label" for="path">${$.i18n.prop('legacy-artifact-paths.path')}</label>
116 <div class="controls">
117 <input type="text" class="xlarge required" id="path" name="path" size="8"
118 data-bind="value: legacyArtifactPath.path"/>
121 <div class="control-group">
122 <label class="control-label" for="artifact">${$.i18n.prop('legacy-artifact-paths.artifact')}</label>
123 <div class="controls">
124 <span title="calculated from values" class="uneditable-input"
125 id="artifact" data-bind="text: legacyArtifactPath.artifact"></span>
130 <button id="network-proxy-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
131 <button id="network-proxy-btn-cancel" data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
132 <button id="network-proxy-btn-calculate-path" data-bind="click: calculatePath" class="btn btn-success">${$.i18n.prop('legacy-artifact-paths.calculatePath')}</button>
136 <script id="legacy-artifact-path-delete-warning-tmpl" type="text/html">
138 <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
142 <script id="repository-scanning-main" type="text/html">
143 <div id="repository-scanning-screen">
144 <div class="page-header">
145 <h2>${$.i18n.prop('repository-scanning.head')}</h2>
149 <ul id="repositories-tabs" class="nav nav-tabs">
151 <a data-toggle="tab" href="#file-types-content">${$.i18n.prop('repository-scanning.file-types.head')}</a>
154 <a data-toggle="tab" href="#consumers-content">${$.i18n.prop('repository-scanning.consumers.head')}</a>
158 <div class="tab-content">
159 <div id="file-types-content" class="tab-pane active" data-bind='template: {name:"file-types-tmpl"}'>
161 <div id="consumers-content" class="tab-pane">
162 <div id="consumers-known-content" data-bind='template: {name:"consumers-known-content-tmpl"}'></div>
163 <div id="consumers-invalid-content" data-bind='template: {name:"consumers-invalid-content-tmpl"}'></div>
169 <script id="file-types-tmpl" type="text/html">
170 <div class="accordion" id="accordion-file-types">
172 {{each(i, fileType) fileTypes}}
173 <div class="accordion-group">
174 <div class="accordion-heading">
175 <a class="accordion-toggle" href="#collapse-pattern-${fileType.id}"
176 data-parent="#accordion-file-types" data-toggle="collapse">${fileType.id} <i class="icon-resize-vertical"/></a>
178 <div id="collapse-pattern-${fileType.id}" class="accordion-body collapse">
179 <table class="table table-condensed">
180 {{each(j,pattern) fileType.patterns}}
184 <a href="#" data-bind="click: function(){ removeFileTypePattern(fileType.id(),pattern) }">
185 <span class="btn btn-danger">
186 <i class="icon-trash icon-white"/>
193 <td><input type="text" id="pattern-${fileType.id}"/></td>
195 <a href="#" data-bind="click: function(){addFileTypePattern(fileType.id())}">
196 <span class="btn btn-success">
197 <i class="icon-plus-sign icon-white"/>
210 <script id="consumers-known-content-tmpl" type="text/html">
211 <div class="page-header">
212 <h4>${$.i18n.prop('repository-scanning.consumers.know-content.head')}</h4>
214 <table class="table table-condensed">
217 <th>${$.i18n.prop('repository-scanning.consumers.grid.enabled')}</th>
218 <th>${$.i18n.prop('repository-scanning.consumers.grid.id')}</th>
219 <th>${$.i18n.prop('repository-scanning.consumers.grid.description')}</th>
223 {{each(i,knownAdminRepositoryConsumer) knownAdminRepositoryConsumers}}
225 {{if knownAdminRepositoryConsumer.enabled()==true}}
227 <a href="#" data-bind="click: function(){ disableKnowContentConsumer(knownAdminRepositoryConsumer) }">
228 <img src="images/weather-clear-22-22.png"/>
233 <a href="#" data-bind="click: function(){ enableKnowContentConsumer(knownAdminRepositoryConsumer) }">
234 <img src="images/dialog-error-22-22.png"/>
239 <td>${knownAdminRepositoryConsumer.id}</td>
240 <td>${knownAdminRepositoryConsumer.description}</td>
247 <script id="consumers-invalid-content-tmpl" type="text/html">
248 <div class="page-header">
249 <h4>${$.i18n.prop('repository-scanning.consumers.invalid-content.head')}</h4>
251 <table class="table table-condensed">
254 <th>${$.i18n.prop('repository-scanning.consumers.grid.enabled')}</th>
255 <th>${$.i18n.prop('repository-scanning.consumers.grid.id')}</th>
256 <th>${$.i18n.prop('repository-scanning.consumers.grid.description')}</th>
260 {{each(i,invalidAdminRepositoryConsumer) invalidAdminRepositoryConsumers}}
262 {{if invalidAdminRepositoryConsumer.enabled()==true}}
264 <a href="#" data-bind="click: function(){ disableInvalidContentConsumer(invalidAdminRepositoryConsumer) }">
265 <img src="images/weather-clear-22-22.png"/>
270 <a href="#" data-bind="click: function(){ enableInvalidContentConsumer(invalidAdminRepositoryConsumer) }">
271 <img src="images/dialog-error-22-22.png"/>
275 <td>${invalidAdminRepositoryConsumer.id}</td>
276 <td>${invalidAdminRepositoryConsumer.description}</td>
283 <script id="network-configuration-screen" type="text/html">
284 <div class="page-header">
285 <h4>${$.i18n.prop('network-configuration.header')}</h4>
287 <div id="network-configuration-form" data-bind='template: {name:"network-configuration-form-tmpl"}'></div>
290 <script id="network-configuration-form-tmpl" type="text/html">
291 <form id="network-configuration-edit-form" class="well form-horizontal">
292 <fieldset id="network-configuration-edit-fieldset">
293 <div class="control-group">
294 <label class="control-label" for="maxTotal">${$.i18n.prop('network-configuration.maxTotal')}</label>
295 <div class="controls">
296 <input type="text" class="xlarge required digits" id="maxTotal" name="maxTotal" size="8"
297 data-bind="value: networkConfiguration().maxTotal"/>
300 <div class="control-group">
301 <label class="control-label" for="maxTotal">${$.i18n.prop('network-configuration.maxTotalPerHost')}</label>
302 <div class="controls">
303 <input type="text" class="xlarge required digits" id="maxTotalPerHost" name="maxTotalPerHost" size="8"
304 data-bind="value: networkConfiguration().maxTotalPerHost"/>
307 <div class="control-group">
308 <label class="control-label" for="usePooling">${$.i18n.prop('network-configuration.usePooling')}</label>
309 <div class="controls">
310 <input type="checkbox" id="usePooling" name="usePooling" data-bind="checked: networkConfiguration().usePooling"/>
314 <button id="network-configuration-btn-save" data-loading-text="${$.i18n.prop('common.loading')}"
315 data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
319 <script id="ui-configuration-screen" type="text/html">
320 <div class="page-header">
321 <h4>${$.i18n.prop('ui-configuration.header')}</h4>
323 <div id="ui-configuration-form" data-bind='template: {name:"ui-configuration-form-tmpl"}'></div>
326 <script id="ui-configuration-form-tmpl" type="text/html">
327 <form id="ui-configuration-edit-form" class="well form-horizontal">
328 <fieldset id="ui-configuration-edit-fieldset">
329 <div class="control-group">
330 <label class="control-label" for="maxTotal">${$.i18n.prop('ui-configuration.applicationUrl')}</label>
331 <div class="controls">
332 <input type="text" class="input-xxlarge required digits" id="applicationUrl" name="applicationUrl" size="8"
333 data-bind="value: uiConfiguration().applicationUrl"/>
337 <div class="control-group">
338 <label class="control-label" for="disableRegistration">${$.i18n.prop('ui-configuration.disableRegistration')}</label>
339 <div class="controls">
340 <input type="checkbox" id="disableRegistration" name="disableRegistration" data-bind="checked: uiConfiguration().disableRegistration"/>
345 <button id="ui-configuration-btn-save" data-bind="click: save" class="btn" data-loading-text="${$.i18n.prop('common.loading')}">${$.i18n.prop('save')}</button>
349 <script id="system-status-main" type="text/html">
350 <div class="page-header">
351 <h4>${$.i18n.prop('system-status.header.version.info')}</h4>
353 <div id="status_version_info">
354 <img src="images/small-spinner.gif"/>
356 <div class="page-header">
357 <h3>${$.i18n.prop('system-status.header.main')} <a href="#" onclick="refreshSystemStatus()"><img src="images/view-refresh-22-22.png"/></a></h3>
359 <div class="page-header">
360 <h4>${$.i18n.prop('system-status.header.queues')}</h4>
362 <div id="status_queues">
363 <img src="images/small-spinner.gif"/>
366 <div class="page-header">
367 <h4>${$.i18n.prop('system-status.header.scanning')} <a href="#" onclick="displayScanningStats()"><img src="images/view-refresh.png"/></a></h4>
369 <div id="status_scanning">
370 <img src="images/small-spinner.gif"/>
373 <div class="page-header">
374 <h4>${$.i18n.prop('system-status.header.caches')} <a href="#" onclick="displayCacheEntries()"><img src="images/view-refresh.png"/></a></h4>
376 <div id="status_caches">
377 <img src="images/small-spinner.gif"/>
380 <div class="page-header">
381 <h4>${$.i18n.prop('system-status.header.memory')} <a href="#" onclick="displayMemoryUsage()"><img src="images/view-refresh.png"/></a></h4>
383 <div id="status_memory_info">
384 <img src="images/small-spinner.gif"/>
387 <div class="page-header">
388 <h4>${$.i18n.prop('system-status.header.current.time')}</h4>
390 <div id="status_current_time">
391 <img src="images/small-spinner.gif"/>
396 <script id="status_caches_tmpl" type="text/html">
397 <a href="#" class="btn btn-warning" onclick="flushAllCaches()">
398 ${$.i18n.prop('system-status.caches.flushAll')}
400 <table class="table table-condensed">
403 <th>${$.i18n.prop('system-status.caches.grid.header.key')}</th>
404 <th>${$.i18n.prop('system-status.caches.grid.header.size')}</th>
405 <th>${$.i18n.prop('system-status.caches.grid.header.cacheHits')}</th>
406 <th>${$.i18n.prop('system-status.caches.grid.header.cacheMiss')}</th>
407 <th>${$.i18n.prop('system-status.caches.grid.header.cacheHitRate')}</th>
408 <th>${$.i18n.prop('system-status.caches.grid.header.inMemorySize')}</th>
409 <th>${$.i18n.prop('system-status.caches.grid.header.flush')}</th>
413 {{each(i,cacheEntry) cacheEntries}}
415 <td>${cacheEntry.key}</td>
416 <td>${cacheEntry.size}</td>
417 <td>${cacheEntry.cacheHits}</td>
418 <td>${cacheEntry.cacheMiss}</td>
419 <td>${cacheEntry.cacheHitRate}</td>
420 <td>${cacheEntry.inMemorySize}</td>
422 <a href="#" onclick="flushCache('${cacheEntry.key}')">
423 {{if cacheEntry.size > 0 }}
424 <img src="images/user-trash-full.png"/>
426 <img src="images/user-trash.png"/>
437 <script id="status_queues_tmpl" type="text/html">
438 <table class="table table-condensed">
441 <th>${$.i18n.prop('system-status.queues.grid.header.key')}</th>
442 <th>${$.i18n.prop('system-status.queues.grid.header.size')}</th>
446 {{each(i,queueEntry) queueEntries}}
448 <td>${queueEntry.key}</td>
449 <td>${queueEntry.entriesNumber}</td>
456 <script id="status_scanning_tmpl" type="text/html">
457 {{if repositoryScannerStatisticsList.length == 0}}
458 <h5>No scans in progress.</h5>
460 <table class="table table-condensed">
463 <th>${$.i18n.prop('system-status.scanning.grid.header.repository')}</th>
464 <th>${$.i18n.prop('system-status.scanning.grid.header.files.processed')}</th>
465 <th>${$.i18n.prop('system-status.scanning.grid.header.files.new')}</th>
466 <th>${$.i18n.prop('system-status.scanning.grid.header.stats')}</th>
470 {{each(i,repositoryScannerStatistics) repositoryScannerStatisticsList}}
472 <td>${repositoryScannerStatistics.managedRepository.name()}</td>
473 <td>${repositoryScannerStatistics.totalFileCount}</td>
474 <td>${repositoryScannerStatistics.newFileCount}</td>
480 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.name')}</th>
481 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.total')}</th>
482 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.average')} ms</th>
483 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.invocations.time')}</th>
487 {{each(j,consumerScanningStatistics) repositoryScannerStatistics.consumerScanningStatisticsList}}
489 <td>${consumerScanningStatistics.consumerKey}</td>
490 <td>${consumerScanningStatistics.count}</td>
491 <td>${consumerScanningStatistics.average}ms</td>
492 <td>${consumerScanningStatistics.time}ms</td>
506 <script id="changeAppearance" type="text/html">
507 <div class="page-header">
508 <h2>${$.i18n.prop('appearance-configuration.title-page')}</h2>
511 <h2>${$.i18n.prop('appearance-configuration.organisation-details')}</h2>
514 ${$.i18n.prop('apperance-configuration.details-description')}
517 <form id="appearance-configuration-form-id" class="well form-horizontal">
518 <fieldset id="appearance-configuration-fielset-id">
519 <div class="control-group">
520 <label class="control-label" for="name">${$.i18n.prop('appearance-configuration.name-label')}</label>
521 <div class="controls">
522 <input type="text" class="input-xlarge required" id="name" name="name" size="50"
523 data-bind="value: organisationInformation().name"/>
526 <div class="control-group">
527 <label class="control-label" for="name">${$.i18n.prop('appearance-configuration.url-label')}</label>
528 <div class="controls">
529 <input type="text" class="input-xlarge required" id="url" name="url" size="50"
530 data-bind="value: organisationInformation().url"/>
533 <div class="control-group">
534 <label class="control-label"
535 for="name">${$.i18n.prop('appearance-configuration.logoLocation-label')}</label>
536 <div class="controls">
537 <input type="text" class="input-xxlarge" id="logoLocation" name="logoLocation" size="50"
538 data-bind="value: organisationInformation().logoLocation"/>
542 <button id="appearance-configuration-btn-save" data-loading-text="${$.i18n.prop('common.loading')}" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
547 <script id="file-upload-screen" type="text/html">
548 <div id="file-upload-main" data-bind='template:{name:"file-upload-tmpl"}'></div>
551 <script id="file-upload-tmpl" type="text/html">
552 <div class="page-header">
553 <h3>${$.i18n.prop('fileupload.header')}</h3>
555 <form id="fileupload" action="restServices/archivaUiServices/fileUploadService" method="POST"
556 enctype="multipart/form-data" class="well form-horizontal">
558 <fieldset id="network-proxy-edit-fieldset">
559 <div class="control-group">
560 <label class="control-label" for="repositoryId">${$.i18n.prop('fileupload.repositoryId')}</label>
561 <div class="controls">
562 <select id="repositoryId"
563 data-bind="options: managedRepositories, optionsText: 'name',optionsValue:'id',
564 value: repositoryId"></select>
567 <div class="control-group">
568 <label class="control-label" for="groupId">${$.i18n.prop('fileupload.groupId')}</label>
569 <div class="controls">
570 <input type="text" class="xlarge required" data-bind="value: groupId" id="groupId" name="groupId" size="10" />
574 <div class="control-group">
575 <label class="control-label" for="artifactId">${$.i18n.prop('fileupload.artifactId')}</label>
576 <div class="controls">
577 <input type="text" class="xlarge required" data-bind="value: artifactId" id="artifactId" name="artifactId" size="10" />
581 <div class="control-group">
582 <label class="control-label" for="version">${$.i18n.prop('fileupload.version')}</label>
583 <div class="controls">
584 <input type="text" class="xlarge required" data-bind="value: version" id="version" name="version" size="10" />
588 <div class="control-group">
589 <label class="control-label" for="packaging">${$.i18n.prop('fileupload.packaging')}</label>
590 <div class="controls">
591 <input type="text" class="xlarge required" data-bind="value: packaging" id="packaging" name="packaging" size="10" />
595 <div class="control-group">
596 <label class="control-label" for="generatePom">${$.i18n.prop('fileupload.generatePom')}</label>
597 <div class="controls">
598 <input type="checkbox" class="xlarge" data-bind="value: generatePom" id="generatePom" name="generatePom" />
604 <div class="row-fluid fileupload-buttonbar">
606 <span class="btn btn-success fileinput-button">
607 <i class="icon-plus icon-white"></i>
608 <span>${$.i18n.prop('fileupload.file.choose')}</span>
609 <input type="file" name="files[]" multiple="">
611 <button type="submit" class="btn btn-primary start">
612 <i class="icon-upload icon-white"></i>
613 <span>${$.i18n.prop('fileupload.start')}</span>
615 <button type="reset" class="btn btn-warning cancel">
616 <i class="icon-ban-circle icon-white"></i>
617 <span>${$.i18n.prop('fileupload.cancel')}</span>
619 <button type="button" class="btn btn-danger delete">
620 <i class="icon-trash icon-white"></i>
621 <span>${$.i18n.prop('fileupload.delete')}</span>
623 <input type="checkbox" class="toggle">
626 <div class="progress progress-success progress-striped active">
627 <div class="bar" style="width:0%;"></div>
632 <a href="#" id="fileupload-save-files">
633 <span class="btn btn-info" data-bind='click: saveArtifacts'>
634 <i class="icon-file icon-white"></i>
635 <span>${$.i18n.prop('fileupload.save')}</span>
639 <div class="fileupload-loading"></div>
641 <table class="table table-striped">
642 <tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery" id="uploaded-files-list"></tbody>
649 <script id="template-upload" type="text/html">
650 {% for (var i=0, file; file=o.files[i]; i++) { %}
651 <tr class="template-upload">
652 <td class="name"><span>{%=file.name%}</span></td>
653 <td><input type="text" id="classifier" name="classifier" placeholder="classifier" value=""/></td>
654 <td><span>pomFile:</span><input type="checkbox" id="pomFile" name="pomFile"/></td>
655 <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
656 {% if (file.error) { %}
657 <td class="error" colspan="2">
658 <span class="label label-important">{%=$.i18n.prop('fileupload.error')%}</span>
659 {%=$.i18n.prop('fileupload.errors.'+[file.error]) || file.error%}
661 {% } else if (o.files.valid && !i) { %}
663 <div class="progress progress-success progress-striped active">
664 <div class="bar" style="width:0%;"></div>
668 {% if (!o.options.autoUpload) { %}
669 <button class="btn btn-primary">
670 <i class="icon-upload icon-white"></i>
671 <span>{%=$.i18n.prop('fileupload.start')%}</span>
676 <td colspan="2"></td>
680 <button class="btn btn-warning">
681 <i class="icon-ban-circle icon-white"></i>
682 <span>{%=$.i18n.prop('fileupload.cancel')%}</span>
690 <script id="template-download" type="text/html">
691 {% for (var i=0, file; file=o.files[i]; i++) { %}
692 <tr class="template-download">
693 <td class="name"><span>{%=file.name%}</span></td>
694 <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
695 {% if (file.error) { %}
696 <td class="error" colspan="2">
697 <span class="label label-important">{%=$.i18n.prop('fileupload.error')%}</span>
698 {%=$.i18n.prop('fileupload.errors.'+[file.error]) || file.error%}
701 <td colspan="2"></td>
704 <button class="btn btn-danger" data-type="{%=file.deleteType%}"
705 data-url="restServices/archivaUiServices/fileUploadService/{%=file.deleteUrl%}">
706 <i class="icon-trash icon-white"></i>
707 <span>{%=$.i18n.prop('fileupload.destroy')%}</span>
709 <input type="checkbox" name="delete" value="1">
715 <script id="report-base" type="text/html">
716 <div class="page-header">
717 <h2>${$.i18n.prop('report.title')}</h2>
720 <ul class="nav nav-tabs">
721 <li class="active" id="report-stat-tab-li"><a href="#report-stat-tab-content" data-toggle="tab">${$.i18n.prop('report.statistics.title')}</a></li>
722 <li id="report-health-tab-li"><a href="#report-health-tab-content" data-toggle="tab">${$.i18n.prop('report.health.title')}</a></li>
723 <li id="report-result-tab-li" class="hide"><a href="#report-result" data-toggle="tab">${$.i18n.prop('report.result.title')}</a></li>
726 <div class="tab-content">
727 <div class="tab-pane active" id="report-stat-tab-content">
728 <form class="form-horizontal" id="report-statistics-form-id">
729 <fieldset id="form-statistics-report">
730 <div class="row-fluid">
731 <div class="span6 row-fluid">
732 <div class="row-fluid" id="repositoriesErrorMessage"></div>
733 <div class="row-fluid">
734 <div class="span6 dotted">
735 <h5>${$.i18n.prop('report.statistics.selected-repositories.label')}</h5>
737 <div style="min-height: 40px"
738 data-bind="sortable: { template: 'statistics-repositories-order-tmpl', data:statisticsReport().repositories}">
741 <div class="span6 dotted">
742 <h5>${$.i18n.prop('repository.groups.available-repositories.label')}</h5>
744 <div style="min-height: 40px"
745 data-bind="sortable: {template: 'statistics-repositories-order-tmpl',data:availableRepositories}">
750 <div class="span6 well">
751 <div class="control-group">
752 <label for="rowCountStatistics" class="control-label">
753 ${$.i18n.prop('report.statistics.row-count.label')}
755 <div class="controls">
756 <input type="text" id="rowCountStatistics" name="rowCountStatistics" class="input-small"
757 data-bind="value: statisticsReport().rowCount"/>
759 <a class="btn btn-warning btn-mini" id="rowcount-info-button"
760 data-original-title="${$.i18n.prop('report.statistics.rowCount.explanations-title')}"
761 data-content="${$.i18n.prop('report.statistics.rowCount.explanations')}"
762 data-placement="left" data-toggle="button">
763 <i class="icon-question-sign icon-white"></i>
767 <div class="control-group">
768 <label for="startDate" class="control-label">
769 ${$.i18n.prop('report.statistics.start-date.label')}
771 <div class="controls">
772 <input type="text" id="startDate" name="startDate" class="input-small"
773 data-bind="value: statisticsReport().startDate"/>
776 <div class="control-group">
777 <label for="endDate" class="control-label">
778 ${$.i18n.prop('report.statistics.end-date.label')}
780 <div class="controls">
781 <input type="text" id="endDate" name="endDate" class="input-small"
782 data-bind="value: statisticsReport().endDate"/>
787 <div class="form-actions">
788 <button class="btn btn-primary" data-bind="click: showStatistics">
789 ${$.i18n.prop('report.statistics.btn-view')}
796 <div class="tab-pane" id="report-health-tab-content">
797 <form class="form-horizontal" id="report-health-form-id">
798 <fieldset id="form-health-report">
799 <div class="control-group">
800 <label for="rowCountHealth" class="control-label">
801 ${$.i18n.prop('report.statistics.row-count.label')}
803 <div class="controls">
804 <input type="text" id="rowCountHealth" name="rowCountHealth" class="input-small required"
805 data-bind="value: healthReport().rowCount"/>
808 <div class="control-group">
809 <label for="groupId" class="control-label">
810 ${$.i18n.prop('report.health.groupId.label')}
812 <div class="controls">
813 <input type="text" id="groupId" name="groupId" data-bind="value: healthReport().groupId"/>
816 <div class="control-group">
817 <label for="repositoryId" class="control-label">
818 ${$.i18n.prop('report.health.repositoryId.label')}
820 <div class="controls">
821 <select id="repositoryId" name="repositoryId" data-bind="value: healthReport().repositoryId"
823 <option value="all">${$.i18n.prop('report.select.all-repositories')}</option>
824 {{each(i, repoId) repositoriesList}}
825 <option value="${repoId}">${repoId}</option>
830 <div class="form-actions">
831 <a href="#" class="btn btn-primary" data-bind="click: showHealth">
832 ${$.i18n.prop('report.health.btn-view')}
839 <div class="tab-pane" id="report-result">
844 <script id="statistics-repositories-order-tmpl" type="text/html">
845 <div class="well draggable-item">
850 <script id="report-health" type="text/html">
851 <div class="page-header">
852 <h3>${$.i18n.prop('report.health.title')}</h3>
854 <table class="table table-bordered table-striped"
855 data-bind="simpleGrid: tableReportViewModel,simpleGridTemplate:'table-report-tmpl',pageLinksId:'reportHealthPageLinkId'">
857 <div id="reportHealthPageLinkId"></div>
860 <script id="report-statistics" type="text/html">
861 <div class="page-header">
862 <h3>${$.i18n.prop('report.statistics.title')}</h3>
864 <table class="table table-bordered table-striped"
865 data-bind="simpleGrid: tableReportViewModel,simpleGridTemplate:'table-report-tmpl',pageLinksId:'reportStatisticsPageLinkId'">
867 <div id="reportStatisticsPageLinkId"></div>
869 <script id="table-report-tmpl" type="text/html">
871 {{each(i, columnDefinition) columns}}
872 <th>${ columnDefinition.headerText }</th>
876 {{each(i, row) itemsOnCurrentPage()}}
878 {{each(i, columnDefinition) columns}}
879 {{var val = (typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText])}}
889 <script type="text/html" id="runtime-configuration-main">
890 <div class="page-header">
891 <h2>${$.i18n.prop('runtime-configuration.title')}</h2>
893 <div id="runtime-configuration-content" data-bind='template: {name:"runtime-configuration-content-tmpl"}'>
897 <script type="text/html" id="runtime-configuration-content-tmpl">
898 <ul class="nav nav-tabs">
899 <li class="active" id="redback-runtime-general-li"><a href="#redback-runtime-general-content" data-toggle="tab">${$.i18n.prop('redback.runtime.general.title')}</a></li>
900 <li id="redback-runtime-ldap-li"><a href="#redback-runtime-ldap-content" data-toggle="tab">${$.i18n.prop('redback.runtime.ldap.title')}</a></li>
901 <li id="redback-runtime-properties-li"><a href="#redback-runtime-properties-content" data-toggle="tab">${$.i18n.prop('redback.runtime.properties.title')}</a></li>
904 <div class="tab-content">
905 <div class="tab-pane active" id="redback-runtime-general-content">
907 <div class="row-fluid">
908 <div class="span4 dotted">
909 <h5>${$.i18n.prop('redback.runtime.user-managers.impls.choosed')}</h5>
910 <div style="min-height: 40px" id="user-mananagers-sortables-choosed"
911 data-bind="sortable: { template: 'redback-runtime-general-content-usermanagers', data:usedUserManagerImpls,afterMove: userManagerImplMoved}">
915 <div class="span4 dotted">
916 <h5>${$.i18n.prop('redback.runtime.user-managers.impls.available')}</h5>
917 <div style="min-height: 40px"id="user-mananagers-sortables-availables"
918 data-bind="sortable: {template: 'redback-runtime-general-content-usermanagers',data:availableUserManagerImpls,afterMove: userManagerImplMoved}">
925 <div class="tab-pane" id="redback-runtime-ldap-content">
927 <form class="form-horizontal" id="redback-runtime-ldap-form-id">
928 <fieldset id="redback-runtime-ldap-form">
929 <div class="control-group">
930 <label for="ldap-host" class="control-label">
931 ${$.i18n.prop('redback.runtime.ldap.host.label')}
933 <div class="controls">
934 <input type="text" id="ldap-host" name="ldap-host" class="input-xlarge"
935 data-bind="value: archivaRuntimeConfiguration().ldapConfiguration().hostName"/>
938 <div class="control-group">
939 <label for="ldap-port" class="control-label">
940 ${$.i18n.prop('redback.runtime.ldap.port.label')}
942 <div class="controls">
943 <input type="text" id="ldap-port" name="ldap-port" class="input-large"
944 data-bind="value: archivaRuntimeConfiguration().ldapConfiguration().port"/>
947 <div class="control-group">
948 <label for="ldap-baseDn" class="control-label">
949 ${$.i18n.prop('redback.runtime.ldap.baseDn.label')}
951 <div class="controls">
952 <input type="text" id="ldap-baseDn" name="ldap-baseDn" class="input-xxlarge"
953 data-bind="value: archivaRuntimeConfiguration().ldapConfiguration().baseDn"/>
956 <div class="control-group">
957 <label for="ldap-ssl" class="control-label">
958 ${$.i18n.prop('redback.runtime.ldap.ssl.label')}
960 <div class="controls">
961 <input type="checkbox" id="ldap-ssl" name="ldap-ssl"
962 data-bind="checked: archivaRuntimeConfiguration().ldapConfiguration().ssl"/>
965 <div class="control-group">
966 <label for="ldap-password" class="control-label">
967 ${$.i18n.prop('redback.runtime.ldap.password.label')}
969 <div class="controls">
970 <input type="text" id="ldap-password" name="ldap-password" class="input-xlarge"
971 data-bind="value: archivaRuntimeConfiguration().ldapConfiguration().password"/>
974 <div class="control-group">
975 <label for="ldap-context-factory" class="control-label">
976 ${$.i18n.prop('redback.runtime.ldap.contextFactory.label')}
978 <div class="controls">
979 <input type="text" id="ldap-context-factory" name="ldap-context-factory" class="input-xlarge"
980 data-bind="value: archivaRuntimeConfiguration().ldapConfiguration().contextFactory"/>
983 <div class="control-group">
984 <label for="ldap-authenticationMethod" class="control-label">
985 ${$.i18n.prop('redback.runtime.ldap.authenticationMethod.label')}
987 <div class="controls">
988 <input type="text" id="ldap-authenticationMethod" name="ldap-authenticationMethod" class="input-xlarge"
989 data-bind="value: archivaRuntimeConfiguration().ldapConfiguration().authenticationMethod"/>
992 <!-- TODO extraPropertiesEntries -->
998 <div class="tab-pane" id="redback-runtime-properties-content">
1004 <th>${$.i18n.prop('redback.runtime.properties.key.label')}</th>
1005 <th>${$.i18n.prop('redback.runtime.properties.value.label')}</th>
1009 {{each(i, property) archivaRuntimeConfiguration().configurationPropertiesEntries}}
1012 {{var key = property.key}}
1013 <a class="popover-doc"
1014 data-original-title="${$.i18n.prop('redback.runtime.properties.help.title')}"
1015 data-content="${$.i18n.prop(key+'.help.content')}">
1016 <span class="btn btn-info"><i class="icon-question-sign icon-white"></i></span>
1019 <td><input type="text" class="input-xxlarge" value="${property.key}"></td>
1020 <td><input type="text" class="input-xlarge" value="${property.value}"></td>
1030 <button data-bind="click: saveArchivaRuntimeConfiguration,css:{ 'btn-warning': archivaRuntimeConfiguration().modified() | archivaRuntimeConfiguration().ldapConfiguration().modified() }"
1031 id="archiva-runtime-configuration-save"class="btn">${$.i18n.prop('save')}</button>
1036 <script id="configurationPropertiesEntries-tmpl" type="text/html">
1040 <script id="redback-runtime-general-content-usermanagers" type="text/html">
1041 <div class="well draggable-item">
1042 ${$data.description}