[elvystrac] r1833 - user UC updated

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Tue, 23 Feb 2010 20:01:32 +0100

Author: DavidK
Date: 2010-02-23 20:01:32 +0100 (Tue, 23 Feb 2010)
New Revision: 1833

Added:
   trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java
Modified:
   trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java
   trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java
   trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
   trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml
   trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml
   trunk/server/webServer2/WebContent/template/elvys-template.xhtml
Log:
user UC updated

Modified: 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java
===================================================================
--- trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java    
2010-02-23 15:01:49 UTC (rev 1832)
+++ trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java    
2010-02-23 19:01:32 UTC (rev 1833)
@@ -1,8 +1,7 @@
 package elvys.server.bl.user;
 
-import java.lang.reflect.Field;
-
-import cz.elvys.commons.utils.CommonUtils;
+import cz.elvys.webServer.HIBgen.Role;
+import cz.elvys.webServer.HIBgen.User;
 import cz.elvys.webServer.toSpring.exception.ExecuteException;
 
 /**
@@ -21,366 +20,31 @@
         */
        public UserCompetencyHolder getUserCompetencies(Integer userId) throws 
ExecuteException;
        
+       /**
+        * Checks, whether "me" is authorized to delete given user
+        * @param user user to delete
+        * @param me "me" 
+        * @param holder my competency holder
+        * @return true-can be deleted, false -cannot be deleted
+        */
+       public boolean canDeleteThisUser(User user, User me, 
UserCompetencyHolder holder);
        
+       /**
+        * Checks, whether "me" is authorized to modify given user
+        * @param user user to delete
+        * @param me "me" 
+        * @param holder my competency holder
+        * @return true-can be modified, false -cannot be modified
+        */
+       public boolean canModifyThisUser(User user, User me, 
UserCompetencyHolder holder);
        
-       
-       
        /**
-        * This class holds user competencies
-        * @author David
+        * Checks, whether "me" is autrorized to create new user with given Role
+        * @param subjRole role
+        * @param me User (me)
+        * @param holder competency holder
+        * @return
         */
-       public static class UserCompetencyHolder {
-               
-               // consts
-               private static final String FIELD_NOT_INIT = "Field not 
initialized";
-               private static final String USER_COMP_CHECK_FAILED = "Check of 
user role's competency object failed";
-               
-               // role code
-               private String roleCode = null;
-               
-               // USER UCs RELATED
-               private Boolean canCreateManager = null;
-               private Boolean canModifyManager = null;
-               private Boolean canDeleteManager = null;
-               private Boolean canCreateUser = null;
-               private Boolean canModifyUser = null;
-               private Boolean canDeleteUser = null;
-               private Boolean canCreateAdmin = null;
-               private Boolean canModifyAdmin = null;
-               private Boolean canDeleteAdmin = null;
-               private Boolean canCreateSuperadmin = null;
-               private Boolean canModifySuperadmin = null;
-               private Boolean canDeleteSuperadmin = null;
-               private Boolean canListUsersOwnCompany = null;
-               private Boolean canListUsersAllCompanies = null;
+       public boolean canCreateUserWithThisRole(Role subjRole, User me, 
UserCompetencyHolder holder);
        
-               
-               private Boolean canChangeOwnRole = null;
-               
-               // COMPANY UCs RELATED
-               private Boolean canCreateCompany = null;
-               private Boolean canListCompanies = null;
-               
-               
-               // LAYOUT UCs RELATED
-               private Boolean canRunLD = null;
-               
-               // CATEGORY UCs RELATED
-               private Boolean canManageCategories = null;
-               
-               // ELVYS UCs RELATED
-               private Boolean canManageElvyses = null;
-               
-               // PLANNING UCs RELATED
-               private Boolean canPlan = null;
-
-               // FILE UCs RELATED
-               private Boolean canManageFiles = null;
-
-               // STATISTICS UCs RELATED
-               private Boolean canUseStatistics = null;
-               
-               
-               
-               ///////////////////
-               //// CHECKER
-               ///////////////////
-               /**
-                * checks, whether all fields starting on 'can..' have been set
-                * @throws ExecuteException
-                */
-               public void checkUserCompetencyObject() throws ExecuteException 
{
-                       Field[] fields = this.getClass().getDeclaredFields();
-                       try {
-                               // traverse each field
-                               for (Field f: fields) {
-                                       if (!f.getName().startsWith(("can"))) {
-                                               continue;
-                                       }
-                                       if (f.get(this) == null) {
-                                               String message = 
CommonUtils.prepareErrorMessage(
-                                                       FIELD_NOT_INIT, 
"field", f.getName());
-                                               throw new 
NullPointerException(message);
-                                       }
-                               }
-                       } catch (Exception e) {
-                               String message = 
CommonUtils.prepareErrorMessage(
-                                       USER_COMP_CHECK_FAILED);
-                               throw new ExecuteException(message,e);
-                       }
-               }
-               
-               @Override
-               public String toString() {
-                       StringBuilder builder = new StringBuilder();
-                       builder.append("roleCode= 
").append(roleCode).append('\n');
-                       
-                       try {
-                               Field[] fields = 
this.getClass().getDeclaredFields();
-                               for(Field f: fields) {
-                                       if (!f.getName().startsWith("can")) {
-                                               continue;
-                                       }
-                                       builder.append(f.getName()).append("= ")
-                                               
.append(f.get(this)).append('\n');
-                               }
-                       } catch (Exception e) {
-                               return e.getMessage();
-                       }
-                       
-                       
-                       return builder.toString();
-               }
-               
-               
-               
-               
-               
-               ////////////////////
-               /// GETTERS+ SETTERS
-               ////////////////////
-               
-               
-               public Boolean getCanManageCategories() {
-                       return canManageCategories;
-               }
-
-               public String getRoleCode() {
-                       return roleCode;
-               }
-
-               public void setRoleCode(String roleCode) {
-                       this.roleCode = roleCode;
-               }
-
-
-
-
-
-
-
-               public void setCanManageCategories(Boolean canManageCategories) 
{
-                       this.canManageCategories = canManageCategories;
-               }
-
-               public Boolean getCanManageElvyses() {
-                       return canManageElvyses;
-               }
-
-               public void setCanManageElvyses(Boolean canManageElvyses) {
-                       this.canManageElvyses = canManageElvyses;
-               }
-
-               public Boolean getCanCreateManager() {
-                       return canCreateManager;
-               }
-
-
-               public Boolean getCanListUsersOwnCompany() {
-                       return canListUsersOwnCompany;
-               }
-
-
-               public void setCanListUsersOwnCompany(Boolean 
canListUsersOwnCompany) {
-                       this.canListUsersOwnCompany = canListUsersOwnCompany;
-               }
-
-
-               public Boolean getCanListUsersAllCompanies() {
-                       return canListUsersAllCompanies;
-               }
-
-
-               public void setCanListUsersAllCompanies(Boolean 
canListUsersAllCompanies) {
-                       this.canListUsersAllCompanies = 
canListUsersAllCompanies;
-               }
-
-
-               public void setCanCreateManager(Boolean canCreateManager) {
-                       this.canCreateManager = canCreateManager;
-               }
-
-
-               public Boolean getCanModifyManager() {
-                       return canModifyManager;
-               }
-
-
-               public void setCanModifyManager(Boolean canModifyManager) {
-                       this.canModifyManager = canModifyManager;
-               }
-
-
-               public Boolean getCanDeleteManager() {
-                       return canDeleteManager;
-               }
-
-
-               public void setCanDeleteManager(Boolean canDeleteManager) {
-                       this.canDeleteManager = canDeleteManager;
-               }
-
-
-               public Boolean getCanCreateUser() {
-                       return canCreateUser;
-               }
-
-
-               public void setCanCreateUser(Boolean canCreateUser) {
-                       this.canCreateUser = canCreateUser;
-               }
-
-
-               public Boolean getCanModifyUser() {
-                       return canModifyUser;
-               }
-
-
-               public void setCanModifyUser(Boolean canModifyUser) {
-                       this.canModifyUser = canModifyUser;
-               }
-
-
-               public Boolean getCanDeleteUser() {
-                       return canDeleteUser;
-               }
-
-
-               public void setCanDeleteUser(Boolean canDeleteUser) {
-                       this.canDeleteUser = canDeleteUser;
-               }
-
-
-               public Boolean getCanCreateAdmin() {
-                       return canCreateAdmin;
-               }
-
-
-               public void setCanCreateAdmin(Boolean canCreateAdmin) {
-                       this.canCreateAdmin = canCreateAdmin;
-               }
-
-
-               public Boolean getCanModifyAdmin() {
-                       return canModifyAdmin;
-               }
-
-
-               public void setCanModifyAdmin(Boolean canModifyAdmin) {
-                       this.canModifyAdmin = canModifyAdmin;
-               }
-
-
-               public Boolean getCanDeleteAdmin() {
-                       return canDeleteAdmin;
-               }
-
-
-               public void setCanDeleteAdmin(Boolean canDeleteAdmin) {
-                       this.canDeleteAdmin = canDeleteAdmin;
-               }
-
-
-               public Boolean getCanCreateSuperadmin() {
-                       return canCreateSuperadmin;
-               }
-
-
-               public void setCanCreateSuperadmin(Boolean canCreateSuperadmin) 
{
-                       this.canCreateSuperadmin = canCreateSuperadmin;
-               }
-
-
-               public Boolean getCanModifySuperadmin() {
-                       return canModifySuperadmin;
-               }
-
-
-               public void setCanModifySuperadmin(Boolean canModifySuperadmin) 
{
-                       this.canModifySuperadmin = canModifySuperadmin;
-               }
-
-
-               public Boolean getCanDeleteSuperadmin() {
-                       return canDeleteSuperadmin;
-               }
-
-
-               public void setCanDeleteSuperadmin(Boolean canDeleteSuperadmin) 
{
-                       this.canDeleteSuperadmin = canDeleteSuperadmin;
-               }
-
-               public Boolean getCanChangeOwnRole() {
-                       return canChangeOwnRole;
-               }
-
-
-               public void setCanChangeOwnRole(Boolean canChangeOwnRole) {
-                       this.canChangeOwnRole = canChangeOwnRole;
-               }
-
-
-               public Boolean getCanCreateCompany() {
-                       return canCreateCompany;
-               }
-
-
-               public void setCanCreateCompany(Boolean canCreateCompany) {
-                       this.canCreateCompany = canCreateCompany;
-               }
-
-
-               public Boolean getCanListCompanies() {
-                       return canListCompanies;
-               }
-
-
-               public void setCanListCompanies(Boolean canListCompanies) {
-                       this.canListCompanies = canListCompanies;
-               }
-
-
-               public Boolean getCanRunLD() {
-                       return canRunLD;
-               }
-
-
-               public void setCanRunLD(Boolean canRunLD) {
-                       this.canRunLD = canRunLD;
-               }
-
-
-               public Boolean getCanUseStatistics() {
-                       return canUseStatistics;
-               }
-
-
-               public void setCanUseStatistics(Boolean canUseStatistics) {
-                       this.canUseStatistics = canUseStatistics;
-               }
-
-
-               public Boolean getCanManageFiles() {
-                       return canManageFiles;
-               }
-
-
-               public void setCanManageFiles(Boolean canManageFiles) {
-                       this.canManageFiles = canManageFiles;
-               }
-
-
-               public Boolean getCanPlan() {
-                       return canPlan;
-               }
-
-
-               public void setCanPlan(Boolean canPlan) {
-                       this.canPlan = canPlan;
-               }
-       }
-       
-       
-       
-       
 }

Modified: 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java
===================================================================
--- 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java    
    2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java    
    2010-02-23 19:01:32 UTC (rev 1833)
@@ -65,7 +65,66 @@
        
        
        
+       
+       
+       
        @Override
+       public boolean canDeleteThisUser(User user, User me, 
UserCompetencyHolder holder) {
+               if (user.getId().equals(me.getId())) {
+                       return false;
+               }
+               if (user.isSystem()) {
+                       return false;
+               }
+               String r = user.getRole().getRole();
+               if (r.equals("user") && holder.getCanDeleteUser()) {
+                       return true;
+               } else if (r.equals("manager") && holder.getCanDeleteManager()) 
{
+                       return true;
+               } else if (r.equals("admin") && holder.getCanDeleteAdmin()) {
+                       return true;
+               } else if (r.equals("superadmin") && 
holder.getCanDeleteSuperadmin()) {
+                       return true;
+               }
+               return false;
+       }
+       
+       @Override
+       public boolean canModifyThisUser(User user, User me, 
UserCompetencyHolder holder) {
+               if (user.getId().equals(me.getId())) {
+                       return true;
+               }
+               String r = user.getRole().getRole();
+               if (r.equals("user") && holder.getCanModifyUser()) {
+                       return true;
+               } else if (r.equals("manager") && holder.getCanModifyManager()) 
{
+                       return true;
+               } else if (r.equals("admin") && holder.getCanModifyAdmin()) {
+                       return true;
+               } else if (r.equals("superadmin") && 
holder.getCanModifySuperadmin()) {
+                       return true;
+               }
+               return false;
+       }
+       
+       @Override
+       public boolean canCreateUserWithThisRole(Role subjRole, User me,
+               UserCompetencyHolder holder) {
+               
+               String r = subjRole.getRole();
+               if (r.equals("user") && holder.getCanCreateUser()) {
+                       return true;
+               } else if (r.equals("manager") && holder.getCanCreateManager()) 
{
+                       return true;
+               } else if (r.equals("admin") && holder.getCanCreateAdmin()) {
+                       return true;
+               } else if (r.equals("superadmin") && 
holder.getCanCreateSuperadmin()) {
+                       return true;
+               }
+               return false;
+       }
+       
+       @Override
        public UserCompetencyHolder getUserCompetencies(Integer userId)
                        throws ExecuteException {
                if (userId == null) {
@@ -108,6 +167,20 @@
                        if (ac >= AC_USERS_OWN_COMPANY) {
                                val = true;
                        }
+                       h.setCanCreateAnyUser(val);
+               }
+               {
+                       boolean val = false;
+                       if (ac >= AC_USERS_ALL_COMPANIES) {
+                               val = true;
+                       }
+                       h.setCanCreateUserOtherCompany(val);
+               }
+               {
+                       boolean val = false;
+                       if (ac >= AC_USERS_OWN_COMPANY) {
+                               val = true;
+                       }
                        h.setCanCreateManager(val);
                }
                {

Modified: 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java
===================================================================
--- 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java    
    2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java    
    2010-02-23 19:01:32 UTC (rev 1833)
@@ -14,7 +14,7 @@
 import static org.junit.Assert.*;
 
 import elvys.server.bl.Fact;
-import elvys.server.bl.user.UserCompetencyBL.UserCompetencyHolder;
+import elvys.server.bl.user.UserCompetencyHolder;
 
 
 public class UserCompetencyBLTest {

Added: 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java
===================================================================
--- 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java    
                            (rev 0)
+++ 
trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java    
    2010-02-23 19:01:32 UTC (rev 1833)
@@ -0,0 +1,372 @@
+package elvys.server.bl.user;
+
+import java.lang.reflect.Field;
+
+import cz.elvys.commons.utils.CommonUtils;
+import cz.elvys.webServer.toSpring.exception.ExecuteException;
+
+/**
+ * This class holds user competencies
+ * @author David
+ */
+public class UserCompetencyHolder {
+       
+       // consts
+       private static final String FIELD_NOT_INIT = "Field not initialized";
+       private static final String USER_COMP_CHECK_FAILED = "Check of user 
role's competency object failed";
+       
+       // role code
+       private String roleCode = null;
+       
+       // USER UCs RELATED
+       private Boolean canCreateManager = null;
+       private Boolean canModifyManager = null;
+       private Boolean canDeleteManager = null;
+       private Boolean canCreateUser = null;
+       private Boolean canCreateAnyUser = null;
+       private Boolean canCreateUserOtherCompany = null;
+       private Boolean canModifyUser = null;
+       private Boolean canDeleteUser = null;
+       private Boolean canCreateAdmin = null;
+       private Boolean canModifyAdmin = null;
+       private Boolean canDeleteAdmin = null;
+       private Boolean canCreateSuperadmin = null;
+       private Boolean canModifySuperadmin = null;
+       private Boolean canDeleteSuperadmin = null;
+       private Boolean canListUsersOwnCompany = null;
+       private Boolean canListUsersAllCompanies = null;
+
+       
+       private Boolean canChangeOwnRole = null;
+       
+       // COMPANY UCs RELATED
+       private Boolean canCreateCompany = null;
+       private Boolean canListCompanies = null;
+       
+       
+       // LAYOUT UCs RELATED
+       private Boolean canRunLD = null;
+       
+       // CATEGORY UCs RELATED
+       private Boolean canManageCategories = null;
+       
+       // ELVYS UCs RELATED
+       private Boolean canManageElvyses = null;
+       
+       // PLANNING UCs RELATED
+       private Boolean canPlan = null;
+
+       // FILE UCs RELATED
+       private Boolean canManageFiles = null;
+
+       // STATISTICS UCs RELATED
+       private Boolean canUseStatistics = null;
+       
+       
+       
+       ///////////////////
+       //// CHECKER
+       ///////////////////
+       /**
+        * checks, whether all fields starting on 'can..' have been set
+        * @throws ExecuteException
+        */
+       public void checkUserCompetencyObject() throws ExecuteException {
+               Field[] fields = this.getClass().getDeclaredFields();
+               try {
+                       // traverse each field
+                       for (Field f: fields) {
+                               if (!f.getName().startsWith(("can"))) {
+                                       continue;
+                               }
+                               if (f.get(this) == null) {
+                                       String message = 
CommonUtils.prepareErrorMessage(
+                                               FIELD_NOT_INIT, "field", 
f.getName());
+                                       throw new NullPointerException(message);
+                               }
+                       }
+               } catch (Exception e) {
+                       String message = CommonUtils.prepareErrorMessage(
+                               USER_COMP_CHECK_FAILED);
+                       throw new ExecuteException(message,e);
+               }
+       }
+       
+       @Override
+       public String toString() {
+               StringBuilder builder = new StringBuilder();
+               builder.append("roleCode= ").append(roleCode).append('\n');
+               
+               try {
+                       Field[] fields = this.getClass().getDeclaredFields();
+                       for(Field f: fields) {
+                               if (!f.getName().startsWith("can")) {
+                                       continue;
+                               }
+                               builder.append(f.getName()).append("= ")
+                                       .append(f.get(this)).append('\n');
+                       }
+               } catch (Exception e) {
+                       return e.getMessage();
+               }
+               
+               
+               return builder.toString();
+       }
+       
+       
+       
+       
+       
+       ////////////////////
+       /// GETTERS+ SETTERS
+       ////////////////////
+       
+       
+       public Boolean getCanManageCategories() {
+               return canManageCategories;
+       }
+
+       public String getRoleCode() {
+               return roleCode;
+       }
+
+       public void setRoleCode(String roleCode) {
+               this.roleCode = roleCode;
+       }
+
+       public Boolean getCanCreateUserOtherCompany() {
+               return canCreateUserOtherCompany;
+       }
+
+       public void setCanCreateUserOtherCompany(Boolean 
canCreateUserOtherCompany) {
+               this.canCreateUserOtherCompany = canCreateUserOtherCompany;
+       }
+
+       public void setCanManageCategories(Boolean canManageCategories) {
+               this.canManageCategories = canManageCategories;
+       }
+
+       public Boolean getCanManageElvyses() {
+               return canManageElvyses;
+       }
+
+       public void setCanManageElvyses(Boolean canManageElvyses) {
+               this.canManageElvyses = canManageElvyses;
+       }
+
+       public Boolean getCanCreateManager() {
+               return canCreateManager;
+       }
+
+       public Boolean getCanCreateAnyUser() {
+               return canCreateAnyUser;
+       }
+
+       public void setCanCreateAnyUser(Boolean canCreateAnyUser) {
+               this.canCreateAnyUser = canCreateAnyUser;
+       }
+
+       public Boolean getCanListUsersOwnCompany() {
+               return canListUsersOwnCompany;
+       }
+
+
+       public void setCanListUsersOwnCompany(Boolean canListUsersOwnCompany) {
+               this.canListUsersOwnCompany = canListUsersOwnCompany;
+       }
+
+
+       public Boolean getCanListUsersAllCompanies() {
+               return canListUsersAllCompanies;
+       }
+
+
+       public void setCanListUsersAllCompanies(Boolean 
canListUsersAllCompanies) {
+               this.canListUsersAllCompanies = canListUsersAllCompanies;
+       }
+
+
+       public void setCanCreateManager(Boolean canCreateManager) {
+               this.canCreateManager = canCreateManager;
+       }
+
+
+       public Boolean getCanModifyManager() {
+               return canModifyManager;
+       }
+
+
+       public void setCanModifyManager(Boolean canModifyManager) {
+               this.canModifyManager = canModifyManager;
+       }
+
+
+       public Boolean getCanDeleteManager() {
+               return canDeleteManager;
+       }
+
+
+       public void setCanDeleteManager(Boolean canDeleteManager) {
+               this.canDeleteManager = canDeleteManager;
+       }
+
+
+       public Boolean getCanCreateUser() {
+               return canCreateUser;
+       }
+
+
+       public void setCanCreateUser(Boolean canCreateUser) {
+               this.canCreateUser = canCreateUser;
+       }
+
+
+       public Boolean getCanModifyUser() {
+               return canModifyUser;
+       }
+
+
+       public void setCanModifyUser(Boolean canModifyUser) {
+               this.canModifyUser = canModifyUser;
+       }
+
+
+       public Boolean getCanDeleteUser() {
+               return canDeleteUser;
+       }
+
+
+       public void setCanDeleteUser(Boolean canDeleteUser) {
+               this.canDeleteUser = canDeleteUser;
+       }
+
+
+       public Boolean getCanCreateAdmin() {
+               return canCreateAdmin;
+       }
+
+
+       public void setCanCreateAdmin(Boolean canCreateAdmin) {
+               this.canCreateAdmin = canCreateAdmin;
+       }
+
+
+       public Boolean getCanModifyAdmin() {
+               return canModifyAdmin;
+       }
+
+
+       public void setCanModifyAdmin(Boolean canModifyAdmin) {
+               this.canModifyAdmin = canModifyAdmin;
+       }
+
+
+       public Boolean getCanDeleteAdmin() {
+               return canDeleteAdmin;
+       }
+
+
+       public void setCanDeleteAdmin(Boolean canDeleteAdmin) {
+               this.canDeleteAdmin = canDeleteAdmin;
+       }
+
+
+       public Boolean getCanCreateSuperadmin() {
+               return canCreateSuperadmin;
+       }
+
+
+       public void setCanCreateSuperadmin(Boolean canCreateSuperadmin) {
+               this.canCreateSuperadmin = canCreateSuperadmin;
+       }
+
+
+       public Boolean getCanModifySuperadmin() {
+               return canModifySuperadmin;
+       }
+
+
+       public void setCanModifySuperadmin(Boolean canModifySuperadmin) {
+               this.canModifySuperadmin = canModifySuperadmin;
+       }
+
+
+       public Boolean getCanDeleteSuperadmin() {
+               return canDeleteSuperadmin;
+       }
+
+
+       public void setCanDeleteSuperadmin(Boolean canDeleteSuperadmin) {
+               this.canDeleteSuperadmin = canDeleteSuperadmin;
+       }
+
+       public Boolean getCanChangeOwnRole() {
+               return canChangeOwnRole;
+       }
+
+
+       public void setCanChangeOwnRole(Boolean canChangeOwnRole) {
+               this.canChangeOwnRole = canChangeOwnRole;
+       }
+
+
+       public Boolean getCanCreateCompany() {
+               return canCreateCompany;
+       }
+
+
+       public void setCanCreateCompany(Boolean canCreateCompany) {
+               this.canCreateCompany = canCreateCompany;
+       }
+
+
+       public Boolean getCanListCompanies() {
+               return canListCompanies;
+       }
+
+
+       public void setCanListCompanies(Boolean canListCompanies) {
+               this.canListCompanies = canListCompanies;
+       }
+
+
+       public Boolean getCanRunLD() {
+               return canRunLD;
+       }
+
+
+       public void setCanRunLD(Boolean canRunLD) {
+               this.canRunLD = canRunLD;
+       }
+
+
+       public Boolean getCanUseStatistics() {
+               return canUseStatistics;
+       }
+
+
+       public void setCanUseStatistics(Boolean canUseStatistics) {
+               this.canUseStatistics = canUseStatistics;
+       }
+
+
+       public Boolean getCanManageFiles() {
+               return canManageFiles;
+       }
+
+
+       public void setCanManageFiles(Boolean canManageFiles) {
+               this.canManageFiles = canManageFiles;
+       }
+
+
+       public Boolean getCanPlan() {
+               return canPlan;
+       }
+
+
+       public void setCanPlan(Boolean canPlan) {
+               this.canPlan = canPlan;
+       }
+}

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
  2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
  2010-02-23 19:01:32 UTC (rev 1833)
@@ -18,6 +18,8 @@
 import cz.elvys.webServer.utils.faces.MessageUtils;
 import elvys.server.bl.Fact;
 import elvys.server.bl.user.UserBL;
+import elvys.server.bl.user.UserCompetencyBL;
+import elvys.server.bl.user.UserCompetencyHolder;
 
 public class UserEditBean implements Serializable {
        // fields
@@ -109,6 +111,21 @@
                this.sizeOfRolesToSelect = sizeOfRolesToSelect;
        }
 
+       public boolean isUpdatingProfile() {
+               return updatingProfile;
+       }
+
+       public void setUpdatingProfile(boolean updatingProfile) {
+               this.updatingProfile = updatingProfile;
+       }
+
+       public String getPassword() {
+               return password;
+       }
+       public void setPassword(String password) {
+               this.password = password;
+       }
+
        /**
         * @return
         */
@@ -156,7 +173,6 @@
                }
                selectedUser.setRole(role);
                
-               
                if(!isEdit && password.equals("")){
                        FacesMessage message =  MessageUtils.getMessage(
                                        "user.form.emptyPassword", null, 
FacesMessage.SEVERITY_ERROR);
@@ -165,14 +181,6 @@
                        result = "error";
                }
                
-               if(!isEdit && password.equals("")){
-                       FacesMessage message =  MessageUtils.getMessage(
-                                       "user.form.emptyPassword", null, 
FacesMessage.SEVERITY_ERROR);
-                       FacesContext fc = FacesContext.getCurrentInstance();
-                       fc.addMessage("editUserForm:password", message);
-                       result = "error";
-               }
-               
                // password and passwordAgain are different
                if (!password.equals(passwordAgain)) {                  
                        FacesMessage message =  MessageUtils.getMessage(
@@ -293,22 +301,19 @@
        private List<SelectItem> loadPermittedRolesList() {
                rolesList = userBL.loadPermittedRolesList();
                
-               UserLoginBean me = BeanManager.getUser();
+               
+               UserLoginBean ulb = BeanManager.getUser();
+               User me = ulb.getUser();
+               UserCompetencyBL ucbl = Fact.getUserCompetencyBL();
+               UserCompetencyHolder holder = ulb.getCompetency(); 
                List<SelectItem> roles = new LinkedList<SelectItem>();
-               if (me.getCompStr().equalsIgnoreCase("superadmin")){
-                       // superadmin is allowed to create user with each 
competency
-                       roles.add(prepareSelectItem("user"));
-                       roles.add(prepareSelectItem("admin"));
-                       roles.add(prepareSelectItem("superadmin"));
-               } else if (me.getCompStr().equalsIgnoreCase("admin")) {
-                       // admin is not allowed to create user with 
"superadmin" competency
-                       roles.add(prepareSelectItem("user"));
-                       roles.add(prepareSelectItem("admin"));
-               } else {
-                       // user is allowed to create only users
-                       roles.add(prepareSelectItem("user"));
-               }
                
+               for (Role role: rolesList) {
+                       boolean canCreate = 
ucbl.canCreateUserWithThisRole(role, me, holder);
+                       if (canCreate) {
+                               roles.add(prepareSelectItem(role.getRole()));
+                       }
+               }
                return roles;
        }
 
@@ -325,19 +330,4 @@
                return si;
        }
        
-       public boolean isUpdatingProfile() {
-               return updatingProfile;
-       }
-
-       public void setUpdatingProfile(boolean updatingProfile) {
-               this.updatingProfile = updatingProfile;
-       }
-
-       public String getPassword() {
-               return password;
-       }
-
-       public void setPassword(String password) {
-               this.password = password;
-       }
 }

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
  2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
  2010-02-23 19:01:32 UTC (rev 1833)
@@ -1,6 +1,7 @@
 package cz.elvys.webServer.beans.user;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.faces.event.ActionEvent;
@@ -12,7 +13,8 @@
 import cz.elvys.webServer.utils.faces.BeanManager;
 import elvys.server.bl.Fact;
 import elvys.server.bl.user.UserBL;
-import elvys.server.bl.user.UserCompetencyBL.UserCompetencyHolder;
+import elvys.server.bl.user.UserCompetencyBL;
+import elvys.server.bl.user.UserCompetencyHolder;
 
 /**
  * @author David
@@ -25,9 +27,10 @@
        // const
        private static final long serialVersionUID = 8092026699388193893L;
 
-       private List<User> users = null;
+       private List<UserListRecord> userRecords = null;
        private User selectedUser = null;
-
+       private boolean canSearchInCompany = false;
+       
        // filter variables
        private String filterValue;
 
@@ -38,14 +41,16 @@
                this.userBL = Fact.getUserBL();
        }
 
-       public List<User> getUsers() {
-               return users;
+       public static long getSerialVersionUID() {
+               return serialVersionUID;
        }
 
-       public void setUsers(List<User> users) {
-               this.users = users;
+
+       public List<UserListRecord> getUserRecords() {
+               return userRecords;
        }
 
+
        public User getSelectedUser() {
                return selectedUser;
        }
@@ -63,9 +68,12 @@
                boolean canListUsersOfCompany = uch.getCanListUsersOwnCompany();
                boolean canListAllUsers = uch.getCanListUsersAllCompanies();
                
+               List<User> users = null;
                if (canListAllUsers) {
+                       // list all users
                        users = userBL.loadAllUsers();
                } else if (canListUsersOfCompany) {
+                       // list only users of own company
                        int compID = user.getCompanyID();
                        users = userBL.loadUsersOfCompany(compID);
                } else {
@@ -74,12 +82,31 @@
                        log.error(message);
                        throw new RuntimeException(message);
                }
+               
+               // fill userRecords list
+               userRecords = new ArrayList<UserListRecord>();
+               UserCompetencyBL ucbl = Fact.getUserCompetencyBL();
+               User me = user.getUser();
+               for (User subj: users) {
+                       boolean canDeleteThisUser = ucbl.canDeleteThisUser(
+                               subj, me, uch);
+                       boolean canModifyThisUser = ucbl.canModifyThisUser(
+                               subj, me, uch);
+                       
+                       UserListRecord rec = new UserListRecord(
+                               subj,canDeleteThisUser,canModifyThisUser);
+                       userRecords.add(rec);
+               }
+               
+               canSearchInCompany = uch.getCanListUsersAllCompanies();
+               
+               
                return "listOfUsers";
        }
 
        public void deleteUser(ActionEvent aev) {
                userBL.deleteUser(selectedUser);
-               users.remove(selectedUser);
+               prepareListOfUsers();
        }
 
        /**
@@ -89,7 +116,8 @@
         * @return
         */
        public boolean filterByValue(Object current) {
-               User user = (User) current;
+               UserListRecord rec = (UserListRecord) current;
+               User user = rec.getUser();
                if (filterValue == null || filterValue.length() == 0) {
                        return true;
                }
@@ -101,6 +129,7 @@
                if 
(user.getRealname().toLowerCase().contains(filterValueLowerCase)) { return 
true; }
                if 
(user.getEmail().toLowerCase().contains(filterValueLowerCase)) { return true; } 
             
                if 
(user.getPhone().toLowerCase().contains(filterValueLowerCase)) { return true; }
+               if (canSearchInCompany && 
user.getCompany().getName().toLowerCase().contains(filterValueLowerCase)) 
{return true;}
                
                return false;
        }
@@ -112,5 +141,44 @@
        public void setFilterValue(String filterValue) {
                this.filterValue = filterValue;
        }
+       
+       
+       public static class UserListRecord {
+               private User user;
+               private boolean canBeDeleted;
+               private boolean canBeModified;
+               
+               public UserListRecord(User user, boolean canBeDeleted, boolean 
canBeModified) {
+                       this.user = user;
+                       this.canBeDeleted = canBeDeleted;
+                       this.canBeModified = canBeModified;
+               }
 
+               public User getUser() {
+                       return user;
+               }
+
+               public void setUser(User user) {
+                       this.user = user;
+               }
+
+               public boolean isCanBeDeleted() {
+                       return canBeDeleted;
+               }
+
+               public void setCanBeDeleted(boolean canBeDeleted) {
+                       this.canBeDeleted = canBeDeleted;
+               }
+
+               public boolean isCanBeModified() {
+                       return canBeModified;
+               }
+
+               public void setCanBeModified(boolean canBeModified) {
+                       this.canBeModified = canBeModified;
+               }
+               
+       }
+       
+
 }

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java
 2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java
 2010-02-23 19:01:32 UTC (rev 1833)
@@ -19,7 +19,7 @@
 import elvys.server.bl.Fact;
 import elvys.server.bl.user.UserBL;
 import elvys.server.bl.user.UserCompetencyBL;
-import elvys.server.bl.user.UserCompetencyBL.UserCompetencyHolder;
+import elvys.server.bl.user.UserCompetencyHolder;
 
 
 

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
 2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
 2010-02-23 19:01:32 UTC (rev 1833)
@@ -135,6 +135,7 @@
 user.edit.form.phone=Telefon
 user.edit.form.username=U\u017Eivatelsk\u00E9 jm\u00E9no
 user.edit.form.password=Heslo
+user.edit.form.password.edit.optional.tooltip=Zad\u00E1n\u00ED hesla p\u0159i 
editaci u\u017Eivatele je voliteln\u00E9. Pokud nebude zad\u00E1no, 
z\u016Fstane nezm\u011Bn\u011Bno.
 user.edit.form.passwordagain=Heslo znovu
 user.edit.form.companylist=Spole\u010Dnost
 user.edit.form.rolelist=Role

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
       2010-02-23 15:01:49 UTC (rev 1832)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
       2010-02-23 19:01:32 UTC (rev 1833)
@@ -1,21 +1,21 @@
 company.form.duplicitename=Jm\u00E9no spole\u010Dnosti "{0}" ji\u017E existuje.
 
 user.form.badPasswordAgain=\u0160patn\u011B zopakovan\u00E9 heslo.
-user.form.loginAlreadyExists=Uveden\u00e9 u\u017eivatelsk\u00e9 jm\u00e9no se 
ji\u017e v datab\u00e1zi nach\u00e1z\u00ed, uve\u010fte pros\u00edm jin\u00e9
-user.form.setCorrectEmail=Zadejte pros\u00edm email ve spr\u00e1vn\u00e9m 
tvaru.
-user.form.emptyPassword=Vypl\u0148te pros\u00edm heslo
-user.form.user.form.setCorrectEmail=Zadejte pros\u00edm email ve 
spr\u00e1vn\u00e9m tvaru ( nap\u0159. jan.novak@xxxxxxxx )
+user.form.loginAlreadyExists=Uveden\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no se 
ji\u017E v datab\u00E1zi nach\u00E1z\u00ED, uve\u010Fte pros\u00EDm jin\u00E9
+user.form.setCorrectEmail=Zadejte pros\u00EDm email ve spr\u00E1vn\u00E9m 
tvaru.
+user.form.emptyPassword=Vypl\u0148te pros\u00EDm heslo
+user.form.user.form.setCorrectEmail=Zadejte pros\u00EDm email ve 
spr\u00E1vn\u00E9m tvaru ( nap\u0159. jan.novak@xxxxxxxx )
 
-login.lostPassword.UserNotExists=Litujeme, ale zasl\u00e1n\u00ed emailu se 
nezda\u0159ilo, zkontrolujte pros\u00edm u\u017eivatelsk\u00e9 jm\u00e9no.
-login.lostPassword.EmptyUsername=Vypl\u0148te pros\u00edm 
u\u017eivatelsk\u00e9 jm\u00e9no
-login.lostPassword.Email.Subject=Do\u010dasn\u00e9 heslo ze syst\u00e9mu 
elvys.cz
-login.lostPassword.Email.Body1=Dobr\u00fd den, \n\nze syst\u00e9mu elvys 
V\u00e1m bylo zasl\u00e1no do\u010dasn\u00e9 heslo pro 
p\u0159ihl\u00e1\u0161en\u00ed. Heslo je k pou\u017eit\u00ed 24 hodin od 
pod\u00e1n\u00ed \u017e\u00e1dost, proto je nutn\u00e9 si heslo po 
p\u0159\u00edhl\u00e1\u0161en\u00ed ihned zm\u011bnit.\n
-login.lostPassword.Email.Body2=\nPokud jste ne\u017e\u00e1dali o 
zasl\u00e1n\u00ed nov\u00e9ho hesla, tuto zpr\u00e1vu pros\u00edm 
ignorujte.\n\nV\u00e1\u0161 t\u00fdm elvys.cz\n\n
-login.lostPassword.Email.NotSend=Litujeme, ale email se nepoda\u0159ilo 
odeslat. Kontaktujte pros\u00edm spr\u00e1vce syst\u00e9mu.
-login.lostPassword.Email.SuccessfullySend=Na email p\u0159i\u0159azen\u00fd k 
zadan\u00e9mu u\u017eivatelsk\u00e9mu jm\u00e9nu bylo odesl\u00e1no 
do\u010dasn\u00e9 heslo.
+login.lostPassword.UserNotExists=Litujeme, ale zasl\u00E1n\u00ED emailu se 
nezda\u0159ilo, zkontrolujte pros\u00EDm u\u017Eivatelsk\u00E9 jm\u00E9no.
+login.lostPassword.EmptyUsername=Vypl\u0148te pros\u00EDm 
u\u017Eivatelsk\u00E9 jm\u00E9no
+login.lostPassword.Email.Subject=Do\u010Dasn\u00E9 heslo ze syst\u00E9mu 
elvys.cz
+login.lostPassword.Email.Body1=Dobr\u00FD den, \n\nze syst\u00E9mu elvys 
V\u00E1m bylo zasl\u00E1no do\u010Dasn\u00E9 heslo pro 
p\u0159ihl\u00E1\u0161en\u00ED. Heslo je k pou\u017Eit\u00ED 24 hodin od 
pod\u00E1n\u00ED \u017E\u00E1dost, proto je nutn\u00E9 si heslo po 
p\u0159\u00EDhl\u00E1\u0161en\u00ED ihned zm\u011Bnit.\n
+login.lostPassword.Email.Body2=\nPokud jste ne\u017E\u00E1dali o 
zasl\u00E1n\u00ED nov\u00E9ho hesla, tuto zpr\u00E1vu pros\u00EDm 
ignorujte.\n\nV\u00E1\u0161 t\u00FDm elvys.cz\n\n
+login.lostPassword.Email.NotSend=Litujeme, ale email se nepoda\u0159ilo 
odeslat. Kontaktujte pros\u00EDm spr\u00E1vce syst\u00E9mu.
+login.lostPassword.Email.SuccessfullySend=Na email p\u0159i\u0159azen\u00FD k 
zadan\u00E9mu u\u017Eivatelsk\u00E9mu jm\u00E9nu bylo odesl\u00E1no 
do\u010Dasn\u00E9 heslo.
 login.bad=Neplatn\u00E9 p\u0159ihl\u00E1\u0161en\u00ED. Zkuste to pros\u00EDm 
znovu.
-login.temporaryPassExpired=Platnost do\u010dasn\u00e9ho hesla vypr\u0161ela, 
nechte si zaslat nov\u00e9 do\u010dasn\u00e9 heslo.
-login.temporaryPassWrong=Do\u010dasn\u00e9 heslo nesouhlas\u00ed, zkuste jej 
zadat znovu nebo si nechte zaslat nov\u00e9.
+login.temporaryPassExpired=Platnost do\u010Dasn\u00E9ho hesla vypr\u0161ela, 
nechte si zaslat nov\u00E9 do\u010Dasn\u00E9 heslo.
+login.temporaryPassWrong=Do\u010Dasn\u00E9 heslo nesouhlas\u00ED, zkuste jej 
zadat znovu nebo si nechte zaslat nov\u00E9.
 
 elvys.list.modal.nightmode.badtime=\u010Cas mus\u00ED b\u00FDt ve 
form\u00E1tu\: "HH\:mm".
 

Modified: trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml       
2010-02-23 15:01:49 UTC (rev 1832)
+++ trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml       
2010-02-23 19:01:32 UTC (rev 1833)
@@ -25,48 +25,55 @@
                        <h:form id="editUserForm">
                                <h:panelGrid columns="2">
                                        
+                                       <!-- USERNAME -->
                                        <h:panelGroup 
rendered="#{!userEditBean.updatingProfile}">                              
                                                <elvys:label 
id="UserEditUsernameLabel"
-                                                       
label="#{lbl['user.edit.form.username']}"></elvys:label>
+                                                       
label="#{lbl['user.edit.form.username']}"/>
                                        </h:panelGroup>
                                        <h:panelGroup 
rendered="#{!userEditBean.updatingProfile}">
                                                <elvys:inputText2 
id="usernameField"
-                                                       
value="#{userEditBean.selectedUser.username}" required="true" />
+                                                       
value="#{userEditBean.selectedUser.username}" 
+                                                       required="true" />
                                        </h:panelGroup>
-
+                                       
+                                       <!-- SURNAME -->
                                        <elvys:label id="UserEditSurnameLabel"
-                                               
label="#{lbl['user.edit.form.surname']}"></elvys:label>
+                                               
label="#{lbl['user.edit.form.surname']}"/>
                                        <elvys:inputText2 id="surname"
                                                
value="#{userEditBean.selectedUser.surname}" required="true" />                 
                
-
+                                       
+                                       <!-- REALNAME -->
                                        <elvys:label id="UserEditRealnameLabel"
-                                               
label="#{lbl['user.edit.form.realname']}"></elvys:label>
+                                               
label="#{lbl['user.edit.form.realname']}"/>
                                        <elvys:inputText2 id="realnameField"
                                                
value="#{userEditBean.selectedUser.realname}" required="true" />                
                        
                                        
+                                       <!-- EMAIL -->
                                        <elvys:label id="UserEditEmailLabel"
-                                               
label="#{lbl['user.edit.form.email']}"></elvys:label>
+                                               
label="#{lbl['user.edit.form.email']}"/>
                                        <elvys:inputText2 id="emailField"
                                                
value="#{userEditBean.selectedUser.email}" required="true" />                   
                
                                        
+                                       <!-- PHONE -->
                                        <elvys:label id="UserEditPhoneLabel"
-                                               
label="#{lbl['user.edit.form.phone']}"></elvys:label>
+                                               
label="#{lbl['user.edit.form.phone']}"/>
                                        <elvys:inputText2 id="phoneField"
                                                
value="#{userEditBean.selectedUser.phone}" required="false" />                  
                
                                        
+                                       <!-- PASS -->
                                        <elvys:label id="UserEditPassLabel"
                                                
label="#{lbl['user.edit.form.password']}"
-                                               ></elvys:label>                 
                        
+                                               
tooltip="#{(userEditBean.updatingProfile || userEditBean.updating) ? 
lbl['user.edit.form.password.edit.optional.tooltip'] : ''}"/>                   
                           
                                        <h:panelGroup>
                                                <h:inputSecret id="password"
                                                        
value="#{userEditBean.password}" required="#{!(userEditBean.updating || 
userEditBean.updatingProfile)}"
                                                        errorStyle="border:1px 
solid red; color:red;" />
                                                <h:message for="password" 
styleClass="error"/>
                                        </h:panelGroup>
-
+                                       
+                                       <!-- PASS AGAIN -->
                                        <elvys:label id="UserEditPassagainLabel"
-                                               
label="#{lbl['user.edit.form.passwordagain']}"
-                                               ></elvys:label>                 
                
+                                               
label="#{lbl['user.edit.form.passwordagain']}"/>                                
        
                                        <h:panelGroup>                          
                
                                                <h:inputSecret 
id="passwordAgain"
                                                        
value="#{userEditBean.passwordAgain}" 
@@ -74,12 +81,13 @@
                                                <h:message for="passwordAgain" 
styleClass="error" />
                                        </h:panelGroup>                         
                        
 
+
+                                       <!-- ROLE -->
                                        <h:panelGroup 
rendered="#{!userEditBean.updatingProfile}">
                                                <elvys:label 
id="UserEditRoleListLabel"
                                                        
label="#{lbl['user.edit.form.rolelist']}"
                                                        
tooltip="#{lbl['user.edit.form.rolelist.tooltip']}"             
-                                                       
rendered="#{!userEditBean.updatingProfile}"                                     
-                                                       ></elvys:label>
+                                                       
rendered="#{!userEditBean.updatingProfile}"     />
                                        </h:panelGroup>         
                                        <h:panelGroup 
rendered="#{!userEditBean.updatingProfile}">      
                                                <h:selectOneListbox 
id="roleField" required="true"
@@ -90,16 +98,19 @@
                                                <h:message for="roleField" 
styleClass="error" />
                                        </h:panelGroup>
                                        
-                                       
-                                       <h:panelGroup 
rendered="#{user.user.system}" >  
+                                       <!-- COMPANY -->
+                                       <h:panelGroup 
rendered="#{!userEditBean.updating 
+                                                       and 
!userEditBean.updatingProfile 
+                                                       and 
user.competency.canCreateUserOtherCompany}" >       
                                                <elvys:label 
id="UserEditCompanyListLabel"
-                                                       
label="#{lbl['user.edit.form.companylist']}"
-                                                       
rendered="#{user.user.system}"></elvys:label>
+                                                       
label="#{lbl['user.edit.form.companylist']}"/>
                                        </h:panelGroup>
-                                       <h:panelGroup 
rendered="#{user.user.system}" >  
+                                       <h:panelGroup 
rendered="#{!userEditBean.updating 
+                                                       and 
!userEditBean.updatingProfile 
+                                                       and 
user.competency.canCreateUserOtherCompany}" >       
                                                <h:selectOneListbox 
id="companyField" required="true"
                                                        
value="#{userEditBean.selectedUser.company}"
-                                                       
size="#{userEditBean.sizeOfCompaniesToSelect >=3? 3 : 
userEditBean.sizeOfCompaniesToSelect}">
+                                                       
size="#{userEditBean.sizeOfCompaniesToSelect >=4? 4 : 
userEditBean.sizeOfCompaniesToSelect}">
                                                        <f:converter 
converterId="companyConverter" />
                                                        <f:selectItems 
value="#{userEditBean.companiesToSelect}" />
                                                </h:selectOneListbox>
@@ -110,14 +121,16 @@
 
                                <!-- OK BUTTON -->
                                <h:commandButton 
value="#{lbl['user.edit.form.button.ok']}"
-                                       action="#{userEditBean.saveUser}" 
rendered="#{!(userEditBean.updating || userEditBean.updatingProfile)}" />
+                                       rendered="#{!(userEditBean.updating || 
userEditBean.updatingProfile)}"
+                                       action="#{userEditBean.saveUser}"  />
                                <!-- MODIFY BUTTON -->
                                <h:commandButton 
value="#{lbl['user.edit.form.button.modify']}"
-                                       action="#{userEditBean.updateUser}" 
rendered="#{(userEditBean.updating || userEditBean.updatingProfile)}" />
+                                       rendered="#{(userEditBean.updating || 
userEditBean.updatingProfile)}" 
+                                       action="#{userEditBean.updateUser}" />
                                <!-- CANCEL BUTTON -->
                                <h:commandButton 
value="#{lbl['user.edit.form.button.cancel']}"
-                                       immediate="true" 
action="#{usersBean.prepareListOfUsers}"
-                                       rendered="#{userEditBean.updating}" />
+                                       rendered="#{userEditBean.updating}"
+                                       immediate="true" 
action="#{usersBean.prepareListOfUsers}" />
                        </h:form>
                </rich:panel>
        </ui:define>

Modified: trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml        
2010-02-23 15:01:49 UTC (rev 1832)
+++ trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml        
2010-02-23 19:01:32 UTC (rev 1833)
@@ -17,7 +17,7 @@
                        <rich:panel id="listOfUsersPanel">
                                <f:facet 
name="header">#{lbl['user.list.body.title']}</f:facet>                 
                                <h:panelGrid id="listOfUsers">
-                                       <rich:extendedDataTable 
value="#{usersBean.users}"
+                                       <rich:extendedDataTable 
value="#{usersBean.userRecords}"
                                                var="user_iterator" rows="10" 
height="370px;"                                           
                                                enableContextMenu="false" 
id="tableListOfUsers"
                                                reRender="datascroller" 
sortMode="single"
@@ -31,12 +31,15 @@
                                                                <rich:column 
colspan="#{6+(user.user.system?1:0)}">
                                                                        <div 
class="controlPanel">
                                                                                
<h:panelGroup>
-                                                                               
        <a4j:commandButton id="CreateNewUser"
+                                                                               
        <h:commandButton id="CreateNewUser"
                                                                                
                image="/images/icons/create.png"
-                                                                               
                action="#{userEditBean.prepareCreateUserForm}">
+                                                                               
                action="#{userEditBean.prepareCreateUserForm}"
+                                                                               
                rendered="#{user.competency.canCreateAnyUser}">
                                                                                
                <f:setPropertyActionListener value="${false}"
-                                                                               
                        target="#{userEditBean.updating}" />
-                                                                               
        </a4j:commandButton>
+                                                                               
                        target="#{userEditBean.updating}"  />
+                                                                               
                <f:setPropertyActionListener value="${false}"
+                                                                               
                        target="#{userEditBean.updatingProfile}" />
+                                                                               
        </h:commandButton>
                                                                                
        <rich:toolTip for="CreateNewUser">
                                                                                
                <h:outputText value="#{lbl['user.list.body.create.tooltip']}" />
                                                                                
        </rich:toolTip>
@@ -54,58 +57,56 @@
                                                        </rich:columnGroup>
                                                </f:facet>                      
                        
                                                
-                                               <rich:column 
sortBy="#{user_iterator.company.name}" width="110px"
+                                               <rich:column 
sortBy="#{user_iterator.user.company.name}" width="110px"
                                                        
rendered="#{user.user.system}">
                                                        <f:facet name="header">
                                                                
#{lbl['user.list.body.company']}                                                
                                                                                
                                                        </f:facet>
-                                                       <h:outputText 
value="#{user_iterator.company.name}" />
+                                                       <h:outputText 
value="#{user_iterator.user.company.name}" />
                                                </rich:column>
 
                                                <rich:column width="140px"
                                                        
filterMethod="#{usersBean.filterByValue}" 
-                                                       
sortBy="#{user_iterator.surname}">
+                                                       
sortBy="#{user_iterator.user.surname}">
                                                        <f:facet 
name="header">#{lbl['user.list.body.firstname']}</f:facet>
-                                                       <h:outputText 
value="#{user_iterator.surname} #{user_iterator.realname}" />
+                                                       <h:outputText 
value="#{user_iterator.user.surname} #{user_iterator.user.realname}" />
                                                </rich:column>
 
-                                               <rich:column width="60px" 
sortBy="#{user_iterator.role.role}">
+                                               <rich:column width="60px" 
sortBy="#{user_iterator.user.role.role}">
                                                        <f:facet 
name="header">#{lbl['user.list.body.role']}</f:facet>
-                                                       <h:outputText 
value="#{user_iterator.role.role}" >
+                                                       <h:outputText 
value="#{user_iterator.user.role.role}" >
                                                                <f:converter 
converterId="localizedRoleConverter"/>
                                                        </h:outputText>
                                                </rich:column>
-                                               <rich:column width="100px" 
sortBy="#{user_iterator.username}">
+                                               <rich:column width="100px" 
sortBy="#{user_iterator.user.username}">
                                                        <f:facet 
name="header">#{lbl['user.list.body.username']}</f:facet>
-                                                       <h:outputText 
value="#{user_iterator.username}" />
+                                                       <h:outputText 
value="#{user_iterator.user.username}" />
                                                </rich:column>
 
-                                               <rich:column  width="180px" 
sortBy="#{user_iterator.email}">
+                                               <rich:column  width="180px" 
sortBy="#{user_iterator.user.email}">
                                                        <f:facet 
name="header">#{lbl['user.list.body.email']}</f:facet>
-                                                       <h:outputText 
value="#{user_iterator.email}" />
+                                                       <h:outputText 
value="#{user_iterator.user.email}" />
                                                </rich:column>
 
-                                               <rich:column width="90px" 
sortBy="#{user_iterator.phone}">
+                                               <rich:column width="90px" 
sortBy="#{user_iterator.user.phone}">
                                                        <f:facet 
name="header">#{lbl['user.list.body.phone']}</f:facet>
-                                                       <h:outputText 
value="#{user_iterator.phone}" />
+                                                       <h:outputText 
value="#{user_iterator.user.phone}" />
                                                </rich:column>
                                                
+                                               <!-- EDIT USER -->
                                                <rich:column width="90px">
                                                        <f:facet 
name="header">#{lbl['user.list.body.edit']}</f:facet>
                                                        <div 
class="list-operations-main">
                                                                <div 
class="list-operations-item">
-                                                                       
<a4j:commandButton id="EditUser" image="/images/icons/edit.png"
+                                                                       
<h:commandButton id="EditUser" image="/images/icons/edit.png"
                                                                                
action="#{userEditBean.prepareUpdateUserForm}"
-                                                                               
rendered="#{(
-                                                                               
                        (user.compStr eq 'admin' and user_iterator.role.role eq 
'user') ||
-                                                                               
                        (user.compStr eq 'superadmin')
-                                                                               
                        )}"
-                                                                               
>
-                                                                               
<f:setPropertyActionListener value="#{user_iterator}"
-                                                                               
        target="#{userEditBean.selectedUser}" />
-                                                                               
<f:setPropertyActionListener value="${true}"
-                                                                               
        target="#{userEditBean.updating}" />
-                                                                       
</a4j:commandButton>
+                                                                               
rendered="#{user_iterator.canBeModified}">
+                                                                               
<f:setPropertyActionListener target="#{userEditBean.selectedUser}" 
value="#{user_iterator.user}"/>
+                                                                               
<f:setPropertyActionListener target="#{userEditBean.updating}" 
+                                                                               
        value="#{(user_iterator.user.id == user.user.id) ? false : true}"/>
+                                                                               
<f:setPropertyActionListener target="#{userEditBean.updatingProfile}" 
+                                                                               
        value="#{(user_iterator.user.id == user.user.id) ? true : false}"/>
+                                                                       
</h:commandButton>
                                                                        
<rich:toolTip for="EditUser" direction="bottom-left">
                                                                                
<h:outputText value="#{lbl['user.list.body.edit.tooltip']}" />
                                                                        
</rich:toolTip>
@@ -115,14 +116,11 @@
        
                                                                <div 
class="list-operations-item">
                                                                        
<a4j:commandButton id="DeleteUser"
-                                                                               
rendered="#{user.user.id!=user_iterator.id and !user_iterator.system and (
-                                                                               
                        (user.compStr eq 'admin' and user_iterator.role.role eq 
'user') ||
-                                                                               
                        (user.compStr eq 'superadmin')
-                                                                               
                        )}"
+                                                                               
rendered="#{user_iterator.canBeDeleted}"                                        
                                                                
                                                                                
reRender="DeleteUserModalContent"
                                                                                
oncomplete="Richfaces.showModalPanel('DeleteUserModal',{left:300, top:300})"
                                                                                
image="/images/icons/delete.gif">
-                                                                               
<f:setPropertyActionListener value="#{user_iterator}"
+                                                                               
<f:setPropertyActionListener value="#{user_iterator.user}"
                                                                                
        target="#{usersBean.selectedUser}" />
                                                                        
</a4j:commandButton>
                                                                        
<rich:toolTip for="DeleteUser"  direction="bottom-left">

Modified: trunk/server/webServer2/WebContent/template/elvys-template.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/template/elvys-template.xhtml    
2010-02-23 15:01:49 UTC (rev 1832)
+++ trunk/server/webServer2/WebContent/template/elvys-template.xhtml    
2010-02-23 19:01:32 UTC (rev 1833)
@@ -38,31 +38,48 @@
     <ui:define name="headerStatus">
                         <h:form id="MenuForm">
                                <rich:toolBar  >
+                               
+                                       <!-- MAIN -->
                                        <rich:dropDownMenu id="MainMenu" 
value="#{lbl['template.menu.main']}"> 
                                                        <rich:menuItem 
id="ShowStatistics" value="#{lbl['template.menu.main.statistics']}" 
action="NOT-DEFINED" submitMode="server" disabled="true" rendered="false"/>
                                                        <rich:menuItem 
id="ShowHome" value="#{lbl['template.menu.main.home']}" action="home" 
submitMode="server"/>
                                                        <rich:menuItem 
id="Logout" value="#{lbl['template.menu.main.logout']}" action="#{user.logout}" 
submitMode="server"/>
                                        </rich:dropDownMenu>
                                        
-                                       <rich:dropDownMenu id="CompanyMenu" 
value="#{lbl['template.menu.company']}" 
rendered="#{user.competency.canListCompanies}">
-                                                       <rich:menuItem 
id="ListOfCompanies" value="#{lbl['template.menu.company.list']}" 
action="#{companiesBean.prepareListOfCompanies}" submitMode="server"/>
-                                                       <rich:menuItem 
id="NewCompany" value="#{lbl['template.menu.company.new']}" 
action="#{companiesBean.prepareCreateCompanyForm}" submitMode="server">
-                                                               
<f:setPropertyActionListener value="${false}" 
target="#{companiesBean.updating}" />
-                                                       </rich:menuItem>
-                                       </rich:dropDownMenu>
+                                       <!-- USERS -->
                                        <rich:dropDownMenu id="UserMenu" 
value="#{lbl['template.menu.user']}" >
-                                                       <rich:menuItem 
id="ListOfUsers" value="#{lbl['template.menu.user.list']}" 
action="#{usersBean.prepareListOfUsers}" submitMode="server" 
rendered="#{user.competency.canListUsersOwnCompany}"/>
-                                                       <rich:menuItem 
id="NewUser" value="#{lbl['template.menu.user.new']}" 
action="#{userEditBean.prepareCreateUserForm}" submitMode="server" 
rendered="#{user.competency.canCreateUser}">
+                                                       <rich:menuItem 
id="ListOfUsers"
+                                                               
value="#{lbl['template.menu.user.list']}" 
+                                                               
action="#{usersBean.prepareListOfUsers}" 
+                                                               
submitMode="server" 
+                                                               
rendered="#{user.competency.canListUsersOwnCompany}"/>
+                                                       <rich:menuItem 
id="NewUser" 
+                                                               
value="#{lbl['template.menu.user.new']}" 
+                                                               
action="#{userEditBean.prepareCreateUserForm}" 
+                                                               
submitMode="server" 
+                                                               
rendered="#{user.competency.canCreateUser}">
                                                                
<f:setPropertyActionListener value="${false}" target="#{userEditBean.updating}" 
/>
                                                                
<f:setPropertyActionListener value="${false}" 
target="#{userEditBean.updatingProfile}" />
                                                        </rich:menuItem>
-                                                       <rich:menuItem 
id="EditUser" value="#{lbl['template.menu.user.update']}" 
action="#{userEditBean.prepareUpdateUserForm}" submitMode="server">
+                                                       <rich:menuItem 
id="EditUser" 
+                                                               
value="#{lbl['template.menu.user.update']}" 
+                                                               
action="#{userEditBean.prepareUpdateUserForm}" 
+                                                               
submitMode="server">
+                                                               
<f:setPropertyActionListener value="${false}" target="#{userEditBean.updating}" 
/>
                                                                
<f:setPropertyActionListener value="${true}" 
target="#{userEditBean.updatingProfile}" />
-                                                               
<f:setPropertyActionListener value="${false}" target="#{userEditBean.updating}" 
/>
                                                                
<f:setPropertyActionListener value="#{user.user}" 
target="#{userEditBean.selectedUser}" />
                                                        </rich:menuItem>
                                        </rich:dropDownMenu>
                                        
+                                       <!-- COMPANIES -->
+                                       <rich:dropDownMenu id="CompanyMenu" 
value="#{lbl['template.menu.company']}" 
rendered="#{user.competency.canListCompanies}">
+                                                       <rich:menuItem 
id="ListOfCompanies" value="#{lbl['template.menu.company.list']}" 
action="#{companiesBean.prepareListOfCompanies}" submitMode="server"/>
+                                                       <rich:menuItem 
id="NewCompany" value="#{lbl['template.menu.company.new']}" 
action="#{companiesBean.prepareCreateCompanyForm}" submitMode="server">
+                                                               
<f:setPropertyActionListener value="${false}" 
target="#{companiesBean.updating}" />
+                                                       </rich:menuItem>
+                                       </rich:dropDownMenu>
+                                       
+                                       <!-- LAYOUT -->
                                        <rich:dropDownMenu id="LayoutMenu" 
value="#{lbl['template.menu.layout']}" disabled="false">
                                                        <rich:menuItem 
id="LayoutListMenuItem" value="#{lbl['template.menu.layout.list']}" 
action="layoutList" submitMode="server"/>
                                                        <rich:menuItem 
id="LayoutCreateMenuItem"
@@ -75,6 +92,8 @@
                                                        </rich:menuItem>
                                                        
                                        </rich:dropDownMenu>
+                                       
+                                       <!-- CATEGORIES -->
                                        <rich:dropDownMenu id="CategoryMenu" 
value="#{lbl['template.menu.category']}" disabled="false">
                                                        <rich:menuItem 
id="CategoryListMenuItem"
                                                                
value="#{lbl['template.menu.category.list']}" 


Other related posts:

  • » [elvystrac] r1833 - user UC updated - elvys