CMS Pages Admin

pull/10/head
Jens Pelzetter 2021-11-22 21:01:42 +01:00
parent fb4c6c6d2d
commit 6820077da3
9 changed files with 141 additions and 8 deletions

View File

@ -31,6 +31,8 @@ import java.util.Map;
public class PageTreeNodeModel { public class PageTreeNodeModel {
private String categoryName; private String categoryName;
private String categoryPath;
private List<PageTreeNodeModel> children; private List<PageTreeNodeModel> children;
@ -50,6 +52,14 @@ public class PageTreeNodeModel {
protected void setCategoryName(final String categoryName) { protected void setCategoryName(final String categoryName) {
this.categoryName = categoryName; this.categoryName = categoryName;
} }
public String getCategoryPath() {
return categoryName;
}
protected void setCategoryPath(final String categoryPath) {
this.categoryPath = categoryPath;
}
public List<PageTreeNodeModel> getChildren() { public List<PageTreeNodeModel> getChildren() {
return Collections.unmodifiableList(children); return Collections.unmodifiableList(children);

View File

@ -178,6 +178,7 @@ public class PagesController {
final Pages pages = pagesResult.get(); final Pages pages = pagesResult.get();
pagesDetailsModel.setPagesId(pages.getObjectId());
pagesDetailsModel.setCategoryDomain( pagesDetailsModel.setCategoryDomain(
pages.getCategoryDomain().getDomainKey() pages.getCategoryDomain().getDomainKey()
); );

View File

@ -18,8 +18,6 @@
*/ */
package org.librecms.ui; package org.librecms.ui;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Named; import javax.inject.Named;
@ -32,6 +30,8 @@ import javax.inject.Named;
@Named("CmsPagesDetailsModel") @Named("CmsPagesDetailsModel")
public class PagesDetailsModel { public class PagesDetailsModel {
private long pagesId;
private String site; private String site;
private String primaryUrl; private String primaryUrl;
@ -40,7 +40,14 @@ public class PagesDetailsModel {
private PageTreeNodeModel pageTreeRoot; private PageTreeNodeModel pageTreeRoot;
public long getPagesId() {
return pagesId;
}
public void setPagesId(long pagesId) {
this.pagesId = pagesId;
}
public String getSite() { public String getSite() {
return site; return site;
} }

View File

@ -26,8 +26,8 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto"> <ul class="navbar-nav mr-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link #{activePage == 'contentSections'} ? 'active' : ''}" <a class="nav-link #{activePage == 'contentSections' ? 'active' : ''}"
href="#{mvc.basePath}/list"> href="#{mvc.basePath}/contentsections">
<bootstrap:svgIcon icon="bookshelf" /> <bootstrap:svgIcon icon="bookshelf" />
<span>#{CmsAdminMessages['contentsections.list.nav.link.title']}</span> <span>#{CmsAdminMessages['contentsections.list.nav.link.title']}</span>
</a> </a>

View File

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition template="/WEB-INF/views/org/librecms/ui/cms/cms.xhtml">
<ui:param name="activePage" value="contentSections" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsections.pages.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<h1>#{CmsAdminMessages['pages.details.heading']}</h1>
<dl>
<dt>#{CmsAdminMessages['pages.details.site']}</dt>
<dd>#{CmsPagesDetailsModel.site}</dd>
<dt>#{CmsAdminMessages['pages.details.primaryUrl']}</dt>
<dd>#{CmsPagesDetailsModel.primaryUrl}</dd>
<dt>#{CmsAdminMessages['pages.details.categoryDomain']}</dt>
<dd>#{CmsPagesDetailsModel.categoryDomain}</dd>
</dl>
<ul>
<ui:include src="pages-tree-node.xhtml">
<ui:param name="basePath" value="#{mvc.basePath}/ID-#{CmsPagesDetailsModel.pagesId}" />
<ui:param name="node" value="#{CmsPagesDetailsModel.pageTreeRoot}" />
<ui:param name="root" value="#{true}" />
</ui:include>
</ul>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition>
<li>
<c:choose>
<c:when test="#{root}">
<span>/ (Root)</span>
</c:when>
<c:otherwise>
<span>#{node.categoryName}</span>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="#{node.pageAssigned}">
<button class="btn btn-secondary btn-sm"
type="button">
<bootstrap:svgIcon icon="eye" />
<span class="sr-only">#{CmsAdminMessages['pages.page.details']}</span>
</button>
<a class="btn btn-secondary btn-sm"
href="#{basePath}/#{categoryName}/@edit">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsAdminMessages['pages.page.edit']}</span>
</a>
<button class="btn btn-danger btn-sm"
type="button">
<bootstrap:svgIcon icon="x" />
<span class="sr-only">#{CmsAdminMessages['pages.page.remove']}</span>
</button>
</c:when>
<c:otherwise>
<a class="btn btn-secondary btn-sm"
href="#{basePath}/#{categoryName}/@add">
<bootstrap:svgIcon icon="plus-circle" />
<span class="sr-only">#{CmsAdminMessages['pages.page.add']}</span>
</a>
</c:otherwise>
</c:choose>
<c:if test="#{not empty node.children }">
<ul>
<c:forEach items="#{node.children}"
var="child">
<ui:include src="pages-tree-node.xhtml">
<ui:param name="basePath" value="#{basePath}/#{node.categoryName}" />
<ui:param name="node" value="#{child}" />
<ui:param name="root" value="#{false}" />
</ui:include>
</c:forEach>
</ul>
</c:if>
</li>
</ui:composition>
</html>

View File

@ -141,14 +141,13 @@
<td>#{instance.primaryUrl}</td> <td>#{instance.primaryUrl}</td>
<td class="action-col"> <td class="action-col">
<a class="btn btn-secondary" <a class="btn btn-secondary"
href="#{request.contextPath}/pages/ID-#{instance.pagesId}"> href="#{mvc.basePath}/pages/ID-#{instance.pagesId}">
<bootstrap:svgIcon icon="pen" /> <bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsAdminMessages['pages.list.table.actions.details']}</span> <span>#{CmsAdminMessages['pages.list.table.actions.details']}</span>
</a> </a>
</td> </td>
<td class="action-col"> <td class="action-col">
<libreccm:deleteDialog actionTarget="#{mvc.basePath}/pages/ID-#{instance.pagesId}/@delete" <libreccm:deleteDialog actionTarget="#{mvc.basePath}/pages/ID-#{instance.pagesId}/@delete"
buttonLabelClass="sr-only"
buttonText="#{CmsAdminMessages['pages.list.table.actions.delete']}" buttonText="#{CmsAdminMessages['pages.list.table.actions.delete']}"
cancelLabel="#{CmsAdminMessages['pages.delete_dialog.close']}" cancelLabel="#{CmsAdminMessages['pages.delete_dialog.close']}"
confirmLabel="#{CmsAdminMessages['pages.delete_dialog.confirm']}" confirmLabel="#{CmsAdminMessages['pages.delete_dialog.confirm']}"

View File

@ -950,3 +950,11 @@ pages.new_instance_dialog.primary_url.help=URL fragment of the page tree. Note:
pages.new_instance_dialog.category_domain.label=Category System pages.new_instance_dialog.category_domain.label=Category System
pages.new_instance_dialog.category_domain.help=The category system used to create the page tree. pages.new_instance_dialog.category_domain.help=The category system used to create the page tree.
pages.new_instance_dialog.submit=Create page tree pages.new_instance_dialog.submit=Create page tree
pages.details.heading=Page Tree Details
pages.details.site=Site
pages.details.primaryUrl=Primary URL
pages.details.categoryDomain=Category System
pages.page.details=Details
pages.page.edit=Edit
pages.page.remove=Remove
pages.page.add=Add

View File

@ -951,3 +951,11 @@ pages.new_instance_dialog.primary_url.help=URL-Fragment f\u00fcr die Seitenbaum.
pages.new_instance_dialog.category_domain.label=Kategoriensystem pages.new_instance_dialog.category_domain.label=Kategoriensystem
pages.new_instance_dialog.category_domain.help=Das Kategoriensystem, dass als Basis des Seitenbaums verwendet wird. pages.new_instance_dialog.category_domain.help=Das Kategoriensystem, dass als Basis des Seitenbaums verwendet wird.
pages.new_instance_dialog.submit=Seitenbaum anlegen pages.new_instance_dialog.submit=Seitenbaum anlegen
pages.details.heading=Seitenbaum Details
pages.details.site=Site
pages.details.primaryUrl=Prim\u00e4re URL
pages.details.categoryDomain=Kategoriensystem
pages.page.details=Details
pages.page.edit=Bearbeiten
pages.page.remove=Entfernen
pages.page.add=Hinzuf\u00fcgen