diff --git a/ccm-cms/src/main/java/org/librecms/pages/PagesController.java b/ccm-cms/src/main/java/org/librecms/pages/PagesController.java index 35e515e58..e485705b8 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/PagesController.java +++ b/ccm-cms/src/main/java/org/librecms/pages/PagesController.java @@ -38,6 +38,7 @@ import org.librecms.contentsection.ContentItemVersion; import org.librecms.pages.models.CategoryModel; import org.librecms.pages.models.ContentItemModel; import org.librecms.pages.models.PagePropertiesModel; +import org.librecms.pages.models.PageUrlModel; import org.librecms.pages.models.SiteInfoModel; import java.net.URI; @@ -196,6 +197,9 @@ public class PagesController { @Inject private PagePropertiesModel pagePropertiesModel; + @Inject + private PageUrlModel pageUrlModel; + @Inject private PagesRepository pagesRepo; @@ -241,6 +245,8 @@ 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( "/index.%s.html%s", @@ -271,6 +277,8 @@ public class PagesController { final Versions versions = generateFromPreviewParam(preview); final String language = determineLanguage(category, versions); + initPageUrlModel(uriInfo); + final String itemPage = String.format( "/%s.%s.html%s", itemName, @@ -300,6 +308,8 @@ 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( "/%s.%s.html", itemName, language @@ -406,6 +416,8 @@ 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; if (uriInfo.getPath().endsWith("/")) { @@ -460,6 +472,8 @@ 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; if (uriInfo.getPath().endsWith("/")) { @@ -535,6 +549,7 @@ public class PagesController { .sorted() .collect(Collectors.toList()) ); + initPageUrlModel(uriInfo); siteInfoModel.setDomain(site.getDomainOfSite()); siteInfoModel.setHost(domain); siteInfoModel.setName( @@ -806,6 +821,25 @@ public class PagesController { } } + private void initPageUrlModel(final UriInfo uriInfo) { + pageUrlModel.setHost(uriInfo.getRequestUri().getHost()); + pageUrlModel.setPath(uriInfo.getPath()); + pageUrlModel.setPort(uriInfo.getRequestUri().getPort()); + pageUrlModel.setProtocol(uriInfo.getRequestUri().getScheme()); + pageUrlModel.setQueryParameters( + uriInfo + .getQueryParameters() + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> entry.getKey(), + entry -> entry.getValue().get(0) + ) + ) + ); + } + /** * Encapsulate the result of converting the value of the {@code preview} * query parameter. diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/MultiPartArticleModel.java b/ccm-cms/src/main/java/org/librecms/pages/models/MultiPartArticleModel.java index 34d426507..5f9972cdc 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/models/MultiPartArticleModel.java +++ b/ccm-cms/src/main/java/org/librecms/pages/models/MultiPartArticleModel.java @@ -130,6 +130,7 @@ public class MultiPartArticleModel implements ProcessesContentItem { .ofNullable(mpa.getSummary()) .map(globalizationHelper::getValueFromLocalizedString) .orElse(null); + sectionTitles = Optional .ofNullable(mpa.getSections()) .map( @@ -156,15 +157,21 @@ public class MultiPartArticleModel implements ProcessesContentItem { .build() ); } - currentSectionTitle = Optional - .ofNullable(mpa.getSections().get(currentSection).getTitle()) - .map(globalizationHelper::getValueFromLocalizedString) - .orElse(""); - currentSectionText = Optional - .ofNullable(mpa.getSections().get(currentSection).getText()) - .map(globalizationHelper::getValueFromLocalizedString) - .orElse(""); + if (mpa.getSections().isEmpty()) { + currentSectionTitle = ""; + currentSectionText = ""; + } else { + currentSectionTitle = Optional + .ofNullable(mpa.getSections().get(currentSection).getTitle()) + .map(globalizationHelper::getValueFromLocalizedString) + .orElse(""); + + currentSectionText = Optional + .ofNullable(mpa.getSections().get(currentSection).getText()) + .map(globalizationHelper::getValueFromLocalizedString) + .orElse(""); + } sections = mpa .getSections()