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>
<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>
<#import "./main.html.ftl" as main>
<#-- <#import "./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl" as contentitem> -->
<@main.librecms>
<div class="container">
<div class="row align-items-start justify-content-center">
<div class="col-lg-8">
<#if CmsPagesContentItemTypeModel.itemClass != "">
<#assign itemTemplate = .getOptionalTemplate("./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl")>
<#if itemTemplate.exists>
<#import "./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl" as contentitem>
<#else>
<#import "./contentitems/default.html.ftl" as contentitem>
</#if>
<@contentitem.details />
</#if>
</div>
<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>
</body>
</html>
</div>
</@main.librecms>

View File

@ -65,11 +65,13 @@
<#list CmsPagesItemListModel.getItems("newslist")>
<div class="col">
<h2>News</h2>
<ul class="list-group">
<ul class="list-group">
<#items as news>
<li class="list-group-item">
<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('dd. MMM yyyy')}</div>
</h3>
@ -80,7 +82,7 @@
</div>
</#list>
<#list CmsPagesItemListModel.getItems("eventlist")>
<div class="col">
<div class="col">
<h2>Upcoming events</h2>
<ul class="list-group">
<#items as event>

View File

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

View File

@ -92,6 +92,10 @@ public abstract class AbstractContentItemListItemModel {
this.description = description;
}
public String getLang() {
return locale.toString();
}
/**
* Returns the type of the content item. In most cases implementations
* 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()
)
);
model.setName(
globalizationHelper.getValueFromLocalizedString(
contentItem.getName()
)
);
model.setName(contentItem.getDisplayName());
model.setDisplayName(contentItem.getDisplayName());
model.setTitle(
globalizationHelper.getValueFromLocalizedString(

View File

@ -21,12 +21,13 @@ package org.librecms.pages.models;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
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.
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -93,4 +94,20 @@ public class PageUrlModel {
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("&", "?", "")
);
}
}