]> source.dussan.org Git - archiva.git/blob
957c8cea53f5599badbc89720876550a69db5177
[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="repositoriesMain" type="text/html">
20     <div class="page-header">
21       <h2><img src="images/system-file-manager-32-32.png"/>${$.i18n.prop('administration.repositories')}</h2>
22     </div>
23
24       <ul id="repositories-tabs" class="nav nav-tabs">
25         <li class="active">
26           <a data-toggle="tab" href="#managed-repositories-content">${$.i18n.prop('managedrepositories.grid.head')}</a>
27         </li>  
28         <li>
29           <a data-toggle="tab" href="#remote-repositories-content">${$.i18n.prop('remoterepositories.grid.head')}</a>
30         </li>
31       </ul>  
32       <div class="tab-content">
33         <div id="managed-repositories-content" class="tab-pane active">
34             <ul id="managed-repositories-pills" class="nav nav-pills">
35               <li class="active" id="managed-repositories-view-li">
36                 <a data-toggle="tab" href="#managed-repositories-view" id="managed-repositories-view-a">${$.i18n.prop('managedrepositories.grid.tab.title')}</a>
37               </li>
38               <li id="managed-repository-edit-li">
39                 <a data-toggle="tab" href="#managed-repository-edit">${$.i18n.prop('add')}</a>
40               </li>
41             </ul>
42             <div id="managed-repositories-tabs-content" class="pill-content">
43               <div id="managed-repositories-view" class="pill-pane active">
44                 <div id="managed-repositories-bulk-save-btn" data-bind='template:{name:"managed-repositories-bulk-save-tmpl"}'></div>
45                 <table class="table table-striped table-bordered" id="managed-repositories-table"
46                        data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko_managed-repositoriesGrid',pageLinksId:'managed-repositoriesPagination',data:'managedRepositories'">
47                 </table>
48                 <div id="managed-repositoriesPagination"></div>
49                 <div id="managed-repositories-pom-snippet"></div>
50               </div>
51               <div id="managed-repository-edit" class="pill-pane" data-bind='template: {name:"managed-repository-edit-tmpl"}'>
52               </div>
53             </div>
54         </div>
55
56
57         <div id="remote-repositories-content" class="tab-pane">
58             <ul id="remote-repositories-pills" class="nav nav-pills">
59               <li class="active" id="remote-repositories-view-li">
60                 <a data-toggle="tab" href="#remote-repositories-view" id="remote-repositories-view-a">${$.i18n.prop('remoterepositories.grid.tab.title')}</a>
61               </li>
62               <li id="remote-repository-edit-li">
63                 <a data-toggle="tab" href="#remote-repository-edit">${$.i18n.prop('add')}</a>
64               </li>
65             </ul>
66             <div id="remote-repositories-tabs-content" class="pill-content">
67               <div id="remote-repositories-view" class="pill-pane active">
68                   <div id="remote-repositories-bulk-save-btn" data-bind='template:{name:"remote-repositories-bulk-save-tmpl"}'></div>
69                   <table class="table table-striped table-bordered" id="remote-repositories-table"
70                          data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko_remote-repositoriesGrid',pageLinksId:'remote-repositoriesPagination',data:'remoteRepositories'">
71                   </table>
72                   <div id="remote-repositoriesPagination"></div>
73               </div>
74               <div id="remote-repository-edit" class="pill-pane" data-bind='template: {name:"remote-repository-edit-tmpl"}'>
75               </div>
76             </div>
77         </div>
78       </div>
79 </script>
80
81 <script id='ko_managed-repositoriesGrid' type='text/html'>
82   <thead>
83       <tr>
84         {{each(i, columnDefinition) columns}}
85           <th title="${ columnDefinition.title }">${ columnDefinition.headerText }</th>
86         {{/each}}
87         <th>Releases</th>
88         <th>Snapshots</th>
89         <!--th title="${$.i18n.prop('managedrepository.scan.index')}">${$.i18n.prop('managedrepository.scan.grid.header')}</th-->
90         <th>${$.i18n.prop('managedrepository.actions')}</th>
91         <th>${$.i18n.prop('edit')}</th>
92         <th>${$.i18n.prop('delete')}</th>
93         <th>${$.i18n.prop('modified')}</th>
94         <!--th>${$.i18n.prop('description')}</th-->
95
96         <th title="${$.i18n.prop('managedrepository.stats')}">${$.i18n.prop('managedrepository.stats.grid.header')}</th>
97         <!--th title="${$.i18n.prop('managedrepository.scan.directories')}">${$.i18n.prop('managedrepository.scan.directories.grid.header')}</th-->
98       </tr>
99   </thead>
100   <tbody>
101       {{each(i, row) itemsOnCurrentPage()}}
102           <tr data-bind="css:{ 'modified': row.modified()}">
103             {{each(j, columnDefinition) columns}}
104               <td>${ typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText] }</td>
105             {{/each}}
106             <td>
107             {{if row.releases() == true}}
108               <img src="images/weather-clear-22-22.png" title="${$.i18n.prop('release.included')}"/>
109             {{else}}
110               <img src="images/dialog-error-22-22.png" title="${$.i18n.prop('release.notincluded')}"/>
111             {{/if}}
112             </td>
113
114             <td>
115               {{if row.snapshots() == true}}
116                 <img src="images/weather-clear-22-22.png" title="${$.i18n.prop('snapshots.included')}"/>
117               {{else}}
118                 <img src="images/dialog-error-22-22.png" title="${$.i18n.prop('snapshots.notincluded')}"/>
119               {{/if}}
120             </td>
121               <td>
122                 <div class="btn-group">
123                   <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">Actions<span class="caret"></span> </a>
124                   <ul class="dropdown-menu">
125                     <li>
126                         <a href="#" data-bind="click: function(){ scanNow(row) }">
127                           <span class="btn btn-success">
128                             <i class="icon-refresh icon-white"></i>
129                           </span>
130                           ${$.i18n.prop('managedrepository.scan.grid.header')}
131                         </a>
132                     </li>
133                     <li>
134                         <a href="#" data-bind="click: function(){directoriesScan(row)}">
135                           <span class="btn btn-warning">
136                             <i class="icon-repeat icon-white"></i>
137                           </span>
138                           ${$.i18n.prop('managedrepository.scan.directories.grid.header')}
139                         </a>
140                     </li>
141                     <li>
142                         <a href="#" data-bind="click: function(){ showPomSnippet(row) }">
143                             <span class="btn btn-info">
144                               <i class="icon-repeat icon-white"></i>
145                             </span>
146                             ${$.i18n.prop('managedrepository.pomsnippet')}
147                         </a>
148                     </li>
149                   </ul>
150                 </div>
151               </td>
152             <td>
153               <a href="#" data-bind="click: function(){ editManagedRepository(row) }">
154                 <span class="btn btn-primary">
155                   <i class="icon-pencil icon-white"/>
156                 </span>
157               </a>
158             </td>
159             <td>
160               <a href="#" data-bind="click: function(){ removeManagedRepository(row) }">
161                 <span class="btn btn-danger">
162                   <i class="icon-trash icon-white"/>
163                 </span>
164               </a>
165             </td>
166             {{if row.modified()}}
167               <td>
168                 <a href="#" class="btn btn-warning" data-bind="click: function(){ updateManagedRepository(row) }">${$.i18n.prop('save')}</a>
169               </td>
170             {{else}}
171               <td></td>
172             {{/if}}
173             <!--td>
174                 {{if row.description()}}
175                 <a class="btn btn-warning btn-mini popover-doc" id="managedrepo-description-help"
176                    data-content="${row.description()}" data-title="${$.i18n.prop('description')}"
177                    data-placement="left">
178                     <i class="icon-question-sign icon-white"></i>
179                 </a>
180                 {{/if}}
181             </td-->
182             <td id="managedrepository-stats-${row.id()}">
183               <img src="images/utilities-system-monitor-22-22.png" data-original-title="${$.i18n.prop('managedrepository.stats')}"
184                    data-bind="event: { mouseover: function(){ showStats(row) }, mouseout: function(){ hideStats(row) },}"
185                    id="managedrepository-stats-img-${row.id()}"/>
186             </td>
187           </tr>
188       {{/each}}
189   </tbody>
190
191 </script>
192
193 <script id="managed-repository-edit-tmpl" type='text/html'>
194     <form id="managed-repository-edit-form" class="well form-horizontal">
195       <fieldset id="managed-repository-edit-fieldset">
196         <div class="control-group">
197           <label class="control-label" for="id">${$.i18n.prop('id')}</label>
198           <div class="controls">
199             {{if update}}
200               <span class="uneditable-input">${$data.managedRepository.id}</span>
201             {{else}}
202               <input type="text" class="xlarge required" id="id" name="id" size="50"
203                      data-bind="value: managedRepository.id,css:{'uneditable-input': update},readonly:update"/>
204             {{/if}}
205           </div>
206         </div>
207         <div class="control-group">
208           <label class="control-label" for="name">${$.i18n.prop('name')}</label>
209           <div class="controls">
210             <input type="text" class="xlarge required" id="name" name="name" size="50"
211                    data-bind="value: managedRepository.name"/>
212           </div>
213         </div>
214         <div class="control-group">
215           <label class="control-label" for="location">${$.i18n.prop('directory')}</label>
216           <div class="controls">
217             <input type="text" class="xlarge required" id="location" name="location" size="50" data-bind="value: managedRepository.location"/>
218           </div>
219         </div>
220         <div class="control-group">
221           <label class="control-label" for="indexDirectory">${$.i18n.prop('index.directory')}</label>
222           <div class="controls">
223             <input type="text" class="xlarge" id="indexDirectory" name="indexDirectory" size="50" data-bind="value: managedRepository.indexDirectory"/>
224           </div>
225         </div>
226         <div class="control-group">
227           <label class="control-label" for="layout">${$.i18n.prop('type')}</label>
228           <div class="controls">
229             <select id="layout" data-bind="options: availableLayouts,optionsText: 'label',optionsValue:'type',value: managedRepository.layout"/>
230           </div>
231         </div>
232         <div class="control-group">
233           <label class="control-label" for="cronExpression">${$.i18n.prop('cronExpression')}</label>
234           <div class="controls">
235             <input type="text" id="cronExpression" class="required" name="cronExpression" size="40" data-bind="value: managedRepository.cronExpression"/>
236             <a class="btn btn-warning btn-mini popover-doc" id="cronExpression-info-button"
237                data-original-title="${$.i18n.prop('cronExpression.help.title')}"
238                data-content="${$.i18n.prop('cronExpression.help.content')}">
239                 <i class="icon-question-sign icon-white"></i>
240             </a>
241           </div>
242         </div>
243         <div class="control-group">
244           <label class="control-label" for="daysOlder">${$.i18n.prop('daysOlder')}</label>
245           <div class="controls">
246             <input type="text" id="daysOlder" class="digits" name="daysOlder" size="5" data-bind="value: managedRepository.daysOlder"/>
247           </div>
248         </div>
249         <div class="control-group">
250           <label class="control-label" for="retentionCount">${$.i18n.prop('retentionCount')}</label>
251           <div class="controls">
252             <input type="text" id="retentionCount" name="retentionCount" size="5" data-bind="value: managedRepository.retentionCount"/>
253           </div>
254         </div>
255         <div class="control-group">
256           <label class="control-label" for="daysOlder">${$.i18n.prop('description')}</label>
257           <div class="controls">
258             <textarea rows="3" id="description" name="description" data-bind="value: managedRepository.description"></textarea>
259           </div>
260         </div>
261         <div class="control-group">
262           <label class="control-label" for="releases">${$.i18n.prop('releases')}</label>
263           <div class="controls">
264             <input type="checkbox" id="releases" name="releases" size="5" data-bind="checked: managedRepository.releases"/>
265           </div>
266         </div>
267         <div class="control-group">
268           <label class="control-label" for="snapshots">${$.i18n.prop('snapshots')}</label>
269           <div class="controls">
270             <input type="checkbox" id="snapshots" name="snapshots" size="5" data-bind="checked: managedRepository.snapshots"/>
271           </div>
272         </div>
273         <div class="control-group">
274           <label class="control-label" for="blockRedeployments">${$.i18n.prop('blockRedeployments')}</label>
275           <div class="controls">
276             <input type="checkbox" id="blockRedeployments" name="blockRedeployments" size="5" data-bind="checked: managedRepository.blockRedeployments"/>
277           </div>
278         </div>
279         <div class="control-group">
280           <label class="control-label" for="scanned">${$.i18n.prop('scanned')}</label>
281           <div class="controls">
282             <input type="checkbox" id="scanned" name="scanned" size="5" data-bind="checked: managedRepository.scanned"/>
283           </div>
284         </div>
285         <div class="control-group">
286           <label class="control-label" for="deleteReleasedSnapshots">${$.i18n.prop('deleteReleasedSnapshots')}</label>
287           <div class="controls">
288             <input type="checkbox" id="deleteReleasedSnapshots" name="deleteReleasedSnapshots" size="5"
289                    data-bind="checked: managedRepository.deleteReleasedSnapshots"/>
290           </div>
291         </div>
292         <div class="control-group">
293           <label class="control-label" for="stageRepoNeeded">${$.i18n.prop('stageRepoNeeded')}</label>
294           <div class="controls">
295             <input type="checkbox" id="stageRepoNeeded" name="stageRepoNeeded" size="5"
296                    data-bind="checked: managedRepository.stageRepoNeeded"/>
297           </div>
298         </div>
299         <div class="control-group">
300           <label class="control-label" for="skipPackedIndexCreation">${$.i18n.prop('skipPackedIndexCreation')}</label>
301           <div class="controls">
302             <input type="checkbox" id="skipPackedIndexCreation" name="skipPackedIndexCreation" size="5"
303                    data-bind="checked: managedRepository.skipPackedIndexCreation"/>
304             <a class="btn btn-warning btn-mini popover-doc" id="skipPackedIndexCreation-info-button"
305                data-original-title="${$.i18n.prop('skipPackedIndexCreation.help.title')}"
306                data-content="${$.i18n.prop('skipPackedIndexCreation.help.content')}">
307                 <i class="icon-question-sign icon-white"></i>
308             </a>
309           </div>
310         </div>
311
312
313
314       </fieldset>
315       <button data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
316       <button data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
317     </form>
318 </script>
319
320 <script id="managed-repository-delete-warning-tmpl" type='text/html'>
321   <div>
322     <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
323     <div>
324       <span><strong>${$.i18n.prop('managedrepository.delete.warning.message')}</strong>.</span>
325       <div>${$.i18n.prop('id')}: ${id()}</div>
326       <div>${$.i18n.prop('name')}: ${name()}</div>
327     </div>
328     <div>
329         ${$.i18n.prop('managedrepository.delete.content')}: <input type="checkbox" id="managedrepository-deletecontent">
330     </div>
331   </div>
332 </script>
333
334 <script type="text/html" id="remote-repository-delete-modal-tmpl">
335     <div>
336       <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
337     </div>
338 </script>
339
340 <script id="managed-repository-location-warning-tmpl" type='text/html'>
341   <div>
342     <span class="label label-warning">${$.i18n.prop('managedrepository.location.already.exists')}</span>
343     <div>
344       <span><strong>${$.i18n.prop('managedrepository.location.already.exists.warning.message')}</strong>.</span>
345       <div>${$.i18n.prop('id')}: ${id()}</div>
346       <div>${$.i18n.prop('name')}: ${name()}</div>
347     </div>
348   </div>
349 </script>
350 <script id="managed-repository-scan-now-modal-tmpl" type='text/html'>
351   <div>
352     ${$.i18n.prop('managedrepository.scan.all')}: <input type="checkbox" id="managed-repository-scan-now-all">
353   </div>
354 </script>
355 <script id="managed-repository-stats-tmpl" type='text/html'>
356   <div id="managedrepository-stats-${managedRepository.id()}-popover" style="display:none">
357     <div>${$.i18n.prop('managedrepository.stats.endTime')}: ${lastScanDate()}</div>
358     <div>${$.i18n.prop('managedrepository.stats.duration')}: ${duration()}ms</div>
359     <div>${$.i18n.prop('managedrepository.stats.totalFileCount')}: ${totalFileCount()}</div>
360     <div>${$.i18n.prop('managedrepository.stats.newFileCount')}: ${newFileCount()}</div>
361   </div>
362 </script>
363 <script id="pom-snippet-tmpl" type='text/html'>
364   <div class="page-header">
365     <h2>POM Snippet</h2></div>
366   </div>
367   <div><a onclick="$('#managed-repositories-pom-snippet').effect('blind')">${$.i18n.prop('hide')}</a></div>
368   <pre>${$data}</pre>
369 </script>
370
371 <!-- remote part -->
372
373 <script id='ko_remote-repositoriesGrid' type='text/html'>
374   <thead>
375       <tr>
376         {{each(i, columnDefinition) columns}}
377           <th title="${ columnDefinition.title }">${ columnDefinition.headerText }</th>
378         {{/each}}
379         <th>${$.i18n.prop('edit')}</th>
380         <th>${$.i18n.prop('delete')}</th>
381         <th>${$.i18n.prop('modified')}</th>
382         <th>${$.i18n.prop('description')}</th>
383         <th>${$.i18n.prop('remoterepository.downloadremoteindex')}</th>
384       </tr>
385   </thead>
386   <tbody>
387       {{each(i, row) itemsOnCurrentPage()}}
388           <tr data-bind="css:{ 'modified': row.modified()}">
389             {{each(j, columnDefinition) columns}}
390               <td>${ typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText] }</td>
391             {{/each}}
392             <td>
393               <a href="#" data-bind="click: function(){ editRemoteRepository(row) }">
394                 <span class="btn btn-primary">
395                   <i class="icon-pencil icon-white"/>
396                 </span>
397               </a>
398             </td>
399             <td>
400               <a href="#" data-bind="click: function(){ removeRemoteRepository(row) }">
401                 <span class="btn btn-danger">
402                   <i class="icon-trash icon-white"/>
403                 </span>
404               </a>
405             </td>
406             {{if row.modified()}}
407               <td>
408                 <a href="#" class="btn btn-warning" data-bind="click: function(){ updateRemoteRepository(row) }">${$.i18n.prop('save')}</a>
409               </td>
410             {{else}}
411               <td></td>
412             {{/if}}
413             <td>
414                 {{if row.description()}}
415                 <a class="btn btn-warning btn-mini popover-doc" id="remoterepo-description-help"
416                    data-content="${row.description()}" data-title="${$.i18n.prop('description')}">
417                     <i class="icon-question-sign icon-white"></i>
418                 </a>
419                 {{/if}}
420             </td>
421             <td>
422               <a href="#" data-bind="click: function(){ scheduleDownloadRemoteIndex(row) }">
423                 <span class="btn btn-success">
424                   <i class="icon-refresh icon-white"/>
425                 </span>
426               </a>
427             </td>
428           </tr>
429       {{/each}}
430   </tbody>
431
432 </script>
433
434
435 <script id="remote-repository-edit-tmpl" type='text/html'>
436     <form id="remote-repository-edit-form" class="well form-horizontal">
437       <fieldset id="remote-repository-edit-fieldset">
438         <div class="control-group">
439           <label class="control-label" for="id">${$.i18n.prop('id')}</label>
440           <div class="controls">
441             {{if update}}
442               <span class="uneditable-input">${$data.remoteRepository.id}</span>
443             {{else}}
444               <input type="text" class="xlarge required" id="id" name="id" size="50"
445                      data-bind="value: remoteRepository.id,css:{'uneditable-input': update},readonly:update"/>
446             {{/if}}
447           </div>
448         </div>
449         <div class="control-group">
450           <label class="control-label" for="name">${$.i18n.prop('name')}</label>
451           <div class="controls">
452             <input type="text" class="xlarge required" id="name" name="name" size="50"
453                    data-bind="value: remoteRepository.name"/>
454           </div>
455         </div>
456         <div class="control-group">
457           <label class="control-label" for="url">${$.i18n.prop('url')}</label>
458           <div class="controls">
459             <input type="text" class="xlarge required" id="url" name="location" size="50" data-bind="value: remoteRepository.url"/>
460           </div>
461         </div>
462         <div class="control-group">
463           <label class="control-label" for="userName">${$.i18n.prop('username')}</label>
464           <div class="controls">
465             <input type="text" class="xlarge" id="userName" name="userName" size="50" data-bind="value: remoteRepository.indexDirectory"/>
466           </div>
467         </div>
468         <div class="control-group">
469           <label class="control-label" for="password">${$.i18n.prop('password')}</label>
470            <div class="controls">
471              <input type="password" class="xlarge" id="password" name="password" size="50" data-bind="value: remoteRepository.password"/>
472           </div>
473         </div>
474         <div class="control-group">
475           <label class="control-label" for="timeout">${$.i18n.prop('timeout')}</label>
476           <div class="controls">
477             <input type="text" id="timeout" class="digits" name="daysOlder" size="5" data-bind="value: remoteRepository.timeout"/>
478           </div>
479         </div>
480
481         <div class="control-group">
482           <label class="control-label" for="layout">${$.i18n.prop('type')}</label>
483           <div class="controls">
484             <select id="layout" data-bind="options: availableLayouts,optionsText: 'label',optionsValue:'type',value: remoteRepository.layout"/>
485           </div>
486         </div>
487         <div class="control-group">
488           <label class="control-label" for="downloadRemoteIndex">${$.i18n.prop('downloadRemoteIndex')}</label>
489           <div class="controls">
490             <input type="checkbox" id="downloadRemoteIndex" name="downloadRemoteIndex" size="5" data-bind="checked: remoteRepository.downloadRemoteIndex"/>
491           </div>
492         </div>
493
494         <div class="control-group">
495           <label class="control-label" for="remoteIndexUrl">${$.i18n.prop('remoteIndexUrl')}</label>
496           <div class="controls">
497             <input type="text" id="remoteIndexUrl" name="remoteIndexUrl" size="5" data-bind="value: remoteRepository.remoteIndexUrl"/>
498           </div>
499         </div>
500         <div class="control-group">
501           <label class="control-label" for="cronExpression">${$.i18n.prop('cronExpression')}</label>
502           <div class="controls">
503             <input type="text" id="cronExpression" name="cronExpression" size="40" data-bind="value: remoteRepository.cronExpression"/>
504             <a class="btn btn-warning btn-mini popover-doc" id="cronExpression-info-button"
505                data-original-title="${$.i18n.prop('cronExpression.help.title')}"
506                data-content="${$.i18n.prop('cronExpression.help.content')}">
507                 <i class="icon-question-sign icon-white"></i>
508             </a>
509           </div>
510         </div>
511         <div class="control-group">
512           <label class="control-label" for="indexDirectory">${$.i18n.prop('index.directory')}</label>
513           <div class="controls">
514             <input type="text" class="xlarge" id="indexDirectory" name="indexDirectory" size="50" data-bind="value: remoteRepository.indexDirectory"/>
515           </div>
516         </div>
517         <div class="control-group">
518           <label class="control-label" for="remoteDownloadTimeout">${$.i18n.prop('remoteDownloadTimeout')}</label>
519           <div class="controls">
520             <input type="text" id="remoteDownloadTimeout" class="digits" name="remoteDownloadTimeout" size="5"
521                    data-bind="value: remoteRepository.remoteDownloadTimeout"/>
522           </div>
523         </div>
524
525         <div class="control-group">
526           <label class="control-label" for="remoteDownloadNetworkProxyId">${$.i18n.prop('remoteDownloadNetworkProxyId')}</label>
527           <div class="controls">
528             <select id="remoteDownloadNetworkProxyId" data-bind="options: networkProxies, optionsText: 'id',optionsValue:'id', value: remoteRepository.remoteDownloadNetworkProxyId, optionsCaption: 'Choose...'"></select>
529           </div>
530         </div>
531
532         <div class="control-group">
533           <label class="control-label" for="downloadRemoteIndexOnStartup">${$.i18n.prop('downloadRemoteIndexOnStartup')}</label>
534           <div class="controls">
535             <input type="checkbox" id="downloadRemoteIndexOnStartup" name="downloadRemoteIndexOnStartup"
536                    data-bind="checked: remoteRepository.downloadRemoteIndexOnStartup"/>
537           </div>
538         </div>
539
540         <div class="control-group">
541           <label class="control-label" for="daysOlder">${$.i18n.prop('description')}</label>
542           <div class="controls">
543             <textarea rows="3" id="description" name="description" data-bind="value: remoteRepository.description"></textarea>
544           </div>
545         </div>
546
547       </fieldset>
548       <button data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
549       <button data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
550     </form>
551 </script>
552
553 <script id="remote-repository-scan-modal-tmpl" type='text/html'>
554     <div>
555       ${$.i18n.prop('remoterepository.download.remote.now')}: <input type="checkbox" id="remoterepository-scan-now">
556     </div>
557     <div>
558       ${$.i18n.prop('remoterepository.download.remote.full')}: <input type="checkbox" id="remoterepository-scan-full">
559     </div>
560 </script>
561
562 <script id="managed-repositories-bulk-save-tmpl" type='text/html'>
563   {{if bulkSave()}}
564     <a data-bind="click: updateModifiedManagedRepositories" class="btn btn-danger" href="#">${$.i18n.prop('save.all')}</a>
565   {{/if}}
566 </script>
567
568 <script id="remote-repositories-bulk-save-tmpl" type='text/html'>
569   {{if bulkSave()}}
570     <a data-bind="click: updateModifiedRemoteRepositories" class="btn btn-danger" href="#">${$.i18n.prop('save.all')}</a>
571   {{/if}}
572 </script>
573
574 <script id="networkProxiesMain" type="text/html">
575   <div class="page-header">
576     <h2><img src="images/internet-web-browser-32-32.png"/>${$.i18n.prop('network-proxies.list')}</h2>
577   </div>
578
579   <ul id="network-proxies-view-tabs" class="nav nav-tabs">
580     <li id="network-proxies-view-tabs-li-grid">
581       <a data-toggle="tab" href="#network-proxies-view" id="network-proxies-view-tabs-a-network-proxies-grid">${$.i18n.prop('network-proxies.grid.tab.title')}</a>
582     </li>
583     <li id="network-proxies-view-tabs-li-edit">
584       <a data-toggle="tab" href="#network-proxies-edit">${$.i18n.prop('add')}</a>
585     </li>
586   </ul>
587   <div id="network-proxies-view-tabs-content" class="tab-content">
588     <div id="network-proxies-view" class="tab-pane">
589         <div id="network-proxies-bulk-save-btn" data-bind='template:{name:"network-proxies-bulk-save-tmpl"}'></div>
590         <table class="table table-striped table-bordered" id="networkProxiesTable"
591                data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko-network-proxies-grid',pageLinksId:'network-proxiesPagination'">
592         </table>
593         <div id="network-proxiesPagination"></div>
594     </div>
595     <div id="network-proxies-edit" class="tab-pane" data-bind='template: {name:"network-proxy-edit-tmpl"}'></div>
596   </div>
597
598 </script>
599
600 <script id='ko-network-proxies-grid' type='text/html'>
601     <thead>
602     <tr>
603         {{each(i, columnDefinition) columns}}
604         <th>${ columnDefinition.headerText }</th>
605         {{/each}}
606         <th>${$.i18n.prop('password')}</th>
607         <th>${$.i18n.prop('network.proxy.useNtlm')}</th>
608         <th>${$.i18n.prop('edit')}</th>
609         <th>${$.i18n.prop('delete')}</th>
610         <th>${$.i18n.prop('modified')}</th>
611     </tr>
612     </thead>
613     <tbody>
614     {{each(i, row) itemsOnCurrentPage()}}
615       <tr data-bind="css:{ 'modified': row.modified()}">
616         {{each(j, columnDefinition) columns}}
617         {{var val = (typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText])}}
618           <td>
619               ${val}
620           </td>
621         {{/each}}
622         {{if row.password()}}
623           <td>*****</td>
624         {{else}}
625           <td></td>
626         {{/if}}
627           <td>${row.useNtlm()}</td>
628           <td>
629             <a href="#" data-bind="click: function(){ editNetworkProxy(row) }">
630               <span class="btn btn-primary">
631                 <i class="icon-pencil icon-white"/>
632               </span>
633             </a>
634           </td>
635           <td>
636             <a href="#" data-bind="click: function(){ removeNetworkProxy(row) }">
637               <span class="btn btn-danger">
638                 <i class="icon-trash icon-white"/>
639               </span>
640             </a>
641           </td>
642         {{if row.modified()}}
643           <td>
644             <a href="#" data-bind="click: function(){ updateNetworkProxy(row) }" class="btn btn-warning">${$.i18n.prop('save')}</a>
645           </td>
646         {{else}}
647           <td></td>
648         {{/if}}
649
650     </tr>
651     {{/each}}
652     </tbody>
653
654 </script>
655
656 <script id="network-proxy-edit-tmpl" type='text/html'>
657     <form id="network-proxy-edit-form" class="well form-horizontal">
658       <fieldset id="network-proxy-edit-fieldset">
659         <div class="control-group">
660           <label class="control-label" for="id">${$.i18n.prop('id')}</label>
661           <div class="controls">
662             {{if update}}
663               <span class="uneditable-input">${$data.networkProxy.id}</span>
664             {{else}}
665               <input type="text" class="xlarge" id="id" name="id" size="10"
666                      data-bind="value: networkProxy.id,css:{'uneditable-input': update},readonly:update"/>
667             {{/if}}
668           </div>
669         </div>
670         <div class="control-group">
671           <label class="control-label" for="protocol">${$.i18n.prop('protocol')}</label>
672           <div class="controls">
673             <input type="text" class="xlarge required" id="protocol" name="protocol" size="8"
674                    data-bind="value: networkProxy.protocol"/>
675           </div>
676         </div>
677         <div class="control-group">
678           <label class="control-label" for="host">${$.i18n.prop('host')}</label>
679           <div class="controls">
680             <input type="text" class="xlarge required" id="host" name="host" size="15"
681                    data-bind="value: networkProxy.host"/>
682           </div>
683         </div>
684         <div class="control-group">
685           <label class="control-label" for="port">${$.i18n.prop('port')}</label>
686           <div class="controls">
687             <input type="text" class="xlarge required digits" id="port" name="port" size="6"
688                    data-bind="value: networkProxy.port"/>
689           </div>
690         </div>
691         <div class="control-group">
692           <label class="control-label" for="username">${$.i18n.prop('username')}</label>
693           <div class="controls">
694             <input type="text" class="xlarge" id="username" name="username" size="50"
695                    data-bind="value: networkProxy.username"/>
696           </div>
697         </div>
698         <div class="control-group">
699           <label class="control-label" for="password">${$.i18n.prop('password')}</label>
700           <div class="controls">
701             <input type="password" class="xlarge" id="password" name="password" size="50"
702                    data-bind="value: networkProxy.password"/>
703           </div>
704         </div>
705         <div class="control-group">
706           <label class="control-label" for="useNtlm">${$.i18n.prop('network.proxy.useNtlm')}</label>
707           <div class="controls">
708             <input type="checkbox" id="useNtlm" name="useNtlm" data-bind="checked: networkProxy.useNtlm"/>
709           </div>
710         </div>
711
712       </fieldset>
713       <button id="network-proxy-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
714       {{if networkProxy.modified()}}
715        ${("#network-proxy-btn-save").button('reset')}
716       {{/if}}
717       <button data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
718     </form>
719 </script>
720
721 <script id="network-proxies-bulk-save-tmpl" type='text/html'>
722   {{if bulkSave()}}
723     <a data-bind="click: updateModifiedNetworkProxies" class="btn btn-danger" href="#">${$.i18n.prop('save.all')}</a>
724   {{/if}}
725 </script>
726 <script id="network-proxy-delete-warning-tmpl" type='text/html'>
727     <div>
728       <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
729     </div>
730 </script>
731
732 <script id="proxyConnectorsMain" type="text/html">
733   <div class="page-header">
734     <h2><img src="images/preferences-system-network-proxy-32-32.png"/>${$.i18n.prop('proxy-connectors.list')}</h2>
735   </div>
736
737   <ul id="proxy-connectors-view-tabs" class="nav nav-tabs">
738     <li id="proxy-connectors-view-tabs-li-grid" class="active">
739       <a data-toggle="tab" href="#proxy-connectors-view" id="proxy-connectors-view-tabs-a-network-proxies-grid">${$.i18n.prop('proxy-connectors.grid.tab.title')}</a>
740     </li>
741     <li id="proxy-connectors-view-tabs-li-edit">
742       <a data-toggle="tab" href="#proxy-connectors-edit" id="proxy-connectors-view-tabs-a-edit">${$.i18n.prop('add')}</a>
743     </li>
744     <li id="proxy-connectors-view-tabs-li-edit-order">
745       <a data-toggle="tab" href="#proxy-connectors-edit-order" id="proxy-connectors-view-tabs-a-edit-order">${$.i18n.prop('proxy-connectors.grid.tab.edit.order')}</a>
746     </li>
747   </ul>
748   <div id="proxy-connectors-view-tabs-content" class="tab-content">
749     <div id="proxy-connectors-view" class="tab-pane active">
750       <div id="proxy-connectors-bulk-save-btn" data-bind='template:{name:"proxy-connectors-bulk-save-tmpl"}'></div>
751       <table class="table table-striped table-bordered" id="proxyConnectorsTable"
752              data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko-proxy-connectors-grid',pageLinksId:'proxy-connectorsPagination'">
753       </table>
754       <div id="proxy-connectorsPagination"></div>
755     </div>
756     <div id="proxy-connectors-edit" class="tab-pane"></div>
757     <div id="proxy-connector-edit-order" class="tab-pane span8">
758       <div id="proxy-connector-edit-order-managed-repository-div" data-bind='template:{name:"proxy-connector-edit-order-managed-repository-tmpl"}'></div>
759       <div id="proxy-connector-edit-order-div"
760          data-bind="sortable: { template: 'proxy-connector-edit-order-tmpl', data: proxyConnectors,afterMove: proxyConnectorMoved}">
761       </div>
762     </div>
763   </div>
764
765 </script>
766
767 <script id='ko-proxy-connectors-grid' type='text/html'>
768     <thead>
769       <tr>
770         <th title="${$.i18n.prop('proxy-connectors.grid.managedrepo.title')}">
771           ${$.i18n.prop('proxy-connectors.grid.managedrepo.grid.header')}
772         </th>
773         <th title="${$.i18n.prop('proxy-connectors.grid.remoterepo.title')}">
774           ${$.i18n.prop('proxy-connectors.grid.remoterepo.grid.header')}
775         </th>
776         <th>${$.i18n.prop('proxy-connectors.grid.remoterepo.settings.popover.title')}</th>
777         <th>${$.i18n.prop('edit')}</th>
778         <th>${$.i18n.prop('delete')}</th>
779         <th>${$.i18n.prop('save')}</th>
780         <th>${$.i18n.prop('proxy-connectors.grid.header.order')}</th>
781       </tr>
782     </thead>
783     <tbody>
784     {{each(i, row) itemsOnCurrentPage()}}
785     <tr data-bind="css:{ 'modified': row.modified()}">
786       <td>${row.sourceRepoId()}</td>
787       <td>${row.targetRepoId()}</td>
788       <td>
789           <a class="btn btn-info btn-mini" id="proxy-connectors-grid-remoterepo-settings-edit-${row.sourceRepoId()}-${row.targetRepoId()}"
790                   data-original-title="${$.i18n.prop('proxy-connectors.grid.remoterepo.settings.popover.title')}"
791                   data-content="${buildSettings(row)}" data-bind="click: showSettings">
792               <i class="icon-question-sign icon-white"></i>
793           </a>
794
795       </td>
796       <td>
797         <a data-bind="click: function(){ editProxyConnector(row)}" href="#">
798           <span class="btn btn-primary">
799             <i class="icon-pencil icon-white"/>
800           </span>
801         </a>
802       </td>
803       <td>
804         <a href="#" data-bind="click: function(){ deleteProxyConnector(row)}">
805           <span class="btn btn-danger">
806             <i class="icon-trash icon-white"/>
807           </span>
808         </a>
809       </td>
810       <td>
811         {{if row.modified()}}
812           <a href="#" class="btn btn-warning" data-bind="click: function(){ updateProxyConnector(row)}">
813               ${$.i18n.prop('save')}
814           </a>
815         {{/if}}
816       </td>
817       <td>
818         {{if orderChangeAware(row)}}
819           <a href="#" data-bind="click: function(){ displayOrderEdit(row)}">
820             <span class="btn btn-info">
821               <i class="icon-resize-vertical icon-white"/>
822                ${$.i18n.prop('proxy-connectors.order.edit')}
823             </span>
824
825           </a>
826           <span class="badge badge-info">${row.order()}</span>
827         {{/if}}
828       </td>
829     </tr>
830     {{/each}}
831     </tbody>
832     <div id="proxy-connectors-grid-remoterepo-settings-content-${val}-${targetRepoId}" style="display:none"></div>
833 </script>
834
835 <script id='proxy-connectors-remote-settings-popover-tmpl' type='text/html'>
836   <div>
837     {{if proxyId}}
838       ${$.i18n.prop('proxy-connectors.remoterepo.settings.networkproxy')}: ${proxyConnector.proxyId}
839     {{else}}
840       ${$.i18n.prop('proxy-connectors.remoterepo.settings.networkproxy')}: ${$.i18n.prop('none')}
841     {{/if}}
842     <table class="table">
843       <thead>
844         <th colspan="2">${$.i18n.prop('proxy-connector.policies')}</th>
845       </thead>
846       <tbody>
847         {{each(i, entry) proxyConnector.policiesEntries}}
848         {{var name = proxyConnectorsViewModel.findPolicyInformationName(entry.key)}}
849         <tr>
850           <td>${name}</td>
851           <td>${entry.value}</td>
852         </tr>
853         {{/each}}
854       </tbody>
855     </table>
856   </div>
857 </script>
858
859 <script id="proxy-connector-edit-form-tmpl" type='text/html'>
860
861     <form id="proxy-connector-edit-form" class="well form-horizontal">
862       <fieldset id="remote-repository-edit-fieldset">
863         <div class="control-group">
864           <label class="control-label" for="proxyId">${$.i18n.prop('proxy-connector.network-proxy.id')}</label>
865           <div class="controls">
866             <select id="proxyId"
867                     data-bind="options: proxyConnectorsViewModel.networkProxies, optionsText: 'id',optionsValue:'id',
868                      value: proxyConnector.proxyId, optionsCaption: 'direct connection'"></select>
869           </div>
870         </div>
871         <div class="control-group">
872           <label class="control-label" for="proxyId">${$.i18n.prop('proxy-connector.managed.repository.id')}</label>
873           <div class="controls">
874               <select id="sourceRepoId"
875                       data-bind="options: proxyConnectorsViewModel.managedRepositories, optionsText: 'id',optionsValue:'id',
876                       value: proxyConnector.sourceRepoId,attr: {disabled: isUpdate() }"></select>
877           </div>
878         </div>
879         <div class="control-group">
880           <label class="control-label" for="proxyId">${$.i18n.prop('proxy-connector.remote.repository.id')}</label>
881           <div class="controls">
882             <select id="targetRepoId"
883                     data-bind="options: proxyConnectorsViewModel.remoteRepositories, optionsText: 'id',optionsValue:'id',
884                      value: proxyConnector.targetRepoId,attr: {disabled: isUpdate() }"></select>
885           </div>
886         </div>
887         <div class="row-fluid">
888           <div class="control-group span6">
889             <table class="table">
890               <thead>
891                 <th colspan="2">${$.i18n.prop('proxy-connector.policies')}</th>
892               </thead>
893               <tbody data-bind="foreach: proxyConnectorsViewModel.policyInformations()">
894                   <tr>
895                     <td data-bind="text: name"></td>
896                     <td>
897                       <select data-bind="options: getPolicyOptions(id()),value:getSelectedPolicyOption(id()),
898                               attr: { id: 'policy-'+id() },event: { change: function(){ changePolicyOption(id())},}">
899                       </select>
900                     </td>
901                   </tr>
902               </tbody>
903             </table>
904           </div>
905         </div>
906         <div class="row-fluid">
907           <div class="control-group span6">
908             <h4>${$.i18n.prop('proxy-connector.properties')}</h4>
909             <table class="table">
910               <thead>
911                 <th><input type="text" id="property-key"/></th>
912                 <th><input type="text" id="property-value"/></th>
913                 <th><a href="#" data-bind="click: function(){ addProperty() }">${$.i18n.prop('add')}</a></th>
914               </thead>
915               <tbody data-bind="foreach: proxyConnector.propertiesEntries">
916                 <tr>
917                   <td data-bind="text: key"></td>
918                   <td data-bind="text: value"></td>
919                   <td><a href="#" data-bind="click: function(){ $parent.deleteProperty(key)}">${$.i18n.prop('delete')}</a></td>
920                 </tr>
921               </tbody>
922             </table>
923           </div>
924         </div>
925         <div class="row-fluid">
926           <div class="control-group span6">
927             <h4>${$.i18n.prop('proxy-connector.blacklist')}</h4>
928             <table class="table">
929               <thead>
930                 <th><input type="text" id="blacklist-value"/></th>
931                 <th><a href="#" data-bind="click: function(){ addBlacklistPattern() }">${$.i18n.prop('add')}</a></th>
932               </thead>
933               <tbody data-bind="foreach: proxyConnector.blackListPatterns">
934                 <tr>
935                   <td data-bind="text: $data"></td>
936                   <td><a href="#" data-bind="click: function(){removeBlacklistPattern($data)}">${$.i18n.prop('delete')}</a></td>
937                 </tr>
938               </tbody>
939             </table>
940           </div>
941         </div>
942         <div class="row-fluid">
943           <div class="control-group span6">
944             <h4>${$.i18n.prop('proxy-connector.whitelist')}</h4>
945             <table class="table">
946               <thead>
947                 <th><input type="text" id="whitelist-value"/></th>
948                 <th><a href="#" data-bind="click: function(){ addWhitelistPattern() }">${$.i18n.prop('add')}</a></th>
949               </thead>
950               <tbody data-bind="foreach: proxyConnector.whiteListPatterns">
951                 <tr>
952                   <td data-bind="text: $data"></td>
953                   <td><a href="#" data-bind="click: function(){removeWhitelistPattern($data)}">${$.i18n.prop('delete')}</a></td>
954                 </tr>
955               </tbody>
956             </table>
957           </div>
958         </div>
959       </fieldset>
960
961       <button id="proxy-connector-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
962       {{if modified()}}
963        ${("#network-proxy-btn-save").button('reset')}
964       {{/if}}
965       <button data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
966
967     </form>
968
969 </script>
970 <script id="proxy-connectors-bulk-save-tmpl" type='text/html'>
971   {{if bulkSave()}}
972     <a data-bind="click: updateModifiedProxyConnectors" class="btn btn-danger" href="#">${$.i18n.prop('save.all')}</a>
973   {{/if}}
974 </script>
975
976 <script id="proxy-connector-edit-order-tmpl" type='text/html'>
977   <div class="well draggable-item network-proxy-remote-item">
978     {{var remoteRepository=$parent.findRemoteRepository(targetRepoId)}}
979     <div class="row-fluid">
980       <div class="span1">
981         <img src="images/system-software-update-32-32.png"/>
982           <br/>
983           <img src="images/utilities-system-monitor-22-22.png"
984                id="proxy-connectors-order-remoterepo-settings-edit-${sourceRepoId()}-${targetRepoId()}"
985                data-original-title="${$.i18n.prop('proxy-connectors.grid.remoterepo.settings.popover.title')}"
986                data-bind="event: { mouseover: function(){ displaySettings(sourceRepoId(),targetRepoId())},}">
987           <div id="proxy-connectors-order-remoterepo-settings-content-${sourceRepoId()}-${targetRepoId()}"
988                style="display:none"></div>
989       </div>
990       <div class="span6 pull-left">
991         <blockquote>
992             ${targetRepoId}
993             <br/>
994             ${remoteRepository.name()}&nbsp;(<a href="${remoteRepository.url()}" target="_blank">${remoteRepository.url()}</a>)
995         </blockquote>
996       </div>
997       <div class="span2">
998         <span class="badge badge-info">${order}</span>
999       </div>
1000     </div>
1001   </div>
1002 </script>
1003
1004 <script id="proxy-connector-edit-order-managed-repository-tmpl" type="text/html">
1005   <div class="well row-fluid">
1006     <div class="span1">
1007       <img src="images/applications-internet-32-32.png"/>
1008     </div>
1009     <div class="span6">
1010       <blockquote>
1011         ${managedRepository.id}
1012         <br/>
1013         ${managedRepository.name}
1014       </blockquote>
1015     </div>
1016     <div class="span2">
1017       {{if proxyConnectorsViewModel.bulkSave()}}
1018         <p>
1019           <a data-bind="click: function(){updateModifiedProxyConnectors()}"
1020              href="#" class="btn btn-warning">${$.i18n.prop('save.all')}</a></p>
1021       {{/if}}
1022     </div>
1023   </div>
1024 </script>
1025
1026 <script id="proxy-connector-delete-warning-tmpl" type='text/html'>
1027     <div>
1028       <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
1029     </div>
1030 </script>
1031
1032 <script id="repositoryGroupsMain" type="text/html">
1033   <div class="page-header">
1034     <h2><img src="images/applications-internet-2-32-32.png"/>${$.i18n.prop('repository.groups.list')}</h2>
1035   </div>
1036   <ul id="repository-groups-view-tabs" class="nav nav-tabs">
1037     <li id="repository-groups-view-tabs-li-grid" class="active">
1038       <a data-toggle="tab" href="#repository-groups-view" id="repository-groups-view-tabs-a-network-proxies-grid">
1039         ${$.i18n.prop('repository-groups.grid.tab.title')}
1040       </a>
1041     </li>
1042     <li id="repository-groups-view-tabs-li-edit">
1043       <a data-toggle="tab" href="#repository-groups-edit" id="repository-groups-view-tabs-a-edit">${$.i18n.prop('add')}</a>
1044     </li>
1045
1046   </ul>
1047   <div id="repository-groups-view-tabs-content" class="tab-content">
1048         <div id="repository-groups-view" class="tab-pane active">
1049           <div id="repository-groups-table" data-bind='template:{name:"repository-groups-table-tmpl"}'>
1050           </div>
1051         </div>
1052         <div id="repository-groups-edit" class="tab-pane">
1053               <div class="row-fluid">
1054                 <div class="span5 dotted">
1055                   <div id="repository-groups-edit-div" data-bind='template:{name:"repository-group-edit-tmpl"}'></div>
1056                   <div id="repository-groups-edit-order-div" style="min-height: 80px"
1057                      data-bind="sortable: { template: 'repository-group-edit-order-tmpl',data:repositoryGroup.managedRepositories,afterMove:repositoryMoved}">
1058                   </div>
1059                 </div>
1060
1061                 <div class="span5 dotted">
1062                   <h5>${$.i18n.prop('repository.groups.available.repositories')}</h5>
1063                   <br/>
1064                   <div id="repository-groups-edit-available-repositories" style="min-height: 80px"
1065                        data-bind="sortable: { template: 'repository-group-edit-order-tmpl',data:availableRepositories,afterMove:repositoryMoved}">
1066
1067                   </div>
1068                 </div>
1069
1070               </div>
1071
1072         </div>
1073
1074   </div>
1075 </script>
1076
1077 <script id="repository-groups-table-tmpl" type="text/html">
1078   <table class="table table-striped table-bordered">
1079     <thead>
1080       <th>${$.i18n.prop('repository.groups.groups.grid.header')}</th>
1081       <th>${$.i18n.prop('repository.groups.repositories.grid.header')}</th>
1082       <th>${$.i18n.prop('edit')}</th>
1083       <th>${$.i18n.prop('delete')}</th>
1084       <th>${$.i18n.prop('save')}</th>
1085     </thead>
1086     <tbody>
1087     {{each(i, repositoryGroup) repositoryGroups}}
1088       <tr data-bind="css:{ 'modified': repositoryGroup.modified()}">
1089         <td>${repositoryGroup.id}</td>
1090         <td>
1091           <ul>
1092           {{each(j,id) repositoryGroup.repositories()}}
1093             <li>${id}</li>
1094           {{/each}}
1095           </ul>
1096         </td>
1097         <td>
1098           <a href="#" data-bind="click: function(){editRepositoryGroup(repositoryGroup)}">
1099             <span class="btn btn-primary">
1100               <i class="icon-pencil icon-white"/>
1101             </span>
1102           </a>
1103         </td>
1104         <td>
1105           <a href="#" data-bind="click: function(){deleteRepositoryGroup(repositoryGroup)}">
1106             <span class="btn btn-danger">
1107               <i class="icon-trash icon-white"/>
1108             </span>
1109           </a>
1110         </td>
1111         <td>
1112           {{if repositoryGroup.modified()}}
1113             <a href="#" class="btn btn-warning" data-bind="click: function(){saveRepositoryGroup(repositoryGroup)}">
1114               ${$.i18n.prop('save')}
1115             </a>
1116           {{/if}}
1117         </td>
1118       </tr>
1119     {{/each}}
1120     </tbody>
1121   </table>
1122 </script>
1123
1124 <script id="repository-group-edit-tmpl" type="text/html">
1125   <div class="row-fluid">
1126   {{if update}}
1127     <div class="dotted span8">
1128       <blockquote>
1129         ${repositoryGroup.id}
1130         <br/>
1131         <a href="${window.archivaRuntimeInfo.baseUrl}/repository/${repositoryGroup.id()}" target="_blank">
1132           ${window.archivaRuntimeInfo.baseUrl}/repository/${repositoryGroup.id()}
1133         </a>
1134       </blockquote>
1135     </div>
1136   {{else}}
1137     <div class="dotted span8">
1138       <form id="repository-group-edit-form" class="well">
1139         <fieldset id="repository-group-edit-fieldset">
1140           <div class="control-group">
1141             <label class="control-label" for="id">${$.i18n.prop('id')}</label>
1142             <div class="controls">
1143               <input type="text" class="xlarge required" id="id" name="id" size="15"
1144                    data-bind="value: repositoryGroup.id,css:{'uneditable-input': update},readonly:update"/>
1145             </div>
1146           </div>
1147         </fieldset>
1148       </form>
1149     </div>
1150   {{/if}}
1151   {{if repositoryGroup.modified()}}
1152     <div class="span3">
1153       <a href="#" class="btn btn-warning" data-bind="click: function(){saveRepositoryGroup(repositoryGroup)}">${$.i18n.prop('save')}</a>
1154     </div>
1155     <br/>
1156   {{/if}}
1157   </div>
1158 </script>
1159
1160 <script id="repository-group-edit-order-tmpl" type="text/html">
1161   <div class="well draggable-item">
1162     <blockquote>
1163       ${$data.id()}
1164       <br/>
1165       ${$data.name()}
1166       <br/>
1167       <a href="${window.archivaRuntimeInfo.baseUrl}/repository/${$data.id()}" target="_blank">
1168         ${window.archivaRuntimeInfo.baseUrl}/repository/${$data.id()}
1169       </a>
1170       <br/>
1171     </blockquote>
1172
1173   </div>
1174 </script>
1175
1176 <script id="repository-group-delete-warning-tmpl" type='text/html'>
1177     <div>
1178       <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
1179     </div>
1180 </script>