Author: olamy
Date: Thu Jan 12 14:12:18 2012
New Revision: 1230554
URL: http://svn.apache.org/viewvc?rev=1230554&view=rev
Log:
knockout binding between available roles and user assigned roles
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/roles.js
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-edit.html
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/roles.js
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/roles.js?rev=1230554&r1=1230553&r2=1230554&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/roles.js
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/roles.js
Thu Jan 12 14:12:18 2012
@@ -259,15 +259,15 @@ $(function() {
ApplicationRoles =
function(name,description,globalRoles,roleTemplates,resources){
//private String name;
- this.name = name;
+ this.name = ko.observable(name);
//private String description;
- this.description = description;
+ this.description = description? ko.observable(description):"";
//private Collection<String> globalRoles;
- this.globalRoles = globalRoles;
+ this.globalRoles = ko.observableArray(globalRoles);
//private Collection<RoleTemplate> roleTemplates;
- this.roleTemplates = roleTemplates;
+ this.roleTemplates = ko.observableArray(roleTemplates);
//private Collection<String> resources;
- this.resources = resources;
+ this.resources = ko.observableArray(resources);
}
mapApplicationRoles=function(data){
@@ -280,17 +280,17 @@ $(function() {
RoleTemplate = function(id,namePrefix,delimiter,description,resource,roles){
//private String id;
- this.id = id;
+ this.id = ko.observable(id);
//private String namePrefix;
- this.namePrefix = namePrefix;
+ this.namePrefix = ko.observable(namePrefix);
//private String delimiter = " - ";
- this.delimiter = delimiter;
+ this.delimiter = ko.observable(delimiter);
//private String description;
- this.description = description;
+ this.description = description? ko.observable(description):"";
//private String resource;
- this.resource = resource;
+ this.resource = ko.observable(resource);
//private List<String> roles;
- this.roles = roles;
+ this.roles = ko.observableArray(roles);
}
mapRoleTemplate = function(data){
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-edit.html
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-edit.html?rev=1230554&r1=1230553&r2=1230554&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-edit.html
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-edit.html
Thu Jan 12 14:12:18 2012
@@ -84,16 +84,38 @@
</div>
</script>
-<script id="user_edit_roles_tmpl" type="text/x-jquery-tmpl">
+<script id="user_view_roles_list_tmpl" type="text/x-jquery-tmpl">
<div class="page-header">
<h3>${$.i18n.prop('effective.roles')}</h3>
</div>
<div>
<ul>
{{each $data.user.assignedRoles}}
- <li>${$value.name}</li>
+ <li>${$value}</li>
{{/each}}
</ul>
</div>
</script>
+<script id="user_edit_roles_tmpl" type="text/x-jquery-tmpl">
+
+ <div>
+ {{each $data.applicationRoles}}
+ <div class="page-header">
+ <h3>${$value.name}</h3>
+ </div>
+ <blockquote>
+ <p>${$value.description}</p>
+ </blockquote>
+ <ul>
+ {{each $value.globalRoles}}
+ <li><div><input type="checkbox" value="${$value}" data-bind="checked:
user.assignedRoles" /> ${$value}</div></li>
+ {{/each}}
+ </ul>
+ {{/each}}
+
+ <button class="btn"
data-bind="click:updateUserRoles">${$.i18n.prop('update')}</button>
+
+ </div>
+</script>
+
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js?rev=1230554&r1=1230553&r2=1230554&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js
Thu Jan 12 14:12:18 2012
@@ -118,9 +118,7 @@ $(function() {
window.redbackModel.createUser=false;
clearUserMessages();
activateUsersEditTab();
- // if already created before
- //$("#main-content #createUserForm").accordion("destroy");
- $("#main-content #createUserForm").html("");
+ $("#main-content #createUserForm").html(smallSpinnerImg());
$("#main-content #createUserForm").attr("data-bind",'template:
{name:"redback/user-edit-tmpl",data: user}');
var viewModel = new UserViewModel(user);
@@ -160,13 +158,11 @@ $(function() {
dataType: 'json',
success: function(data) {
var mappedRoles = $.map(data.role, function(item) {
- var r = mapRole(item);
- viewModel.user.assignedRoles.push(r);
- return r;
+ return item.name;
});
- viewModel.roles=mappedRoles;
+ user.assignedRoles = ko.observableArray(mappedRoles);
- $("#main-content
#user-edit-roles-view").attr("data-bind",'template:
{name:"user_edit_roles_tmpl"}');
+ $("#main-content
#user-edit-roles-view").attr("data-bind",'template:
{name:"user_view_roles_list_tmpl"}');
ko.applyBindings(viewModel,$("#user-edit-roles-view").get(0));
$("#main-content #edit_user_details_pills_headers").pills();
@@ -186,17 +182,20 @@ $(function() {
}
editUserRoles=function(user){
- $.log("editUserRoles:"+user.username());
+ var viewModel = new UserViewModel(user);
$("#user-edit-roles-edit").html(smallSpinnerImg());
$.ajax("restServices/redbackServices/roleManagementService/getApplicationRoles/"+encodeURIComponent(user.username()),
{
type: "GET",
dataType: 'json',
success: function(data) {
- $("#user-edit-roles-edit").html("loaded");
var mappedApplicationRoles = $.map(data.applicationRole,
function(item) {
return mapApplicationRoles(item);
});
+
viewModel.applicationRoles=ko.observableArray(mappedApplicationRoles);
$.log("applicationRoles length:"+mappedApplicationRoles.length);
+ $("#main-content #user-edit-roles-edit").attr("data-bind",'template:
{name:"user_edit_roles_tmpl"}');
+ ko.applyBindings(viewModel,$("#main-content
#user-edit-roles-edit").get(0));
+ $.log("assignedRoles:"+user.assignedRoles().length);
}
}
);
@@ -204,7 +203,13 @@ $(function() {
UserViewModel=function(user) {
this.user=user;
- this.roles = ko.observableArray(new Array());
+ this.applicationRoles = ko.observableArray(new Array());
+
+ updateUserRoles=function(){
+ $.log("updateUserRoles assigned:"+this.user.assignedRoles().length);
+
+ }
+
}
/**