diff options
author | Olivier Lamy <olamy@apache.org> | 2012-03-07 23:23:09 +0000 |
---|---|---|
committer | Olivier Lamy <olamy@apache.org> | 2012-03-07 23:23:09 +0000 |
commit | 8168443761f5fa182d80a233d883cd7f5393bb74 (patch) | |
tree | fbece7dd35e9ea3cbb49f7c93d1d0edb009f33c0 | |
parent | ff09a910b369104c1f33ae82035f4627394030e9 (diff) | |
download | archiva-8168443761f5fa182d80a233d883cd7f5393bb74.tar.gz archiva-8168443761f5fa182d80a233d883cd7f5393bb74.zip |
[MRM-1579] rewrite repositories scanning admin page
fileTypes pattern implemented.
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1298205 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 155 insertions, 0 deletions
diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/general-admin.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/general-admin.js index 1a6cfcc51..54897bfe4 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/general-admin.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/general-admin.js @@ -322,13 +322,114 @@ $(function() { return []; } + AdminRepositoryConsumer=function(enabled,id,description){ + //private boolean enabled = false; + this.enabled=ko.observable(enabled); + + //private String id; + this.id=ko.observable(id) + + //private String description; + this.description=ko.observable(description); + } + + mapAdminRepositoryConsumer=function(data){ + return new AdminRepositoryConsumer(data.enabled,data.id,data.description); + } + + mapAdminRepositoryConsumers=function(data){ + if (data!=null){ + return $.isArray(data)? $.map(data,function(item){ + return mapAdminRepositoryConsumer(item) + }):[mapAdminRepositoryConsumer(data)]; + } + return []; + } + + + + RepositoryScanningViewModel=function(){ + var self=this; + this.fileTypes=ko.observableArray([]); + + this.findFileType=function(id){ + var fileType=null; + for (var i=0;i<self.fileTypes().length;i++){ + if (id==self.fileTypes()[i].id()){ + fileType=self.fileTypes()[i]; + } + } + return fileType; + } + + removeFileTypePattern=function(id,pattern){ + clearUserMessages(); + var url="restServices/archivaServices/archivaAdministrationService/removeFileTypePattern?" + url+="fileTypeId="+encodeURIComponent(id); + url+="&pattern="+encodeURIComponent(pattern); + $.ajax(url, { + type: "GET", + dataType: 'json', + success: function(data){ + self.findFileType(id ).patterns.remove(pattern); + displaySuccessMessage( $.i18n.prop("repository-scanning.file-types.removed.pattern",id,pattern)); + + } + }); + } + + addFileTypePattern=function(id){ + var pattern=$("#main-content #pattern-"+id ).val(); + $.log("addFileTypePattern:"+id+":"+pattern); + clearUserMessages(); + var url="restServices/archivaServices/archivaAdministrationService/addFileTypePattern?" + url+="fileTypeId="+encodeURIComponent(id); + url+="&pattern="+encodeURIComponent(pattern); + $.ajax(url, { + type: "GET", + dataType: 'json', + success: function(data){ + self.findFileType(id ).patterns.push(pattern); + displaySuccessMessage( $.i18n.prop("repository-scanning.file-types.added.pattern",id,pattern)); + + } + }); + } + } + displayRepositoryScanning=function(){ + clearUserMessages(); + var mainContent=$("#main-content"); + + mainContent.html($("#repository-scanning-main").tmpl()); + mainContent.find("#file-types-content").html(mediumSpinnerImg()); + + var repositoryScanningViewModel=new RepositoryScanningViewModel(); + $.ajax("restServices/archivaServices/archivaAdministrationService/getFileTypes", { type: "GET", dataType: 'json', success: function(data){ var fileTypes=mapFileTypes(data); + repositoryScanningViewModel.fileTypes(fileTypes); + ko.applyBindings(repositoryScanningViewModel,mainContent.find("#file-types-content").get(0)); + } + }); + + $.ajax("restServices/archivaServices/archivaAdministrationService/getKnownContentAdminRepositoryConsumers", { + type: "GET", + dataType: 'json', + success: function(data){ + var adminRepositoryConsumers=mapAdminRepositoryConsumers(data); + } + }); + + $.ajax("restServices/archivaServices/archivaAdministrationService/getInvalidContentAdminRepositoryConsumers", { + type: "GET", + dataType: 'json', + success: function(data){ + var adminRepositoryConsumers=mapAdminRepositoryConsumers(data); } }); diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/general-admin.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/general-admin.html index 5e105daee..59c16417a 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/general-admin.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/general-admin.html @@ -137,3 +137,57 @@ </div> </script> +<script id="repository-scanning-main" type="text/html"> + <div id="repository-scanning-screen"> + <div class="page-header"> + <h2>${$.i18n.prop('repository-scanning.head')}</h2> + </div> + </div> + + <ul id="repositories-tabs" class="nav nav-tabs"> + <li class="active"> + <a data-toggle="tab" href="#file-types-content">${$.i18n.prop('repository-scanning.file-types.head')}</a> + </li> + <li> + <a data-toggle="tab" href="#consumers-content">${$.i18n.prop('repository-scanning.consumers.head')}</a> + </li> + </ul> + + <div class="tab-content"> + <div id="file-types-content" class="tab-pane active" data-bind='template: {name:"file-types-tmpl"}'> + file types + </div> + <div id="consumers-content" class="tab-pane"> + consumers + </div> + </div> + +</script> + +<script id="file-types-tmpl" type="text/html"> + <!-- accordion ?? --> + <div class="span4"> + {{each(i, fileType) fileTypes}} + <div class="page-header"> + <h4>${fileType.id}</h4> + </div> + <table class="table table-condensed"> + {{each(j,pattern) fileType.patterns}} + <tr> + <td>${pattern}</td> + <td> + <a href="#" data-bind="click: function(){ removeFileTypePattern(fileType.id(),pattern) }"> + <img src="images/edit-cut-22-22.png" title="${$.i18n.prop('delete')}"/> + </a> + </td> + </tr> + {{/each}} + <tr> + <td><input type="text" id="pattern-${fileType.id}"/></td> + <td><a href="#" data-bind="click: function(){addFileTypePattern(fileType.id())}">add</a></td> + </tr> + </table> + {{/each}} + </div> +</script> + |