diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/LifecycleDefinitionListModel.java b/ccm-cms/src/main/java/org/librecms/contentsection/LifecycleDefinitionListModel.java
new file mode 100644
index 000000000..23a828ab9
--- /dev/null
+++ b/ccm-cms/src/main/java/org/librecms/contentsection/LifecycleDefinitionListModel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.contentsection;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class LifecycleDefinitionListModel {
+
+ private long definitionId;
+
+ private String uuid;
+
+ private String label;
+
+ private String description;
+
+ public long getDefinitionId() {
+ return definitionId;
+ }
+
+ public void setDefinitionId(final long definitionId) {
+ this.definitionId = definitionId;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(final String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(final String description) {
+ this.description = description;
+ }
+
+}
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationLifecyclesController.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationLifecyclesController.java
index d5c6f2583..a8c376179 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationLifecyclesController.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationLifecyclesController.java
@@ -5,10 +5,27 @@
*/
package org.librecms.ui.contentsections;
+import org.libreccm.api.Identifier;
+import org.libreccm.api.IdentifierParser;
+import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.security.AuthorizationRequired;
+import org.librecms.contentsection.ContentSection;
+import org.librecms.contentsection.ContentSectionManager;
+import org.librecms.contentsection.LifecycleDefinitionListModel;
+import org.librecms.lifecycle.LifecycleDefinition;
+import org.librecms.lifecycle.LifecycleDefinitionRepository;
+import org.librecms.lifecycle.LifecycleManager;
+import org.librecms.lifecycle.PhaseDefinition;
+import org.librecms.lifecycle.PhaseDefinititionRepository;
+
+import java.util.Locale;
+import java.util.Optional;
+import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
import javax.mvc.Controller;
+import javax.mvc.Models;
import javax.transaction.Transactional;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
@@ -25,6 +42,36 @@ import javax.ws.rs.PathParam;
@Path("/{sectionIdentifier}/configuration/lifecycles")
public class ConfigurationLifecyclesController {
+ @Inject
+ private AdminPermissionsChecker adminPermissionsChecker;
+
+ @Inject
+ private ContentSectionManager sectionManager;
+
+ @Inject
+ private ContentSectionsUi sectionsUi;
+
+ @Inject
+ private GlobalizationHelper globalizationHelper;
+
+ @Inject
+ private IdentifierParser identifierParser;
+
+ @Inject
+ private LifecycleManager lifecycleManager;
+
+ @Inject
+ private LifecycleDefinitionRepository definitionRepo;
+
+ @Inject
+ private Models models;
+
+ @Inject
+ private PhaseDefinititionRepository phaseDefinititionRepo;
+
+ @Inject
+ private SelectedLifecycleDefinitionModel selectedDefinitionModel;
+
@GET
@Path("/")
@AuthorizationRequired
@@ -32,7 +79,27 @@ public class ConfigurationLifecyclesController {
public String listLifecycleDefinitions(
@PathParam("sectionIdentifier") final String sectionIdentifierParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ models.put(
+ "lifecycleDefinitions",
+ section
+ .getLifecycleDefinitions()
+ .stream()
+ .map(this::buildListModel)
+ .collect(Collectors.toList())
+ );
+ return "org/librecms/ui/contentsection/configuration/lifecycles.xhtml";
}
@GET
@@ -43,7 +110,62 @@ public class ConfigurationLifecyclesController {
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ selectedDefinitionModel.setUuid(definition.getUuid());
+ selectedDefinitionModel.setLabel(
+ definition
+ .getLabel()
+ .getValues()
+ .entrySet()
+ .stream()
+ .collect(
+ Collectors.toMap(
+ entry -> entry.getKey().toString(),
+ entry -> entry.getValue()
+ )
+ )
+ );
+ selectedDefinitionModel.setDescription(
+ definition
+ .getDescription()
+ .getValues()
+ .entrySet()
+ .stream()
+ .collect(
+ Collectors.toMap(
+ entry -> entry.getKey().toString(),
+ entry -> entry.getValue()
+ )
+ )
+ );
+ selectedDefinitionModel.setPhaseDefinitions(
+ definition
+ .getPhaseDefinitions()
+ .stream()
+ .map(this::buildPhaseDefinitionModel)
+ .collect(Collectors.toList())
+ );
+
+ return "org/librecms/ui/contentsection/configuration/lifecycle.xhtml";
}
@POST
@@ -53,7 +175,29 @@ public class ConfigurationLifecyclesController {
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@FormParam("label") final String label
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final LifecycleDefinition definition = new LifecycleDefinition();
+ definition
+ .getLabel()
+ .addValue(globalizationHelper.getNegotiatedLocale(), label);
+ sectionManager.addLifecycleDefinitionToContentSection(
+ definition, section
+ );
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles", sectionIdentifierParam
+ );
}
@POST
@@ -64,7 +208,34 @@ public class ConfigurationLifecyclesController {
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ sectionManager.removeLifecycleDefinitionFromContentSection(
+ definition, section
+ );
+ definitionRepo.delete(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles", sectionIdentifierParam
+ );
}
@POST
@@ -77,7 +248,34 @@ public class ConfigurationLifecyclesController {
@FormParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ definition.getLabel().addValue(new Locale(localeParam), value);
+ definitionRepo.save(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -90,7 +288,34 @@ public class ConfigurationLifecyclesController {
@PathParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ definition.getLabel().addValue(new Locale(localeParam), value);
+ definitionRepo.save(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -100,10 +325,36 @@ public class ConfigurationLifecyclesController {
public String removeLifecycleDefinitionLabel(
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam,
- @PathParam("locale") final String localeParam,
- @FormParam("value") final String value
+ @PathParam("locale") final String localeParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ definition.getLabel().removeValue(new Locale(localeParam));
+ definitionRepo.save(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -116,7 +367,34 @@ public class ConfigurationLifecyclesController {
@FormParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ definition.getDescription().addValue(new Locale(localeParam), value);
+ definitionRepo.save(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -129,7 +407,34 @@ public class ConfigurationLifecyclesController {
@PathParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ definition.getDescription().addValue(new Locale(localeParam), value);
+ definitionRepo.save(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -139,10 +444,36 @@ public class ConfigurationLifecyclesController {
public String removeLifecycleDefinitionDescription(
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam,
- @PathParam("locale") final String localeParam,
- @FormParam("value") final String value
+ @PathParam("locale") final String localeParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ definition.getDescription().removeValue(new Locale(localeParam));
+ definitionRepo.save(definition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -156,7 +487,40 @@ public class ConfigurationLifecyclesController {
@FormParam("defaultDelay") final long defaultDelay,
@FormParam("defaultDuration") final long defaultDuration
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+
+ final PhaseDefinition phaseDefinition = new PhaseDefinition();
+ phaseDefinition.setDefaultDelay(defaultDelay);
+ phaseDefinition.setDefaultDuration(defaultDuration);
+ phaseDefinition
+ .getLabel()
+ .addValue(globalizationHelper.getNegotiatedLocale(), label);
+ lifecycleManager.addPhaseDefinition(definition, phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -170,7 +534,46 @@ public class ConfigurationLifecyclesController {
@FormParam("defaultDelay") final long defaultDelay,
@FormParam("defaultDuration") final long defaultDuration
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.setDefaultDelay(defaultDelay);
+ phaseDefinition.setDefaultDuration(defaultDuration);
+
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -182,7 +585,44 @@ public class ConfigurationLifecyclesController {
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam,
@PathParam("phaseIdentifier") final String phaseIdentifierParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ lifecycleManager.removePhaseDefinition(definition, phaseDefinition);
+ phaseDefinititionRepo.delete(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -196,7 +636,44 @@ public class ConfigurationLifecyclesController {
@FormParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.getLabel().addValue(new Locale(localeParam), value);
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -210,7 +687,44 @@ public class ConfigurationLifecyclesController {
@PathParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.getLabel().addValue(new Locale(localeParam), value);
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -224,7 +738,44 @@ public class ConfigurationLifecyclesController {
@PathParam("phaseIdentifier") final String phaseIdentifierParam,
@PathParam("locale") final String localeParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.getLabel().removeValue(new Locale(localeParam));
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -238,7 +789,46 @@ public class ConfigurationLifecyclesController {
@FormParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.getDescription().addValue(
+ new Locale(localeParam), value
+ );
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -253,7 +843,46 @@ public class ConfigurationLifecyclesController {
@PathParam("locale") final String localeParam,
@FormParam("value") final String value
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.getDescription().addValue(
+ new Locale(localeParam), value
+ );
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
}
@POST
@@ -267,7 +896,167 @@ public class ConfigurationLifecyclesController {
@PathParam("phaseIdentifier") final String phaseIdentifierParam,
@PathParam("locale") final String localeParam
) {
- throw new UnsupportedOperationException("Not implemented yet.");
+ final Optional sectionResult = sectionsUi
+ .findContentSection(sectionIdentifierParam);
+ if (!sectionResult.isPresent()) {
+ sectionsUi.showContentSectionNotFound(sectionIdentifierParam);
+ }
+ final ContentSection section = sectionResult.get();
+ if (!adminPermissionsChecker.canAdministerLifecycles(section)) {
+ return sectionsUi.showAccessDenied(
+ "sectionIdentifier", sectionIdentifierParam
+ );
+ }
+
+ final Optional definitionResult
+ = findLifecycleDefinition(section, sectionIdentifierParam);
+ if (!definitionResult.isPresent()) {
+ return showLifecycleDefinitionNotFound(
+ section, sectionIdentifierParam
+ );
+ }
+ final LifecycleDefinition definition = definitionResult.get();
+ final Optional phaseDefinitionResult
+ = findPhaseDefinition(definition, sectionIdentifierParam);
+ if (!phaseDefinitionResult.isPresent()) {
+ return showPhaseDefinitionNotFound(
+ section,
+ sectionIdentifierParam,
+ phaseIdentifierParam
+ );
+ }
+ final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
+ phaseDefinition.getDescription().removeValue(new Locale(localeParam));
+ phaseDefinititionRepo.save(phaseDefinition);
+
+ return String.format(
+ "redirect:/%s/configuration/lifecycles/%s",
+ sectionIdentifierParam,
+ lifecycleIdentiferParam
+ );
+ }
+
+ private LifecycleDefinitionListModel buildListModel(
+ final LifecycleDefinition definition
+ ) {
+ final LifecycleDefinitionListModel model
+ = new LifecycleDefinitionListModel();
+ model.setDefinitionId(definition.getDefinitionId());
+ model.setUuid(definition.getUuid());
+ model.setLabel(
+ globalizationHelper.getValueFromLocalizedString(
+ definition.getLabel()
+ )
+ );
+ model.setDescription(
+ globalizationHelper.getValueFromLocalizedString(
+ definition.getDescription()
+ )
+ );
+ return model;
+ }
+
+ private Optional findLifecycleDefinition(
+ final ContentSection section, final String definitionIdentifierParam
+ ) {
+ final Identifier identifier = identifierParser.parseIdentifier(
+ definitionIdentifierParam
+ );
+ switch (identifier.getType()) {
+ case ID:
+ return section
+ .getLifecycleDefinitions()
+ .stream()
+ .filter(
+ definition -> definition.getDefinitionId() == Long
+ .parseLong(identifier.getIdentifier())
+ ).findAny();
+ default:
+ return section
+ .getLifecycleDefinitions()
+ .stream()
+ .filter(
+ definition -> definition.getUuid().equals(identifier
+ .getIdentifier())
+ ).findAny();
+ }
+ }
+
+ private String showLifecycleDefinitionNotFound(
+ final ContentSection section,
+ final String definitionIdentifier
+ ) {
+ models.put("sectionIdentifier", section.getLabel());
+ models.put("definitionIdentifier", definitionIdentifier);
+ return "org/librecms/ui/contentsection/configuration/lifecycle-not-found.xhtml";
+ }
+
+ private PhaseDefinitionModel buildPhaseDefinitionModel(
+ final PhaseDefinition definition
+ ) {
+ final PhaseDefinitionModel model = new PhaseDefinitionModel();
+ model.setDefaultDelay(definition.getDefaultDelay());
+ model.setDefaultDuration(definition.getDefaultDuration());
+ model.setDefinitionId(definition.getDefinitionId());
+ model.setDescription(
+ definition
+ .getDescription()
+ .getValues()
+ .entrySet()
+ .stream()
+ .collect(
+ Collectors.toMap(
+ entry -> entry.getKey().toString(),
+ entry -> entry.getValue()
+ )
+ )
+ );
+ model.setDisplayDescription(
+ globalizationHelper
+ .getValueFromLocalizedString(definition.getDescription())
+ );
+ model.setDisplayLabel(
+ globalizationHelper
+ .getValueFromLocalizedString(definition.getLabel())
+ );
+ model.setLabel(
+ definition
+ .getLabel()
+ .getValues()
+ .entrySet()
+ .stream()
+ .collect(
+ Collectors.toMap(
+ entry -> entry.getKey().toString(),
+ entry -> entry.getValue()
+ )
+ )
+ );
+ return model;
+ }
+
+ private Optional findPhaseDefinition(
+ final LifecycleDefinition lifecycleDefinition,
+ final String phaseDefinitionIdentifierParam
+ ) {
+ return lifecycleDefinition
+ .getPhaseDefinitions()
+ .stream()
+ .filter(
+ definition -> definition.getDefinitionId() == Long
+ .parseLong(phaseDefinitionIdentifierParam)
+ ).findAny();
+ }
+
+ private String showPhaseDefinitionNotFound(
+ final ContentSection section,
+ final String definitionIdentifier,
+ final String phaseDefinitionIdentifier
+ ) {
+ models.put("sectionIdentifier", section.getLabel());
+ models.put("lifecycleDefinitionIdentifier", definitionIdentifier);
+ models.put("phaseDefinitionIdentifier", phaseDefinitionIdentifier);
+ return "org/librecms/ui/contentsection/configuration/lifecyclephase-not-found.xhtml";
}
}
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationRolesController.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationRolesController.java
index dc66f4043..0dd0c8460 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationRolesController.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationRolesController.java
@@ -122,7 +122,6 @@ public class ConfigurationRolesController {
}
final List sectionRoles = section.getRoles();
-
final Set otherRoles = roleRepo
.findAll()
.stream()
@@ -509,8 +508,7 @@ public class ConfigurationRolesController {
public String removeDescription(
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("roleName") final String roleName,
- @PathParam("locale") final String localeParam,
- @FormParam("value") final String value
+ @PathParam("locale") final String localeParam
) {
final Optional sectionResult = sectionsUi
.findContentSection(sectionIdentifierParam);
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/PhaseDefinitionModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/PhaseDefinitionModel.java
new file mode 100644
index 000000000..7ca10e808
--- /dev/null
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/PhaseDefinitionModel.java
@@ -0,0 +1,88 @@
+/*
+ * 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;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class PhaseDefinitionModel {
+
+ private long definitionId;
+
+ private String displayLabel;
+
+ private Map label;
+
+ private String displayDescription;
+
+ private Map description;
+
+ private long defaultDelay;
+
+ private long defaultDuration;
+
+ public long getDefinitionId() {
+ return definitionId;
+ }
+
+ public void setDefinitionId(final long definitionId) {
+ this.definitionId = definitionId;
+ }
+
+ public String getDisplayLabel() {
+ return displayLabel;
+ }
+
+ public void setDisplayLabel(final String displayLabel) {
+ this.displayLabel = displayLabel;
+ }
+
+ public Map getLabel() {
+ return Collections.unmodifiableMap(label);
+ }
+
+ public void setLabel(final Map label) {
+ this.label = new HashMap<>(label);
+ }
+
+ public String getDisplayDescription() {
+ return displayDescription;
+ }
+
+ public void setDisplayDescription(final String displayDescription) {
+ this.displayDescription = displayDescription;
+ }
+
+ public Map getDescription() {
+ return Collections.unmodifiableMap(description);
+ }
+
+ public void setDescription(final Map description) {
+ this.description = new HashMap<>(description);
+ }
+
+ public long getDefaultDelay() {
+ return defaultDelay;
+ }
+
+ public void setDefaultDelay(final long defaultDelay) {
+ this.defaultDelay = defaultDelay;
+ }
+
+ public long getDefaultDuration() {
+ return defaultDuration;
+ }
+
+ public void setDefaultDuration(final long defaultDuration) {
+ this.defaultDuration = defaultDuration;
+ }
+
+}
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedLifecycleDefinitionModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedLifecycleDefinitionModel.java
new file mode 100644
index 000000000..baeaec847
--- /dev/null
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedLifecycleDefinitionModel.java
@@ -0,0 +1,67 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Named("SelectedLifecycleModel")
+public class SelectedLifecycleDefinitionModel {
+
+ private String uuid;
+
+ private Map label;
+
+ private Map description;
+
+ private List phaseDefinitions;
+
+ public Map getLabel() {
+ return Collections.unmodifiableMap(label);
+ }
+
+ public void setLabel(final Map label) {
+ this.label = new HashMap<>(label);
+ }
+
+ public Map getDescription() {
+ return Collections.unmodifiableMap(description);
+ }
+
+ public void setDescription(final Map description) {
+ this.description = new HashMap<>(description);
+ }
+
+ public List getPhaseDefinitions() {
+ return Collections.unmodifiableList(phaseDefinitions);
+ }
+
+ public void setPhaseDefinitions(
+ final List phaseDefinitions
+ ) {
+ this.phaseDefinitions = new ArrayList<>(phaseDefinitions);
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
+
+}