Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrgSaveAction.java =================================================================== diff -u -r570bcc3eaf789d638c08cb96e0fec3e4a9ba6167 -ref31c70885b34d2475c8b297d7f9bb0f564a829b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrgSaveAction.java (.../OrgSaveAction.java) (revision 570bcc3eaf789d638c08cb96e0fec3e4a9ba6167) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrgSaveAction.java (.../OrgSaveAction.java) (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -82,15 +82,16 @@ public class OrgSaveAction extends Action { private static Logger log = Logger.getLogger(OrgSaveAction.class); - private static IUserManagementService service; + private MessageService messageService; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{ - service = AdminServiceProxy.getService(getServlet().getServletContext()); + if(service==null) service = AdminServiceProxy.getService(getServlet().getServletContext()); + if(messageService==null) messageService = AdminServiceProxy.getMessageService(getServlet().getServletContext()); DynaActionForm orgForm = (DynaActionForm)form; Integer orgId = (Integer)orgForm.get("orgId"); Organisation org; @@ -118,14 +119,20 @@ OrganisationState state = (OrganisationState)service.findById(OrganisationState.class,(Integer)orgForm.get("stateId")); if(orgId!=0){ - org = (Organisation)service.findById(Organisation.class,orgId); - // set archived date only when it first changes to become archived - if (state.getOrganisationStateId().equals(OrganisationState.ARCHIVED) - && !org.getOrganisationState().getOrganisationStateId().equals(OrganisationState.ARCHIVED)) { - org.setArchivedDate(new Date()); + if(service.canEditGroup(user.getUserID(), orgId)) { + org = (Organisation)service.findById(Organisation.class,orgId); + // set archived date only when it first changes to become archived + if (state.getOrganisationStateId().equals(OrganisationState.ARCHIVED) + && !org.getOrganisationState().getOrganisationStateId().equals(OrganisationState.ARCHIVED)) { + org.setArchivedDate(new Date()); + } + writeAuditLog(org, orgForm, state, locale); + BeanUtils.copyProperties(org,orgForm); + } else { + request.setAttribute("errorName", "UserAction"); + request.setAttribute("errorMessage", messageService.getMessage("error.authorisation")); + return mapping.findForward("error"); } - writeAuditLog(org, orgForm, state, locale); - BeanUtils.copyProperties(org,orgForm); }else{ org = new Organisation(); BeanUtils.copyProperties(org,orgForm); @@ -135,7 +142,9 @@ } org.setLocale(locale); org.setOrganisationState(state); - log.debug("orgId:"+org.getOrganisationId()+" locale:"+org.getLocale()+" create date:"+org.getCreateDate()); + if (log.isDebugEnabled()) { + log.debug("orgId: "+org.getOrganisationId()+" create date: "+org.getCreateDate()); + } org = service.saveOrganisation(org, user.getUserID()); request.setAttribute("org",orgForm.get("parentId")); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrganisationAction.java =================================================================== diff -u -re912ccae662b3d6064417e9a90a0eb9e83ee8b1b -ref31c70885b34d2475c8b297d7f9bb0f564a829b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrganisationAction.java (.../OrganisationAction.java) (revision e912ccae662b3d6064417e9a90a0eb9e83ee8b1b) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrganisationAction.java (.../OrganisationAction.java) (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -59,6 +59,7 @@ * validate="false" * * @struts:action-forward name="organisation" path=".organisation" + * @struts:action-forward name="organisationCourseAdmin" path=".organisationCourseAdmin" * @struts:action-forward name="orglist" path="/orgmanage.do" */ public class OrganisationAction extends LamsDispatchAction { @@ -94,7 +95,11 @@ } request.getSession().setAttribute("locales",locales); request.getSession().setAttribute("status",status); - return mapping.findForward("organisation"); + if (service.isUserSysAdmin() || service.isUserGlobalGroupAdmin()) { + return mapping.findForward("organisation"); + } else { + return mapping.findForward("organisationCourseAdmin"); + } } } } Index: lams_admin/web/WEB-INF/tiles/tiles-defs.xml =================================================================== diff -u -r356ffaf58f4adcdee8255cd2cbb3d217cbee7f8d -ref31c70885b34d2475c8b297d7f9bb0f564a829b --- lams_admin/web/WEB-INF/tiles/tiles-defs.xml (.../tiles-defs.xml) (revision 356ffaf58f4adcdee8255cd2cbb3d217cbee7f8d) +++ lams_admin/web/WEB-INF/tiles/tiles-defs.xml (.../tiles-defs.xml) (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -88,12 +88,17 @@ - + + + + + + - + Fisheye: Tag ef31c70885b34d2475c8b297d7f9bb0f564a829b refers to a dead (removed) revision in file `lams_admin/web/organisation.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_admin/web/organisation/courseAdminEdit.jsp =================================================================== diff -u --- lams_admin/web/organisation/courseAdminEdit.jsp (revision 0) +++ lams_admin/web/organisation/courseAdminEdit.jsp (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -0,0 +1,82 @@ +<%@ include file="/taglibs.jsp"%> + + + + + + + + + + + +

+ : + "> + + +

+ +

+ +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
: *
:
:
: + + + + + + + +
: + + + + + +
 
+ + . +
 
+ + + +
+
Index: lams_admin/web/organisation/createOrEdit.jsp =================================================================== diff -u --- lams_admin/web/organisation/createOrEdit.jsp (revision 0) +++ lams_admin/web/organisation/createOrEdit.jsp (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -0,0 +1,111 @@ +<%@ include file="/taglibs.jsp"%> + + + + + +

+ + + + : "> + + + + : "> + +

+ +

+ + + + + + + + + + + +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
: *
:
:
: + + + + + + + +
: + + + + + +
+ + +
+ + +
+ + +
 
+ + . +
 
+ + + +
+
Index: lams_admin/web/organisation/list.jsp =================================================================== diff -u --- lams_admin/web/organisation/list.jsp (revision 0) +++ lams_admin/web/organisation/list.jsp (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -0,0 +1,232 @@ +<%@ include file="/taglibs.jsp"%> + + + + + + + + + +

+ "> +

+

+ +
+ +
+ + + ' /> + +
+

+
+ + + + + + + ' /> + +
+
+ + " /> + + + + + : + +
+ + +

+ + : "> +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
::
::
::
::
+ +
+ +

+ + ' /> + +

+ +
+ ' /> +
+

+ +
+ + + + + + ' /> +
+
+ + " /> + + + + + : + +
+ + +

+ + : "> + : "> +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
::
::
::
::
+ +
+ +

+ + ' /> + +

+ +
+ ' /> +
+

+ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + +
Id
+ + + + + +
+
+ +
+
+ + + + + + +
+
+
+ + Fisheye: Tag ef31c70885b34d2475c8b297d7f9bb0f564a829b refers to a dead (removed) revision in file `lams_admin/web/orglist.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r7ab9e2377fd1ff4c3c5554bd1f6dffe3384f6f9a -ref31c70885b34d2475c8b297d7f9bb0f564a829b --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 7ab9e2377fd1ff4c3c5554bd1f6dffe3384f6f9a) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision ef31c70885b34d2475c8b297d7f9bb0f564a829b) @@ -1058,11 +1058,12 @@ if (isUserSysAdmin() || isUserGlobalGroupAdmin()) return true; Organisation org = (Organisation)findById(Organisation.class, orgId); if (org != null) { + Integer groupId = orgId; if (org.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { - Integer parentOrgId = org.getParentOrganisation().getOrganisationId(); - return (isUserInRole(userId, parentOrgId, Role.GROUP_ADMIN) - || (isUserInRole(userId, parentOrgId, Role.GROUP_MANAGER))); + groupId = org.getParentOrganisation().getOrganisationId(); } + return (isUserInRole(userId, groupId, Role.GROUP_ADMIN) + || (isUserInRole(userId, groupId, Role.GROUP_MANAGER))); } return false; }