From 0496d304581b8b218d30815203c403c8223a180e Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 31 Oct 2020 19:23:36 +0100 Subject: [PATCH] Settings view for configuration Former-commit-id: c40e1345bbf65526d75719360246871fac20438c --- .../ConfigurationController.java | 2 +- .../configuration/SettingsController.java | 28 ++++- .../org/libreccm/ui/admin/configuration.xhtml | 66 ----------- .../admin/configuration/configuration.xhtml | 38 ++++++ .../ui/admin/configuration/settings.xhtml | 111 ++++++++++++++++++ .../org/libreccm/ui/AdminBundle.properties | 10 ++ .../org/libreccm/ui/AdminBundle_de.properties | 10 ++ 7 files changed, 194 insertions(+), 71 deletions(-) delete mode 100644 ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration.xhtml create mode 100644 ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/configuration.xhtml create mode 100644 ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/settings.xhtml diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/ConfigurationController.java b/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/ConfigurationController.java index 5c52afa0e..a6ab323c2 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/ConfigurationController.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/ConfigurationController.java @@ -70,7 +70,7 @@ public class ConfigurationController { models.put("configurationClasses", configurationClasses); - return "org/libreccm/ui/admin/configuration.xhtml"; + return "org/libreccm/ui/admin/configuration/configuration.xhtml"; } private ConfigurationTableEntry buildTableEntry( diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/SettingsController.java b/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/SettingsController.java index e59ee180f..c6ff18788 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/SettingsController.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/configuration/SettingsController.java @@ -21,9 +21,14 @@ package org.libreccm.ui.admin.configuration; import org.libreccm.configuration.ConfigurationInfo; import org.libreccm.configuration.ConfigurationManager; import org.libreccm.configuration.SettingInfo; +import org.libreccm.core.CoreConstants; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.l10n.LocalizedTextsUtil; +import org.libreccm.security.AuthorizationRequired; +import org.libreccm.security.RequiresPrivilege; +import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -31,6 +36,7 @@ import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.mvc.Controller; import javax.mvc.Models; +import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -52,7 +58,10 @@ public class SettingsController { @Inject private Models models; + @GET @Path("/") + @AuthorizationRequired + @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) public String showSettings( @PathParam("configurationClass") final String configurationClass ) { @@ -64,25 +73,36 @@ public class SettingsController { return "org/libreccm/ui/admin/configuration/configuration-class-not-found.xhtml"; } - final Object conf = confManager.findConfiguration(confClass); final ConfigurationInfo confInfo = confManager.getConfigurationInfo( confClass ); - confInfo + final LocalizedTextsUtil textUtil = globalizationHelper.getLocalizedTextsUtil(confInfo.getDescBundle()); + models.put( + "confLabel", + textUtil.getText(confInfo.getTitleKey()) + ); + models.put( + "configurationDesc", + textUtil.getText(confInfo.getDescKey()) + ); + + final List settings = confInfo .getSettings() .entrySet() .stream() - .map(info -> buildSettingsTableEntry(info.getValue(), conf)) + .map(Map.Entry::getValue) + .map(this::buildSettingsTableEntry) .sorted() .collect(Collectors.toList()); + models.put("settings", settings); return "org/libreccm/ui/admin/configuration/settings.xhtml"; } private SettingsTableEntry buildSettingsTableEntry( - final SettingInfo settingInfo, final Object conf + final SettingInfo settingInfo ) { Objects.requireNonNull(settingInfo); diff --git a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration.xhtml b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration.xhtml deleted file mode 100644 index fbf67bb94..000000000 --- a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration.xhtml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - -
-

#{AdminMessages['configuration.label']}

- - - - - -
-
- -
- diff --git a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/configuration.xhtml b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/configuration.xhtml new file mode 100644 index 000000000..cfffb9180 --- /dev/null +++ b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/configuration.xhtml @@ -0,0 +1,38 @@ + + + + + + + + + + + + +
+

#{AdminMessages['configuration.label']}

+ +
+
+ +
+ diff --git a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/settings.xhtml b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/settings.xhtml new file mode 100644 index 000000000..2a1680169 --- /dev/null +++ b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/configuration/settings.xhtml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + +
+

#{confLabel}

+

+ #{confDescription} +

+ + + + + + + + + + + + + + + + + + + + + +
+ #{AdminMessages['configuration.settings.table.headings.label']} + + #{AdminMessages['configuration.settings.table.headings.value']} + + #{AdminMessages['configuration.settings.table.headings.defaultValue']} + + #{AdminMessages['configuration.settings.table.headings.actions']} +
#{setting.label} + + + #{setting.defaultValue} + + + + #{setting.value} + + + + #{setting.defaultValue} + + + + + +
+
+
+ +
+ + diff --git a/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle.properties b/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle.properties index 49b2f292f..ee6e5c0b9 100644 --- a/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle.properties +++ b/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle.properties @@ -208,3 +208,13 @@ usersgroupsroles.users.form.errors.primary_email.empty=The primary email address usersgroupsroles.users.form.errors.primary_email.invalid=The primary email address of a user must be a valid email address configuration.table.headings.title=Configuration configuration.table.headings.description=Description +configuration.settings.label=Settings +configuration.settings.table.headings.label=Setting +configuration.settings.table.headings.value=Current value +configuration.settings.table.headings.defaultValue=Default Value +configuration.settings.table.headings.actions=Aktionen +configuration.settings.table.actions.info=Info +configuration.settings.table.actions.info.help=Show description of setting {0} +configuration.settings.table.actions.edit=Edit +configuration.settings.table.actions.reset.help=Reset setting {0} to default value {1} +configuration.settings.table.actions.reset=Reset diff --git a/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle_de.properties b/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle_de.properties index 97c53c52b..ee0018fde 100644 --- a/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle_de.properties +++ b/ccm-core/src/main/resources/org/libreccm/ui/AdminBundle_de.properties @@ -208,3 +208,13 @@ usersgroupsroles.users.form.errors.primary_email.empty=Die prim\u00e4re E-Mail-A usersgroupsroles.users.form.errors.primary_email.invalid=Die prim\u00e4re E-Mail-Addresse eines Benutzers muss eine valide E-Mail-Addresse sein configuration.table.headings.title=Konfiguration configuration.table.headings.description=Beschreibung +configuration.settings.label=Einstellungen +configuration.settings.table.headings.label=Einstellung +configuration.settings.table.headings.value=Aktueller Wert +configuration.settings.table.headings.defaultValue=Standardwert +configuration.settings.table.headings.actions=Aktionen +configuration.settings.table.actions.info=Info +configuration.settings.table.actions.info.help=Beschreibung f\u00fcr Einstellung {0} anzeigen +configuration.settings.table.actions.edit=Bearbeiten +configuration.settings.table.actions.reset.help=Einstellung {0} auf Standardwert {1} zur\u00fccksetzen +configuration.settings.table.actions.reset=Zur\u00fccksetzen