CCM NG/ccm-core: Some things for the Vaadin prototype
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4829 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
c23f1fbcba
commit
da7c2a5190
|
|
@ -219,10 +219,10 @@ public class GroupDetails extends Window {
|
|||
membersGridHeaderCell
|
||||
.setComponent(new HorizontalLayout(addMemberButton));
|
||||
|
||||
final GroupMembersTableDataProvider dataProvider = cdiUtil
|
||||
final GroupMembersTableDataProvider usersDataProvider = cdiUtil
|
||||
.findBean(GroupMembersTableDataProvider.class);
|
||||
dataProvider.setGroup(group);
|
||||
membersGrid.setDataProvider(dataProvider);
|
||||
usersDataProvider.setGroup(group);
|
||||
membersGrid.setDataProvider(usersDataProvider);
|
||||
|
||||
final GroupRolesController rolesController = cdiUtil
|
||||
.findBean(GroupRolesController.class);
|
||||
|
|
@ -251,13 +251,35 @@ public class GroupDetails extends Window {
|
|||
addRoleButton.setIcon(VaadinIcons.PLUS);
|
||||
addRoleButton.setStyleName(ValoTheme.BUTTON_TINY);
|
||||
addRoleButton.addClickListener(event -> {
|
||||
|
||||
final RoleSelector roleSelector = new RoleSelector(
|
||||
"Select role(s) to add to group",
|
||||
"Add selected role(s) to group",
|
||||
usersGroupsRoles,
|
||||
roleRepository.findByParty(group),
|
||||
(selectedRoles -> {
|
||||
selectedRoles.forEach(role -> {
|
||||
rolesController.assignRoleToGroup(role, group);
|
||||
rolesGrid.getDataProvider().refreshAll();
|
||||
});
|
||||
//ToDo Add roles grid
|
||||
}));
|
||||
roleSelector.center();
|
||||
roleSelector.setWidth("80%");
|
||||
UI.getCurrent().addWindow(roleSelector);
|
||||
});
|
||||
final HeaderCell rolesGridHeaderCell = rolesGridHeader
|
||||
.join(COL_ROLE_NAME,
|
||||
COL_ROLE_REMOVE);
|
||||
rolesGridHeaderCell
|
||||
.setComponent(new HorizontalLayout(addRoleButton));
|
||||
|
||||
final GroupRolesTableDataProvider rolesDataProvider = cdiUtil
|
||||
.findBean(GroupRolesTableDataProvider.class);
|
||||
rolesDataProvider.setGroup(group);
|
||||
rolesGrid.setDataProvider(rolesDataProvider);
|
||||
|
||||
final TabSheet tabs = new TabSheet();
|
||||
tabs.addTab(membersGrid, "Members");
|
||||
tabs.addTab(new Label("Roles Placeholder"), "Roles");
|
||||
tabs.addTab(rolesGrid, "Roles");
|
||||
|
||||
final VerticalLayout windowLayout = new VerticalLayout(propertiesPanel,
|
||||
tabs);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ package org.libreccm.admin.ui.usersgroupsroles;
|
|||
|
||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||
|
||||
import com.vaadin.cdi.CDIUI;
|
||||
import com.vaadin.icons.VaadinIcons;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Grid;
|
||||
|
|
@ -46,6 +45,7 @@ public class RoleSelector extends Window {
|
|||
private static final long serialVersionUID = -1437536052155383270L;
|
||||
|
||||
private static final String COL_NAME = "rolename";
|
||||
private static final String COL_OTHER = "other";
|
||||
|
||||
private final RoleRepository roleRepo;
|
||||
|
||||
|
|
@ -82,6 +82,10 @@ public class RoleSelector extends Window {
|
|||
.addColumn(Role::getName)
|
||||
.setId(COL_NAME)
|
||||
.setCaption("Role");
|
||||
rolesGrid
|
||||
.addColumn(role -> " ")
|
||||
.setId(COL_OTHER)
|
||||
.setCaption(" ");
|
||||
|
||||
rolesGrid.setSelectionMode(Grid.SelectionMode.MULTI);
|
||||
rolesGrid.setWidth("100%");
|
||||
|
|
@ -103,7 +107,8 @@ public class RoleSelector extends Window {
|
|||
clearButton.setStyleName(ValoTheme.BUTTON_TINY);
|
||||
|
||||
final HeaderRow actions = rolesGrid.prependHeaderRow();
|
||||
final HeaderCell actionsCell = actions.join(COL_NAME);
|
||||
final HeaderCell actionsCell = actions.join(COL_NAME,
|
||||
COL_OTHER);
|
||||
actionsCell.setComponent(new HorizontalLayout(actionButton,
|
||||
clearButton));
|
||||
|
||||
|
|
@ -116,4 +121,5 @@ public class RoleSelector extends Window {
|
|||
|
||||
setContent(rolesGrid);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,6 +118,13 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
|||
name = "Role.findRolesOfUser",
|
||||
query = "SELECT r.role FROM RoleMembership r "
|
||||
+ "WHERE r.member = :user")
|
||||
,
|
||||
@NamedQuery(
|
||||
name = "Role.findByParty",
|
||||
query = "SELECT r FROM Role r "
|
||||
+ "JOIN r.memberships m "
|
||||
+ "WHERE m.member = :member"
|
||||
)
|
||||
})
|
||||
@NamedEntityGraphs({
|
||||
@NamedEntityGraph(
|
||||
|
|
|
|||
|
|
@ -95,6 +95,15 @@ public class RoleRepository extends AbstractEntityRepository<Long, Role> {
|
|||
return query.getResultList();
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public List<Role> findByParty(final Party party) {
|
||||
final TypedQuery<Role> query = getEntityManager()
|
||||
.createNamedQuery("Role.findByParty", Role.class);
|
||||
query.setParameter("member", party);
|
||||
|
||||
return query.getResultList();
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public List<Role> findByPrivilege(final String privilege) {
|
||||
final TypedQuery<Role> query = getEntityManager().createNamedQuery(
|
||||
|
|
|
|||
|
|
@ -610,3 +610,4 @@ ui.admin.importexport.import.status.import_active=An import process is active.
|
|||
ui.admin.importexport.import.status.locked=This should not happen.
|
||||
ui.admin.importexport.import.current_status=Import current status
|
||||
ui.admin.importexport.import.report=Report from last import process
|
||||
ui.groups.roles.remove=Remove
|
||||
|
|
|
|||
|
|
@ -614,3 +614,4 @@ ui.admin.importexport.import.status.import_active=Ein Import-Prozess ist bereits
|
|||
ui.admin.importexport.import.status.locked=This should not happen.
|
||||
ui.admin.importexport.import.current_status=Aktueller Status des Import-Prozesses
|
||||
ui.admin.importexport.import.report=Bericht des letzten Import-Prozesses
|
||||
ui.groups.roles.remove=Entfernen
|
||||
|
|
|
|||
|
|
@ -607,3 +607,4 @@ ui.admin.importexport.import.status.import_active=An import process is active.
|
|||
ui.admin.importexport.import.status.locked=This should not happen.
|
||||
ui.admin.importexport.import.current_status=Import current status
|
||||
ui.admin.importexport.import.report=Report from last import process
|
||||
ui.groups.roles.remove=Remove
|
||||
|
|
|
|||
|
|
@ -598,3 +598,4 @@ ui.admin.importexport.import.status.import_active=An import process is active.
|
|||
ui.admin.importexport.import.status.locked=This should not happen.
|
||||
ui.admin.importexport.import.current_status=Import current status
|
||||
ui.admin.importexport.import.report=Report from last import process
|
||||
ui.groups.roles.remove=Remove
|
||||
|
|
|
|||
Loading…
Reference in New Issue