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 663270fcc..710e2e093 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 @@ -628,6 +628,31 @@ public class CategoriesController { } } + @POST + @Path("/{context}/categories/@subcategories") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + public String addSubcategory( + @PathParam("sectionIdentifier") final String sectionIdentifier, + @PathParam("context") final String context, + @FormParam("categoryName") final String categoryName, + @FormParam("uniqueId") final String uniqueId, + @FormParam("isEnabled") final String isEnabled, + @FormParam("isVisible") final String isVisible, + @FormParam("isAbstract") final String isAbstract + ) { + return addSubcategory( + sectionIdentifier, + context, + "/", + categoryName, + uniqueId, + isEnabled, + isVisible, + isAbstract + ); + } + @POST @Path("/{context}/categories/{categoryPath:(.+)?}/@subcategories") @AuthorizationRequired @@ -650,9 +675,10 @@ public class CategoriesController { final Category subCategory = new Category(); subCategory.setName(categoryName); subCategory.setUniqueId(uniqueId); - subCategory.setEnabled(Objects.equals("true", isEnabled)); - subCategory.setVisible(Objects.equals("true", isVisible)); - subCategory.setAbstractCategory(Objects.equals("true", isAbstract)); + subCategory.setEnabled(Objects.equals("on", isEnabled)); + subCategory.setVisible(Objects.equals("on", isVisible)); + subCategory.setAbstractCategory(Objects.equals("on", isAbstract)); + categoryRepo.save(subCategory); categoryManager.addSubCategoryToCategory(subCategory, category); return String.format( "redirect:/%s/categorysystems/%s/categories/%s", @@ -803,7 +829,7 @@ public class CategoriesController { // Nothing break; } - + return String.format( "redirect:/%s/categorysystems/%s/categories/%s", sectionIdentifier, 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 f96ebf00e..e0dc4bb87 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 @@ -184,15 +184,6 @@ - - -
#{CategorySystemModel.selectedCategory.hasUnusedTitleLocales}
- +

#{CmsAdminMessages['contentsection.categorysystems.category.subcategories.heading']}

+
+
+ +
+ +
+ + +

+ #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.none']} +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.name']} + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.enabled']} + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.visible']} + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories..abstract']} + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.actions']} +
+ + #{category.name} + + + + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.enabled.yes']} + + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.enabled.no']} + + + + + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.visible.yes']} + + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.visible.no']} + + + + + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.abstract.yes']} + + + #{CmsAdminMessages['contentsections.categorysystems.category.subcategories.abstract.no']} + + + + +
+ + +
+
+
+ +
+ + +
+
+
+ +
+
+
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties index 4f84feb2e..7f22c2b86 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties @@ -171,7 +171,7 @@ contentsecton.categorysystems.category.properties.edit.dialog.cancel=Cancel contentsecton.categorysystems.category.properties.edit.dialog.save=Save contentsecton.categorysystems.category.properties.edit.dialog.name.help=Name of the category. May only contain the letters, numbers and hypens. contentsecton.categorysystems.category.properties.edit.dialog.name.label=Name -contentsecton.categorysystems.category.properties.edit.dialog.unique_id.help=Unique ID of the new category. Should be unique for the complete category system +contentsecton.categorysystems.category.properties.edit.dialog.unique_id.help=Unique ID of the category. Should be unique for the complete category system contentsecton.categorysystems.category.properties.edit.dialog.unique_id.label=Unique ID contentsecton.categorysystems.category.properties.edit.dialog.enabled.label=Enabled contentsecton.categorysystems.category.properties.edit.dialog.visible.label=Visible? @@ -231,3 +231,34 @@ contentsection.categorysystems.category.descriptions.add.add.title=Add localized contentsection.categorysystems.category.titles.value.heading=Localized title contentsection.categorysystems.category.descriptions.value.heading=Localized description contentsection.categorysystems.category.descriptions.title=Localized Descriptions +contentsection.categorysystems.category.subcategories.heading=Subcategories +contentsections.categorysystems.category.subcategories.add=Add subcategory +contentsections.categorysystems.category.subcategories.none=No subcategories +contentsections.categorysystems.category.subcategories.name=Name +contentsections.categorysystems.category.subcategories.enabled=Enabled? +contentsections.categorysystems.category.subcategories.visible=Visible? +contentsections.categorysystems.category.subcategories..abstract=Abstract? +contentsections.categorysystems.category.subcategories.actions=Actions +contentsections.categorysystems.category.subcategories.enabled.yes=Yes +contentsections.categorysystems.category.subcategories.enabled.no=No +contentsections.categorysystems.category.subcategories.visible.yes=Yes +contentsections.categorysystems.category.subcategories.visible.no=No +contentsections.categorysystems.category.subcategories.abstract.yes=Yes +contentsections.categorysystems.category.subcategories.abstract.no=No +contentsections.categorysystems.category.subcategories.reorder.decrease=Up +contentsections.categorysystems.category.subcategories.reorder.increase=Down +contentsections.categorysystems.category.subcategories.delete=Delete +contentsections.categorysystems.category.subcategories.delete.cancel=Cancel +contentsections.categorysystems.category.subcategories.delete.confirm=Delete category +contentsections.categorysystems.category.subcategories.delete.title=Confirm category deletion +contentsections.categorysystems.category.subcategories.delete.message=Are you sure to delete category {0}? +contentsections.categorysystems.category.subcategories.add.title=Add subcategory +contentsections.categorysystems.category.subcategories.add.close=Cancel +contentsections.categorysystems.category.subcategories.add.submit=Create new subcategory +contentsections.categorysystems.category.subcategories.add.name.help=Name of the new subcategory. May only contain the letters, numbers and hypens. +contentsections.categorysystems.category.subcategories.add.name.label=Name +contentsections.categorysystems.category.subcategories.add.uniqueId.help=Unique ID of the new subcategory. Should be unique for the complete category system +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? 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 09a9301e9..044ed9261 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties @@ -232,3 +232,34 @@ contentsection.categorysystems.category.descriptions.locale.description=Lokalisi contentsection.categorysystems.category.titles.value.heading=Lokalisierter Titel contentsection.categorysystems.category.descriptions.value.heading=Lokalisierte Beschreibung contentsection.categorysystems.category.descriptions.title=Lokaliserte Beschreibungen +contentsection.categorysystems.category.subcategories.heading=Subkategorien +contentsections.categorysystems.category.subcategories.add=Subkategorie hinzuf\u00fcgen +contentsections.categorysystems.category.subcategories.none=Keine Subkategorien +contentsections.categorysystems.category.subcategories.name=Name +contentsections.categorysystems.category.subcategories.enabled=Aktiv? +contentsections.categorysystems.category.subcategories.visible=Sichtbar? +contentsections.categorysystems.category.subcategories..abstract=Abstrakt? +contentsections.categorysystems.category.subcategories.actions=Aktionen +contentsections.categorysystems.category.subcategories.enabled.yes=Ja +contentsections.categorysystems.category.subcategories.enabled.no=Nein +contentsections.categorysystems.category.subcategories.visible.yes=Ja +contentsections.categorysystems.category.subcategories.visible.no=Nein +contentsections.categorysystems.category.subcategories.abstract.yes=Ja +contentsections.categorysystems.category.subcategories.abstract.no=Nein +contentsections.categorysystems.category.subcategories.reorder.decrease=Hoch +contentsections.categorysystems.category.subcategories.reorder.increase=Runter +contentsections.categorysystems.category.subcategories.delete=L\u00f6schen +contentsections.categorysystems.category.subcategories.delete.cancel=Abbrechen +contentsections.categorysystems.category.subcategories.delete.confirm=Kategorie l\u00f6schen +contentsections.categorysystems.category.subcategories.delete.title=L\u00f6schen der Kategorie best\u00e4tigen +contentsections.categorysystems.category.subcategories.delete.message=Sind Sie sicher, dass Sie die Kategorie {0} l\u00f6schen wollen? +contentsections.categorysystems.category.subcategories.add.title=Subkategorie hinzuf\u00fcgen +contentsections.categorysystems.category.subcategories.add.close=Abbrechen +contentsections.categorysystems.category.subcategories.add.submit=Subkategorie anlegen +contentsections.categorysystems.category.subcategories.add.name.help=Name der neuen Unterkategorie. Darf nur Buchstaben, Zahlen und den Bindestrich enthalten. +contentsections.categorysystems.category.subcategories.add.name.label=Name +contentsections.categorysystems.category.subcategories.add.uniqueId.help=Eindeutige ID der neuen Subkategorie. Sollte innerhalb des gesamten Kategoriensystems eindeutig sein. +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? diff --git a/ccm-cms/src/main/scss/content-sections/_custom.scss b/ccm-cms/src/main/scss/content-sections/_custom.scss index 12780c6ac..42596be4b 100644 --- a/ccm-cms/src/main/scss/content-sections/_custom.scss +++ b/ccm-cms/src/main/scss/content-sections/_custom.scss @@ -89,4 +89,14 @@ table.contentsections-table { table.permissions-table td.permissions-col { font-size: 2em; +} + +table.contentsections.categories-table { + td.actions-order-col { + width: 1em; + } + + td.actions-delete-col { + width: 9em; + } } \ No newline at end of file