import org.argeo.api.acr.QNamed;
import org.argeo.api.acr.ldap.LdapAttr;
import org.argeo.api.acr.ldap.LdapObj;
+import org.argeo.api.cms.directory.CmsGroup;
import org.argeo.api.cms.directory.CmsUser;
import org.argeo.api.cms.directory.CmsUserManager;
+import org.argeo.api.cms.directory.HierarchyUnit;
+import org.argeo.api.cms.directory.HierarchyUnit.Type;
import org.argeo.app.api.SuiteRole;
-import org.argeo.app.ui.SuiteMsg;
-import org.argeo.app.ui.SuiteStyle;
-import org.argeo.app.ui.SuiteUiUtils;
+import org.argeo.app.swt.ux.SuiteSwtUtils;
+import org.argeo.app.ux.SuiteMsg;
+import org.argeo.app.ux.SuiteStyle;
import org.argeo.cms.CmsMsg;
import org.argeo.cms.CurrentUser;
import org.argeo.cms.Localized;
CmsUser user = context.adapt(CmsUser.class);
Content hierarchyUnitContent = context.getParent().getParent();
+ HierarchyUnit hierarchyUnit = hierarchyUnitContent.adapt(HierarchyUnit.class);
String roleContext = RoleNameUtils.getContext(user.getName());
rolesSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
rolesSection.setLayout(new GridLayout(2, false));
List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
- addRoleCheckBox(rolesSection, SuiteMsg.coworkerRole, SuiteRole.coworker, roleContext, roles);
- addRoleCheckBox(rolesSection, SuiteMsg.publisherRole, SuiteRole.publisher, roleContext, roles);
- addRoleCheckBox(rolesSection, SuiteMsg.userAdminRole, CmsRole.userAdmin, roleContext, roles);
+ addRoleCheckBox(rolesSection, hierarchyUnit, user, SuiteMsg.coworkerRole, SuiteRole.coworker,
+ roleContext, roles);
+ addRoleCheckBox(rolesSection, hierarchyUnit, user, SuiteMsg.publisherRole, SuiteRole.publisher,
+ roleContext, roles);
+ addRoleCheckBox(rolesSection, hierarchyUnit, user, SuiteMsg.userAdminRole, CmsRole.userAdmin,
+ roleContext, roles);
}
// Composite facetsSection = new Composite(main, SWT.NONE);
// facetsSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
changePasswordSection.setLayout(new GridLayout(2, false));
// SuiteUiUtils.addFormLabel(changePasswordSection, CmsMsg.changePassword)
// .setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false, 2, 1));
- SuiteUiUtils.addFormLabel(changePasswordSection, CmsMsg.newPassword);
- Text newPasswordT = SuiteUiUtils.addFormTextField(changePasswordSection, null, null,
+ SuiteSwtUtils.addFormLabel(changePasswordSection, CmsMsg.newPassword);
+ Text newPasswordT = SuiteSwtUtils.addFormTextField(changePasswordSection, null, null,
SWT.PASSWORD | SWT.BORDER);
newPasswordT.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- SuiteUiUtils.addFormLabel(changePasswordSection, CmsMsg.repeatNewPassword);
- Text repeatNewPasswordT = SuiteUiUtils.addFormTextField(changePasswordSection, null, null,
+ SuiteSwtUtils.addFormLabel(changePasswordSection, CmsMsg.repeatNewPassword);
+ Text repeatNewPasswordT = SuiteSwtUtils.addFormTextField(changePasswordSection, null, null,
SWT.PASSWORD | SWT.BORDER);
repeatNewPasswordT.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Button apply = new Button(changePasswordSection, SWT.FLAT);
}
private void addFormLine(SwtSection parent, Localized msg, Content content, QNamed attr) {
- SuiteUiUtils.addFormLabel(parent, msg.lead());
+ SuiteSwtUtils.addFormLabel(parent, msg.lead());
EditableText text = new EditableText(parent, SWT.SINGLE | SWT.FLAT);
text.setLayoutData(CmsSwtUtils.fillWidth());
text.setStyle(SuiteStyle.simpleInput);
@Override
public void widgetDefaultSelected(SelectionEvent e) {
String editedTxt = text.getText();
+ content.put(attr, editedTxt);
text.stopEditing();
text.setText(editedTxt);
text.getParent().layout(new Control[] { text.getControl() });
});
}
- private void addRoleCheckBox(SwtSection parent, Localized msg, SystemRole systemRole, String roleContext,
- List<String> roles) {
+ private void addRoleCheckBox(SwtSection parent, HierarchyUnit hierarchyUnit, CmsUser user, Localized msg,
+ SystemRole systemRole, String roleContext, List<String> roles) {
Button radio = new Button(parent, SWT.CHECK);
radio.setSelection(false);
roles: for (String dn : roles) {
} else {
radio.setEnabled(CurrentUser.implies(CmsRole.userAdmin, roleContext));
}
+
+ radio.addSelectionListener((Selected) (e) -> {
+ HierarchyUnit rolesHu = hierarchyUnit.getDirectChild(Type.ROLES);
+ CmsGroup roleGroup = cmsUserManager.getOrCreateSystemRole(rolesHu, systemRole.qName());
+ if (radio.getSelection())
+ cmsUserManager.addMember(roleGroup, user);
+ else
+ cmsUserManager.removeMember(roleGroup, user);
+ });
+
new Label(parent, 0).setText(msg.lead());
}