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 extends AdminPage> 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 extends AdminPage> 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 extends AdminPage> pageClass;
-
- private Integer position;
-
- private ResourceBundle labelBundle;
-
- private String labelKey;
-
- private ResourceBundle descriptionBundle;
-
- private String descriptionKey;
-
- private AdminPageDataBuilder(final Class extends AdminPage> pageClass) {
- this.pageClass = pageClass;
- }
-
- public AdminPageDataBuilder mountedTo(final String path) {
- this.path = path;
- return this;
- }
-
- public static AdminPageDataBuilder forPage(
- final Class extends AdminPage> 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 extends AdminPage> 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 extends AdminPage> 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 extends AdminPage> 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 extends WebPage> 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;