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() {