diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemPane.java index c946144fe..d4ad5b98b 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemPane.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemPane.java @@ -339,6 +339,8 @@ class CategoryItemPane extends BaseItemPane { .getValueFromLocalizedString(item.getTitle(), item::getDisplayName); + } else if (indexObjects.isEmpty()){ + itemTitle = "None"; } else { final CcmObject indexObj = indexObjects.get(0); itemTitle = Objects.toString(indexObj); diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/assets/AssetRenderers.java b/ccm-cms/src/main/java/org/librecms/pagemodel/assets/AssetRenderers.java index 75a8b5f29..2e585ddef 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/assets/AssetRenderers.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/assets/AssetRenderers.java @@ -26,6 +26,7 @@ import java.util.Locale; import java.util.Map; import javax.enterprise.context.RequestScoped; +import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.enterprise.util.AnnotationLiteral; import javax.inject.Inject; @@ -43,6 +44,7 @@ public class AssetRenderers { .getLogger(AssetRenderers.class); @Inject + @Any private Instance renderers; /** diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/assets/ImageRenderer.java b/ccm-cms/src/main/java/org/librecms/pagemodel/assets/ImageRenderer.java index 15c91f24b..c33834957 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/assets/ImageRenderer.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/assets/ImageRenderer.java @@ -77,9 +77,11 @@ public class ImageRenderer extends BinaryAssetRenderer { result.put("width", image.getWidth()); result.put("height", image.getHeight()); - result.put("legalMetadata", - legalMetadataRenderer.render(image.getLegalMetadata(), - language)); + if (image.getLegalMetadata() != null) { + result.put("legalMetadata", + legalMetadataRenderer.render(image.getLegalMetadata(), + language)); + } } } diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/AbstractContentItemRenderer.java b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/AbstractContentItemRenderer.java index 264c9071e..f176bdf09 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/AbstractContentItemRenderer.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/AbstractContentItemRenderer.java @@ -43,11 +43,11 @@ public abstract class AbstractContentItemRenderer implements Serializable { private static final long serialVersionUID = 1290408390406469580L; - private final AssetRenderers assetRenderers; - - public AbstractContentItemRenderer(final AssetRenderers assetRenderers) { - this.assetRenderers = assetRenderers; - } +// private final AssetRenderers assetRenderers; +// +// public AbstractContentItemRenderer(final AssetRenderers assetRenderers) { +// this.assetRenderers = assetRenderers; +// } /** * This method should be called to render a {@link ContentItem}. The method @@ -121,6 +121,8 @@ public abstract class AbstractContentItemRenderer implements Serializable { protected abstract void renderItem(final ContentItem item, final Locale language, final Map result); + + protected abstract AssetRenderers getAssetRenderers(); /** * Renders the {@link ContentType} of an {@link ContentItem}. The generated @@ -235,7 +237,7 @@ public abstract class AbstractContentItemRenderer implements Serializable { result.put("uuid", attachment.getUuid()); result.put("sortKey", attachment.getSortKey()); - final AbstractAssetRenderer renderer = assetRenderers + final AbstractAssetRenderer renderer = getAssetRenderers() .findRenderer(attachment.getAsset().getClass()); result.put("asset", renderer.render(attachment.getAsset(), language)); diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ArticleRenderer.java b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ArticleRenderer.java index 55642824b..0c157b110 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ArticleRenderer.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ArticleRenderer.java @@ -40,9 +40,12 @@ public class ArticleRenderer extends AbstractContentItemRenderer { private static final long serialVersionUID = 8355183377902033759L; @Inject - public ArticleRenderer(final AssetRenderers assetRenderers) { - super(assetRenderers); - } + private AssetRenderers assetRenderers; + +// @Inject +// public ArticleRenderer(final AssetRenderers assetRenderers) { +// super(assetRenderers); +// } /** * Render the provided {@link Article}. The following values are put into @@ -59,7 +62,7 @@ public class ArticleRenderer extends AbstractContentItemRenderer { * @param result The map into which the result is placed. */ @Override - public void renderItem(final ContentItem item, + protected void renderItem(final ContentItem item, final Locale language, final Map result) { @@ -71,7 +74,11 @@ public class ArticleRenderer extends AbstractContentItemRenderer { } result.put("text", article.getText().getValue(language)); - + } + + @Override + public AssetRenderers getAssetRenderers() { + return assetRenderers; } } diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ContentItemRenderers.java b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ContentItemRenderers.java index 62e66c350..05ed0c897 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ContentItemRenderers.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/ContentItemRenderers.java @@ -21,12 +21,15 @@ package org.librecms.pagemodel.contentitems; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.librecms.contentsection.ContentItem; +import org.librecms.contenttypes.Article; import org.librecms.pagemodel.assets.AssetRenderers; +import java.io.Serializable; import java.util.Locale; import java.util.Map; import javax.enterprise.context.RequestScoped; +import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.enterprise.util.AnnotationLiteral; import javax.inject.Inject; @@ -39,7 +42,9 @@ import javax.inject.Inject; * @author Jens Pelzetter */ @RequestScoped -public class ContentItemRenderers { +public class ContentItemRenderers implements Serializable { + + private static final long serialVersionUID = 4038159486301146385L; private static final Logger LOGGER = LogManager .getLogger(ContentItemRenderers.class); @@ -48,6 +53,7 @@ public class ContentItemRenderers { private AssetRenderers assetRenderers; @Inject + @Any private Instance renderers; /** @@ -98,7 +104,7 @@ public class ContentItemRenderers { LOGGER.warn("No renderer for item type \"{}\" and mode " + "\"--DEFAULT--\". Returning default renderer.", itemType.getName()); - return new AbstractContentItemRenderer(assetRenderers) { + return new AbstractContentItemRenderer() { private static final long serialVersionUID = -4679445070846896396L; @@ -110,6 +116,11 @@ public class ContentItemRenderers { //Nothing here. } + @Override + public AssetRenderers getAssetRenderers() { + return assetRenderers; + } + }; } else { LOGGER.warn("No renderer for item type \"{}\" and mode " diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/EventRenderer.java b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/EventRenderer.java index ad9f3378a..92143a9cc 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/EventRenderer.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/EventRenderer.java @@ -38,9 +38,12 @@ public class EventRenderer extends AbstractContentItemRenderer { private static final long serialVersionUID = -3517404651544429745L; @Inject - public EventRenderer(final AssetRenderers assetRenderers) { - super(assetRenderers); - } + private AssetRenderers assetRenderers; + +// @Inject +// public EventRenderer(final AssetRenderers assetRenderers) { +// super(assetRenderers); +// } /** * Render the provided {@link Event}. The following values are put into @@ -88,4 +91,11 @@ public class EventRenderer extends AbstractContentItemRenderer { result.put("cost", event.getCost().getValue(language)); } + @Override + protected AssetRenderers getAssetRenderers() { + return assetRenderers; + } + + + } diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/MultiPartArticleRenderer.java b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/MultiPartArticleRenderer.java index 2312f9533..6ba3a3a75 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/MultiPartArticleRenderer.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/MultiPartArticleRenderer.java @@ -41,9 +41,12 @@ public class MultiPartArticleRenderer extends AbstractContentItemRenderer { private static final long serialVersionUID = -4298383182795585868L; @Inject - public MultiPartArticleRenderer(final AssetRenderers assetRenderers) { - super(assetRenderers); - } + private AssetRenderers assetRenderers; + +// @Inject +// public MultiPartArticleRenderer(final AssetRenderers assetRenderers) { +// super(assetRenderers); +// } /** * Renders the provided {@link MultiPartArticle}. The following values are @@ -119,5 +122,11 @@ public class MultiPartArticleRenderer extends AbstractContentItemRenderer { return result; } + + @Override + protected AssetRenderers getAssetRenderers() { + return assetRenderers; + } + } diff --git a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/NewsRenderer.java b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/NewsRenderer.java index 6406a4c37..4d55aa222 100644 --- a/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/NewsRenderer.java +++ b/ccm-cms/src/main/java/org/librecms/pagemodel/contentitems/NewsRenderer.java @@ -40,10 +40,12 @@ public class NewsRenderer extends AbstractContentItemRenderer { private static final long serialVersionUID = -493301428054148505L; @Inject - public NewsRenderer(final AssetRenderers assetRenderers) { - super(assetRenderers); - } + private AssetRenderers assetRenderers; +// @Inject +// public NewsRenderer(final AssetRenderers assetRenderers) { +// super(assetRenderers); +// } /** * Renders the provided {@link News} item. The following values are put into * {@code result}: @@ -75,4 +77,9 @@ public class NewsRenderer extends AbstractContentItemRenderer { result.put("releaseDate", news.getReleaseDate()); } + @Override + protected AssetRenderers getAssetRenderers() { + return assetRenderers; + } + } diff --git a/ccm-cms/src/main/java/org/librecms/pages/PagesRouter.java b/ccm-cms/src/main/java/org/librecms/pages/PagesRouter.java index 675baf07e..ece61158e 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/PagesRouter.java +++ b/ccm-cms/src/main/java/org/librecms/pages/PagesRouter.java @@ -191,7 +191,9 @@ public class PagesRouter { uriInfo, "/", itemName, language, pageModelVersion); } final Site site = getSite(uriInfo); - final ThemeInfo themeInfo = getTheme(site, "/", themeVersion); + final ThemeInfo themeInfo = getTheme(site, + theme, + themeVersion); return themes.process(result, themeInfo); } @@ -413,7 +415,7 @@ public class PagesRouter { } final Site site = getSite(uriInfo); - final ThemeInfo themeInfo = getTheme(site, page, themeVersion); + final ThemeInfo themeInfo = getTheme(site, theme, themeVersion); return themes.process(result, themeInfo); } @@ -624,9 +626,12 @@ public class PagesRouter { final Category category = getCategory(domain, pages, pagePath); final Locale locale = new Locale(language); - if (!category.getTitle().hasValue(locale)) { - throw new NotFoundException(); - } + // disabled. Needs to be decided if the available languages of the + // index item or of the category are + // used to decide if a NotFoundException is thrown. +// if (!category.getTitle().hasValue(locale)) { +// throw new NotFoundException(); +// } globalizationHelper.setSelectedLocale(locale); @@ -658,8 +663,10 @@ public class PagesRouter { final String pageModelVersion) { final Map parameters = new HashMap<>(); - final Page page = PagesRouter.this.getPage(uriInfo, pagePath, language, - parameters); + final Page page = getPage(uriInfo, + pagePath, + language, + parameters); final PageModel pageModel; if ("DRAFT".equals(pageModelVersion)) { diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RolePermissionsTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RolePermissionsTable.java index 218077ab5..c36774312 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RolePermissionsTable.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RolePermissionsTable.java @@ -43,12 +43,13 @@ import org.libreccm.security.RoleRepository; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import static com.arsdigita.ui.admin.AdminUiConstants.*; /** * Table displaying all permissions granted to a role. - * + * * @author Jens Pelzetter */ class RolePermissionsTable extends Table { @@ -113,7 +114,8 @@ class RolePermissionsTable extends Table { final PermissionManager permissionManager = cdiUtil .findBean(PermissionManager.class); final Role role = roleRepository.findById( - Long.parseLong(selectedRoleId.getSelectedKey(state))).get(); + Long.parseLong(selectedRoleId.getSelectedKey(state))) + .get(); final Permission permission = permissionManager .findById(Long.parseLong(key)).get(); if (permission.getObject() == null) { @@ -187,7 +189,8 @@ class RolePermissionsTable extends Table { return result; } else if (p1.getObject() != null && p1.getObject().getDisplayName() != null - && p2.getObject() != null) { + && p2.getObject() != null + && p2.getObject().getDisplayName() != null) { return p1.getObject().getDisplayName() .compareTo(p2.getObject().getDisplayName()); } else { diff --git a/ccm-core/src/main/resources/themes/ccm/category-page.xsl b/ccm-core/src/main/resources/themes/ccm/category-page.xsl index 9cea8aa06..d0f8c6c2b 100644 --- a/ccm-core/src/main/resources/themes/ccm/category-page.xsl +++ b/ccm-core/src/main/resources/themes/ccm/category-page.xsl @@ -10,16 +10,21 @@ Category page - + - +

+

+

+ +

+