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" />&nbsp;${$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);
+
+    }
+
   }
 
   /**


Reply via email to