Some bugfixes
parent
6f2f0684b5
commit
f9606862f2
|
|
@ -18,9 +18,9 @@
|
|||
*/
|
||||
package org.librecms.ui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Named;
|
||||
|
|
@ -39,7 +39,7 @@ public class PageDetailsModel {
|
|||
|
||||
private String category;
|
||||
|
||||
private Map<String, String> pageProperties;
|
||||
private List<PagePropertyModel> pageProperties;
|
||||
|
||||
public String getSite() {
|
||||
return site;
|
||||
|
|
@ -65,12 +65,12 @@ public class PageDetailsModel {
|
|||
this.category = category;
|
||||
}
|
||||
|
||||
public Map<String, String> getPageProperties() {
|
||||
return Collections.unmodifiableMap(pageProperties);
|
||||
public List<PagePropertyModel> getPageProperties() {
|
||||
return Collections.unmodifiableList(pageProperties);
|
||||
}
|
||||
|
||||
protected void setPageProperties(final Map<String, String> pageProperties) {
|
||||
this.pageProperties = new HashMap<>(pageProperties);
|
||||
protected void setPageProperties(final List<PagePropertyModel> pageProperties) {
|
||||
this.pageProperties = new ArrayList<>(pageProperties);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright (C) 2021 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.librecms.ui;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class PagePropertyModel implements Comparable<PagePropertyModel> {
|
||||
|
||||
private String name;
|
||||
|
||||
private String value;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(final String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(final PagePropertyModel other) {
|
||||
return Comparator
|
||||
.comparing(PagePropertyModel::getName, String::compareTo)
|
||||
.thenComparing(PagePropertyModel::getValue, String::compareTo)
|
||||
.compare(this, other);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -37,6 +37,7 @@ import org.librecms.pages.PagesManager;
|
|||
import org.librecms.pages.PagesRepository;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -273,7 +274,7 @@ public class PagesController {
|
|||
pageManager.createPageForCategory(category);
|
||||
|
||||
return String.format(
|
||||
"redirect:/pages/%s/%s",
|
||||
"redirect:/pages/%s/%s/@details",
|
||||
pagesInstance,
|
||||
categoryParam
|
||||
);
|
||||
|
|
@ -315,10 +316,18 @@ public class PagesController {
|
|||
pageDetailsModel.setCategoryDomain(
|
||||
pages.getCategoryDomain().getDomainKey()
|
||||
);
|
||||
pageDetailsModel.setPageProperties(page.getProperties());
|
||||
pageDetailsModel.setPageProperties(
|
||||
page
|
||||
.getProperties()
|
||||
.entrySet()
|
||||
.stream()
|
||||
.map(this::buildPagePropertyModel)
|
||||
.sorted()
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
pageDetailsModel.setSite(pages.getSite().getDomainOfSite());
|
||||
|
||||
return "org/librecms/ui/cms/pages-detail.xhtml";
|
||||
return "org/librecms/ui/cms/page-details.xhtml";
|
||||
}
|
||||
|
||||
@POST
|
||||
|
|
@ -406,7 +415,7 @@ public class PagesController {
|
|||
pageRepo.save(page);
|
||||
|
||||
return String.format(
|
||||
"redirect:/pages/%s/%s",
|
||||
"redirect:/pages/%s/%s/@details",
|
||||
pagesInstance,
|
||||
categoryParam
|
||||
);
|
||||
|
|
@ -473,13 +482,12 @@ public class PagesController {
|
|||
pageRepo.save(page);
|
||||
|
||||
return String.format(
|
||||
"redirect:/pages/%s/%s",
|
||||
"redirect:/pages/%s/%s/@details",
|
||||
pagesInstance,
|
||||
categoryParam
|
||||
);
|
||||
}
|
||||
|
||||
//ToDo: Remove page property
|
||||
private Optional<Pages> findPages(final String identifierParam) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
identifierParam
|
||||
|
|
@ -533,4 +541,14 @@ public class PagesController {
|
|||
return node;
|
||||
}
|
||||
|
||||
private PagePropertyModel buildPagePropertyModel(
|
||||
Map.Entry<String, String> property
|
||||
) {
|
||||
final PagePropertyModel model = new PagePropertyModel();
|
||||
model.setName(property.getKey());
|
||||
model.setValue(property.getValue());
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
<!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">
|
||||
<a href="#{mvc.basePath}/pages">
|
||||
#{CmsAdminMessages['contentsections.pages.label']}
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#{mvc.basePath}/pages/ID-#{CmsPagesDetailsModel.pagesId}">
|
||||
#{CmsAdminMessages.getMessage('pages.details.breadcrumbs', [CmsPagesDetailsModel.site])}
|
||||
Details Page Tree for Site #{CmsPagesDetailsModel.site}
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active">
|
||||
#{CmsAdminMessages.getMessage('pages.page.details.breadcrumbs', CmsPageDetailsModel.category)}
|
||||
</li>
|
||||
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="main">
|
||||
<div class="container">
|
||||
<h1>#{CmsAdminMessages.getMessage('pages.page.details.heading', [CmsPageDetailsModel.category, CmsPagesDetailsModel.site])}</h1>
|
||||
|
||||
<h2>#{CmsAdminMessages['pages.page.details.properties.heading']}</h2>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>#{CmsAdminMessages['pages.page.details.properties.name.header']}</th>
|
||||
<th>#{CmsAdminMessages['pages.page.details.properties.value.header']}</th>
|
||||
<th>#{CmsAdminMessages['pages.page.details.properties.actions.header']}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="#{CmsPageDetailsModel.pageProperties}"
|
||||
var="property">
|
||||
<tr>
|
||||
<td>#{property.name}</td>
|
||||
<td>#{property.value}</td>
|
||||
<td>
|
||||
<button class="btn btn-secondary"
|
||||
type="button">
|
||||
<bootstrap:svgIcon icon="pen" />
|
||||
<span class="sr-only">#{CmsAdminMessages['pages.page.details.properties.edit.label']}</span>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
type="button">
|
||||
<bootstrap:svgIcon icon="x-circle" />
|
||||
<span class="sr-only">#{CmsAdminMessages['pages.page.details.properties.remove.label']}</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
|
@ -9,7 +9,9 @@
|
|||
<ui:param name="activePage" value="contentSections" />
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
#{CmsAdminMessages['contentsections.pages.label']}
|
||||
<a href="#{mvc.basePath}/pages">
|
||||
#{CmsAdminMessages['contentsections.pages.label']}
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active">
|
||||
Details Page Tree for Site #{CmsPagesDetailsModel.site}
|
||||
|
|
@ -93,7 +95,7 @@
|
|||
|
||||
<ul>
|
||||
<ui:include src="pages-tree-node.xhtml">
|
||||
<ui:param name="basePath" value="#{mvc.basePath}/ID-#{CmsPagesDetailsModel.pagesId}" />
|
||||
<ui:param name="basePath" value="#{mvc.basePath}/pages/ID-#{CmsPagesDetailsModel.pagesId}" />
|
||||
<ui:param name="node" value="#{CmsPagesDetailsModel.pageTreeRoot}" />
|
||||
<ui:param name="root" value="#{true}" />
|
||||
</ui:include>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
</c:when>
|
||||
<c:otherwise>
|
||||
<a class="btn btn-secondary btn-sm"
|
||||
href="#{basePath}/#{categoryName}/@add">
|
||||
href="#{basePath}/#{categoryName}@add">
|
||||
<bootstrap:svgIcon icon="plus-circle" />
|
||||
<span class="sr-only">#{CmsAdminMessages['pages.page.add']}</span>
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -961,3 +961,11 @@ pages.page.add=Add
|
|||
pages.details.edit.dialog.title=Edit details of Page Tree for Site {0}
|
||||
pages.details.edit.dialog.close=Cancel
|
||||
pages.details.edit.dialog.submit=Save
|
||||
pages.details.breadcrumbs=Details Page Tree for Site {0}
|
||||
pages.page.details.heading=Details page #{0} of Site {1}
|
||||
pages.page.details.properties.heading=Properties
|
||||
pages.page.details.properties.edit.label=Edit property
|
||||
pages.page.details.properties.remove.label=Remove property
|
||||
pages.page.details.properties.actions.header=Actions
|
||||
pages.page.details.properties.value.header=Value
|
||||
pages.page.details.properties.name.header=Name
|
||||
|
|
|
|||
|
|
@ -962,3 +962,11 @@ pages.page.add=Hinzuf\u00fcgen
|
|||
pages.details.edit.dialog.title=Details des Seitenbaumes f\u00fcr Site {0} bearbeiten
|
||||
pages.details.edit.dialog.close=Abbrechen
|
||||
pages.details.edit.dialog.submit=Speichern
|
||||
pages.details.breadcrumbs=Details Seitenbaum f\u00fcr Site {0}
|
||||
pages.page.details.heading=Details Seite #{0} der Site {1}
|
||||
pages.page.details.properties.heading=Eigenschaften
|
||||
pages.page.details.properties.edit.label=Eigenschaft bearbeiten
|
||||
pages.page.details.properties.remove.label=Eigenschaft entfernen
|
||||
pages.page.details.properties.actions.header=Aktionen
|
||||
pages.page.details.properties.value.header=Wert
|
||||
pages.page.details.properties.name.header=Name
|
||||
|
|
|
|||
Loading…
Reference in New Issue