From 15771306052f524d04183c8300c7b4d0ec50b9c3 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 27 Mar 2021 17:53:05 +0100 Subject: [PATCH] Controller for PublishStep, various templates --- .../contentsection/ContentItemManager.java | 74 +++- .../lifecycle/LifecycleDefinition.java | 8 + .../LifecycleDefinitionRepository.java | 17 + .../documents/CategorizationStep.java | 4 +- .../documents/DocumentNotFound.java | 2 +- .../contentsections/documents/DocumentUi.java | 2 +- .../documents/PublishStep.java | 333 ++++++++++++++++++ .../documents/PublishStepModel.java | 2 +- .../documents/RelatedInfoStep.java | 21 +- .../documents/asset-not-found.xhtml | 35 ++ .../documents/attachment-list-not-found.xhtml | 36 ++ .../categorization-domain-not-found.xhtml | 37 ++ .../documents}/categorization-tree-node.xhtml | 0 .../documents}/categorization.xhtml | 0 .../internal-link-asset-not-found.xhtml | 38 ++ .../lifecycle-definition-not-found.xhtml | 34 ++ .../ui/contentsection/documents/publish.xhtml | 124 ++++++- .../documents/target-item-not-found.xhtml | 39 ++ 18 files changed, 785 insertions(+), 21 deletions(-) create mode 100644 ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStep.java create mode 100644 ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/asset-not-found.xhtml create mode 100644 ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/attachment-list-not-found.xhtml create mode 100644 ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization-domain-not-found.xhtml rename ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/{contenttypes => contentsection/documents}/categorization-tree-node.xhtml (100%) rename ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/{contenttypes => contentsection/documents}/categorization.xhtml (100%) create mode 100644 ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/internal-link-asset-not-found.xhtml create mode 100644 ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/lifecycle-definition-not-found.xhtml create mode 100644 ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/target-item-not-found.xhtml diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java index fabe26c3d..bbab650cc 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java @@ -70,6 +70,8 @@ import org.libreccm.security.PermissionManager; import org.librecms.contentsection.privileges.TypePrivileges; import java.lang.reflect.Constructor; +import java.time.Instant; +import java.util.Date; /** * Manager class providing several methods to manipulate {@link ContentItem}s. @@ -839,6 +841,39 @@ public class ContentItemManager { return publish(item, lifecycleDefinition); } + + /** + * Creates a live version of content item or updates the live version of a + * content item if there already a live version using the default lifecycle + * for the content type of the provided item. + * + * @param item The content item to publish. + * @param startDateTime Start date and time of the lifecycle. May not ben null. + * @param endDateTime End date/time of the lifecycle. May be null. + * + * @return The published content item. + */ + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + public ContentItem publish( + @RequiresPrivilege(ItemPrivileges.PUBLISH) + final ContentItem item, + final Date startDateTime, + final Date endDateTime + ) { + + if (item == null) { + throw new IllegalArgumentException( + "The item to publish can't be null."); + } + + final LifecycleDefinition lifecycleDefinition = item.getContentType() + .getDefaultLifecycle(); + + return publish( + item, lifecycleDefinition, startDateTime, endDateTime + ); + } /** * Creates a live version of content item or updates the live version of a @@ -856,8 +891,35 @@ public class ContentItemManager { public ContentItem publish( @RequiresPrivilege(ItemPrivileges.PUBLISH) final ContentItem item, - final LifecycleDefinition lifecycleDefinition) { + final LifecycleDefinition lifecycleDefinition + ) { + return publish( + item, lifecycleDefinition, Date.from(Instant.now()), null + ); + } + /** + * Creates a live version of content item or updates the live version of a + * content item if there already a live version. + * + * @param item The content item to publish. + * @param lifecycleDefinition The definition of the lifecycle to use for the + * new item. + * @param startDateTime The begin of the lifecycle. May not be null. + * @param endDateTime The end of the lifecycle. May be null. + * + * @return The published content item. + */ + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @SuppressWarnings("unchecked") + public ContentItem publish( + @RequiresPrivilege(ItemPrivileges.PUBLISH) + final ContentItem item, + final LifecycleDefinition lifecycleDefinition, + final Date startDateTime, + final Date endDateTime + ) { if (item == null) { throw new IllegalArgumentException( "The item to publish can't be null."); @@ -868,6 +930,12 @@ public class ContentItemManager { "The lifecycle definition for the " + "lifecycle of the item to publish can't be null."); } + + if (startDateTime == null) { + throw new IllegalArgumentException( + "The start date of the " + + "lifecycle of the item to publish can't be null."); + } final ContentItem draftItem = getDraftVersion(item, ContentItem.class); final ContentItem liveItem; @@ -887,6 +955,10 @@ public class ContentItemManager { final Lifecycle lifecycle = lifecycleManager .createLifecycle(lifecycleDefinition); + lifecycle.setStartDateTime(startDateTime); + if (endDateTime != null) { + lifecycle.setEndDateTime(endDateTime); + } liveItem.setLifecycle(lifecycle); liveItem.setWorkflow(draftItem.getWorkflow()); diff --git a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinition.java b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinition.java index 939caeffe..74161cc43 100644 --- a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinition.java +++ b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinition.java @@ -37,6 +37,8 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; @@ -50,6 +52,12 @@ import static org.librecms.CmsConstants.*; */ @Entity @Table(name = "LIFECYLE_DEFINITIONS", schema = DB_SCHEMA) +@NamedQueries( + @NamedQuery( + name = "LifecycleDefinition.findByUuid", + query = "SELECT d FROM LifecycleDefinition d WHERE d.uuid = :uuid" + ) +) public class LifecycleDefinition implements Identifiable, Serializable { private static final long serialVersionUID = 1291162870555527717L; diff --git a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java index e8a47577e..2408bf215 100644 --- a/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java +++ b/ccm-cms/src/main/java/org/librecms/lifecycle/LifecycleDefinitionRepository.java @@ -20,9 +20,11 @@ package org.librecms.lifecycle; import org.libreccm.core.AbstractEntityRepository; +import java.util.Optional; import java.util.UUID; import javax.enterprise.context.RequestScoped; +import javax.persistence.NoResultException; /** * @@ -34,6 +36,21 @@ public class LifecycleDefinitionRepository private static final long serialVersionUID = -6388883975391235155L; + public Optional findByUuid(final String uuid) { + try { + return Optional.of( + getEntityManager() + .createNamedQuery( + "LifecycleDefinition.findByUuid", + LifecycleDefinition.class) + .setParameter("uuid", uuid) + .getSingleResult() + ); + } catch(NoResultException ex) { + return Optional.empty(); + } + } + @Override public Class getEntityClass() { return LifecycleDefinition.class; diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CategorizationStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CategorizationStep.java index 56c042103..ce0e75448 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CategorizationStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CategorizationStep.java @@ -139,7 +139,7 @@ public class CategorizationStep implements MvcAuthoringStep { @Override public String showStep() { - return "org/librecms/ui/contenttypes/categorization.xhtml"; + return "org/librecms/ui/documents/categorization.xhtml"; } @Transactional(Transactional.TxType.REQUIRED) @@ -201,7 +201,7 @@ public class CategorizationStep implements MvcAuthoringStep { if (!domainResult.isPresent()) { models.put("section", section.getLabel()); models.put("domainIdentifier", domainIdentifierParam); - return "org/librecms/ui/contenttypes/categorization-domain-not-found.xhtml"; + return "org/librecms/ui/documents/categorization-domain-not-found.xhtml"; } final Domain domain = domainResult.get(); diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentNotFound.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentNotFound.java index 3638963a8..186ecfc77 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentNotFound.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentNotFound.java @@ -66,7 +66,7 @@ public class DocumentNotFound implements MvcAuthoringStep { @Override public String showStep() { - return "org/librecms/ui/contentsection/document-not-found.xhtml"; + return "org/librecms/ui/contentsection/documents/document-not-found.xhtml"; } @GET diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentUi.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentUi.java index b380db69a..fa482d569 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentUi.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/DocumentUi.java @@ -26,7 +26,7 @@ class DocumentUi { ) { models.put("section", section.getLabel()); models.put("documentPath", documentPath); - return "org/librecms/ui/contentsection/document-not-found.xhtml"; + return "org/librecms/ui/contentsection/documents/document-not-found.xhtml"; } diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStep.java new file mode 100644 index 000000000..dc8dac490 --- /dev/null +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStep.java @@ -0,0 +1,333 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.librecms.ui.contentsections.documents; + +import org.libreccm.l10n.GlobalizationHelper; +import org.librecms.contentsection.ContentItem; +import org.librecms.contentsection.ContentItemManager; +import org.librecms.contentsection.ContentSection; +import org.librecms.lifecycle.LifecycleDefinition; +import org.librecms.lifecycle.LifecycleDefinitionRepository; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Date; +import java.util.Optional; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.inject.Named; +import javax.mvc.Controller; +import javax.mvc.Models; +import javax.transaction.Transactional; +import javax.ws.rs.FormParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Controller +@Path("/") +@AuthoringStepPathFragment(PublishStep.PATH_FRAGMENT) +@Named("CmsPublishStep") +public class PublishStep implements MvcAuthoringStep { + + static final String PATH_FRAGMENT = "publish"; + + @Inject + private ContentItemManager itemManager; + + @Inject + private GlobalizationHelper globalizationHelper; + + @Inject + private LifecycleDefinitionRepository lifecycleDefRepo; + + @Inject + private Models models; + + private ContentItem document; + + private ContentSection section; + + @Override + public Class supportedDocumentType() { + return ContentItem.class; + } + + @Override + public String getLabel() { + return globalizationHelper + .getLocalizedTextsUtil(getBundle()) + .getText("authoringsteps.publish.label"); + } + + @Override + public String getDescription() { + return globalizationHelper + .getLocalizedTextsUtil(getBundle()) + .getText("authoringsteps.publish.description"); + } + + @Override + public String getBundle() { + return DefaultAuthoringStepConstants.BUNDLE; + } + + @Override + public ContentSection getContentSection() { + return section; + } + + @Override + public void setContentSection(final ContentSection section) { + this.section = section; + } + + @Override + public String getContentSectionLabel() { + return section.getLabel(); + } + + @Override + public String getContentSectionTitle() { + return globalizationHelper + .getValueFromLocalizedString(section.getTitle()); + } + + @Override + public ContentItem getContentItem() { + return document; + } + + @Override + public void setContentItem(final ContentItem document) { + this.document = document; + } + + @Override + public String getContentItemPath() { + return itemManager.getItemPath(document); + } + + @Override + public String getContentItemTitle() { + return globalizationHelper + .getValueFromLocalizedString(document.getTitle()); + } + + @Override + public String showStep() { + final String lifecycleDefUuid; + if (itemManager.isLive(document)) { + lifecycleDefUuid = document + .getLifecycle() + .getDefinition() + .getUuid(); + } else { + lifecycleDefUuid = document + .getContentType() + .getDefaultLifecycle() + .getUuid(); + } + models.put("lifecycleDefinitionUuid", lifecycleDefUuid); + return "org/librecms/ui/documents/publish.xhtml"; + } + + public boolean isLive() { + return itemManager.isLive(document); + } + + public String getAssignedLifecycleLabel() { + return globalizationHelper.getValueFromLocalizedString( + document.getLifecycle().getDefinition().getLabel() + ); + } + + public String getAssignedLifecycleDecription() { + return globalizationHelper.getValueFromLocalizedString( + document.getLifecycle().getDefinition().getDescription() + ); + } + + /** + * Publishes the current content item.If the item is already live, the + * {@code selectedLifecycleDefUuid} is ignored.The apply a new lifecycle the + * document the unpublished first. + * + * @param selectedLifecycleDefUuid The ID of the lifecycle definition from + * which the lifecycle for the item is + * created. + * @param startDateParam + * @param startTimeParam + * @param endDateParam + * @param endTimeParam + * + * + * @return A redirect the the publish step. + */ + @POST + @Path("/@publish") + @Transactional(Transactional.TxType.REQUIRED) + public String publish( + @FormParam("selectedLifecycleDefUuid") + final String selectedLifecycleDefUuid, + @FormParam("startDate") final String startDateParam, + @FormParam("startTime") final String startTimeParam, + @FormParam("endDate") final String endDateParam, + @FormParam("endTime") final String endTimeParam + ) { + if (selectedLifecycleDefUuid == null) { + models.put("missingLifecycleDefinitionUuid", true); + models.put("startDateTime", startDateParam); + models.put("startDateTime", startTimeParam); + models.put("endDateTime", endDateParam); + models.put("endDateTime", endTimeParam); + return "org/librecms/ui/documenttypes/publish.xhtml"; + } + if (startDateParam == null + || startDateParam.isEmpty() + || startTimeParam == null + || startTimeParam.isEmpty()) { + models.put("lifecycleDefinitionUuid", selectedLifecycleDefUuid); + models.put("missingStartDateTime", true); + models.put("startDateTime", startDateParam); + models.put("startDateTime", startTimeParam); + models.put("endDateTime", endDateParam); + models.put("endDateTime", endTimeParam); + return "org/librecms/ui/documents/publish.xhtml"; + } + + final DateTimeFormatter isoDateFormatter = DateTimeFormatter.ISO_DATE + .withZone(ZoneId.systemDefault()); + final DateTimeFormatter isoTimeFormatter = DateTimeFormatter.ISO_TIME + .withZone(ZoneId.systemDefault()); + + final LocalDate localStartDate; + try { + localStartDate = LocalDate.parse(startDateParam, isoDateFormatter); + } catch (DateTimeParseException ex) { + models.put("invalidStartDate", true); + models.put("lifecycleDefinitionUuid", selectedLifecycleDefUuid); + models.put("startDateTime", startDateParam); + models.put("startDateTime", startTimeParam); + models.put("endDateTime", endDateParam); + models.put("endDateTime", endTimeParam); + return "org/librecms/ui/documents/publish.xhtml"; + } + + final LocalTime localStartTime; + try { + localStartTime = LocalTime.parse(startTimeParam, isoTimeFormatter); + } catch (DateTimeParseException ex) { + models.put("invalidStartTime", true); + models.put("lifecycleDefinitionUuid", selectedLifecycleDefUuid); + models.put("startDateTime", startDateParam); + models.put("startDateTime", startTimeParam); + models.put("endDateTime", endDateParam); + models.put("endDateTime", endTimeParam); + return "org/librecms/ui/documents/publish.xhtml"; + } + + final LocalDateTime startLocalDateTime = LocalDateTime.of( + localStartDate, localStartTime + ); + final Date startDateTime = Date.from( + startLocalDateTime.toInstant( + ZoneOffset.from(startLocalDateTime) + ) + ); + + final LocalDate localEndDate; + try { + localEndDate = LocalDate.parse(endDateParam, isoDateFormatter); + } catch (DateTimeParseException ex) { + models.put("invalidEndDate", true); + models.put("lifecycleDefinitionUuid", selectedLifecycleDefUuid); + models.put("startDateTime", startDateParam); + models.put("startDateTime", startTimeParam); + models.put("endDateTime", endDateParam); + models.put("endDateTime", endTimeParam); + return "org/librecms/ui/documents/publish.xhtml"; + } + + final LocalTime localEndTime; + try { + localEndTime = LocalTime.parse(endTimeParam, isoTimeFormatter); + } catch (DateTimeParseException ex) { + models.put("invalidEndTime", true); + models.put("lifecycleDefinitionUuid", selectedLifecycleDefUuid); + models.put("startDateTime", startDateParam); + models.put("startDateTime", startTimeParam); + models.put("endDateTime", endDateParam); + models.put("endDateTime", endTimeParam); + return "org/librecms/ui/documents/publish.xhtml"; + } + + final LocalDateTime endLocalDateTime = LocalDateTime.of( + localEndDate, localEndTime + ); + final Date endDateTime = Date.from( + endLocalDateTime.toInstant( + ZoneOffset.from(endLocalDateTime) + ) + ); + + if (selectedLifecycleDefUuid.isEmpty()) { + if (itemManager.isLive(document)) { + final LifecycleDefinition definition; + definition = document.getLifecycle().getDefinition(); + itemManager.publish( + document, definition, startDateTime, endDateTime + ); + } else { + itemManager.publish(document, startDateTime, endDateTime); + } + } else { + final Optional definitionResult + = lifecycleDefRepo.findByUuid(selectedLifecycleDefUuid); + if (!definitionResult.isPresent()) { + models.put("contentSection", section.getLabel()); + models.put("lifecycleDefinitionUuid", selectedLifecycleDefUuid); + return "org/librecms/ui/documents/lifecycle-definition-not-found.xhtml"; + } + final LifecycleDefinition definition = definitionResult.get(); + itemManager.publish( + document, definition, startDateTime, endDateTime + ); + } + + return String.format( + "redirect:/%s/@documents/%s/@authoringsteps/%s", + section.getLabel(), + getContentItemPath(), + PATH_FRAGMENT + ); + } + + @POST + @Path("/@unpublish") + @Transactional(Transactional.TxType.REQUIRED) + public String unpublish() { + itemManager.unpublish(document); + + return String.format( + "redirect:/%s/@documents/%s/@authoringsteps/%s", + section.getLabel(), + getContentItemPath(), + PATH_FRAGMENT + ); + } + +} diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStepModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStepModel.java index 7d533f6eb..8836a7fa6 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStepModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/PublishStepModel.java @@ -29,7 +29,7 @@ public class PublishStepModel { phases = new ArrayList<>(); } - public List getAvailableListcycles() { + public List getAvailableLifecycles() { return Collections.unmodifiableList(availableListcycles); } diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java index f28199853..e0f24c426 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java @@ -158,7 +158,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { @Override public String showStep() { - return "org/librecms/ui/contenttypes/relatedinfo.xhtml"; + return "org/librecms/ui/documents/relatedinfo.xhtml"; } @Transactional @@ -239,8 +239,9 @@ public class RelatedInfoStep implements MvcAuthoringStep { final Optional assetResult = assetRepo.findByUuid(assetUuid); if (!assetResult.isPresent()) { + models.put("section", section.getLabel()); models.put("assetUuid", assetUuid); - return "org/librecms/ui/contenttypes/asset-not-found.xhtml"; + return "org/librecms/ui/documents/asset-not-found.xhtml"; } final Asset asset = assetResult.get(); @@ -277,7 +278,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { ); if (!itemResult.isPresent()) { models.put("targetItemUuid", targetItemUuid); - return "org/librecms/ui/contenttypes/target-item-not-found.xhtml"; + return "org/librecms/ui/documents/target-item-not-found.xhtml"; } final RelatedLink relatedLink = new RelatedLink(); @@ -318,7 +319,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { ); if (!itemResult.isPresent()) { models.put("targetItemUuid", targetItemUuid); - return "org/librecms/ui/contenttypes/target-item-not-found.xhtml"; + return "org/librecms/ui/documents/target-item-not-found.xhtml"; } final Optional linkResult = list @@ -332,9 +333,9 @@ public class RelatedInfoStep implements MvcAuthoringStep { if (!linkResult.isPresent()) { models.put("contentItem", itemManager.getItemPath(document)); - models.put("listIdentifierParam", listIdentifierParam); + models.put("listIdentifier", listIdentifierParam); models.put("internalLinkUuid", internalLinkUuid); - return "org/librecms/ui/contenttypes/internal-link-asset-not-found.xhtml"; + return "org/librecms/ui/documents/internal-link-asset-not-found.xhtml"; } final RelatedLink link = linkResult.get(); @@ -381,7 +382,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { models.put("contentItem", itemManager.getItemPath(document)); models.put("listIdentifierParam", listIdentifierParam); models.put("internalLinkUuid", internalLinkUuid); - return "org/librecms/ui/contenttypes/internal-link-asset-not-found.xhtml"; + return "org/librecms/ui/documents/internal-link-asset-not-found.xhtml"; } final RelatedLink link = linkResult.get(); @@ -429,7 +430,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { models.put("contentItem", itemManager.getItemPath(document)); models.put("listIdentifierParam", listIdentifierParam); models.put("internalLinkUuid", internalLinkUuid); - return "org/librecms/ui/contenttypes/internal-link-asset-not-found.xhtml"; + return "org/librecms/ui/documents/internal-link-asset-not-found.xhtml"; } final RelatedLink link = linkResult.get(); @@ -476,7 +477,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { models.put("contentItem", itemManager.getItemPath(document)); models.put("listIdentifierParam", listIdentifierParam); models.put("internalLinkUuid", internalLinkUuid); - return "org/librecms/ui/contenttypes/internal-link-asset-not-found.xhtml"; + return "org/librecms/ui/documents/internal-link-asset-not-found.xhtml"; } final RelatedLink link = linkResult.get(); @@ -693,7 +694,7 @@ public class RelatedInfoStep implements MvcAuthoringStep { private String showAttachmentListNotFound(final String listIdentifier) { models.put("contentItem", itemManager.getItemPath(document)); models.put("listIdentifier", listIdentifier); - return "org/librecms/ui/contenttypes/attachmentlist-not-found.xhtml"; + return "org/librecms/ui/documents/attachmentlist-not-found.xhtml"; } private AttachmentListDto buildAttachmentListDto( diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/asset-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/asset-not-found.xhtml new file mode 100644 index 000000000..20444d071 --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/asset-not-found.xhtml @@ -0,0 +1,35 @@ +]> + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/attachment-list-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/attachment-list-not-found.xhtml new file mode 100644 index 000000000..2045f0c9c --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/attachment-list-not-found.xhtml @@ -0,0 +1,36 @@ +]> + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization-domain-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization-domain-not-found.xhtml new file mode 100644 index 000000000..b86d104b1 --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization-domain-not-found.xhtml @@ -0,0 +1,37 @@ +]> + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + + + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/categorization-tree-node.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization-tree-node.xhtml similarity index 100% rename from ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/categorization-tree-node.xhtml rename to ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization-tree-node.xhtml diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/categorization.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization.xhtml similarity index 100% rename from ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/categorization.xhtml rename to ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/categorization.xhtml diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/internal-link-asset-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/internal-link-asset-not-found.xhtml new file mode 100644 index 000000000..76df12634 --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/internal-link-asset-not-found.xhtml @@ -0,0 +1,38 @@ +]> + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + + + + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/lifecycle-definition-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/lifecycle-definition-not-found.xhtml new file mode 100644 index 000000000..46626db32 --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/lifecycle-definition-not-found.xhtml @@ -0,0 +1,34 @@ +]> + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/publish.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/publish.xhtml index f2e573dd9..81bf9fd6f 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/publish.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/publish.xhtml @@ -17,11 +17,125 @@ -
- -
+ + +

+ ${CmsDefaultStepsMessageBundle['publishstep.lifecycle.assigned']}: + ${CmsPublishStep.assignedLifecycleLabel} +

+

+ ${CmsPublishStep.assignedLifecycleDecription} +

+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+ + + + ${CmsDefaultStepsMessageBundle['publishstep.lifecycle_select.help']} + +
+ +
+
+ + + + + + +
+ + ${CmsDefaultStepsMessageBundle['publishstep.lifecycle_startdatetime.help']} + +
+ +
+
+ + + + + + +
+ + ${CmsDefaultStepsMessageBundle['publishstep.lifecycle_enddatetime.help']} + +
+ + +
+
+
+
diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/target-item-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/target-item-not-found.xhtml new file mode 100644 index 000000000..59627a06e --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/target-item-not-found.xhtml @@ -0,0 +1,39 @@ +]> + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + + + + +