CCM NG/ccm-core: Localisation of Vaadin prototype UI
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4711 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
a6d8836bc4
commit
e77fc73b85
|
|
@ -26,10 +26,8 @@ import com.vaadin.navigator.ViewChangeListener;
|
|||
import com.vaadin.server.ClassResource;
|
||||
import com.vaadin.server.VaadinServlet;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.CssLayout;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.Grid;
|
||||
import com.vaadin.ui.GridLayout;
|
||||
import com.vaadin.ui.Image;
|
||||
import com.vaadin.ui.Label;
|
||||
|
|
@ -40,16 +38,13 @@ import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles;
|
|||
import org.libreccm.admin.ui.usersgroupsroles.UsersTableDataProvider;
|
||||
import org.libreccm.l10n.GlobalizationHelper;
|
||||
import org.libreccm.security.PermissionChecker;
|
||||
import org.libreccm.security.User;
|
||||
import org.libreccm.security.UserRepository;
|
||||
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.ServletRequest;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -63,12 +58,11 @@ public class AdminView extends CustomComponent implements View {
|
|||
|
||||
public static final String VIEWNAME = "admin";
|
||||
|
||||
private static final String COL_USER_NAME = "username";
|
||||
private static final String COL_GIVEN_NAME = "given_name";
|
||||
private static final String COL_FAMILY_NAME = "family_name";
|
||||
private static final String COL_EMAIL = "email";
|
||||
private static final String COL_BANNED = "banned";
|
||||
|
||||
// private static final String COL_USER_NAME = "username";
|
||||
// private static final String COL_GIVEN_NAME = "given_name";
|
||||
// private static final String COL_FAMILY_NAME = "family_name";
|
||||
// private static final String COL_EMAIL = "email";
|
||||
// private static final String COL_BANNED = "banned";
|
||||
@Inject
|
||||
private ServletContext servletContext;
|
||||
|
||||
|
|
@ -83,7 +77,7 @@ public class AdminView extends CustomComponent implements View {
|
|||
|
||||
@Inject
|
||||
private GlobalizationHelper globalizationHelper;
|
||||
|
||||
|
||||
@Inject
|
||||
private UsersTableDataProvider usersTableDataProvider;
|
||||
|
||||
|
|
@ -94,6 +88,7 @@ public class AdminView extends CustomComponent implements View {
|
|||
|
||||
private final TabSheet tabSheet;
|
||||
// private final Grid<User> usersTable;
|
||||
private final TabSheet.Tab tabUsersGroupsRoles;
|
||||
private final UsersGroupsRoles usersGroupsRoles;
|
||||
|
||||
private final JpqlConsole jpqlConsole;
|
||||
|
|
@ -135,7 +130,8 @@ public class AdminView extends CustomComponent implements View {
|
|||
//
|
||||
// tabSheet.addTab(userGroupsRoles, "Users/Groups/Roles");
|
||||
usersGroupsRoles = new UsersGroupsRoles(this);
|
||||
tabSheet.addTab(usersGroupsRoles, "Users/Groups/Roles");
|
||||
tabUsersGroupsRoles = tabSheet.addTab(usersGroupsRoles,
|
||||
"Users/Groups/Roles");
|
||||
|
||||
final ServletContext servletContext = VaadinServlet
|
||||
.getCurrent()
|
||||
|
|
@ -182,8 +178,13 @@ public class AdminView extends CustomComponent implements View {
|
|||
bundle = ResourceBundle
|
||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||
globalizationHelper.getNegotiatedLocale());
|
||||
|
||||
|
||||
usersGroupsRoles.setDataProvider(usersTableDataProvider);
|
||||
|
||||
tabUsersGroupsRoles.setCaption(bundle
|
||||
.getString("ui.admin.tab.users_groups_roles.title"));
|
||||
|
||||
usersGroupsRoles.localize();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -192,7 +193,6 @@ public class AdminView extends CustomComponent implements View {
|
|||
// usersGroupsRoles.setUsers(userRepo.findAll());
|
||||
}
|
||||
|
||||
|
||||
protected JpqlConsoleController getJpqlConsoleController() {
|
||||
return jpqlConsoleController;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,21 +18,26 @@
|
|||
*/
|
||||
package org.libreccm.admin.ui.usersgroupsroles;
|
||||
|
||||
import com.arsdigita.ui.admin.AdminUiConstants;
|
||||
|
||||
import com.vaadin.data.provider.AbstractDataProvider;
|
||||
import com.vaadin.data.provider.Query;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.ItemCaptionGenerator;
|
||||
import com.vaadin.ui.Panel;
|
||||
import com.vaadin.ui.PasswordField;
|
||||
import com.vaadin.ui.RadioButtonGroup;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.Window;
|
||||
import org.libreccm.core.UnexpectedErrorException;
|
||||
import org.libreccm.security.User;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
|
|
@ -75,18 +80,26 @@ public class UserEditor extends Window {
|
|||
|
||||
private void addWidgets() {
|
||||
|
||||
userName = new TextField("User name");
|
||||
final ResourceBundle bundle = ResourceBundle
|
||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||
UI.getCurrent().getLocale());
|
||||
|
||||
userName = new TextField(bundle
|
||||
.getString("ui.admin.user_edit.username.label"));
|
||||
userName.setRequiredIndicatorVisible(true);
|
||||
|
||||
familyName = new TextField("Family name");
|
||||
familyName = new TextField(bundle
|
||||
.getString("ui.admin.user_edit.familyname.label"));
|
||||
|
||||
givenName = new TextField("Given name");
|
||||
givenName = new TextField(bundle
|
||||
.getString("ui.admin.user_edit.givenname.label"));
|
||||
|
||||
emailAddress = new TextField("emailAddress");
|
||||
emailAddress = new TextField(bundle
|
||||
.getString("ui.admin.user_edit.emailAddress.label"));
|
||||
emailAddress.setRequiredIndicatorVisible(true);
|
||||
|
||||
passwordOptions = new RadioButtonGroup<PasswordOptions>(
|
||||
"Generate password or set manually?",
|
||||
bundle.getString("ui.admin.user_edit.password_options.label"),
|
||||
new AbstractDataProvider<PasswordOptions, String>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
@ -108,11 +121,28 @@ public class UserEditor extends Window {
|
|||
}
|
||||
|
||||
});
|
||||
passwordOptions.setItemCaptionGenerator(
|
||||
(final PasswordOptions item) -> {
|
||||
switch (item) {
|
||||
case GENERATE_AND_SEND:
|
||||
return bundle.getString(
|
||||
"ui.admin.user_edit.password_options.generate_and_send");
|
||||
case SET:
|
||||
return bundle.getString(
|
||||
"ui.admin.user_edit.password_options.set");
|
||||
default:
|
||||
throw new UnexpectedErrorException(String.format(
|
||||
"Unexpected value '%s' for password options.",
|
||||
item.toString()));
|
||||
}
|
||||
});
|
||||
|
||||
password = new PasswordField("Password");
|
||||
password = new PasswordField(bundle
|
||||
.getString("ui.admin.user_edit.password.label"));
|
||||
password.setRequiredIndicatorVisible(true);
|
||||
|
||||
passwordConfirmation = new PasswordField("Confirm password");
|
||||
passwordConfirmation = new PasswordField(bundle
|
||||
.getString("ui.admin.user_set_password_confirm.label"));
|
||||
passwordConfirmation.setRequiredIndicatorVisible(true);
|
||||
|
||||
passwordOptions.addValueChangeListener(event -> {
|
||||
|
|
@ -140,15 +170,16 @@ public class UserEditor extends Window {
|
|||
|
||||
final Button submit = new Button();
|
||||
if (user == null) {
|
||||
submit.setCaption("Create new user");
|
||||
submit.setCaption(bundle.getString(
|
||||
"ui.admin.user.createpanel.header"));
|
||||
} else {
|
||||
submit.setCaption("Save");
|
||||
submit.setCaption(bundle.getString("ui.admin.save"));
|
||||
}
|
||||
|
||||
final Button cancel = new Button("Cancel");
|
||||
final Button cancel = new Button(bundle.getString("ui.admin.cancel"));
|
||||
|
||||
final HorizontalLayout buttons = new HorizontalLayout(submit, cancel);
|
||||
|
||||
|
||||
final FormLayout formLayout = new FormLayout(userName,
|
||||
familyName,
|
||||
givenName,
|
||||
|
|
@ -156,14 +187,16 @@ public class UserEditor extends Window {
|
|||
passwordOptions,
|
||||
password,
|
||||
passwordConfirmation);
|
||||
|
||||
|
||||
final VerticalLayout layout = new VerticalLayout(formLayout, buttons);
|
||||
|
||||
final Panel panel = new Panel(layout);
|
||||
if (user == null) {
|
||||
panel.setCaption("Create new user");
|
||||
panel.setCaption(bundle
|
||||
.getString("ui.admin.user.createpanel.header"));
|
||||
} else {
|
||||
panel.setCaption("Edit user");
|
||||
panel.setCaption(bundle
|
||||
.getString("ui.admin.user_details.edit"));
|
||||
}
|
||||
|
||||
setContent(panel);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import com.vaadin.ui.themes.ValoTheme;
|
|||
import org.libreccm.admin.ui.AdminView;
|
||||
import org.libreccm.security.User;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
/**
|
||||
|
|
@ -49,20 +50,28 @@ public class UsersGroupsRoles extends CustomComponent {
|
|||
private static final String COL_FAMILY_NAME = "family_name";
|
||||
private static final String COL_EMAIL = "email";
|
||||
private static final String COL_BANNED = "banned";
|
||||
private static final String COL_PASSWORD_RESET_REQUIRED
|
||||
= "password_reset_required";
|
||||
private static final String COL_EDIT = "edit";
|
||||
private static final String COL_DELETE = "delete";
|
||||
|
||||
private final AdminView view;
|
||||
|
||||
private final TabSheet tabSheet;
|
||||
|
||||
|
||||
private final Grid<User> usersTable;
|
||||
private final TextField userNameFilter;
|
||||
private final Button clearFiltersButton;
|
||||
|
||||
private UsersTableDataProvider usersTableDataProvider;
|
||||
|
||||
public UsersGroupsRoles(final AdminView view) {
|
||||
|
||||
this.view = view;
|
||||
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle(
|
||||
AdminUiConstants.ADMIN_BUNDLE, UI.getCurrent().getLocale());
|
||||
final ResourceBundle bundle = ResourceBundle
|
||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||
UI.getCurrent().getLocale());
|
||||
|
||||
tabSheet = new TabSheet();
|
||||
usersTable = new Grid<>();
|
||||
|
|
@ -94,16 +103,39 @@ public class UsersGroupsRoles extends CustomComponent {
|
|||
.setId(COL_BANNED)
|
||||
.setCaption("Banned?");
|
||||
usersTable
|
||||
.addColumn(user -> "Edit",
|
||||
.addColumn(user -> {
|
||||
if (user.isPasswordResetRequired()) {
|
||||
return bundle.getString(
|
||||
"ui.admin.user.password_reset_required_yes");
|
||||
} else {
|
||||
return bundle.getString(
|
||||
"ui.admin.user.password_reset_required_no");
|
||||
}
|
||||
})
|
||||
.setId(COL_PASSWORD_RESET_REQUIRED)
|
||||
.setCaption("Password reset required");
|
||||
usersTable
|
||||
.addColumn(user -> bundle.getString("ui.admin.users.table.edit"),
|
||||
new ButtonRenderer<>(event -> {
|
||||
final UserEditor editor = new UserEditor(event.getItem());
|
||||
final UserEditor editor = new UserEditor(event
|
||||
.getItem());
|
||||
editor.center();
|
||||
UI.getCurrent().addWindow(editor);
|
||||
}));
|
||||
}))
|
||||
.setId(COL_EDIT);
|
||||
usersTable
|
||||
.addColumn(user -> bundle.getString("ui.admin.users.table.delete"),
|
||||
new ButtonRenderer<>(event -> {
|
||||
final UserEditor editor = new UserEditor(event
|
||||
.getItem());
|
||||
editor.center();
|
||||
UI.getCurrent().addWindow(editor);
|
||||
}))
|
||||
.setId(COL_DELETE);
|
||||
|
||||
final HeaderRow filterRow = usersTable.appendHeaderRow();
|
||||
final HeaderCell userNameFilterCell = filterRow.getCell(COL_USER_NAME);
|
||||
final TextField userNameFilter = new TextField();
|
||||
userNameFilter = new TextField();
|
||||
userNameFilter.setPlaceholder("User name");
|
||||
userNameFilter.setDescription("Filter users by username");
|
||||
userNameFilter.addStyleName(ValoTheme.TEXTFIELD_TINY);
|
||||
|
|
@ -113,14 +145,14 @@ public class UsersGroupsRoles extends CustomComponent {
|
|||
.setUserNameFilter(event.getValue().toLowerCase());
|
||||
});
|
||||
userNameFilterCell.setComponent(userNameFilter);
|
||||
|
||||
|
||||
final HeaderRow actionsRow = usersTable.prependHeaderRow();
|
||||
final HeaderCell actionsCell = actionsRow.join(COL_USER_NAME,
|
||||
COL_GIVEN_NAME,
|
||||
COL_FAMILY_NAME,
|
||||
COL_EMAIL,
|
||||
COL_BANNED);
|
||||
final Button clearFiltersButton = new Button("Clear filters");
|
||||
final HeaderCell actionsCell = actionsRow.join(COL_USER_NAME,
|
||||
COL_GIVEN_NAME,
|
||||
COL_FAMILY_NAME,
|
||||
COL_EMAIL,
|
||||
COL_BANNED);
|
||||
clearFiltersButton = new Button("Clear filters");
|
||||
clearFiltersButton.addStyleName(ValoTheme.BUTTON_TINY);
|
||||
clearFiltersButton.addClickListener(event -> {
|
||||
// usersTableDataProvider.setUserNameFilter(null);
|
||||
|
|
@ -136,6 +168,42 @@ public class UsersGroupsRoles extends CustomComponent {
|
|||
|
||||
}
|
||||
|
||||
public void localize() {
|
||||
|
||||
final ResourceBundle bundle = ResourceBundle
|
||||
.getBundle(AdminUiConstants.ADMIN_BUNDLE,
|
||||
UI.getCurrent().getLocale());
|
||||
|
||||
usersTable
|
||||
.getColumn(COL_USER_NAME)
|
||||
.setCaption(bundle.getString("ui.admin.users.table.screenname"));
|
||||
usersTable
|
||||
.getColumn(COL_GIVEN_NAME)
|
||||
.setCaption(bundle.getString("ui.admin.users.table.givenname"));
|
||||
usersTable
|
||||
.getColumn(COL_FAMILY_NAME)
|
||||
.setCaption(bundle.getString("ui.admin.users.table.familyname"));
|
||||
usersTable
|
||||
.getColumn(COL_EMAIL)
|
||||
.setCaption(bundle.getString("ui.admin.users.table.primary_email"));
|
||||
usersTable
|
||||
.getColumn(COL_BANNED)
|
||||
.setCaption(bundle.getString("ui.admin.users.table.banned"));
|
||||
usersTable
|
||||
.getColumn(COL_PASSWORD_RESET_REQUIRED)
|
||||
.setCaption(bundle.getString(
|
||||
"ui.admin.users.table.password_reset_required"));
|
||||
|
||||
userNameFilter.setPlaceholder(bundle
|
||||
.getString("ui.admin.users.table.filter.screenname.placeholder"));
|
||||
userNameFilter.setDescription(bundle
|
||||
.getString("ui.admin.users.table.filter.screenname.description"));
|
||||
|
||||
clearFiltersButton.setCaption(bundle
|
||||
.getString("ui.admin.users.table.filter.clear"));
|
||||
|
||||
}
|
||||
|
||||
// public void setUsers(final List<User> users) {
|
||||
// usersTable.setItems(users);
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -559,3 +559,16 @@ ui.admin.user.banned_yes=Yes
|
|||
ui.admin.user.banned_no=No
|
||||
ui.admin.jpqlconsole.query=Query
|
||||
ui.admin.jpqlconsole.results.none=No results
|
||||
ui.admin.users.table.password_reset_required=Password reset required
|
||||
ui.admin.users.table.edit=Edit
|
||||
ui.admin.users.table.delete=Delete
|
||||
ui.admin.user.password_reset_required_yes=Yes
|
||||
ui.admin.user.password_reset_required_no=No
|
||||
ui.admin.user_edit.emailAddress.label=E-Mail
|
||||
ui.admin.user_edit.password_options.label=Generate password or set manually?
|
||||
ui.admin.user_edit.password.label=Password
|
||||
ui.admin.users.table.filter.screenname.placeholder=User name
|
||||
ui.admin.users.table.filter.screenname.description=Filter users by user name
|
||||
ui.admin.user_set_password_confirm.label=Confirm password
|
||||
ui.admin.user_edit.password_options.generate_and_send=Generate and send to user
|
||||
ui.admin.user_edit.password_options.set=Set password
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ ui.admin.new_user_form.error.username_already_in_use=Der angegebene Benutzername
|
|||
ui.admin.new_user_form.error.email_already_in_use=Die angegebene E-Mail-Adresse ist bereits mit einem Benutzerkonto verbunden.
|
||||
ui.admin.new_user_form.error.password_do_not_match=Die eingegebenen Passw\u00f6rter stimmen nicht \u00fcberein.
|
||||
ui.admin.new_user_form.error.failed_to_send_password=Fehler beim Senden des Passworts an den neuen Benutzer.
|
||||
ui.admin.new_user_form.password_options.set_password=Passwert setzen
|
||||
ui.admin.new_user_form.password_options.set_password=Passwort setzen
|
||||
ui.admin.user_details.groups=Gruppen
|
||||
ui.admin.user.groups.edit=Bearbeiten
|
||||
ui.admin.user.roles=Zugewiesene Rollen
|
||||
|
|
@ -563,3 +563,16 @@ ui.admin.user.banned_yes=Ja
|
|||
ui.admin.user.banned_no=Nein
|
||||
ui.admin.jpqlconsole.query=Abfrage
|
||||
ui.admin.jpqlconsole.results.none=Keine Ergebnisse
|
||||
ui.admin.users.table.password_reset_required=Passwort muss neu gesetzt werden
|
||||
ui.admin.users.table.edit=Bearbeiten
|
||||
ui.admin.users.table.delete=L\u00f6schen
|
||||
ui.admin.user.password_reset_required_yes=Ja
|
||||
ui.admin.user.password_reset_required_no=Nein
|
||||
ui.admin.user_edit.emailAddress.label=E-Mail
|
||||
ui.admin.user_edit.password_options.label=Passwort generieren oder manuell setzen?
|
||||
ui.admin.user_edit.password.label=Passwort
|
||||
ui.admin.users.table.filter.screenname.placeholder=Benutzername
|
||||
ui.admin.users.table.filter.screenname.description=Filter users by user name
|
||||
ui.admin.user_set_password_confirm.label=Passwort best\u00e4tigen
|
||||
ui.admin.user_edit.password_options.generate_and_send=Generieren und an Benutzer senden
|
||||
ui.admin.user_edit.password_options.set=Passwort setzen
|
||||
|
|
|
|||
|
|
@ -556,3 +556,16 @@ ui.admin.user.banned_yes=Yes
|
|||
ui.admin.user.banned_no=No
|
||||
ui.admin.jpqlconsole.query=Query
|
||||
ui.admin.jpqlconsole.results.none=No results
|
||||
ui.admin.users.table.password_reset_required=Password reset required
|
||||
ui.admin.users.table.edit=Edit
|
||||
ui.admin.users.table.delete=Delete
|
||||
ui.admin.user.password_reset_required_yes=Yes
|
||||
ui.admin.user.password_reset_required_no=No
|
||||
ui.admin.user_edit.emailAddress.label=E-Mail
|
||||
ui.admin.user_edit.password_options.label=Generate password or set manually?
|
||||
ui.admin.user_edit.password.label=Password
|
||||
ui.admin.users.table.filter.screenname.placeholder=User name
|
||||
ui.admin.users.table.filter.screenname.description=Filter users by user name
|
||||
ui.admin.user_set_password_confirm.label=Confirm password
|
||||
ui.admin.user_edit.password_options.generate_and_send=Generate and send to user
|
||||
ui.admin.user_edit.password_options.set=Set password
|
||||
|
|
|
|||
|
|
@ -547,3 +547,16 @@ ui.admin.user.banned_yes=Yes
|
|||
ui.admin.user.banned_no=No
|
||||
ui.admin.jpqlconsole.query=Query
|
||||
ui.admin.jpqlconsole.results.none=No results
|
||||
ui.admin.users.table.password_reset_required=Password reset required
|
||||
ui.admin.users.table.edit=Edit
|
||||
ui.admin.users.table.delete=Delete
|
||||
ui.admin.user.password_reset_required_yes=Yes
|
||||
ui.admin.user.password_reset_required_no=No
|
||||
ui.admin.user_edit.emailAddress.label=E-Mail
|
||||
ui.admin.user_edit.password_options.label=Generate password or set manually?
|
||||
ui.admin.user_edit.password.label=Password
|
||||
ui.admin.users.table.filter.screenname.placeholder=User name
|
||||
ui.admin.users.table.filter.screenname.description=Filter users by user name
|
||||
ui.admin.user_set_password_confirm.label=Confirm password
|
||||
ui.admin.user_edit.password_options.generate_and_send=Generate and send to user
|
||||
ui.admin.user_edit.password_options.set=Set password
|
||||
|
|
|
|||
Loading…
Reference in New Issue