From 6effd9f73b37290cba2e54052fc2594fc3cbb4da Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 20 Feb 2021 11:22:57 +0100 Subject: [PATCH] Manage objects in category for cms admin Former-commit-id: fe6b3a8e06245e6810662a9ec9e4301bb48e29e8 --- .../contentsections/CategoriesController.java | 16 +-- .../CategorizedObjectModel.java | 20 +++ .../categorysystems/categorysystem.xhtml | 115 ++++++++++++++++++ .../org/librecms/CmsAdminMessages.properties | 13 ++ .../librecms/CmsAdminMessages_de.properties | 13 ++ .../main/scss/content-sections/_custom.scss | 4 + .../categorization/CategoryManager.java | 2 + 7 files changed, 176 insertions(+), 7 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategoriesController.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategoriesController.java index 413ed72c6..59710ef5b 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategoriesController.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategoriesController.java @@ -548,8 +548,8 @@ public class CategoriesController { } } - @POST - @Path("/{context}/categories/{categoryPath:(.+)?}/@index-element") + @GET + @Path("/{context}/categories/{categoryPath:(.+)?}/@index-element/{indexElementUuid}") @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) public String setIndexElement( @@ -592,7 +592,7 @@ public class CategoriesController { return "org/librecms/ui/contentsection/categorysystems/categorization-not-found.xhtml"; } return String.format( - "redirect:/%s/categorysystems/%s/categories/%s", + "redirect:/%s/categorysystems/%s/categories/%s#objects-sections", sectionIdentifier, context, categoryPath @@ -602,7 +602,7 @@ public class CategoriesController { } } - @POST + @GET @Path("/{context}/categories/{categoryPath:(.+)?}/@index-element/reset") @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) @@ -618,7 +618,7 @@ public class CategoriesController { final Category category = result.getResult(); categoryManager.resetIndexObject(category); return String.format( - "redirect:/%s/categorysystems/%s/categories/%s", + "redirect:/%s/categorysystems/%s/categories/%s#objects-sections", sectionIdentifier, context, categoryPath @@ -851,7 +851,7 @@ public class CategoriesController { @POST @Path( - "/{context}/categories/{categoryPath:(.+)?}/objects/{objectIdentifier}/@order") + "/{context}/categories/{categoryPath:(.+)?}/@objects/{objectIdentifier}/order") @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) public String orderObjects( @@ -898,7 +898,7 @@ public class CategoriesController { } } catch (ObjectNotAssignedToCategoryException ex) { return String.format( - "redirect:/%s/categorysystems/%s/categories/%s", + "redirect:/%s/categorysystems/%s/categories/%s#objects-sections", sectionIdentifier, context, categoryManager.getCategoryPath(category) @@ -1168,6 +1168,8 @@ public class CategoriesController { ) { final CcmObject object = categorization.getCategorizedObject(); final CategorizedObjectModel model = new CategorizedObjectModel(); + model.setObjectId(object.getObjectId()); + model.setObjectUuid(object.getUuid()); model.setDisplayName(object.getDisplayName()); model.setIndexObject(categorization.isIndexObject()); model.setObjectOrder(categorization.getObjectOrder()); diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategorizedObjectModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategorizedObjectModel.java index 280b827b9..f9c0001ab 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategorizedObjectModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/CategorizedObjectModel.java @@ -11,6 +11,10 @@ package org.librecms.ui.contentsections; */ public class CategorizedObjectModel { + private long objectId; + + private String objectUuid; + private String displayName; private String title; @@ -21,6 +25,22 @@ public class CategorizedObjectModel { private long objectOrder; + public long getObjectId() { + return objectId; + } + + public void setObjectId(final long objectId) { + this.objectId = objectId; + } + + public String getObjectUuid() { + return objectUuid; + } + + public void setObjectUuid(final String objectUuid) { + this.objectUuid = objectUuid; + } + public String getDisplayName() { return displayName; } diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/categorysystems/categorysystem.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/categorysystems/categorysystem.xhtml index e0dc4bb87..ab944ae90 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/categorysystems/categorysystem.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/categorysystems/categorysystem.xhtml @@ -437,6 +437,121 @@ + +

#{CmsAdminMessages['contentsections.categorystems.category.objects.heading']}

+ + +

+ #{CmsAdminMessages['contentsections.categorystems.category.objects.none']} +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ #{CmsAdminMessages['contentsections.categorystems.category.objects.name']} +
+ #{CmsAdminMessages['contentsections.categorystems.category.objects.title']} +
+ #{CmsAdminMessages['contentsections.categorystems.category.objects.type']} +
+ #{CmsAdminMessages['contentsections.categorystems.category.objects.index']} +
+ #{CmsAdminMessages['contentsections.categorystems.category.objects.actions']} +
+ #{object.displayName} + + #{object.title} + + #{object.type} + + + + #{CmsAdminMessages['contentsections.categorystems.category.objects.index.yes']} + + + #{CmsAdminMessages['contentsections.categorystems.category.objects.no']} + + + + +
+ + +
+
+
+ +
+ + +
+
+
+ + + + + #{CmsAdminMessages['contentsections.categorystems.category.objects.index_object.reset']} + + + + + + #{CmsAdminMessages['contentsections.categorystems.category.objects.index_object.set']} + + + +
+
+
+ diff --git a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties index 7f22c2b86..d5fc89703 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties @@ -262,3 +262,16 @@ contentsections.categorysystems.category.subcategories.add.label=Unique ID contentsections.categorysystems.category.subcategories.add.enabled.label=Enabled? contentsections.categorysystems.category.subcategories.add.visible.label=Visible? contentsections.categorysystems.category.subcategories.add.abstractCategory.label=Abstract? +contentsections.categorystems.category.objects.heading=Objects in this category +contentsections.categorystems.category.objects.name=Name +contentsections.categorystems.category.objects.title=Title +contentsections.categorystems.category.objects.type=Type +contentsections.categorystems.category.objects.index=Is Index Object? +contentsections.categorystems.category.objects.actions=Actions +contentsections.categorystems.category.objects.index.yes=Yes +contentsections.categorystems.category.objects.no=No +contentsections.categorystems.category.objects.reorder.decrease=Up +contentsections.categorystems.category.objects.reorder.increase=Down +contentsections.categorystems.category.objects.index_object.reset=Reset index object +contentsections.categorystems.category.objects.index_object.set=Use as index object +contentsections.categorystems.category.objects.none=No objects in this category diff --git a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties index 044ed9261..91035794f 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties @@ -263,3 +263,16 @@ contentsections.categorysystems.category.subcategories.add.label=Eindeutige ID contentsections.categorysystems.category.subcategories.add.enabled.label=Aktiv? contentsections.categorysystems.category.subcategories.add.visible.label=Sichtbar? contentsections.categorysystems.category.subcategories.add.abstractCategory.label=Abstrakt? +contentsections.categorystems.category.objects.heading=Objekte in dieser Kategorie +contentsections.categorystems.category.objects.name=Name +contentsections.categorystems.category.objects.title=Titel +contentsections.categorystems.category.objects.type=Typ +contentsections.categorystems.category.objects.index=Index-Objekt? +contentsections.categorystems.category.objects.actions=Aktionen +contentsections.categorystems.category.objects.index.yes=Ja +contentsections.categorystems.category.objects.no=Nein +contentsections.categorystems.category.objects.reorder.decrease=Hoch +contentsections.categorystems.category.objects.reorder.increase=Runter +contentsections.categorystems.category.objects.index_object.reset=Index Objekt zur\u00fccksetzen +contentsections.categorystems.category.objects.index_object.set=Als Index-Objekt nutzen +contentsections.categorystems.category.objects.none=Dieser Kategorie sind keine Objekte zugeordnet diff --git a/ccm-cms/src/main/scss/content-sections/_custom.scss b/ccm-cms/src/main/scss/content-sections/_custom.scss index 42596be4b..4540a9177 100644 --- a/ccm-cms/src/main/scss/content-sections/_custom.scss +++ b/ccm-cms/src/main/scss/content-sections/_custom.scss @@ -99,4 +99,8 @@ table.contentsections.categories-table { td.actions-delete-col { width: 9em; } + + td.actions-setindex-col { + width: 11em; + } } \ No newline at end of file diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryManager.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryManager.java index 8b6eddb3d..3b08cc657 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryManager.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryManager.java @@ -714,6 +714,8 @@ public class CategoryManager implements Serializable { categoryRepo.save(parentCategory); categoryRepo.save(subCategory); }); + + fixSubCategoryOrder(parentCategory); } /**