Item Display

pull/20/head
Jens Pelzetter 2022-03-03 20:50:01 +01:00
parent 591bb6b1d2
commit 7d670d725d
7 changed files with 111 additions and 37 deletions

View File

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<link href="${themeUrl}/styles/librecms.css" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Default Template</title>
</head>
<body>
<div class="container">
<p>This theme works.</p>
<dl>
<dt>application</dt>
<dd>${application}</dd>
<dt>themeUrl</dt>
<dd>${themeUrl}</dd>
<dt>view</dt>
<dd>${view!""}</dd>
</dl>
</div>
</body>
</html>

View File

@ -1,21 +1,48 @@
<!DOCTYPE html> <#import "./main.html.ftl" as main>
<html> <#-- <#import "./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl" as contentitem> -->
<head>
<link href="${themeUrl}/styles/librecms.css" rel="stylesheet" /> <@main.librecms>
<meta name="viewport" content="width=device-width, initial-scale=1"> <div class="container">
<title>Default Template</title> <div class="row align-items-start justify-content-center">
</head> <div class="col-lg-8">
<body> <#if CmsPagesContentItemTypeModel.itemClass != "">
<div class="container"> <#assign itemTemplate = .getOptionalTemplate("./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl")>
<p>This theme works.</p> <#if itemTemplate.exists>
<dl> <#import "./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl" as contentitem>
<dt>application</dt> <#else>
<dd>${application}</dd> <#import "./contentitems/default.html.ftl" as contentitem>
<dt>themeUrl</dt> </#if>
<dd>${themeUrl}</dd> <@contentitem.details />
<dt>view</dt> </#if>
<dd>${view!""}</dd> </div>
</dl> <div class="col-lg-4">
<!-- Attachments -->
<h2>Notes</h2>
<ul class="list-group mb-4">
<li class="list-group-item">
<p>
A side note with some text
</p>
<p>
Occaecat sit eu ipsum irure. Enim consectetur aute anim proident sint dolor sint ea ex eu adipisicing et. Veniam laborum mollit velit incididunt aliquip do esse officia eu ea nostrud nulla.
</p>
</li>
</ul>
<h2>More information</h2>
<p>
Consequat occaecat eu ullamco amet id tempor.
</p>
<ul class="list-group mb-4">
<li class="list-group-item">
<p>Anim ex ut reprehenderit in enim id proident duis pariatur est anim do.</p>
<a href="https://example.com">A related link</a>
</li>
<li class="list-group-item">
<p>Quis minim deserunt incididunt ea voluptate laboris fugiat elit nulla.</p>
<a href="https://example.com">Some download link</a>
</li>
</ul>
</div>
</div> </div>
</body> </div>
</html> </@main.librecms>

View File

@ -65,11 +65,13 @@
<#list CmsPagesItemListModel.getItems("newslist")> <#list CmsPagesItemListModel.getItems("newslist")>
<div class="col"> <div class="col">
<h2>News</h2> <h2>News</h2>
<ul class="list-group"> <ul class="list-group">
<#items as news> <#items as news>
<li class="list-group-item"> <li class="list-group-item">
<h3 class="d-flex w-100 justify-content-between"> <h3 class="d-flex w-100 justify-content-between">
<div>${news.title}</div> <div>
<a href="/pages${CmsPagesCategoryModel.category.path}${news.name}.${news.lang}.html${CmsPagesPageUrlModel.queryString}">${news.title}</a>
</div>
<#-- <div>${news.getReleaseDate('yyyy-MM-dd')}</div> --> <#-- <div>${news.getReleaseDate('yyyy-MM-dd')}</div> -->
<div>${news.getReleaseDate('dd. MMM yyyy')}</div> <div>${news.getReleaseDate('dd. MMM yyyy')}</div>
</h3> </h3>
@ -80,7 +82,7 @@
</div> </div>
</#list> </#list>
<#list CmsPagesItemListModel.getItems("eventlist")> <#list CmsPagesItemListModel.getItems("eventlist")>
<div class="col"> <div class="col">
<h2>Upcoming events</h2> <h2>Upcoming events</h2>
<ul class="list-group"> <ul class="list-group">
<#items as event> <#items as event>

View File

@ -245,7 +245,7 @@ public class PagesController {
final Category category = getCategory(domain, pages, "/"); final Category category = getCategory(domain, pages, "/");
final Versions versions = generateFromPreviewParam(preview); final Versions versions = generateFromPreviewParam(preview);
final String language = determineLanguage(category, versions); final String language = determineLanguage(category, versions);
initPageUrlModel(uriInfo); initPageUrlModel(uriInfo);
final String indexPage = String.format( final String indexPage = String.format(
@ -278,7 +278,7 @@ public class PagesController {
final String language = determineLanguage(category, versions); final String language = determineLanguage(category, versions);
initPageUrlModel(uriInfo); initPageUrlModel(uriInfo);
final String itemPage = String.format( final String itemPage = String.format(
"/%s.%s.html%s", "/%s.%s.html%s",
itemName, itemName,
@ -308,7 +308,7 @@ public class PagesController {
final Category category = getCategory(domain, pages, "/"); final Category category = getCategory(domain, pages, "/");
final Versions versions = generateFromPreviewParam(preview); final Versions versions = generateFromPreviewParam(preview);
final String language = determineLanguage(category, itemName, versions); final String language = determineLanguage(category, itemName, versions);
initPageUrlModel(uriInfo); initPageUrlModel(uriInfo);
final String itemPage = String.format( final String itemPage = String.format(
@ -416,7 +416,7 @@ public class PagesController {
final Category category = getCategory(domain, pages, page); final Category category = getCategory(domain, pages, page);
final Versions versions = generateFromPreviewParam(preview); final Versions versions = generateFromPreviewParam(preview);
final String language = determineLanguage(category, versions); final String language = determineLanguage(category, versions);
initPageUrlModel(uriInfo); initPageUrlModel(uriInfo);
final String redirectTo; final String redirectTo;
@ -472,7 +472,7 @@ public class PagesController {
final Category category = getCategory(domain, pages, page); final Category category = getCategory(domain, pages, page);
final Versions versions = generateFromPreviewParam(preview); final Versions versions = generateFromPreviewParam(preview);
final String language = determineLanguage(category, versions); final String language = determineLanguage(category, versions);
initPageUrlModel(uriInfo); initPageUrlModel(uriInfo);
final String redirectTo; final String redirectTo;
@ -561,9 +561,16 @@ public class PagesController {
categoryModel.init(pages.getCategoryDomain(), category, version); categoryModel.init(pages.getCategoryDomain(), category, version);
final Page page = pageManager.findPageForCategory(category); final Page page = pageManager.findPageForCategory(category);
pagePropertiesModel.setProperties(page.getProperties()); pagePropertiesModel.setProperties(page.getProperties());
return themesMvc.getMvcTemplate( if (itemName.equals("index") || itemName.isBlank()) {
uriInfo, "pages", page.getDisplayName() return themesMvc.getMvcTemplate(
); uriInfo, "pages", page.getDisplayName()
);
} else {
return themesMvc.getMvcTemplate(
uriInfo, "pages", "item-page"
);
}
} }
private void initSiteInfoModel( private void initSiteInfoModel(

View File

@ -92,6 +92,10 @@ public abstract class AbstractContentItemListItemModel {
this.description = description; this.description = description;
} }
public String getLang() {
return locale.toString();
}
/** /**
* Returns the type of the content item. In most cases implementations * Returns the type of the content item. In most cases implementations
* should return the fully qualified name of the content item class here. * should return the fully qualified name of the content item class here.

View File

@ -46,11 +46,7 @@ public abstract class AbstractContentItemListItemModelBuilder<T extends ContentI
contentItem.getDescription() contentItem.getDescription()
) )
); );
model.setName( model.setName(contentItem.getDisplayName());
globalizationHelper.getValueFromLocalizedString(
contentItem.getName()
)
);
model.setDisplayName(contentItem.getDisplayName()); model.setDisplayName(contentItem.getDisplayName());
model.setTitle( model.setTitle(
globalizationHelper.getValueFromLocalizedString( globalizationHelper.getValueFromLocalizedString(

View File

@ -21,12 +21,13 @@ package org.librecms.pages.models;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Named; import javax.inject.Named;
/** /**
* Model initalized by the Pages application containing information about the * Model initialized by the Pages application containing information about the
* URL requested. * URL requested.
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -93,4 +94,20 @@ public class PageUrlModel {
this.queryParameters = new HashMap<>(queryParameters); this.queryParameters = new HashMap<>(queryParameters);
} }
public String getQueryString() {
return queryParameters
.entrySet()
.stream()
.map(
entry -> String.format(
"%s=%s",
entry.getKey(),
entry.getValue()
)
)
.collect(
Collectors.joining("&", "?", "")
);
}
} }