CCM NG: Several small fixes

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5170 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2017-12-13 17:55:36 +00:00
parent 42b715036f
commit 324b30449f
12 changed files with 104 additions and 37 deletions

View File

@ -339,6 +339,8 @@ class CategoryItemPane extends BaseItemPane {
.getValueFromLocalizedString(item.getTitle(), .getValueFromLocalizedString(item.getTitle(),
item::getDisplayName); item::getDisplayName);
} else if (indexObjects.isEmpty()){
itemTitle = "None";
} else { } else {
final CcmObject indexObj = indexObjects.get(0); final CcmObject indexObj = indexObjects.get(0);
itemTitle = Objects.toString(indexObj); itemTitle = Objects.toString(indexObj);

View File

@ -26,6 +26,7 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance; import javax.enterprise.inject.Instance;
import javax.enterprise.util.AnnotationLiteral; import javax.enterprise.util.AnnotationLiteral;
import javax.inject.Inject; import javax.inject.Inject;
@ -43,6 +44,7 @@ public class AssetRenderers {
.getLogger(AssetRenderers.class); .getLogger(AssetRenderers.class);
@Inject @Inject
@Any
private Instance<AbstractAssetRenderer> renderers; private Instance<AbstractAssetRenderer> renderers;
/** /**

View File

@ -77,9 +77,11 @@ public class ImageRenderer extends BinaryAssetRenderer {
result.put("width", image.getWidth()); result.put("width", image.getWidth());
result.put("height", image.getHeight()); result.put("height", image.getHeight());
if (image.getLegalMetadata() != null) {
result.put("legalMetadata", result.put("legalMetadata",
legalMetadataRenderer.render(image.getLegalMetadata(), legalMetadataRenderer.render(image.getLegalMetadata(),
language)); language));
} }
}
} }

View File

@ -43,11 +43,11 @@ public abstract class AbstractContentItemRenderer implements Serializable {
private static final long serialVersionUID = 1290408390406469580L; private static final long serialVersionUID = 1290408390406469580L;
private final AssetRenderers assetRenderers; // private final AssetRenderers assetRenderers;
//
public AbstractContentItemRenderer(final AssetRenderers assetRenderers) { // public AbstractContentItemRenderer(final AssetRenderers assetRenderers) {
this.assetRenderers = assetRenderers; // this.assetRenderers = assetRenderers;
} // }
/** /**
* This method should be called to render a {@link ContentItem}. The method * This method should be called to render a {@link ContentItem}. The method
@ -122,6 +122,8 @@ public abstract class AbstractContentItemRenderer implements Serializable {
final Locale language, final Locale language,
final Map<String, Object> result); final Map<String, Object> result);
protected abstract AssetRenderers getAssetRenderers();
/** /**
* Renders the {@link ContentType} of an {@link ContentItem}. The generated * Renders the {@link ContentType} of an {@link ContentItem}. The generated
* map contains the following values: * map contains the following values:
@ -235,7 +237,7 @@ public abstract class AbstractContentItemRenderer implements Serializable {
result.put("uuid", attachment.getUuid()); result.put("uuid", attachment.getUuid());
result.put("sortKey", attachment.getSortKey()); result.put("sortKey", attachment.getSortKey());
final AbstractAssetRenderer renderer = assetRenderers final AbstractAssetRenderer renderer = getAssetRenderers()
.findRenderer(attachment.getAsset().getClass()); .findRenderer(attachment.getAsset().getClass());
result.put("asset", renderer.render(attachment.getAsset(), language)); result.put("asset", renderer.render(attachment.getAsset(), language));

View File

@ -40,9 +40,12 @@ public class ArticleRenderer extends AbstractContentItemRenderer {
private static final long serialVersionUID = 8355183377902033759L; private static final long serialVersionUID = 8355183377902033759L;
@Inject @Inject
public ArticleRenderer(final AssetRenderers assetRenderers) { private AssetRenderers assetRenderers;
super(assetRenderers);
} // @Inject
// public ArticleRenderer(final AssetRenderers assetRenderers) {
// super(assetRenderers);
// }
/** /**
* Render the provided {@link Article}. The following values are put into * 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. * @param result The map into which the result is placed.
*/ */
@Override @Override
public void renderItem(final ContentItem item, protected void renderItem(final ContentItem item,
final Locale language, final Locale language,
final Map<String, Object> result) { final Map<String, Object> result) {
@ -71,7 +74,11 @@ public class ArticleRenderer extends AbstractContentItemRenderer {
} }
result.put("text", article.getText().getValue(language)); result.put("text", article.getText().getValue(language));
}
@Override
public AssetRenderers getAssetRenderers() {
return assetRenderers;
} }
} }

View File

@ -21,12 +21,15 @@ package org.librecms.pagemodel.contentitems;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.librecms.contentsection.ContentItem; import org.librecms.contentsection.ContentItem;
import org.librecms.contenttypes.Article;
import org.librecms.pagemodel.assets.AssetRenderers; import org.librecms.pagemodel.assets.AssetRenderers;
import java.io.Serializable;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance; import javax.enterprise.inject.Instance;
import javax.enterprise.util.AnnotationLiteral; import javax.enterprise.util.AnnotationLiteral;
import javax.inject.Inject; import javax.inject.Inject;
@ -39,7 +42,9 @@ import javax.inject.Inject;
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@RequestScoped @RequestScoped
public class ContentItemRenderers { public class ContentItemRenderers implements Serializable {
private static final long serialVersionUID = 4038159486301146385L;
private static final Logger LOGGER = LogManager private static final Logger LOGGER = LogManager
.getLogger(ContentItemRenderers.class); .getLogger(ContentItemRenderers.class);
@ -48,6 +53,7 @@ public class ContentItemRenderers {
private AssetRenderers assetRenderers; private AssetRenderers assetRenderers;
@Inject @Inject
@Any
private Instance<AbstractContentItemRenderer> renderers; private Instance<AbstractContentItemRenderer> renderers;
/** /**
@ -98,7 +104,7 @@ public class ContentItemRenderers {
LOGGER.warn("No renderer for item type \"{}\" and mode " LOGGER.warn("No renderer for item type \"{}\" and mode "
+ "\"--DEFAULT--\". Returning default renderer.", + "\"--DEFAULT--\". Returning default renderer.",
itemType.getName()); itemType.getName());
return new AbstractContentItemRenderer(assetRenderers) { return new AbstractContentItemRenderer() {
private static final long serialVersionUID private static final long serialVersionUID
= -4679445070846896396L; = -4679445070846896396L;
@ -110,6 +116,11 @@ public class ContentItemRenderers {
//Nothing here. //Nothing here.
} }
@Override
public AssetRenderers getAssetRenderers() {
return assetRenderers;
}
}; };
} else { } else {
LOGGER.warn("No renderer for item type \"{}\" and mode " LOGGER.warn("No renderer for item type \"{}\" and mode "

View File

@ -38,9 +38,12 @@ public class EventRenderer extends AbstractContentItemRenderer {
private static final long serialVersionUID = -3517404651544429745L; private static final long serialVersionUID = -3517404651544429745L;
@Inject @Inject
public EventRenderer(final AssetRenderers assetRenderers) { private AssetRenderers assetRenderers;
super(assetRenderers);
} // @Inject
// public EventRenderer(final AssetRenderers assetRenderers) {
// super(assetRenderers);
// }
/** /**
* Render the provided {@link Event}. The following values are put into * 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)); result.put("cost", event.getCost().getValue(language));
} }
@Override
protected AssetRenderers getAssetRenderers() {
return assetRenderers;
}
} }

View File

@ -41,9 +41,12 @@ public class MultiPartArticleRenderer extends AbstractContentItemRenderer {
private static final long serialVersionUID = -4298383182795585868L; private static final long serialVersionUID = -4298383182795585868L;
@Inject @Inject
public MultiPartArticleRenderer(final AssetRenderers assetRenderers) { private AssetRenderers assetRenderers;
super(assetRenderers);
} // @Inject
// public MultiPartArticleRenderer(final AssetRenderers assetRenderers) {
// super(assetRenderers);
// }
/** /**
* Renders the provided {@link MultiPartArticle}. The following values are * Renders the provided {@link MultiPartArticle}. The following values are
@ -120,4 +123,10 @@ public class MultiPartArticleRenderer extends AbstractContentItemRenderer {
return result; return result;
} }
@Override
protected AssetRenderers getAssetRenderers() {
return assetRenderers;
}
} }

View File

@ -40,10 +40,12 @@ public class NewsRenderer extends AbstractContentItemRenderer {
private static final long serialVersionUID = -493301428054148505L; private static final long serialVersionUID = -493301428054148505L;
@Inject @Inject
public NewsRenderer(final AssetRenderers assetRenderers) { private AssetRenderers assetRenderers;
super(assetRenderers);
}
// @Inject
// public NewsRenderer(final AssetRenderers assetRenderers) {
// super(assetRenderers);
// }
/** /**
* Renders the provided {@link News} item. The following values are put into * Renders the provided {@link News} item. The following values are put into
* {@code result}: * {@code result}:
@ -75,4 +77,9 @@ public class NewsRenderer extends AbstractContentItemRenderer {
result.put("releaseDate", news.getReleaseDate()); result.put("releaseDate", news.getReleaseDate());
} }
@Override
protected AssetRenderers getAssetRenderers() {
return assetRenderers;
}
} }

View File

@ -191,7 +191,9 @@ public class PagesRouter {
uriInfo, "/", itemName, language, pageModelVersion); uriInfo, "/", itemName, language, pageModelVersion);
} }
final Site site = getSite(uriInfo); final Site site = getSite(uriInfo);
final ThemeInfo themeInfo = getTheme(site, "/", themeVersion); final ThemeInfo themeInfo = getTheme(site,
theme,
themeVersion);
return themes.process(result, themeInfo); return themes.process(result, themeInfo);
} }
@ -413,7 +415,7 @@ public class PagesRouter {
} }
final Site site = getSite(uriInfo); final Site site = getSite(uriInfo);
final ThemeInfo themeInfo = getTheme(site, page, themeVersion); final ThemeInfo themeInfo = getTheme(site, theme, themeVersion);
return themes.process(result, themeInfo); return themes.process(result, themeInfo);
} }
@ -624,9 +626,12 @@ public class PagesRouter {
final Category category = getCategory(domain, pages, pagePath); final Category category = getCategory(domain, pages, pagePath);
final Locale locale = new Locale(language); final Locale locale = new Locale(language);
if (!category.getTitle().hasValue(locale)) { // disabled. Needs to be decided if the available languages of the
throw new NotFoundException(); // 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); globalizationHelper.setSelectedLocale(locale);
@ -658,7 +663,9 @@ public class PagesRouter {
final String pageModelVersion) { final String pageModelVersion) {
final Map<String, Object> parameters = new HashMap<>(); final Map<String, Object> parameters = new HashMap<>();
final Page page = PagesRouter.this.getPage(uriInfo, pagePath, language, final Page page = getPage(uriInfo,
pagePath,
language,
parameters); parameters);
final PageModel pageModel; final PageModel pageModel;

View File

@ -43,6 +43,7 @@ import org.libreccm.security.RoleRepository;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import static com.arsdigita.ui.admin.AdminUiConstants.*; import static com.arsdigita.ui.admin.AdminUiConstants.*;
@ -113,7 +114,8 @@ class RolePermissionsTable extends Table {
final PermissionManager permissionManager = cdiUtil final PermissionManager permissionManager = cdiUtil
.findBean(PermissionManager.class); .findBean(PermissionManager.class);
final Role role = roleRepository.findById( final Role role = roleRepository.findById(
Long.parseLong(selectedRoleId.getSelectedKey(state))).get(); Long.parseLong(selectedRoleId.getSelectedKey(state)))
.get();
final Permission permission = permissionManager final Permission permission = permissionManager
.findById(Long.parseLong(key)).get(); .findById(Long.parseLong(key)).get();
if (permission.getObject() == null) { if (permission.getObject() == null) {
@ -187,7 +189,8 @@ class RolePermissionsTable extends Table {
return result; return result;
} else if (p1.getObject() != null } else if (p1.getObject() != null
&& p1.getObject().getDisplayName() != null && p1.getObject().getDisplayName() != null
&& p2.getObject() != null) { && p2.getObject() != null
&& p2.getObject().getDisplayName() != null) {
return p1.getObject().getDisplayName() return p1.getObject().getDisplayName()
.compareTo(p2.getObject().getDisplayName()); .compareTo(p2.getObject().getDisplayName());
} else { } else {

View File

@ -10,16 +10,21 @@
<title>Category page</title> <title>Category page</title>
</head> </head>
<body> <body>
<xsl:apply-templates select="indexItem" /> <xsl:apply-templates select="greetingItem" />
</body> </body>
</html> </html>
</xsl:template> </xsl:template>
<xsl:template match="indexItem"> <xsl:template match="greetingItem">
<h1> <h1>
<xsl:value-of select="./title" /> <xsl:value-of select="./title" />
</h1> </h1>
<p>
<xsl:value-of select="./description" />
</p>
<xsl:value-of disable-output-escaping="true" select="./text" />
</xsl:template> </xsl:template>