diff --git a/ccm-bundle-devel-wildfly/src/main/resources/log4j2.xml b/ccm-bundle-devel-wildfly/src/main/resources/log4j2.xml index ad3d929fb..41d2d0d6e 100644 --- a/ccm-bundle-devel-wildfly/src/main/resources/log4j2.xml +++ b/ccm-bundle-devel-wildfly/src/main/resources/log4j2.xml @@ -86,6 +86,11 @@ + + diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminConstants.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminConstants.java new file mode 100644 index 000000000..9e9db6c22 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminConstants.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2020 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.ui.admin; + +/** + * + * @author Jens Pelzetter + */ +public class AdminConstants { + + private AdminConstants() { + // Nothing + } + + public static final String ADMIN_BUNDLE = "org.libreccm.ui.admin.AdminBundle"; + +} diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPage.java index 55595990d..3f80a1ff8 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPage.java @@ -48,6 +48,7 @@ public class AdminPage extends WebPage { .stream() .map(AdminPagesProvider::getAdminPagesData) .flatMap(Collection::stream) + .filter(page -> page.getGroup().equals("")) .sorted( (page1, page2) -> Integer.compare( page1.getPosition(), page2.getPosition() diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageData.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageData.java index b36cbd6b2..735e7de7d 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageData.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageData.java @@ -30,6 +30,8 @@ public class AdminPageData { private final Class pageClass; + private final String group; + private final int position; private final String label; @@ -39,12 +41,14 @@ public class AdminPageData { AdminPageData( final String path, final Class pageClass, + final String group, final int position, final String label, final String description ) { this.path = path; this.pageClass = pageClass; + this.group = group; this.position = position; this.label = label; this.description = description; @@ -58,6 +62,10 @@ public class AdminPageData { return pageClass; } + public String getGroup() { + return group; + } + public int getPosition() { return position; } @@ -75,6 +83,7 @@ public class AdminPageData { int hash = 3; hash = 59 * hash + Objects.hashCode(path); hash = 59 * hash + Objects.hashCode(pageClass); + hash = 59 * hash + Objects.hashCode(group); hash = 59 * hash + position; hash = 59 * hash + Objects.hashCode(label); hash = 59 * hash + Objects.hashCode(description); @@ -102,6 +111,9 @@ public class AdminPageData { if (!Objects.equals(pageClass, other.getPageClass())) { return false; } + if (!Objects.equals(group, other.getGroup())) { + return false; + } if (position != other.getPosition()) { return false; } @@ -119,11 +131,13 @@ public class AdminPageData { public final String toString() { return toString(""); } - + public String toString(final String data) { - return String.format("%s{" + return String.format( + "%s{" + "path = %s, " + "pageClass = %s, " + + "group = %s, " + "order = %d, " + "label = %s, " + "description = %s%s" @@ -131,13 +145,12 @@ public class AdminPageData { super.toString(), path, pageClass.getName(), + group, position, label, description, data ); } - - } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageDataBuilder.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageDataBuilder.java deleted file mode 100644 index 3bf41cd74..000000000 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageDataBuilder.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2020 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.ui.admin; - -import org.libreccm.ui.MissingPageDataException; - -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -/** - * - * @author Jens Pelzetter - */ -public class AdminPageDataBuilder { - - private String path; - - private final Class pageClass; - - private Integer position; - - private ResourceBundle labelBundle; - - private String labelKey; - - private ResourceBundle descriptionBundle; - - private String descriptionKey; - - private AdminPageDataBuilder(final Class pageClass) { - this.pageClass = pageClass; - } - - public AdminPageDataBuilder mountedTo(final String path) { - this.path = path; - return this; - } - - public static AdminPageDataBuilder forPage( - final Class pageClass - ) { - return new AdminPageDataBuilder(pageClass); - } - - public AdminPageDataBuilder atPosition(final int position) { - this.position = position; - return this; - } - - public AdminPageDataBuilder withLabel( - final ResourceBundle labelBundle, final String labelKey - ) { - this.labelBundle = labelBundle; - this.labelKey = labelKey; - return this; - } - - public AdminPageDataBuilder withDescription( - final ResourceBundle descriptionBundle, final String descriptionKey - ) { - this.descriptionBundle = descriptionBundle; - this.descriptionKey = descriptionKey; - return this; - } - - public AdminPageData build() { - if (path == null || path.isBlank()) { - throw new MissingPageDataException("Missing path for page."); - } - - if (pageClass == null) { - throw new MissingPageDataException("Missing class for page."); - } - - if (position == null) { - throw new MissingPageDataException("Missing position for page."); - } - - if (labelBundle == null) { - throw new MissingPageDataException( - "Missing label bundle for page." - ); - } - - if (labelKey == null || labelKey.isBlank()) { - throw new MissingPageDataException("Missing label key for page."); - } - - if (descriptionBundle == null) { - throw new MissingPageDataException( - "Missing description bundle for page." - ); - } - - if (descriptionKey == null || descriptionKey.isBlank()) { - throw new MissingPageDataException( - "Missing description key for page." - ); - } - - final String label = getLabelFromBundle(); - final String description = getDescriptionFromBundle(); - - - return new AdminPageData(path, pageClass, position, label, description); - } - - private String getLabelFromBundle() { - try { - return labelBundle.getString(labelKey); - } catch(MissingResourceException ex) { - return labelKey; - } - } - - private String getDescriptionFromBundle() { - try { - return descriptionBundle.getString(descriptionKey); - } catch(MissingResourceException ex) { - return descriptionKey; - } - } -} diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageDescriptor.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageDescriptor.java new file mode 100644 index 000000000..fed73b2e4 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPageDescriptor.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2020 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.ui.admin; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * + * @author Jens Pelzetter + */ +@Retention(RetentionPolicy.RUNTIME) +public @interface AdminPageDescriptor { + + String path(); + + int position(); + + Class subPageOf() default AdminPage.class; + + String labelBundle(); + + String labelKey(); + + String descriptionBundle(); + + String descriptionKey(); + +} diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPagesProvider.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPagesProvider.java index 387fda4a5..b6f77ff5a 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPagesProvider.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminPagesProvider.java @@ -18,14 +18,127 @@ */ package org.libreccm.ui.admin; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.libreccm.l10n.GlobalizationHelper; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; import java.util.Set; +import java.util.stream.Collectors; + +import javax.inject.Inject; /** * * @author Jens Pelzetter */ -public interface AdminPagesProvider { +public abstract class AdminPagesProvider { - Set getAdminPagesData(); + private static final Logger LOGGER = LogManager.getLogger( + AdminPagesProvider.class + ); + + @Inject + private GlobalizationHelper globalizationHelper; + + public abstract Set> getClasses(); + + protected Set getAdminPagesData() { + return getClasses() + .stream() + .map(this::buildAdminPageData) + .collect(Collectors.toSet()); + } + + private AdminPageData buildAdminPageData( + final Class clazz + ) { + final AdminPageDescriptor descriptor = clazz.getAnnotation( + AdminPageDescriptor.class + ); + final String path = buildPath(descriptor); + final int position = descriptor.position(); + final String labelBundle = descriptor.labelBundle(); + final String labelKey = descriptor.labelKey(); + final String descriptionBundle = descriptor.descriptionBundle(); + final String descriptionKey = descriptor.descriptionKey(); + final String group; + if (descriptor.subPageOf().equals(AdminPage.class)) { + group = ""; + } else { + final AdminPageDescriptor parentDescriptor = descriptor + .subPageOf() + .getAnnotation(AdminPageDescriptor.class); + if (parentDescriptor == null) { + throw new IllegalArgumentException( + String.format( + "Parent page class %s of page class %s has no " + + "AdminPageDescriptor annotation.", + descriptor.subPageOf().getName(), + clazz.getName()) + ); + } + group = parentDescriptor.path(); + } + + final AdminPageData data = new AdminPageData( + path, + clazz, + group, + position, + findString(labelBundle, labelKey), + findString(descriptionBundle, descriptionKey) + ); + + return data; + } + + private String findString(final String bundleName, final String key) { + final ResourceBundle bundle; + try { + bundle = ResourceBundle.getBundle( + bundleName, globalizationHelper.getNegotiatedLocale() + ); + } catch (MissingResourceException ex) { + LOGGER.warn("Resource Bundle {} not found.", bundleName); + LOGGER.warn(ex); + return key; + } + + try { + return bundle.getString(key); + } catch (MissingResourceException ex) { + LOGGER.warn("Key {} not found.", key); + return key; + } + } + + private String buildPath(final AdminPageDescriptor descriptor) { + if (descriptor.subPageOf().equals(AdminPage.class)) { + return descriptor.path(); + } else { + final Class parent = descriptor.subPageOf(); + final AdminPageDescriptor parentDescriptor = parent.getAnnotation( + AdminPageDescriptor.class + ); + if (parentDescriptor == null) { + throw new IllegalArgumentException( + String.format( + "Parent page class %s of page class %s has no " + + "AdminPageDescriptor annotation.", + descriptor.subPageOf().getName(), + parent.getName()) + ); + } + + return String.join( + "/", + buildPath(parentDescriptor), + descriptor.path() + ); + + } + } } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/ApplicationsPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/ApplicationsPage.java index 774cc31b4..44643f5bc 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/ApplicationsPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/ApplicationsPage.java @@ -24,14 +24,22 @@ import org.libreccm.ui.admin.applications.ApplicationsPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "applications", + position = 10, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "applications.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "applications.description" +) public class ApplicationsPage extends AdminPage { - + private static final long serialVersionUID = 1L; - + @SuppressWarnings("OverridableMethodCallInConstructor") public ApplicationsPage() { super(); add(new ApplicationsPanel("adminPanel")); } - + } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/CategoriesPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/CategoriesPage.java index cb5474c0d..b7c01f78c 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/CategoriesPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/CategoriesPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.categories.CategoriesPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "categories", + position = 20, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "categories.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "categories.description" +) public class CategoriesPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/CcmAdmin.java b/ccm-core/src/main/java/org/libreccm/ui/admin/CcmAdmin.java index fe02ba3c4..4e59b6a7b 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/CcmAdmin.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/CcmAdmin.java @@ -18,11 +18,16 @@ */ package org.libreccm.ui.admin; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.wicket.cdi.CdiConfiguration; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.protocol.http.WebApplication; +import org.libreccm.l10n.GlobalizationHelper; import java.util.Collection; +import java.util.MissingResourceException; +import java.util.ResourceBundle; import java.util.Set; import java.util.stream.Collectors; @@ -35,9 +40,12 @@ import javax.inject.Inject; */ public class CcmAdmin extends WebApplication { + private static final Logger LOGGER = LogManager.getLogger(CcmAdmin.class); + @Inject private Instance adminPages; - + + @Override public Class getHomePage() { return DashboardPage.class; @@ -58,6 +66,11 @@ public class CcmAdmin extends WebApplication { .collect(Collectors.toSet()); for (final AdminPageData adminPageData : adminPagesData) { + LOGGER.debug( + "Mounting page {} to path {}", + adminPageData.getPageClass().getName(), + adminPageData.getPath() + ); mountPage(adminPageData.getPath(), adminPageData.getPageClass()); } @@ -72,5 +85,6 @@ public class CcmAdmin extends WebApplication { // mountPage("users-groups-roles/roles", RolesPage.class); // mountPage("users-groups-roles/users", UsersPage.class); } - + + } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/CcmCoreAdminPages.java b/ccm-core/src/main/java/org/libreccm/ui/admin/CcmCoreAdminPages.java index 4214d0fed..42be44c65 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/CcmCoreAdminPages.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/CcmCoreAdminPages.java @@ -18,119 +18,35 @@ */ package org.libreccm.ui.admin; -import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.ui.admin.usersgroupsroles.GroupsPage; import org.libreccm.ui.admin.usersgroupsroles.RolesPage; import org.libreccm.ui.admin.usersgroupsroles.UsersPage; -import java.util.ResourceBundle; import java.util.Set; import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; /** * * @author Jens Pelzetter */ @ApplicationScoped -public class CcmCoreAdminPages implements AdminPagesProvider { - - @Inject - private GlobalizationHelper globalizationHelper; +public class CcmCoreAdminPages extends AdminPagesProvider { @Override - public Set getAdminPagesData() { - final ResourceBundle adminBundle = ResourceBundle.getBundle( - "org.libreccm.ui.admin.AdminBundle", - globalizationHelper.getNegotiatedLocale() - ); - + public Set> getClasses() { return Set.of( - AdminPageDataBuilder - .forPage(ApplicationsPage.class) - .mountedTo("applications") - .atPosition(10) - .withLabel(adminBundle, "applications.label") - .withDescription(adminBundle, "applications.description") - .build(), - AdminPageDataBuilder - .forPage(CategoriesPage.class) - .mountedTo("categories") - .atPosition(20) - .withLabel(adminBundle, "categories.label") - .withDescription(adminBundle, "categories.description") - .build(), - AdminPageDataBuilder - .forPage(ConfigurationPage.class) - .mountedTo("configuration") - .atPosition(30) - .withLabel(adminBundle, "configuration.label") - .withDescription(adminBundle, "configuration.description") - .build(), - AdminPageDataBuilder - .forPage(ImExportPage.class) - .mountedTo("imexport") - .atPosition(40) - .withLabel(adminBundle, "imexport.label") - .withDescription(adminBundle, "imexport.description") - .build(), - AdminPageDataBuilder - .forPage(ConfigurationPage.class) - .mountedTo("pagemodels") - .atPosition(50) - .withLabel(adminBundle, "pagemodels.label") - .withDescription(adminBundle, "pagemodels.description") - .build(), - AdminPageDataBuilder - .forPage(SitesPage.class) - .mountedTo("sites") - .atPosition(60) - .withLabel(adminBundle, "sites.label") - .withDescription(adminBundle, "sites.description") - .build(), - AdminPageDataBuilder - .forPage(SystemInformationPage.class) - .mountedTo("systeminformation") - .atPosition(70) - .withLabel(adminBundle, "systeminformation.label") - .withDescription(adminBundle, "systeminformation.description") - .build(), - AdminPageDataBuilder - .forPage(UsersGroupsRolesPage.class) - .mountedTo("users-groups-roles") - .atPosition(80) - .withLabel(adminBundle, "usersGroupsRoles.label") - .withDescription(adminBundle, "usersGroupsRoles.description") - .build(), - AdminPageDataBuilder - .forPage(GroupsPage.class) - .mountedTo("users-groups-roles/groups") - .atPosition(90) - .withLabel(adminBundle, "usersGroupsRoles.groups.label") - .withDescription( - adminBundle, "usersGroupsRoles.groups.description" - ) - .build(), - AdminPageDataBuilder - .forPage(RolesPage.class) - .mountedTo("users-groups-roles/roles") - .atPosition(100) - .withLabel(adminBundle, "usersGroupsRoles.roles.label") - .withDescription( - adminBundle, "usersGroupsRoles.roles.description" - ) - .build(), - AdminPageDataBuilder - .forPage(UsersPage.class) - .mountedTo("users-groups-roles/users") - .atPosition(110) - .withLabel(adminBundle, "usersGroupsRoles.users.label") - .withDescription( - adminBundle, "usersGroupsRoles.users.description" - ) - .build() + ApplicationsPage.class, + CategoriesPage.class, + ConfigurationPage.class, + ImExportPage.class, + PageModelsPage.class, + SitesPage.class, + SystemInformationPage.class, + UsersGroupsRolesPage.class, + GroupsPage.class, + RolesPage.class, + UsersPage.class ); } - } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/ConfigurationPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/ConfigurationPage.java index b5a0e0351..4c147ec37 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/ConfigurationPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/ConfigurationPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.configuration.ConfigurationPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "configuration", + position = 30, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "configuration.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "configuration.description" +) public class ConfigurationPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/ImExportPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/ImExportPage.java index 2ef879d1e..0798e7cc4 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/ImExportPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/ImExportPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.imexport.ImExportPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "imexport", + position = 40, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "imexport.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "imexport.description" +) public class ImExportPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/PageModelsPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/PageModelsPage.java index dc0060712..5448e05e2 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/PageModelsPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/PageModelsPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.pagemodels.PageModelsPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "pagemodels", + position = 50, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "pagemodels.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "pagemodels.description" +) public class PageModelsPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/SitesPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/SitesPage.java index 6b12a5551..50c6ba778 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/SitesPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/SitesPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.sites.SitesPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "sites", + position = 60, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "sites.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "sites.description" +) public class SitesPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/SystemInformationPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/SystemInformationPage.java index 5ec7d7fe4..3255b2ab0 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/SystemInformationPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/SystemInformationPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.systeminformation.SystemInformationPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "systeminformation", + position = 70, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "systeminformation.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "systeminformation.description" +) public class SystemInformationPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/UsersGroupsRolesPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/UsersGroupsRolesPage.java index e82141f47..93739fed3 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/UsersGroupsRolesPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/UsersGroupsRolesPage.java @@ -24,6 +24,14 @@ import org.libreccm.ui.admin.usersgroupsroles.UsersGroupsRolesPanel; * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "users-groups-roles", + position = 80, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "usersGroupsRoles.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "usersGroupsRoles.description" +) public class UsersGroupsRolesPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/GroupsPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/GroupsPage.java index 2bc791dd8..1304c515f 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/GroupsPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/GroupsPage.java @@ -18,13 +18,25 @@ */ package org.libreccm.ui.admin.usersgroupsroles; +import org.libreccm.ui.admin.AdminConstants; import org.libreccm.ui.admin.AdminPage; +import org.libreccm.ui.admin.AdminPageDescriptor; +import org.libreccm.ui.admin.UsersGroupsRolesPage; import org.libreccm.ui.admin.usersgroupsroles.groups.GroupsPanel; /** * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "groups", + position = 20, + subPageOf = UsersGroupsRolesPage.class, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "usersGroupsRoles.groups.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "usersGroupsRoles.groups.description" +) public class GroupsPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/RolesPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/RolesPage.java index 40e9af0fa..73adbbad2 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/RolesPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/RolesPage.java @@ -18,13 +18,26 @@ */ package org.libreccm.ui.admin.usersgroupsroles; +import org.libreccm.ui.admin.AdminConstants; import org.libreccm.ui.admin.AdminPage; +import org.libreccm.ui.admin.AdminPageDescriptor; +import org.libreccm.ui.admin.UsersGroupsRolesPage; import org.libreccm.ui.admin.usersgroupsroles.roles.RolesPanel; /** * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "roles", + position = 30, + subPageOf = UsersGroupsRolesPage.class, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "usersGroupsRoles.roles.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "usersGroupsRoles.roles.description" +) + public class RolesPage extends AdminPage { private static final long serialVersionUID = 1L; diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersPage.java index 9c6c3d9a0..50ce3def7 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersPage.java @@ -18,13 +18,26 @@ */ package org.libreccm.ui.admin.usersgroupsroles; +import org.libreccm.ui.admin.AdminConstants; import org.libreccm.ui.admin.AdminPage; +import org.libreccm.ui.admin.AdminPageDescriptor; +import org.libreccm.ui.admin.UsersGroupsRolesPage; import org.libreccm.ui.admin.usersgroupsroles.users.UsersPanel; /** * * @author Jens Pelzetter */ +@AdminPageDescriptor( + path = "users", + position = 10, + subPageOf = UsersGroupsRolesPage.class, + labelBundle = AdminConstants.ADMIN_BUNDLE, + labelKey = "usersGroupsRoles.users.label", + descriptionBundle = AdminConstants.ADMIN_BUNDLE, + descriptionKey = "usersGroupsRoles.users.description" +) + public class UsersPage extends AdminPage { private static final long serialVersionUID = 1L;