diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderModel.java
index a206114da..44f4431fa 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderModel.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderModel.java
@@ -13,31 +13,63 @@ import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
/**
- *
+ * Model for the current asset folder. Provides data about the folder for the
+ * template.
+ *
* @author Jens Pelzetter
*/
@RequestScoped
@Named("AssetFolderModel")
public class AssetFolderModel {
+ /**
+ * How many objects are in the folder (subfolders and assets)?
+ */
private long count;
+ /**
+ * Index of the first result shown.
+ */
private int firstResult;
+ /**
+ * The maximum number of results on a page.
+ */
private int maxResults;
+ /**
+ * The objects (subfolders and assets) in the folder.
+ */
private List rows;
+ /**
+ * The breadcrumbs of the folder path.
+ */
private List breadcrumbs;
+ /**
+ * The path of the folder.
+ */
private String path;
+ /**
+ * Can the current user create sub folders in this folder?
+ */
private boolean canCreateSubFolders;
+ /**
+ * Can the current folder create assets in this folder?
+ */
private boolean canCreateAssets;
+ /**
+ * The permissions granted to the current user.
+ */
private List currentUserPermissions;
+ /**
+ * The privileges granted to different roles for the current folder.
+ */
private List grantedPermissions;
private List privileges;
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderRowModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderRowModel.java
index b87481308..2fe5e70cd 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderRowModel.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderRowModel.java
@@ -5,26 +5,58 @@
*/
package org.librecms.ui.contentsections;
+import org.libreccm.l10n.GlobalizationHelper;
+
/**
+ * A object in an assets folder, either a subfolder or an asset.
*
* @author Jens Pelzetter
*/
public class AssetFolderRowModel {
+ /**
+ * Is the object deletable?
+ */
private boolean deletable;
+ /**
+ * Is the object a folder?
+ */
private boolean folder;
+ /**
+ * If the object is a folder: The path of the folder, otherwise
+ * {@code null}.
+ */
private String folderPath;
+ /**
+ * The name of the object.
+ */
private String name;
+ /**
+ * The object is a not a CMS object, but some other object put into the
+ * category backing the folder.
+ */
private boolean noneCmsObject;
+ /**
+ * The localized title of the folder. If available this title is provided in
+ * the negotiated language (see
+ * {@link GlobalizationHelper#getNegotiatedLocale()}. If this is not
+ * possible, default value for the default language is used.s
+ */
private String title;
+ /**
+ * The type of the object.
+ */
private String type;
+ /**
+ * The permissions granted to the current user for the object.
+ */
private AssetPermissionsModel permissions;
public boolean isDeletable() {
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTree.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTree.java
index 82ed66de5..5f2b8625b 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTree.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTree.java
@@ -12,6 +12,7 @@ import javax.enterprise.context.Dependent;
import javax.inject.Inject;
/**
+ * A model bean for the tree of asset folder of a content section.
*
* @author Jens Pelzetter
*/
@@ -19,9 +20,14 @@ import javax.inject.Inject;
public class AssetFolderTree
extends AbstractFolderTree {
+ /**
+ * {@link AssetPermissionsModelProvider} used to create the
+ * {@link AssetPermissionsModel} for the folder and the currentu user.
+ */
@Inject
private AssetPermissionsModelProvider assetPermissions;
+
@Override
public AssetFolderTreeNode newFolderTreeNode() {
return new AssetFolderTreeNode();
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTreeNode.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTreeNode.java
index 3ccbcd059..10dc1a06e 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTreeNode.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetFolderTreeNode.java
@@ -6,7 +6,8 @@
package org.librecms.ui.contentsections;
/**
- *
+ * A node of the {@link AssetFolderTree}.
+ *
* @author Jens Pelzetter
*/
public class AssetFolderTreeNode
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsChecker.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsChecker.java
index 19d861c8d..9c02fcf95 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsChecker.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsChecker.java
@@ -15,99 +15,264 @@ import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
/**
+ * A permissions checker for assets. Checks the permissions of the current user
+ * for an {@link Asset}.
*
* @author Jens Pelzetter
*/
@RequestScoped
public class AssetPermissionsChecker {
+ /**
+ * The {@link PermissionChecker} instance to use.
+ */
@Inject
private PermissionChecker permissionChecker;
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#CREATE_NEW}
+ * for the provided {@link Asset}.
+ *
+ * @param asset The asset to use.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#CREATE_NEW} privilege for the provided
+ * {@link Asset} to the current user, {@code false} otherwise.
+ */
public boolean canCreateAssets(final Asset asset) {
return permissionChecker.isPermitted(
AssetPrivileges.CREATE_NEW, asset
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#CREATE_NEW}
+ * for the provided {@link ContentSection}.
+ *
+ * @param section The content section.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#CREATE_NEW} privilege for the provided
+ * {@link ContentSection} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canCreateAssets(final ContentSection section) {
return permissionChecker.isPermitted(
AssetPrivileges.CREATE_NEW, section.getRootAssetsFolder()
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#CREATE_NEW}
+ * for the provided {@link Folder}.
+ *
+ * @param folder The folder.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#CREATE_NEW} privilege for the provided
+ * {@link Folder} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canCreateAssets(final Folder folder) {
return permissionChecker.isPermitted(
AssetPrivileges.CREATE_NEW, folder
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#DELETE}
+ * for the provided {@link Asset}.
+ *
+ * @param asset The asset to use.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#DELETE} privilege for the provided
+ * {@link Asset} to the current user, {@code false} otherwise.
+ */
public boolean canDeleteAssets(final Asset asset) {
return permissionChecker.isPermitted(
AssetPrivileges.DELETE, asset
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#DELETE}
+ * for the provided {@link ContentSection}.
+ *
+ * @param section The content section.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#DELETE} privilege for the provided
+ * {@link ContentSection} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canDeleteAssets(final ContentSection section) {
return permissionChecker.isPermitted(
AssetPrivileges.DELETE, section.getRootAssetsFolder()
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#DELETE}
+ * for the provided {@link Folder}.
+ *
+ * @param folder The folder.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#DELETE} privilege for the provided
+ * {@link Folder} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canDeleteAssets(final Folder folder) {
return permissionChecker.isPermitted(
AssetPrivileges.DELETE, folder
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#USE}
+ * for the provided {@link Asset}.
+ *
+ * @param asset The asset to use.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#USE} privilege for the provided
+ * {@link Asset} to the current user, {@code false} otherwise.
+ */
public boolean canUseAssets(final Asset asset) {
return permissionChecker.isPermitted(
AssetPrivileges.USE, asset
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#USE}
+ * for the provided {@link ContentSection}.
+ *
+ * @param section The content section.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#USE} privilege for the provided
+ * {@link ContentSection} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canUseAssets(final ContentSection section) {
return permissionChecker.isPermitted(
AssetPrivileges.USE, section.getRootAssetsFolder()
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#USE}
+ * for the provided {@link Folder}.
+ *
+ * @param folder The folder.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#USE} privilege for the provided
+ * {@link Folder} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canUseAssets(final Folder folder) {
return permissionChecker.isPermitted(
AssetPrivileges.USE, folder
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#EDIT}
+ * for the provided {@link Asset}.
+ *
+ * @param asset The asset to use.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#EDIT} privilege for the provided
+ * {@link Asset} to the current user, {@code false} otherwise.
+ */
public boolean canEditAssets(final Asset asset) {
return permissionChecker.isPermitted(
AssetPrivileges.EDIT, asset
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#EDIT}
+ * for the provided {@link ContentSection}.
+ *
+ * @param section The content section.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#EDIT} privilege for the provided
+ * {@link ContentSection} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canEditAssets(final ContentSection section) {
return permissionChecker.isPermitted(
AssetPrivileges.EDIT, section.getRootAssetsFolder()
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#EDIT}
+ * for the provided {@link Folder}.
+ *
+ * @param folder The folder.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#EDIT} privilege for the provided
+ * {@link Folder} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canEditAssets(final Folder folder) {
return permissionChecker.isPermitted(
AssetPrivileges.EDIT, folder
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#VIEW}
+ * for the provided {@link Asset}.
+ *
+ * @param asset The asset to use.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#VIEW} privilege for the provided
+ * {@link Asset} to the current user, {@code false} otherwise.
+ */
public boolean canViewAssets(final Asset asset) {
return permissionChecker.isPermitted(
AssetPrivileges.VIEW, asset
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#VIEW}
+ * for the provided {@link ContentSection}.
+ *
+ * @param section The content section.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#VIEW} privilege for the provided
+ * {@link ContentSection} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canViewAssets(final ContentSection section) {
return permissionChecker.isPermitted(
AssetPrivileges.VIEW, section.getRootAssetsFolder()
);
}
+ /**
+ * Checks for a permission granting the {@link AssetPrivileges#VIEW}
+ * for the provided {@link Folder}.
+ *
+ * @param folder The folder.
+ *
+ * @return {@code true} if there is permission granting the
+ * {@link AssetPrivileges#VIEW} privilege for the provided
+ * {@link Folder} to the current user, {@code false}
+ * otherwise.
+ */
public boolean canViewAssets(final Folder folder) {
return permissionChecker.isPermitted(
AssetPrivileges.VIEW, folder
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModel.java
index 5cb33fcef..da33426fe 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModel.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModel.java
@@ -5,20 +5,40 @@
*/
package org.librecms.ui.contentsections;
+import org.librecms.contentsection.privileges.AssetPrivileges;
+
/**
+ * Model describing the permissions granted to the current user for an
+ * {@link Asset} or an assets {@link Folder}.
*
* @author Jens Pelzetter
*/
public class AssetPermissionsModel implements PermissionsModel {
+ /**
+ * Has the user been granted the {@link AssetPrivileges#CREATE_NEW}
+ * privilege?
+ */
private boolean grantedCreateNew;
+ /**
+ * Has the user been granted the {@link AssetPrivileges#DELETE} privilege?
+ */
private boolean grantedDelete;
+ /**
+ * Has the user been granted the {@link AssetPrivileges#USE} privilege?
+ */
private boolean grantedUse;
+ /**
+ * Has the user been granted the {@link AssetPrivileges#EDIT} privilege?
+ */
private boolean grantedEdit;
+ /**
+ * Has the user been granted the {@link AssetPrivileges#VIEW} privilege?
+ */
private boolean grantedView;
public boolean isGrantedCreateNew() {
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModelProvider.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModelProvider.java
index 52e9ed1bc..b18a48254 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModelProvider.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/AssetPermissionsModelProvider.java
@@ -12,15 +12,29 @@ import javax.enterprise.context.Dependent;
import javax.inject.Inject;
/**
+ * A utility CDI bean for building the {@link AssetPermissionsModel} for a asset
+ * {@link Folder} or an {@link Asset}.
*
* @author Jens Pelzetter
*/
@Dependent
class AssetPermissionsModelProvider {
+ /**
+ * The {@link AssetPermissionsChecker} instance to use.
+ */
@Inject
private AssetPermissionsChecker permissionChecker;
+ /**
+ * Builds an {@link AssetPermissionsModel} for the provided assets
+ * {@link Folder}
+ *
+ * @param folder The {@link Folder} for which the
+ * {@link AssetPermissionsModel} is build.
+ *
+ * @return The {@link AssetFolderModel} for the {@link Folder}.
+ */
public AssetPermissionsModel buildAssetPermissionsModel(
final Folder folder
) {
@@ -44,6 +58,15 @@ class AssetPermissionsModelProvider {
return model;
}
+ /**
+ * Builds an {@link AssetPermissionsModel} for the provided assets
+ * {@link Asset}
+ *
+ * @param folder The {@link Asset} for which the
+ * {@link AssetPermissionsModel} is build.
+ *
+ * @return The {@link AssetFolderModel} for the {@link Asset}.
+ */
public AssetPermissionsModel buildAssetPermissionsModel(
final Asset asset
) {
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 10c12d074..cac5952cc 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
@@ -43,6 +43,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
/**
+ * Controller for managing category systems assigned to a content section and
+ * their categories.
*
* @author Jens Pelzetter
*/
@@ -51,33 +53,70 @@ import javax.ws.rs.PathParam;
@Path("/{sectionIdentifier}/categorysystems")
public class CategoriesController {
+ /**
+ * The {@link CategoryManager} to use.
+ */
@Inject
private CategoryManager categoryManager;
+ /**
+ * The {@link CategoryRepository} to use.
+ */
@Inject
private CategoryRepository categoryRepo;
+ /**
+ * The {@link CategorySystemModel} which stores the data of the selected
+ * category system for the view.
+ */
@Inject
private CategorySystemModel categorySystemModel;
+ /**
+ * The {@link ContentSectionModel} which stores the data of the current
+ * content section for the view.
+ */
@Inject
private ContentSectionModel sectionModel;
+ /**
+ * The {@link ContentSectionRepository} to use.
+ */
@Inject
private ContentSectionRepository sectionRepo;
+ /**
+ * The {@link GlobalizationHelper} to use.
+ */
@Inject
private GlobalizationHelper globalizationHelper;
+ /**
+ * The {@link IdentifierParser} to use.
+ */
@Inject
private IdentifierParser identifierParser;
+ /**
+ * The {@link Models} instance to use to provide data for the view.
+ */
@Inject
private Models models;
+ /**
+ * The {@link PermissionChecker} to use.
+ */
@Inject
private PermissionChecker permissionChecker;
+ /**
+ * Lists all category systems ({@link Domain}s) assigned to the current
+ * {@link ContentSection}.
+ *
+ * @param sectionIdentifier The identifier of the current content section.
+ *
+ * @return The template to use for generating the view.
+ */
@GET
@Path("/")
@AuthorizationRequired
@@ -105,6 +144,15 @@ public class CategoriesController {
return "org/librecms/ui/contentsection/categorysystems/categorysystems.xhtml";
}
+ /**
+ * Show the root category of a category system.
+ *
+ * @param sectionIdentifier The identifier of the curent content section.
+ * @param context The mapping context of the assigned category
+ * system.
+ *
+ * @return The template to use for generating the view.
+ */
@GET
@Path("/{context}")
@AuthorizationRequired
@@ -120,6 +168,15 @@ public class CategoriesController {
);
}
+ /**
+ * Show the root category of a category system.
+ *
+ * @param sectionIdentifier The identifier of the curent content section.
+ * @param context The mapping context of the assigned category
+ * system.
+ *
+ * @return The template to use for generating the view.
+ */
@GET
@Path("/{context}/categories")
@AuthorizationRequired
@@ -131,6 +188,16 @@ public class CategoriesController {
return showCategorySystem(sectionIdentifier, context, "");
}
+ /**
+ * Show a category of a category system.
+ *
+ * @param sectionIdentifier The identifier of the curent content section.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the category to show.
+ *
+ * @return The template to use for generating the view.
+ */
@GET
@Path("/{context}/categories/{categoryPath:(.+)?}")
@AuthorizationRequired
@@ -205,6 +272,18 @@ public class CategoriesController {
return "org/librecms/ui/contentsection/categorysystems/categorysystem.xhtml";
}
+ /**
+ * Add a localized value to the title of the root category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/@title/add")
@AuthorizationRequired
@@ -218,6 +297,19 @@ public class CategoriesController {
return addTitle(sectionIdentifier, context, "", localeParam, value);
}
+ /**
+ * Add a localized value to the title of the category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPathParam The path of the category.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@title/add")
@AuthorizationRequired
@@ -255,6 +347,18 @@ public class CategoriesController {
}
}
+ /**
+ * Update a localized value of the title of the root category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/@title/edit/{locale}")
@AuthorizationRequired
@@ -270,6 +374,19 @@ public class CategoriesController {
);
}
+ /**
+ * Edit the localized value to the title of a category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPathParam The path of the category.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@title/edit/{locale}")
@AuthorizationRequired
@@ -307,6 +424,18 @@ public class CategoriesController {
}
}
+ /**
+ * Remove a localized value from the title of the root category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/@title/remove/{locale}")
@AuthorizationRequired
@@ -320,6 +449,19 @@ public class CategoriesController {
return removeTitle(sectionIdentifier, context, "", localeParam, value);
}
+ /**
+ * Remove a localized value from the title of the category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPathParam The path of the current category.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@title/remove/{locale}")
@AuthorizationRequired
@@ -356,6 +498,18 @@ public class CategoriesController {
}
}
+ /**
+ * Add a localized value to the description of the root category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/@description/add")
@AuthorizationRequired
@@ -371,6 +525,19 @@ public class CategoriesController {
);
}
+ /**
+ * Add a localized value to the description of a category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPathParam The path of the category.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@description/add")
@AuthorizationRequired
@@ -408,6 +575,18 @@ public class CategoriesController {
}
}
+ /**
+ * Update a localized value of the description of the root category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/@description/edit/{locale}")
@AuthorizationRequired
@@ -423,6 +602,19 @@ public class CategoriesController {
);
}
+ /**
+ * Edit the localized value to the description of a category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPathParam The path of the category.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path(
"/{context}/categories/{categoryPath:(.+)?}/@description/edit/{locale}"
@@ -462,6 +654,18 @@ public class CategoriesController {
}
}
+ /**
+ * Remove a localized value from the description of the root category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path("/{context}/categories/@description/remove/{locale}")
@AuthorizationRequired
@@ -477,6 +681,19 @@ public class CategoriesController {
);
}
+ /**
+ * Remove a localized value from the description of the category.
+ *
+ * @param sectionIdentifier The identifier of the current content section .
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPathParam The path of the current category.
+ * @param localeParam The locale of the new value.
+ * @param value The new value.
+ *
+ * @return A redirect to the categories page or the template for generating
+ * an error message view.
+ */
@POST
@Path(
"/{context}/categories/{categoryPath:(.+)?}/@description/remove/{locale}"
@@ -515,6 +732,23 @@ public class CategoriesController {
}
}
+ /**
+ * Update some properties of a category.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the current category.
+ * @param categoryName The new name of the category.
+ * @param uniqueId The unique ID of the category.
+ * @param isEnabled Is the category enabled?
+ * @param isVisible Is the category visible?
+ * @param isAbstract Is the category an abstract category?
+ *
+ * @return A redirect to the category detail page or a view for generating
+ * an error message.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@properties")
@AuthorizationRequired
@@ -553,6 +787,19 @@ public class CategoriesController {
}
}
+ /**
+ * Sets the index element of a category.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the current category.
+ * @param indexElementUuid The UUID of the new index element.
+ *
+ * @return A redirect to the category page or the template for generating an
+ * error view.
+ */
@GET
@Path(
"/{context}/categories/{categoryPath:(.+)?}/@index-element/{indexElementUuid}")
@@ -608,6 +855,18 @@ public class CategoriesController {
}
}
+ /**
+ * Rests (removes) the index element of a category.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the current category.
+ *
+ * @return A redirect to the category page or the template for generating an
+ * error view.
+ */
@GET
@Path("/{context}/categories/{categoryPath:(.+)?}/@index-element/reset")
@AuthorizationRequired
@@ -634,6 +893,21 @@ public class CategoriesController {
}
}
+ /**
+ * Adds a new subcategory to the root assets folder of a content section.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryName The name of the new category.
+ * @param uniqueId The unique ID of the new category.
+ * @param isEnabled Is the new category enabled.
+ * @param isVisible Is the new category visible?
+ * @param isAbstract Is the new category an abstract category?
+ *
+ * @return A redirect to the details page of the new category.
+ */
@POST
@Path("/{context}/categories/@subcategories")
@AuthorizationRequired
@@ -659,6 +933,22 @@ public class CategoriesController {
);
}
+ /**
+ * Adds a new subcategory to an assets folder of a content section.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the parent category.
+ * @param categoryName The name of the new category.
+ * @param uniqueId The unique ID of the new category.
+ * @param isEnabled Is the new category enabled.
+ * @param isVisible Is the new category visible?
+ * @param isAbstract Is the new category an abstract category?
+ *
+ * @return A redirect to the details page of the new category.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@subcategories")
@AuthorizationRequired
@@ -697,6 +987,17 @@ public class CategoriesController {
}
}
+ /**
+ * Deletes a category.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the category to delete.
+ *
+ * @return A redirect to the detail page of the parent category.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@delete")
@AuthorizationRequired
@@ -734,6 +1035,19 @@ public class CategoriesController {
}
}
+ /**
+ * Moves a category to another super category.
+ *
+ ** @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the category to move.
+ * @param targetIdentifierParam The identifier of the new parent category.
+ *
+ * @return A redirect to the details page of the super category, or the
+ * template for showing a error view.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@move")
@AuthorizationRequired
@@ -794,6 +1108,19 @@ public class CategoriesController {
}
}
+ /**
+ * Reorders subcategories.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the category to move.
+ * @param direction The direction of the move.
+ *
+ * @return A redirect to the details page of the parent category or the
+ * template for building an error message.
+ */
@POST
@Path("/{context}/categories/{categoryPath:(.+)?}/@order")
@AuthorizationRequired
@@ -855,6 +1182,20 @@ public class CategoriesController {
}
}
+ /**
+ * Reorders subcategories.
+ *
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the category .
+ * @param objectIdentifier The identifier of the object to move.
+ * @param direction The direction of the move.
+ *
+ * @return A redirect to the details page of the parent category or the
+ * template for building an error message.
+ */
@POST
@Path(
"/{context}/categories/{categoryPath:(.+)?}/@objects/{objectIdentifier}/order")
@@ -923,6 +1264,13 @@ public class CategoriesController {
}
}
+ /**
+ * Helper method for retrieving the current {@link ContentSection},
+ *
+ * @param sectionIdentifier The identifier of the section.
+ *
+ * @return A {@link Optional} with the requested {@link ContentSection}.
+ */
private Optional retrieveContentSection(
final String sectionIdentifier
) {
@@ -950,6 +1298,15 @@ public class CategoriesController {
return sectionResult;
}
+ /**
+ * @param sectionIdentifier The identifier of the current
+ * {@link ContentSection}.
+ * @param context The mapping context of the assigned category
+ * system.
+ * @param categoryPath The path of the category .
+ *
+ * @return A {@link RetrieveResult}.
+ */
private RetrieveResult retrieveCategory(
final String sectionIdentifier,
final String context,
@@ -1059,6 +1416,14 @@ public class CategoriesController {
return model;
}
+ /**
+ * Helper method for building the {@link CategoryModel} for the
+ * {@link Category}.
+ *
+ * @param category
+ *
+ * @return A {@link CategoryModel} for the provided category.
+ */
private CategoryModel buildCategoryModel(final Category category) {
final CategoryModel model = new CategoryModel();
model.setAbstractCategory(category.isAbstractCategory());
@@ -1153,6 +1518,13 @@ public class CategoriesController {
return model;
}
+ /**
+ * Build a {@link CategoryModel} fro a subcategory.
+ *
+ * @param category The subcategory to use.
+ *
+ * @return A {@link CategoryModel} for the provided {@link Category}.
+ */
private CategoryModel buildSubCategoriesModel(final Category category) {
final CategoryModel model = new CategoryModel();
model.setAbstractCategory(category.isAbstractCategory());
@@ -1177,6 +1549,15 @@ public class CategoriesController {
return model;
}
+ /**
+ * Build a {@link CategorizedObjectModel} for an object in a {@link Folder}.
+ *
+ * @param categorization The {@link Categorization} instance of the object
+ * and the folder.
+ *
+ * @return A {@link CategorizedObjectModel} for the provided
+ * {@link Categorization}.
+ */
private CategorizedObjectModel buildCategorizedObjectModel(
final Categorization categorization
) {
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 f9c0001ab..22de7d6f6 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
@@ -5,24 +5,50 @@
*/
package org.librecms.ui.contentsections;
+import org.libreccm.l10n.GlobalizationHelper;
+
/**
+ * Model bean for transferring the data about an object in a folder to the
+ * frontend.
*
* @author Jens Pelzetter
*/
public class CategorizedObjectModel {
+ /**
+ * The ID of the object.
+ */
private long objectId;
+ /**
+ * The UUID of the object.
+ */
private String objectUuid;
+ /**
+ * The display name of the object.
+ */
private String displayName;
+ /**
+ * The title of the object. If available the title is in the {@link GlobalizationHelper#getNegotiatedLocale()
+ * } is used. Otherwise the default language is used.
+ */
private String title;
+ /**
+ * The type of the object.
+ */
private String type;
+ /**
+ * Is the object the index object of the folder?
+ */
private boolean indexObject;
+ /**
+ * The order index for the object.
+ */
private long objectOrder;
public long getObjectId() {