Some bugfixes

pull/10/head
Jens Pelzetter 2021-11-24 20:03:06 +01:00
parent 6f2f0684b5
commit f9606862f2
8 changed files with 174 additions and 16 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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>

View File

@ -9,7 +9,9 @@
<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 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>

View File

@ -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>

View File

@ -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

View File

@ -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