CCM NG/ccm-core: Group edit in the Vaadin prototype
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4749 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
fed9df1e6a
commit
3a53cdc6cf
|
|
@ -39,6 +39,8 @@ import org.libreccm.admin.ui.usersgroupsroles.RolesTableDataProvider;
|
||||||
import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles;
|
import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles;
|
||||||
import org.libreccm.admin.ui.usersgroupsroles.UsersTableDataProvider;
|
import org.libreccm.admin.ui.usersgroupsroles.UsersTableDataProvider;
|
||||||
import org.libreccm.l10n.GlobalizationHelper;
|
import org.libreccm.l10n.GlobalizationHelper;
|
||||||
|
import org.libreccm.security.GroupManager;
|
||||||
|
import org.libreccm.security.GroupRepository;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
import org.libreccm.security.UserManager;
|
import org.libreccm.security.UserManager;
|
||||||
import org.libreccm.security.UserRepository;
|
import org.libreccm.security.UserRepository;
|
||||||
|
|
@ -61,8 +63,6 @@ public class AdminView extends CustomComponent implements View {
|
||||||
|
|
||||||
public static final String VIEWNAME = "admin";
|
public static final String VIEWNAME = "admin";
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ServletContext servletContext;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private JpqlConsoleController jpqlConsoleController;
|
private JpqlConsoleController jpqlConsoleController;
|
||||||
|
|
@ -77,11 +77,17 @@ public class AdminView extends CustomComponent implements View {
|
||||||
private GlobalizationHelper globalizationHelper;
|
private GlobalizationHelper globalizationHelper;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private UserRepository userRepository;
|
private UserRepository userRepo;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private UserManager userManager;
|
private UserManager userManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private GroupRepository groupRepo;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private GroupManager groupManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private UsersTableDataProvider usersTableDataProvider;
|
private UsersTableDataProvider usersTableDataProvider;
|
||||||
|
|
||||||
|
|
@ -93,9 +99,6 @@ public class AdminView extends CustomComponent implements View {
|
||||||
|
|
||||||
private ResourceBundle bundle;
|
private ResourceBundle bundle;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private UserRepository userRepo;
|
|
||||||
|
|
||||||
private final TabSheet tabSheet;
|
private final TabSheet tabSheet;
|
||||||
// private final Grid<User> usersTable;
|
// private final Grid<User> usersTable;
|
||||||
private final TabSheet.Tab tabUsersGroupsRoles;
|
private final TabSheet.Tab tabUsersGroupsRoles;
|
||||||
|
|
@ -203,4 +206,12 @@ public class AdminView extends CustomComponent implements View {
|
||||||
return userManager;
|
return userManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GroupRepository getGroupRepository() {
|
||||||
|
return groupRepo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupManager getGroupManager() {
|
||||||
|
return groupManager;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,211 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.libreccm.admin.ui.usersgroupsroles;
|
||||||
|
|
||||||
|
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||||
|
|
||||||
|
import com.vaadin.data.HasValue;
|
||||||
|
import com.vaadin.server.Page;
|
||||||
|
import com.vaadin.server.UserError;
|
||||||
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.FormLayout;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Notification;
|
||||||
|
import com.vaadin.ui.Panel;
|
||||||
|
import com.vaadin.ui.TextField;
|
||||||
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
|
import org.libreccm.admin.ui.ConfirmDiscardDialog;
|
||||||
|
import org.libreccm.security.Group;
|
||||||
|
import org.libreccm.security.GroupManager;
|
||||||
|
import org.libreccm.security.GroupRepository;
|
||||||
|
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class GroupEditor extends Window {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -5834095844674226692L;
|
||||||
|
|
||||||
|
private final UsersGroupsRoles usersGroupsRoles;
|
||||||
|
private final Group group;
|
||||||
|
private final GroupRepository groupRepo;
|
||||||
|
private final GroupManager groupManager;
|
||||||
|
|
||||||
|
private boolean dataHasChanged = false;
|
||||||
|
|
||||||
|
private TextField groupName;
|
||||||
|
|
||||||
|
public GroupEditor(final UsersGroupsRoles usersGroupsRoles,
|
||||||
|
final GroupRepository groupRepo,
|
||||||
|
final GroupManager groupManager) {
|
||||||
|
|
||||||
|
super("Create new group");
|
||||||
|
|
||||||
|
this.usersGroupsRoles = usersGroupsRoles;
|
||||||
|
group = null;
|
||||||
|
this.groupRepo = groupRepo;
|
||||||
|
this.groupManager = groupManager;
|
||||||
|
|
||||||
|
addWidgets();
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupEditor(final Group group,
|
||||||
|
final UsersGroupsRoles usersGroupsRoles,
|
||||||
|
final GroupRepository groupRepo,
|
||||||
|
final GroupManager groupManager) {
|
||||||
|
|
||||||
|
super(String.format("Edit group %s", group.getName()));
|
||||||
|
|
||||||
|
this.group = group;
|
||||||
|
this.usersGroupsRoles = usersGroupsRoles;
|
||||||
|
this.groupRepo = groupRepo;
|
||||||
|
this.groupManager = groupManager;
|
||||||
|
|
||||||
|
addWidgets();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addWidgets() {
|
||||||
|
|
||||||
|
final ResourceBundle bundle = ResourceBundle
|
||||||
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
|
final DataHasChangedListener dataHasChangedListener
|
||||||
|
= new DataHasChangedListener();
|
||||||
|
|
||||||
|
groupName = new TextField(bundle
|
||||||
|
.getString("ui.admin.group_edit.groupname.label"));
|
||||||
|
groupName.setRequiredIndicatorVisible(true);
|
||||||
|
groupName.addValueChangeListener(dataHasChangedListener);
|
||||||
|
|
||||||
|
final Button submit = new Button();
|
||||||
|
if (group == null) {
|
||||||
|
submit.setCaption(bundle
|
||||||
|
.getString("ui.admin.group.createpanel.header"));
|
||||||
|
} else {
|
||||||
|
submit.setCaption(bundle.getString("ui.admin.save"));
|
||||||
|
}
|
||||||
|
submit.addClickListener(event -> saveGroup());
|
||||||
|
|
||||||
|
final Button cancel = new Button(bundle.getString("ui.admin.cancel"));
|
||||||
|
cancel.addClickListener(event -> close());
|
||||||
|
|
||||||
|
final HorizontalLayout buttons = new HorizontalLayout(submit, cancel);
|
||||||
|
|
||||||
|
final FormLayout formLayout = new FormLayout(groupName);
|
||||||
|
|
||||||
|
final VerticalLayout layout = new VerticalLayout(formLayout, buttons);
|
||||||
|
|
||||||
|
final Panel panel = new Panel(layout);
|
||||||
|
if (group == null) {
|
||||||
|
panel.setCaption(bundle
|
||||||
|
.getString("ui.admin.group.createpanel.header"));
|
||||||
|
} else {
|
||||||
|
panel.setCaption(bundle
|
||||||
|
.getString("ui.admin.group_details.edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (group != null) {
|
||||||
|
groupName.setValue(group.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
setContent(panel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
|
||||||
|
if (dataHasChanged) {
|
||||||
|
final ResourceBundle bundle = ResourceBundle
|
||||||
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
|
final ConfirmDiscardDialog dialog = new ConfirmDiscardDialog(
|
||||||
|
this,
|
||||||
|
bundle.getString("ui.admin.group_edit.discard_confirm"));
|
||||||
|
dialog.setModal(true);
|
||||||
|
UI.getCurrent().addWindow(dialog);
|
||||||
|
} else {
|
||||||
|
super.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void saveGroup() {
|
||||||
|
|
||||||
|
final ResourceBundle bundle = ResourceBundle
|
||||||
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
|
boolean valid = true;
|
||||||
|
|
||||||
|
if (groupName.getValue() == null
|
||||||
|
|| groupName.getValue().trim().isEmpty()) {
|
||||||
|
|
||||||
|
groupName.setComponentError(new UserError(
|
||||||
|
bundle.getString("")));
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Group currentGroup;
|
||||||
|
final String notificationText;
|
||||||
|
if (group == null) {
|
||||||
|
|
||||||
|
currentGroup = new Group();
|
||||||
|
currentGroup.setName(groupName.getValue());
|
||||||
|
notificationText = String.format("Created new group %s",
|
||||||
|
currentGroup.getName());
|
||||||
|
} else {
|
||||||
|
currentGroup = group;
|
||||||
|
group.setName(groupName.getValue());
|
||||||
|
notificationText = String.format("Saved changes to group %s",
|
||||||
|
currentGroup.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
groupRepo.save(currentGroup);
|
||||||
|
|
||||||
|
dataHasChanged = false;
|
||||||
|
if (usersGroupsRoles != null) {
|
||||||
|
usersGroupsRoles.refreshGroups();
|
||||||
|
}
|
||||||
|
close();
|
||||||
|
new Notification(notificationText, Notification.Type.TRAY_NOTIFICATION)
|
||||||
|
.show(Page.getCurrent());
|
||||||
|
}
|
||||||
|
|
||||||
|
private class DataHasChangedListener
|
||||||
|
implements HasValue.ValueChangeListener<String> {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1410903365203533072L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void valueChange(final HasValue.ValueChangeEvent<String> event) {
|
||||||
|
dataHasChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -24,15 +24,21 @@ import com.vaadin.icons.VaadinIcons;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
import com.vaadin.ui.Grid;
|
import com.vaadin.ui.Grid;
|
||||||
import com.vaadin.ui.HorizontalLayout;
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.Panel;
|
||||||
import com.vaadin.ui.TextField;
|
import com.vaadin.ui.TextField;
|
||||||
import com.vaadin.ui.UI;
|
import com.vaadin.ui.UI;
|
||||||
|
import com.vaadin.ui.VerticalLayout;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.components.grid.HeaderCell;
|
import com.vaadin.ui.components.grid.HeaderCell;
|
||||||
import com.vaadin.ui.components.grid.HeaderRow;
|
import com.vaadin.ui.components.grid.HeaderRow;
|
||||||
import com.vaadin.ui.renderers.ButtonRenderer;
|
import com.vaadin.ui.renderers.ButtonRenderer;
|
||||||
import com.vaadin.ui.themes.ValoTheme;
|
import com.vaadin.ui.themes.ValoTheme;
|
||||||
import org.libreccm.admin.ui.AdminView;
|
import org.libreccm.admin.ui.AdminView;
|
||||||
import org.libreccm.security.Group;
|
import org.libreccm.security.Group;
|
||||||
|
import org.libreccm.security.GroupRepository;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -65,12 +71,24 @@ public class GroupsTable extends Grid<Group> {
|
||||||
.setCaption("Name");
|
.setCaption("Name");
|
||||||
addColumn(user -> bundle.getString("ui.admin.groups.table.edit"),
|
addColumn(user -> bundle.getString("ui.admin.groups.table.edit"),
|
||||||
new ButtonRenderer<>(event -> {
|
new ButtonRenderer<>(event -> {
|
||||||
//ToDo Open GroupEditor window
|
final GroupEditor groupEditor = new GroupEditor(
|
||||||
|
event.getItem(),
|
||||||
|
usersGroupsRoles,
|
||||||
|
view.getGroupRepository(),
|
||||||
|
view.getGroupManager());
|
||||||
|
groupEditor.center();
|
||||||
|
UI.getCurrent().addWindow(groupEditor);
|
||||||
}))
|
}))
|
||||||
.setId(COL_EDIT);
|
.setId(COL_EDIT);
|
||||||
addColumn(user -> bundle.getString("ui.admin.groups.table.delete"),
|
addColumn(user -> bundle.getString("ui.admin.groups.table.delete"),
|
||||||
new ButtonRenderer<>(event -> {
|
new ButtonRenderer<>(event -> {
|
||||||
//ToDo Display Confirm dialog
|
final ConfirmDeleteDialog dialog
|
||||||
|
= new ConfirmDeleteDialog(
|
||||||
|
event.getItem(),
|
||||||
|
usersGroupsRoles,
|
||||||
|
view.getGroupRepository());
|
||||||
|
dialog.center();
|
||||||
|
UI.getCurrent().addWindow(dialog);
|
||||||
}))
|
}))
|
||||||
.setId(COL_DELETE);
|
.setId(COL_DELETE);
|
||||||
|
|
||||||
|
|
@ -102,7 +120,12 @@ public class GroupsTable extends Grid<Group> {
|
||||||
createGroupButton.setStyleName(ValoTheme.BUTTON_TINY);
|
createGroupButton.setStyleName(ValoTheme.BUTTON_TINY);
|
||||||
createGroupButton.setIcon(VaadinIcons.PLUS);
|
createGroupButton.setIcon(VaadinIcons.PLUS);
|
||||||
createGroupButton.addClickListener(event -> {
|
createGroupButton.addClickListener(event -> {
|
||||||
//ToDo Open GroupEditor
|
final GroupEditor groupEditor = new GroupEditor(
|
||||||
|
usersGroupsRoles,
|
||||||
|
view.getGroupRepository(),
|
||||||
|
view.getGroupManager());
|
||||||
|
groupEditor.center();
|
||||||
|
UI.getCurrent().addWindow(groupEditor);
|
||||||
});
|
});
|
||||||
final HorizontalLayout actionsLayout = new HorizontalLayout(
|
final HorizontalLayout actionsLayout = new HorizontalLayout(
|
||||||
clearFiltersButton,
|
clearFiltersButton,
|
||||||
|
|
@ -129,4 +152,56 @@ public class GroupsTable extends Grid<Group> {
|
||||||
.getString("ui.admin.users.table.filter.clear"));
|
.getString("ui.admin.users.table.filter.clear"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ConfirmDeleteDialog extends Window {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1168912882249598278L;
|
||||||
|
|
||||||
|
private final Group group;
|
||||||
|
private final UsersGroupsRoles usersGroupsRoles;
|
||||||
|
private final GroupRepository groupRepo;
|
||||||
|
|
||||||
|
public ConfirmDeleteDialog(final Group group,
|
||||||
|
final UsersGroupsRoles usersGroupsRoles,
|
||||||
|
final GroupRepository groupRepo) {
|
||||||
|
|
||||||
|
this.group = group;
|
||||||
|
this.usersGroupsRoles = usersGroupsRoles;
|
||||||
|
this.groupRepo = groupRepo;
|
||||||
|
|
||||||
|
final ResourceBundle bundle = ResourceBundle
|
||||||
|
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||||
|
UI.getCurrent().getLocale());
|
||||||
|
|
||||||
|
final MessageFormat messageFormat = new MessageFormat(
|
||||||
|
bundle.getString("ui.admin.groups.delete.confirm"));
|
||||||
|
|
||||||
|
final Label text = new Label(messageFormat
|
||||||
|
.format(new Object[]{group.getName()}));
|
||||||
|
|
||||||
|
final Button yesButton
|
||||||
|
= new Button(bundle.getString("ui.admin.yes"));
|
||||||
|
yesButton.addClickListener(event -> deleteGroup());
|
||||||
|
|
||||||
|
final Button noButton = new Button(bundle.getString("ui.admin.no"));
|
||||||
|
noButton.addClickListener(event -> close());
|
||||||
|
|
||||||
|
final HorizontalLayout buttons = new HorizontalLayout(yesButton,
|
||||||
|
noButton);
|
||||||
|
|
||||||
|
final VerticalLayout layout = new VerticalLayout(text, buttons);
|
||||||
|
|
||||||
|
// final Panel panel = new Panel(
|
||||||
|
// bundle.getString("ui.admin.groups.delete.confirm.title"),
|
||||||
|
// layout);
|
||||||
|
setContent(layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteGroup() {
|
||||||
|
groupRepo.delete(group);
|
||||||
|
usersGroupsRoles.refreshGroups();
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -252,8 +252,8 @@ public class UserEditor extends Window {
|
||||||
|
|
||||||
final Button submit = new Button();
|
final Button submit = new Button();
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
submit.setCaption(bundle.getString(
|
submit.setCaption(bundle
|
||||||
"ui.admin.user.createpanel.header"));
|
.getString("ui.admin.user.createpanel.header"));
|
||||||
} else {
|
} else {
|
||||||
submit.setCaption(bundle.getString("ui.admin.save"));
|
submit.setCaption(bundle.getString("ui.admin.save"));
|
||||||
}
|
}
|
||||||
|
|
@ -442,8 +442,8 @@ public class UserEditor extends Window {
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DataHasChangedListener implements
|
private class DataHasChangedListener
|
||||||
HasValue.ValueChangeListener<String> {
|
implements HasValue.ValueChangeListener<String> {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4698658552890778877L;
|
private static final long serialVersionUID = -4698658552890778877L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -579,3 +579,10 @@ ui.admin.user_edit.password_options.do_nothing=Do not change password
|
||||||
ui.admin.user_form.failed_to_send_password_challenge=Failed to send password challenge to user.
|
ui.admin.user_form.failed_to_send_password_challenge=Failed to send password challenge to user.
|
||||||
ui.admin.groups.table.edit=Edit
|
ui.admin.groups.table.edit=Edit
|
||||||
ui.admin.roles.table.edit=Edit
|
ui.admin.roles.table.edit=Edit
|
||||||
|
ui.admin.groups.delete.confirm=Are you sure to delete group {0}?
|
||||||
|
ui.admin.groups.delete.confirm.title=Are you sure?
|
||||||
|
ui.admin.group_edit.groupname.label=Name
|
||||||
|
ui.admin.group.createpanel.header=Create a new group
|
||||||
|
ui.admin.group_details.edit=Edit group
|
||||||
|
ui.admin.group_edit.groupname.error.not_empty=The name of a group can't be empty.
|
||||||
|
ui.admin.group_edit.discard_confirm=Are you sure to discard all changes made to this group?
|
||||||
|
|
|
||||||
|
|
@ -583,3 +583,10 @@ ui.admin.user_edit.password_options.do_nothing=Password nicht ver\u00e4ndern
|
||||||
ui.admin.user_form.failed_to_send_password_challenge=Beim Senden des Passwortes ist ein Fehler aufgetreten.
|
ui.admin.user_form.failed_to_send_password_challenge=Beim Senden des Passwortes ist ein Fehler aufgetreten.
|
||||||
ui.admin.groups.table.edit=Bearbeiten
|
ui.admin.groups.table.edit=Bearbeiten
|
||||||
ui.admin.roles.table.edit=Bearbeiten
|
ui.admin.roles.table.edit=Bearbeiten
|
||||||
|
ui.admin.groups.delete.confirm=Sind Sie sicher, dass die die Gruppe {0} l\u00f6schen wollen?
|
||||||
|
ui.admin.groups.delete.confirm.title=Sind Sie sicher?
|
||||||
|
ui.admin.group_edit.groupname.label=Name
|
||||||
|
ui.admin.group.createpanel.header=Neue Gruppe anlegen
|
||||||
|
ui.admin.group_details.edit=Gruppe bearbeiten
|
||||||
|
ui.admin.group_edit.groupname.error.not_empty=Der Name einer Gruppe darf nicht leer sein.
|
||||||
|
ui.admin.group_edit.discard_confirm=Sind Sie icher, dass die alle an der Gruppe vorgenommenen \u00c4nderungen verwerfen wollen?
|
||||||
|
|
|
||||||
|
|
@ -576,3 +576,10 @@ ui.admin.user_edit.password_options.do_nothing=Do not change password
|
||||||
ui.admin.user_form.failed_to_send_password_challenge=Failed to send password challenge to user.
|
ui.admin.user_form.failed_to_send_password_challenge=Failed to send password challenge to user.
|
||||||
ui.admin.groups.table.edit=Edit
|
ui.admin.groups.table.edit=Edit
|
||||||
ui.admin.roles.table.edit=Edit
|
ui.admin.roles.table.edit=Edit
|
||||||
|
ui.admin.groups.delete.confirm=Are you sure to delete group {0}?
|
||||||
|
ui.admin.groups.delete.confirm.title=Are you sure?
|
||||||
|
ui.admin.group_edit.groupname.label=Name
|
||||||
|
ui.admin.group.createpanel.header=Create a new group
|
||||||
|
ui.admin.group_details.edit=Edit group
|
||||||
|
ui.admin.group_edit.groupname.error.not_empty=The name of a group can't be empty.
|
||||||
|
ui.admin.group_edit.discard_confirm=Are you sure to discard all changes made to this group?
|
||||||
|
|
|
||||||
|
|
@ -567,3 +567,10 @@ ui.admin.user_edit.password_options.do_nothing=Do not change password
|
||||||
ui.admin.user_form.failed_to_send_password_challenge=Failed to send password challenge to user.
|
ui.admin.user_form.failed_to_send_password_challenge=Failed to send password challenge to user.
|
||||||
ui.admin.groups.table.edit=Edit
|
ui.admin.groups.table.edit=Edit
|
||||||
ui.admin.roles.table.edit=Edit
|
ui.admin.roles.table.edit=Edit
|
||||||
|
ui.admin.groups.delete.confirm=Are you sure to delete group {0}?
|
||||||
|
ui.admin.groups.delete.confirm.title=Are you sure?
|
||||||
|
ui.admin.group_edit.groupname.label=Name
|
||||||
|
ui.admin.group.createpanel.header=Create a new group
|
||||||
|
ui.admin.group_details.edit=Edit group
|
||||||
|
ui.admin.group_edit.groupname.error.not_empty=The name of a group can't be empty.
|
||||||
|
ui.admin.group_edit.discard_confirm=Are you sure to discard all changes made to this group?
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue