You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/01/04 09:50:11 UTC
svn commit: r1227080 - in
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp:
css/archiva.css index.html js/redback/roles.js
js/redback/templates/roles-tmpl.html
Author: olamy
Date: Wed Jan 4 08:50:10 2012
New Revision: 1227080
URL: http://svn.apache.org/viewvc?rev=1227080&view=rev
Log:
assigned/unassigned user(s) to a role: double multiselect view
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/css/archiva.css
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
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/roles-tmpl.html
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/css/archiva.css
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/css/archiva.css?rev=1227080&r1=1227079&r2=1227080&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/css/archiva.css (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/css/archiva.css Wed Jan 4 08:50:10 2012
@@ -20,4 +20,25 @@
/* medium-spinner */
#medium-spinner {
z-index: 20001;
+}
+
+
+
+.ar-multiselect .ar-multiselect-column {
+ float: left;
+ width: 17em;
+}
+
+.ar-multiselect .ar-multiselect-center {
+ float: left;
+ width: 3em;
+}
+
+.ar-multiselect-center ul {
+ list-style: none;
+ margin: 3px 0 2px 6px
+}
+
+.ar-multiselect-right {
+ margin-left: 2em
}
\ No newline at end of file
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html?rev=1227080&r1=1227079&r2=1227080&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html Wed Jan 4 08:50:10 2012
@@ -1,9 +1,11 @@
<!DOCTYPE html>
<html>
<head>
+ <link rel="stylesheet" href="css/jquery-ui-1.8.16.custom.css"/>
<link rel="stylesheet" href="css/bootstrap.min.1.4.0.css">
<link rel="stylesheet" href="css/archiva.css">
+
<script type="text/javascript" src="js/jquery-1.7.js"></script>
<script type="text/javascript" src="js/lab.js"></script>
@@ -22,7 +24,34 @@
<div class="content">
<div id="user-messages"></div>
- <div id="main-content"></div>
+ <div id="main-content">
+
+<div id="role-edit-users" class="clearfix ar-multiselect" style="float: left">
+<div class="ar-multiselect-column ar-multiselect-left">
+<select id="role-edit-available-users" class="" multiple="true">
+<option value="">admin</option>
+</select>
+</div>
+<div class="ar-multiselect-column ar-multiselect-center">
+<ul>
+<li>
+<button class="btn">></button>
+</li>
+<li>
+<button class="btn"><</button>
+</li>
+</ul>
+</div>
+<div class="ar-multiselect-column ar-multiselect-right">
+<select id="role-edit-affected-users" class="" multiple="true">
+<option value="">admin</option>
+</select>
+</div>
+</div>
+</div>
+
+
+ </div>
</div>
</div>
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=1227080&r1=1227079&r2=1227080&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 Wed Jan 4 08:50:10 2012
@@ -18,7 +18,7 @@
*/
$(function() {
- role = function(name,description,assignable,childRoleNames,parentRoleNames,users,parentsRolesUsers,permissions){
+ role = function(name,description,assignable,childRoleNames,parentRoleNames,users,parentsRolesUsers,permissions,otherUsers){
this.name = ko.observable(name);
this.description = ko.observable(description);
this.assignable = ko.observable(assignable);
@@ -27,6 +27,8 @@ $(function() {
this.users = ko.observableArray(users);
this.parentsRolesUsers = ko.observableArray(parentsRolesUsers);//read only
this.permissions = ko.observableArray(permissions);//read only
+ // when editing a role other users not assign to this role are populated
+ this.otherUsers = ko.observableArray(otherUsers);
this.updateDescription=function(){
var url = "restServices/redbackServices/roleManagementService/updateRoleDescription?";
@@ -54,6 +56,7 @@ $(function() {
*/
RolesViewModel=function() {
this.roles = ko.observableArray([]);
+
var self = this;
this.loadRoles = function() {
$.ajax("restServices/redbackServices/roleManagementService/allRoles", {
@@ -96,22 +99,17 @@ $(function() {
dataType: 'json',
success: function(data) {
var mappedRole = mapRole(data.role);
- $("#main-content #roles-view-tabs-content #role-edit").attr("data-bind",'template: {name:"editRoleTab",data: role}');
+ $("#main-content #roles-view-tabs-content #role-edit").attr("data-bind",'template: {name:"editRoleTab",data: currentRole}');
role.parentRoleNames=mappedRole.parentRoleNames;
role.parentsRolesUsers=mappedRole.parentsRolesUsers;
role.users=mappedRole.users;
- var viewModel = new roleViewModel(role);
+ role.otherUsers=mappedRole.otherUsers;
+ var viewModel = new RoleViewModel(role);
ko.applyBindings(viewModel,$("#main-content #roles-view-tabs-content #role-edit").get(0));
activateRoleEditTab();
}
}
);
-
-
- }
-
- this.saveRoleDescription=function(role){
- $.log("saveRoleDescription:"+role.description);
}
}
@@ -130,16 +128,30 @@ $(function() {
removeMediumSpinnerImg();
}
- saveRoleDescription=function(){
- var roleName = $("#editRoleTable #role-edit-name").html();
- var description = $("#editRoleTable #role-edit-description").val();
- clearUserMessages();
- new role(roleName,description).updateDescription();
-
- }
+ RoleViewModel=function(role){
+ selectedOtherUsers=new ko.observableArray();
+ selectedUsers=new ko.observableArray();
+ currentRole=role;
+ var self=this;
+ addUser=function(){
+ var removed = currentRole.otherUsers.removeAll(selectedOtherUsers());
+ for (var i = 0; i < removed.length; i++) {
+ currentRole.users.push(removed[i]);
+ }
+ selectedOtherUsers([]);
+ }
- roleViewModel=function(role){
- this.role=role;
+ removeUser=function(){
+ var added = currentRole.users.removeAll(selectedUsers());
+ for (var i = 0; i < added.length; i++) {
+ currentRole.otherUsers.push(added[i]);
+ }
+ selectedUsers([]);
+ }
+ saveRoleDescription=function(){
+ $.log("saveRoleDescription:"+currentRole.description());
+ currentRole.updateDescription();
+ }
}
/**
@@ -164,7 +176,11 @@ $(function() {
return mapPermission(item);
}): new Array(mapPermission(data.permissions)) :null;
- return new role(data.name, data.description?data.description:"",data.assignable,childRoleNames,parentRoleNames,users,parentsRolesUsers,permissions);
+ var otherUsers = data.otherUsers ? $.isArray(data.otherUsers)? $.map(data.otherUsers, function(item) {
+ return mapUser(item);
+ }):new Array(mapUser(data.otherUsers)):null;
+
+ return new role(data.name, data.description?data.description:"",data.assignable,childRoleNames,parentRoleNames,users,parentsRolesUsers,permissions,otherUsers);
}
activateRolesGridTab=function(){
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/roles-tmpl.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/roles-tmpl.html?rev=1227080&r1=1227079&r2=1227080&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/roles-tmpl.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/roles-tmpl.html Wed Jan 4 08:50:10 2012
@@ -130,6 +130,21 @@
${$.i18n.prop('role.edit.no.user.defined')}
{{/if}}
+ <div id="role-edit-users" class="clearfix ar-multiselect">
+ <div class="ar-multiselect-column ar-multiselect-left">
+ <select data-bind="options: otherUsers ,optionsText: 'username',selectedOptions:selectedOtherUsers" multiple="true" id="role-edit-available-users"></select>
+ </div>
+ <div class="ar-multiselect-column ar-multiselect-center">
+ <ul style="list-style: none">
+ <li><button class="btn" data-bind="click: addUser">></button></li>
+ <li><button class="btn" data-bind="click: removeUser"><</button></li>
+ </ul>
+ </div>
+ <div class="ar-multiselect-column ar-multiselect-right">
+ <select data-bind="options: users ,optionsText: 'username',selectedOptions:selectedUsers" multiple="true" id="role-edit-affected-users"></select>
+ </div>
+ </div>
+
</script>