1 package org
.argeo
.app
.ui
.people
;
3 import java
.util
.ArrayList
;
6 import org
.argeo
.api
.acr
.Content
;
7 import org
.argeo
.api
.acr
.ContentSession
;
8 import org
.argeo
.api
.acr
.ldap
.LdapObj
;
9 import org
.argeo
.api
.cms
.directory
.CmsDirectory
;
10 import org
.argeo
.api
.cms
.directory
.CmsUserManager
;
11 import org
.argeo
.api
.cms
.directory
.HierarchyUnit
;
12 import org
.argeo
.api
.cms
.directory
.UserDirectory
;
13 import org
.argeo
.api
.cms
.ux
.CmsIcon
;
14 import org
.argeo
.app
.ux
.SuiteIcon
;
15 import org
.argeo
.cms
.CurrentUser
;
16 import org
.argeo
.cms
.acr
.ContentUtils
;
17 import org
.argeo
.cms
.auth
.CmsRole
;
18 import org
.argeo
.cms
.ux
.widgets
.AbstractHierarchicalPart
;
19 import org
.argeo
.cms
.ux
.widgets
.Column
;
21 public class HierarchyUnitPart
extends AbstractHierarchicalPart
<HierarchyUnit
> {
22 private ContentSession contentSession
;
23 private CmsUserManager cmsUserManager
;
25 public HierarchyUnitPart(ContentSession contentSession
, CmsUserManager cmsUserManager
) {
26 this.contentSession
= contentSession
;
27 this.cmsUserManager
= cmsUserManager
;
29 addColumn(new Column
<HierarchyUnit
>() {
32 public String
getText(HierarchyUnit model
) {
33 return model
.getHierarchyUnitLabel(CurrentUser
.locale());
37 public CmsIcon
getIcon(HierarchyUnit model
) {
38 Content content
= ContentUtils
.hierarchyUnitToContent(contentSession
, model
);
39 if (content
.hasContentClass(LdapObj
.organization
))
40 return SuiteIcon
.organisation
;
41 else if (content
.hasContentClass(LdapObj
.posixGroup
))
42 return SuiteIcon
.users
;
44 return SuiteIcon
.addressBook
;
50 public List
<HierarchyUnit
> getChildren(HierarchyUnit parent
) {
51 List
<HierarchyUnit
> visible
= new ArrayList
<>();
53 if (parent
instanceof CmsDirectory
) // do no show children of the directories
55 for (HierarchyUnit hu
: parent
.getDirectHierarchyUnits(true)) {
59 for (UserDirectory directory
: cmsUserManager
.getUserDirectories()) {
60 if (CurrentUser
.implies(CmsRole
.userAdmin
, directory
.getBase())) {
61 visible
.add(directory
);
63 for (HierarchyUnit hu
: directory
.getDirectHierarchyUnits(true)) {
64 if (CurrentUser
.implies(CmsRole
.userAdmin
, hu
.getBase())) {