Views for managing lifecycles and workflows for content sections

Former-commit-id: a745419bc0d71c2450982753cf5437813433ba10
pull/10/head
Jens Pelzetter 2021-03-06 17:37:38 +01:00
parent 121363f6ee
commit d7dd75dfe0
23 changed files with 2552 additions and 106 deletions

View File

@ -11,15 +11,16 @@ import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.AuthorizationRequired;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager; import org.librecms.contentsection.ContentSectionManager;
import org.librecms.contentsection.LifecycleDefinitionListModel;
import org.librecms.lifecycle.LifecycleDefinition; import org.librecms.lifecycle.LifecycleDefinition;
import org.librecms.lifecycle.LifecycleDefinitionRepository; import org.librecms.lifecycle.LifecycleDefinitionRepository;
import org.librecms.lifecycle.LifecycleManager; import org.librecms.lifecycle.LifecycleManager;
import org.librecms.lifecycle.PhaseDefinition; import org.librecms.lifecycle.PhaseDefinition;
import org.librecms.lifecycle.PhaseDefinititionRepository; import org.librecms.lifecycle.PhaseDefinititionRepository;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
@ -133,7 +134,16 @@ public class ConfigurationLifecyclesController {
); );
} }
final LifecycleDefinition definition = definitionResult.get(); final LifecycleDefinition definition = definitionResult.get();
selectedLifecycleDefModel.setDisplayLabel(
globalizationHelper.getValueFromLocalizedString(
definition.getLabel()
)
);
selectedLifecycleDefModel.setUuid(definition.getUuid()); selectedLifecycleDefModel.setUuid(definition.getUuid());
final List<Locale> availableLocales = globalizationHelper
.getAvailableLocales();
selectedLifecycleDefModel.setLabel( selectedLifecycleDefModel.setLabel(
definition definition
.getLabel() .getLabel()
@ -147,6 +157,16 @@ public class ConfigurationLifecyclesController {
) )
) )
); );
final Set<Locale> labelLocales = definition
.getLabel()
.getAvailableLocales();
selectedLifecycleDefModel.setUnusedLabelLocales(
availableLocales
.stream()
.filter(locale -> !labelLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedLifecycleDefModel.setDescription( selectedLifecycleDefModel.setDescription(
definition definition
.getDescription() .getDescription()
@ -160,6 +180,16 @@ public class ConfigurationLifecyclesController {
) )
) )
); );
final Set<Locale> descriptionLocales = definition
.getDescription()
.getAvailableLocales();
selectedLifecycleDefModel.setUnusedDescriptionLocales(
availableLocales
.stream()
.filter(locale -> !descriptionLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedLifecycleDefModel.setPhaseDefinitions( selectedLifecycleDefModel.setPhaseDefinitions(
definition definition
.getPhaseDefinitions() .getPhaseDefinitions()
@ -487,8 +517,12 @@ public class ConfigurationLifecyclesController {
@PathParam("sectionIdentifier") final String sectionIdentifierParam, @PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam, @PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam,
@FormParam("label") final String label, @FormParam("label") final String label,
@FormParam("defaultDelay") final long defaultDelay, @FormParam("defaultDelayDays") final long defaultDelayDays,
@FormParam("defaultDuration") final long defaultDuration @FormParam("defaultDelayHours") final long defaultDelayHours,
@FormParam("defaultDelayMinutes") final long defaultDelayMinutes,
@FormParam("defaultDurationDays") final long defaultDurationDays,
@FormParam("defaultDurationHours") final long defaultDurationHours,
@FormParam("defaultDurationMinutes") final long defaultDurationMinutes
) { ) {
final Optional<ContentSection> sectionResult = sectionsUi final Optional<ContentSection> sectionResult = sectionsUi
.findContentSection(sectionIdentifierParam); .findContentSection(sectionIdentifierParam);
@ -512,8 +546,19 @@ public class ConfigurationLifecyclesController {
final LifecycleDefinition definition = definitionResult.get(); final LifecycleDefinition definition = definitionResult.get();
final PhaseDefinition phaseDefinition = new PhaseDefinition(); final PhaseDefinition phaseDefinition = new PhaseDefinition();
phaseDefinition.setDefaultDelay(defaultDelay);
phaseDefinition.setDefaultDuration(defaultDuration); final Duration defaultDelay = new Duration();
defaultDelay.setDays(defaultDelayDays);
defaultDelay.setHours(defaultDelayHours);
defaultDelay.setMinutes(defaultDelayMinutes);
phaseDefinition.setDefaultDelay(defaultDelay.toMinutes());
final Duration defaultDuration = new Duration();
defaultDuration.setDays(defaultDurationDays);
defaultDuration.setHours(defaultDurationHours);
defaultDuration.setMinutes(defaultDurationMinutes);
phaseDefinition.setDefaultDuration(defaultDuration.toMinutes());
phaseDefinition phaseDefinition
.getLabel() .getLabel()
.addValue(globalizationHelper.getNegotiatedLocale(), label); .addValue(globalizationHelper.getNegotiatedLocale(), label);
@ -555,6 +600,13 @@ public class ConfigurationLifecyclesController {
); );
} }
final LifecycleDefinition definition = definitionResult.get(); final LifecycleDefinition definition = definitionResult.get();
selectedLifecycleDefModel.setDisplayLabel(
globalizationHelper.getValueFromLocalizedString(
definition.getLabel()
)
);
selectedLifecycleDefModel.setUuid(definition.getUuid());
final Optional<PhaseDefinition> phaseDefinitionResult final Optional<PhaseDefinition> phaseDefinitionResult
= findPhaseDefinition(definition, sectionIdentifierParam); = findPhaseDefinition(definition, sectionIdentifierParam);
if (!phaseDefinitionResult.isPresent()) { if (!phaseDefinitionResult.isPresent()) {
@ -564,12 +616,24 @@ public class ConfigurationLifecyclesController {
phaseIdentifierParam phaseIdentifierParam
); );
} }
final PhaseDefinition phaseDefinition = phaseDefinitionResult.get(); final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
selectedPhaseDefModel.setDefaultDelay(phaseDefinition.getDefaultDelay()); selectedPhaseDefModel.setDefaultDelay(
Duration.fromMinutes(
phaseDefinition.getDefaultDelay()
)
);
selectedPhaseDefModel.setDefaultDuration( selectedPhaseDefModel.setDefaultDuration(
phaseDefinition.getDefaultDuration() Duration.fromMinutes(
phaseDefinition.getDefaultDuration()
)
); );
selectedPhaseDefModel.setDefinitionId(phaseDefinition.getDefinitionId()); selectedPhaseDefModel.setDefinitionId(phaseDefinition.getDefinitionId());
final List<Locale> availableLocales
= globalizationHelper.getAvailableLocales();
final Set<Locale> descriptionLocales = phaseDefinition
.getDescription()
.getAvailableLocales();
selectedPhaseDefModel.setDescription( selectedPhaseDefModel.setDescription(
phaseDefinition phaseDefinition
.getDescription() .getDescription()
@ -583,6 +647,16 @@ public class ConfigurationLifecyclesController {
) )
) )
); );
selectedPhaseDefModel.setUnusedDescriptionLocales(
availableLocales
.stream()
.filter(locale -> !descriptionLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
final Set<Locale> labelLocales = phaseDefinition
.getLabel()
.getAvailableLocales();
selectedPhaseDefModel.setLabel( selectedPhaseDefModel.setLabel(
phaseDefinition phaseDefinition
.getLabel() .getLabel()
@ -596,6 +670,19 @@ public class ConfigurationLifecyclesController {
) )
) )
); );
selectedPhaseDefModel.setUnusedLabelLocales(
availableLocales
.stream()
.filter(locale -> !labelLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedPhaseDefModel.setDisplayLabel(
globalizationHelper.getValueFromLocalizedString(
phaseDefinition.getLabel()
)
);
return "org/librecms/ui/contentsection/configuration/lifecycle-phase.xhtml"; return "org/librecms/ui/contentsection/configuration/lifecycle-phase.xhtml";
} }
@ -607,8 +694,12 @@ public class ConfigurationLifecyclesController {
@PathParam("sectionIdentifier") final String sectionIdentifierParam, @PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam, @PathParam("lifecycleIdentifier") final String lifecycleIdentiferParam,
@PathParam("phaseIdentifier") final String phaseIdentifierParam, @PathParam("phaseIdentifier") final String phaseIdentifierParam,
@FormParam("defaultDelay") final long defaultDelay, @FormParam("defaultDelayDays") final long defaultDelayDays,
@FormParam("defaultDuration") final long defaultDuration @FormParam("defaultDelayHours") final long defaultDelayHours,
@FormParam("defaultDelayMinutes") final long defaultDelayMinutes,
@FormParam("defaultDurationDays") final long defaultDurationDays,
@FormParam("defaultDurationHours") final long defaultDurationHours,
@FormParam("defaultDurationMinutes") final long defaultDurationMinutes
) { ) {
final Optional<ContentSection> sectionResult = sectionsUi final Optional<ContentSection> sectionResult = sectionsUi
.findContentSection(sectionIdentifierParam); .findContentSection(sectionIdentifierParam);
@ -640,8 +731,18 @@ public class ConfigurationLifecyclesController {
); );
} }
final PhaseDefinition phaseDefinition = phaseDefinitionResult.get(); final PhaseDefinition phaseDefinition = phaseDefinitionResult.get();
phaseDefinition.setDefaultDelay(defaultDelay);
phaseDefinition.setDefaultDuration(defaultDuration); final Duration defaultDelay = new Duration();
defaultDelay.setDays(defaultDelayDays);
defaultDelay.setHours(defaultDelayHours);
defaultDelay.setMinutes(defaultDelayMinutes);
phaseDefinition.setDefaultDelay(defaultDelay.toMinutes());
final Duration defaultDuration = new Duration();
defaultDuration.setDays(defaultDurationDays);
defaultDuration.setHours(defaultDurationHours);
defaultDuration.setMinutes(defaultDurationMinutes);
phaseDefinition.setDefaultDuration(defaultDuration.toMinutes());
phaseDefinititionRepo.save(phaseDefinition); phaseDefinititionRepo.save(phaseDefinition);
@ -1079,43 +1180,21 @@ public class ConfigurationLifecyclesController {
final PhaseDefinition definition final PhaseDefinition definition
) { ) {
final PhaseDefinitionModel model = new PhaseDefinitionModel(); final PhaseDefinitionModel model = new PhaseDefinitionModel();
model.setDefaultDelay(definition.getDefaultDelay()); model.setDefaultDelay(
model.setDefaultDuration(definition.getDefaultDuration()); Duration.fromMinutes(definition.getDefaultDelay())
);
model.setDefaultDuration(
Duration.fromMinutes(definition.getDefaultDuration())
);
model.setDefinitionId(definition.getDefinitionId()); model.setDefinitionId(definition.getDefinitionId());
model.setDescription( model.setDescription(
definition
.getDescription()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
)
);
model.setDisplayDescription(
globalizationHelper globalizationHelper
.getValueFromLocalizedString(definition.getDescription()) .getValueFromLocalizedString(definition.getDescription())
); );
model.setDisplayLabel( model.setLabel(
globalizationHelper globalizationHelper
.getValueFromLocalizedString(definition.getLabel()) .getValueFromLocalizedString(definition.getLabel())
); );
model.setLabel(
definition
.getLabel()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
)
);
return model; return model;
} }

View File

@ -19,8 +19,10 @@ import org.libreccm.workflow.WorkflowRepository;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager; import org.librecms.contentsection.ContentSectionManager;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
@ -136,6 +138,14 @@ public class ConfigurationWorkflowController {
return showWorkflowTemplateNotFound(section, workflowIdentiferParam); return showWorkflowTemplateNotFound(section, workflowIdentiferParam);
} }
final Workflow workflow = workflowResult.get(); final Workflow workflow = workflowResult.get();
selectedWorkflowTemplateModel.setDisplayName(
globalizationHelper.getValueFromLocalizedString(
workflow.getName()
)
);
final List<Locale> availableLocales = globalizationHelper
.getAvailableLocales();
selectedWorkflowTemplateModel.setDescription( selectedWorkflowTemplateModel.setDescription(
workflow workflow
.getDescription() .getDescription()
@ -149,6 +159,18 @@ public class ConfigurationWorkflowController {
) )
) )
); );
final Set<Locale> descriptionLocales = workflow
.getDescription()
.getAvailableLocales();
selectedWorkflowTemplateModel
.setUnusedDescriptionLocales(
availableLocales
.stream()
.filter(locale -> !descriptionLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedWorkflowTemplateModel.setName( selectedWorkflowTemplateModel.setName(
workflow workflow
.getName() .getName()
@ -162,6 +184,18 @@ public class ConfigurationWorkflowController {
) )
) )
); );
final Set<Locale> nameLocales = workflow
.getName()
.getAvailableLocales();
selectedWorkflowTemplateModel
.setUnusedNameLocales(
availableLocales
.stream()
.filter(locale -> !nameLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedWorkflowTemplateModel.setTasks( selectedWorkflowTemplateModel.setTasks(
workflow workflow
.getTasks() .getTasks()
@ -478,6 +512,152 @@ public class ConfigurationWorkflowController {
); );
} }
@GET
@Path("/{workflowIdentifier}/tasks")
@AuthorizationRequired
@Transactional(Transactional.TxType.REQUIRED)
public String showTask(
@PathParam("sectionIdentifier") final String sectionIdentifierParam,
@PathParam("workflowIdentifier") final String workflowIdentiferParam,
@PathParam("taskIdentifier") final String taskIdentifierParam
) {
final Optional<ContentSection> 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<Workflow> workflowResult = findWorkflowTemplate(
section, workflowIdentiferParam
);
if (!workflowResult.isPresent()) {
return showWorkflowTemplateNotFound(section, workflowIdentiferParam);
}
final Workflow workflow = workflowResult.get();
final Optional<Task> taskResult = findTaskTemplate(
workflow, taskIdentifierParam
);
if (!taskResult.isPresent()) {
return showWorkflowTaskTemplateNotFound(
section, workflowIdentiferParam, taskIdentifierParam
);
}
final Task task = taskResult.get();
selectedWorkflowTaskTemplateModel.setTaskId(task.getTaskId());
selectedWorkflowTaskTemplateModel.setUuid(task.getUuid());
selectedWorkflowTaskTemplateModel.setDisplayLabel(
globalizationHelper.getValueFromLocalizedString(
task.getLabel()
)
);
selectedWorkflowTemplateModel.setUuid(workflow.getUuid());
selectedWorkflowTemplateModel.setDisplayName(
globalizationHelper.getValueFromLocalizedString(
workflow.getName()
)
);
final List<Locale> availableLocales = globalizationHelper
.getAvailableLocales();
selectedWorkflowTaskTemplateModel.setLabel(
task
.getLabel()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
)
);
final Set<Locale> labelLocales = task.getLabel().getAvailableLocales();
selectedWorkflowTaskTemplateModel
.setUnusedLabelLocales(
availableLocales
.stream()
.filter(locale -> !labelLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedWorkflowTaskTemplateModel.setDescription(
task
.getDescription()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
)
);
final Set<Locale> descriptionLocales = task
.getDescription()
.getAvailableLocales();
selectedWorkflowTaskTemplateModel.setUnusedDescriptionLocales(
availableLocales
.stream()
.filter(locale -> !descriptionLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
selectedWorkflowTaskTemplateModel.setBlockedTasks(
task
.getBlockedTasks()
.stream()
.map(dependency -> dependency.getBlockedTask())
.map(this::buildWorkflowTaskTemplateListModel)
.collect(Collectors.toList())
);
final List<Task> blockingTasks = task
.getBlockingTasks()
.stream()
.map(dependency -> dependency.getBlockingTask())
.collect(Collectors.toList());
selectedWorkflowTaskTemplateModel.setBlockingTasks(
blockingTasks
.stream()
.map(this::buildWorkflowTaskTemplateListModel)
.collect(Collectors.toList())
);
selectedWorkflowTaskTemplateModel.setNoneBlockingTasks(
workflow
.getTasks()
.stream()
.filter(workflowTask -> !workflowTask.equals(task))
.filter(
workflowTask -> !blockingTasks.contains(workflowTask)
)
.collect(
Collectors.toMap(
workflowTask -> String.format(
"UUID-%s", workflowTask.getUuid()
),
workflowTask -> globalizationHelper
.getValueFromLocalizedString(
workflowTask.getLabel()
)
)
)
);
return "org/librecms/ui/contentsection/configuration/workflow-task.xhtml";
}
@POST @POST
@Path("/{workflowIdentifier}/tasks/@add") @Path("/{workflowIdentifier}/tasks/@add")
@AuthorizationRequired @AuthorizationRequired
@ -869,7 +1049,7 @@ public class ConfigurationWorkflowController {
@POST @POST
@Path( @Path(
"/{workflowIdentifier}/tasks/{taskIdentifier}/blockingTasks/@add") "/{workflowIdentifier}/tasks/{taskIdentifier}/blocking-tasks/@add")
@AuthorizationRequired @AuthorizationRequired
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public String addBlockingTask( public String addBlockingTask(
@ -923,7 +1103,8 @@ public class ConfigurationWorkflowController {
models.put("workflowTemplateIdentifier", workflowIdentiferParam); models.put("workflowTemplateIdentifier", workflowIdentiferParam);
models.put("blockedTaskIdentifier", taskIdentifierParam); models.put("blockedTaskIdentifier", taskIdentifierParam);
models.put("blockingTaskIdentifier", blockingTaskParam); models.put("blockingTaskIdentifier", blockingTaskParam);
return "org/librecms/ui/contentsection/configuration/workflowtask-circular-dependency.xhtml";
return "org/librecms/ui/contentsection/configuration/workflow-task-circular-dependency.xhtml";
} }
return String.format( return String.format(

View File

@ -0,0 +1,62 @@
/*
* 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;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class Duration {
private long days;
private long hours;
private long minutes;
public static Duration fromMinutes(final long value) {
final long days = value / (24 * 60);
final long daysReminder = value % (24 * 60);
final long hours = daysReminder / 60;
final long minutes = daysReminder % 60;
final Duration result = new Duration();
result.setDays(days);
result.setHours(hours);
result.setMinutes(minutes);
return result;
}
public long getDays() {
return days;
}
public void setDays(final long days) {
this.days = days;
}
public long getHours() {
return hours;
}
public void setHours(final long hours) {
this.hours = hours;
}
public long getMinutes() {
return minutes;
}
public void setMinutes(final long minutes) {
this.minutes = minutes;
}
public long toMinutes() {
return days * 24 * 60 + hours * 60 + minutes;
}
}

View File

@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates * To change this template file, choose Tools | Templates
* and open the template in the editor. * and open the template in the editor.
*/ */
package org.librecms.contentsection; package org.librecms.ui.contentsections;
/** /**
* *

View File

@ -5,10 +5,6 @@
*/ */
package org.librecms.ui.contentsections; package org.librecms.ui.contentsections;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -17,17 +13,13 @@ public class PhaseDefinitionModel {
private long definitionId; private long definitionId;
private String displayLabel; private String label;
private Map<String, String> label; private String description;
private String displayDescription; private Duration defaultDelay;
private Map<String, String> description; private Duration defaultDuration;
private long defaultDelay;
private long defaultDuration;
public long getDefinitionId() { public long getDefinitionId() {
return definitionId; return definitionId;
@ -37,51 +29,35 @@ public class PhaseDefinitionModel {
this.definitionId = definitionId; this.definitionId = definitionId;
} }
public String getDisplayLabel() { public String getLabel() {
return displayLabel; return label;
} }
public void setDisplayLabel(final String displayLabel) { public void setLabel(final String label) {
this.displayLabel = displayLabel; this.label = label;
} }
public Map<String, String> getLabel() { public String getDescription() {
return Collections.unmodifiableMap(label); return description;
} }
public void setLabel(final Map<String, String> label) { public void setDescription(final String description) {
this.label = new HashMap<>(label); this.description = description;
} }
public String getDisplayDescription() { public Duration getDefaultDelay() {
return displayDescription;
}
public void setDisplayDescription(final String displayDescription) {
this.displayDescription = displayDescription;
}
public Map<String, String> getDescription() {
return Collections.unmodifiableMap(description);
}
public void setDescription(final Map<String, String> description) {
this.description = new HashMap<>(description);
}
public long getDefaultDelay() {
return defaultDelay; return defaultDelay;
} }
public void setDefaultDelay(final long defaultDelay) { public void setDefaultDelay(final Duration defaultDelay) {
this.defaultDelay = defaultDelay; this.defaultDelay = defaultDelay;
} }
public long getDefaultDuration() { public Duration getDefaultDuration() {
return defaultDuration; return defaultDuration;
} }
public void setDefaultDuration(final long defaultDuration) { public void setDefaultDuration(final Duration defaultDuration) {
this.defaultDuration = defaultDuration; this.defaultDuration = defaultDuration;
} }

View File

@ -24,12 +24,18 @@ public class SelectedLifecycleDefinitionModel {
private String uuid; private String uuid;
private String displayLabel;
private Map<String, String> label; private Map<String, String> label;
private List<String> unusedLabelLocales;
private Map<String, String> description; private Map<String, String> description;
private List<PhaseDefinitionModel> phaseDefinitions; private List<PhaseDefinitionModel> phaseDefinitions;
private List<String> unusedDescriptionLocales;
public Map<String, String> getLabel() { public Map<String, String> getLabel() {
return Collections.unmodifiableMap(label); return Collections.unmodifiableMap(label);
} }
@ -64,4 +70,39 @@ public class SelectedLifecycleDefinitionModel {
this.uuid = uuid; this.uuid = uuid;
} }
public String getDisplayLabel() {
return displayLabel;
}
public void setDisplayLabel(final String displayLabel) {
this.displayLabel = displayLabel;
}
public List<String> getUnusedLabelLocales() {
return Collections.unmodifiableList(unusedLabelLocales);
}
public void setUnusedLabelLocales(final List<String> unusedLabelLocales) {
this.unusedLabelLocales = new ArrayList<>(unusedLabelLocales);
}
public boolean getHasUnusedLabelLocales() {
return !unusedLabelLocales.isEmpty();
}
public List<String> getUnusedDescriptionLocales() {
return Collections.unmodifiableList(unusedDescriptionLocales);
}
public void setUnusedDescriptionLocales(
final List<String> unusedDescriptionLocales
) {
this.unusedDescriptionLocales
= new ArrayList<>(unusedDescriptionLocales);
}
public boolean getHasUnusedDescriptionLocales() {
return !unusedDescriptionLocales.isEmpty();
}
} }

View File

@ -5,8 +5,10 @@
*/ */
package org.librecms.ui.contentsections; package org.librecms.ui.contentsections;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
@ -24,11 +26,17 @@ public class SelectedPhaseDefinitionModel {
private Map<String, String> label; private Map<String, String> label;
private String displayLabel;
private List<String> unusedLabelLocales;
private Map<String, String> description; private Map<String, String> description;
private long defaultDelay; private List<String> unusedDescriptionLocales;
private long defaultDuration; private Duration defaultDelay;
private Duration defaultDuration;
public long getDefinitionId() { public long getDefinitionId() {
return definitionId; return definitionId;
@ -54,20 +62,55 @@ public class SelectedPhaseDefinitionModel {
this.description = new HashMap<>(description); this.description = new HashMap<>(description);
} }
public long getDefaultDelay() { public Duration getDefaultDelay() {
return defaultDelay; return defaultDelay;
} }
public void setDefaultDelay(final long defaultDelay) { public void setDefaultDelay(final Duration defaultDelay) {
this.defaultDelay = defaultDelay; this.defaultDelay = defaultDelay;
} }
public long getDefaultDuration() { public Duration getDefaultDuration() {
return defaultDuration; return defaultDuration;
} }
public void setDefaultDuration(final long defaultDuration) { public void setDefaultDuration(final Duration defaultDuration) {
this.defaultDuration = defaultDuration; this.defaultDuration = defaultDuration;
} }
public List<String> getUnusedLabelLocales() {
return Collections.unmodifiableList(unusedLabelLocales);
}
public void setUnusedLabelLocales(final List<String> unusedLabelLocales) {
this.unusedLabelLocales = new ArrayList<>(unusedLabelLocales);
}
public List<String> getUnusedDescriptionLocales() {
return Collections.unmodifiableList(unusedDescriptionLocales);
}
public void setUnusedDescriptionLocales(
final List<String> unusedDescriptionLocales
) {
this.unusedDescriptionLocales = new ArrayList<>(unusedDescriptionLocales);
}
public boolean getHasUnusedLabelLocales() {
return !unusedLabelLocales.isEmpty();
}
public boolean getHasUnusedDescriptionLocales() {
return !unusedDescriptionLocales.isEmpty();
}
public String getDisplayLabel() {
return displayLabel;
}
public void setDisplayLabel(final String displayLabel) {
this.displayLabel = displayLabel;
}
} }

View File

@ -26,15 +26,23 @@ public class SelectedWorkflowTaskTemplateModel {
private String uuid; private String uuid;
private String displayLabel;
private Map<String, String> label; private Map<String, String> label;
private List<String> unusedLabelLocales;
private Map<String, String> description; private Map<String, String> description;
private List<String> unusedDescriptionLocales;
private List<WorkflowTaskTemplateListModel> blockedTasks; private List<WorkflowTaskTemplateListModel> blockedTasks;
private List<WorkflowTaskTemplateListModel> blockingTasks; private List<WorkflowTaskTemplateListModel> blockingTasks;
public long getTaskId() { private Map<String, String> noneBlockingTasks;
public long getTaskId() {
return taskId; return taskId;
} }
@ -86,5 +94,49 @@ public class SelectedWorkflowTaskTemplateModel {
this.blockingTasks = new ArrayList<>(blockingTasks); this.blockingTasks = new ArrayList<>(blockingTasks);
} }
public List<String> getUnusedLabelLocales() {
return Collections.unmodifiableList(unusedLabelLocales);
}
public void setUnusedLabelLocales(final List<String> unusedLabelLocales) {
this.unusedLabelLocales = new ArrayList<>(unusedLabelLocales);
}
public List<String> getUnusedDescriptionLocales() {
return Collections.unmodifiableList(unusedDescriptionLocales);
}
public void setUnusedDescriptionLocales(
final List<String> unusedDescriptionLocales
) {
this.unusedDescriptionLocales
= new ArrayList<>(unusedDescriptionLocales);
}
public boolean getHasUnusedLabelLocales() {
return !unusedLabelLocales.isEmpty();
}
public boolean getHasUnusedDescriptionLocales() {
return !unusedDescriptionLocales.isEmpty();
}
public String getDisplayLabel() {
return displayLabel;
}
public void setDisplayLabel(final String displayLabel) {
this.displayLabel = displayLabel;
}
public Map<String, String> getNoneBlockingTasks() {
return Collections.unmodifiableMap(noneBlockingTasks);
}
public void setNoneBlockingTasks(
final Map<String, String> noneBlockingTasks
) {
this.noneBlockingTasks = new HashMap<>(noneBlockingTasks);
}
} }

View File

@ -26,10 +26,16 @@ public class SelectedWorkflowTemplateModel {
private String uuid; private String uuid;
private String displayName;
private Map<String, String> name; private Map<String, String> name;
private List<String> unusedNameLocales;
private Map<String, String> description; private Map<String, String> description;
private List<String> unusedDescriptionLocales;
private List<WorkflowTaskTemplateListModel> tasks; private List<WorkflowTaskTemplateListModel> tasks;
public long getWorkflowId() { public long getWorkflowId() {
@ -72,6 +78,40 @@ public class SelectedWorkflowTemplateModel {
this.tasks = new ArrayList<>(tasks); this.tasks = new ArrayList<>(tasks);
} }
public List<String> getUnusedNameLocales() {
return Collections.unmodifiableList(unusedNameLocales);
}
public void setUnusedNameLocales(final List<String> unusedNameLocales) {
this.unusedNameLocales = new ArrayList<>(unusedNameLocales);
}
public List<String> getUnusedDescriptionLocales() {
return Collections.unmodifiableList(unusedDescriptionLocales);
}
public void setUnusedDescriptionLocales(
final List<String> unusedDescriptionLocales
) {
this.unusedDescriptionLocales
= new ArrayList<>(unusedDescriptionLocales);
}
public boolean getHasUnusedNameLocales() {
return !unusedNameLocales.isEmpty();
}
public boolean getHasUnusedDescriptionLocales() {
return !unusedDescriptionLocales.isEmpty();
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(final String displayName) {
this.displayName = displayName;
}
} }

View File

@ -299,7 +299,7 @@
buttonText="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_button.label']}" buttonText="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_button.label']}"
cancelLabel="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_dialog.cancel']}" cancelLabel="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_dialog.cancel']}"
confirmLabel="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_dialog.confirm']}" confirmLabel="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_dialog.confirm']}"
dialogId="documenttype-#{type.uuid}-remove-dialog-title" dialogId="documenttype-#{type.uuid}-remove-dialog"
dialogTitle="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_dialog.title']}" dialogTitle="#{CmsAdminMessages['contentsection.configuration.documenttypes.remove_dialog.title']}"
message="#{CmsAdminMessages.getMessage('contentsection.configuration.documenttypes.remove_dialog.message', [ContentSectionModel.sectionName, type.label])}" message="#{CmsAdminMessages.getMessage('contentsection.configuration.documenttypes.remove_dialog.message', [ContentSectionModel.sectionName, type.label])}"
/> />

View File

@ -0,0 +1,27 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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/content-section/contentsection.xhtml">
<ui:param name="activePage" value="folderBrowser" />
<ui:param name="title" value="#{CmsAdminMessages['contentsection.lifecycle.not_found.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsections.list.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<div class="alert alert-danger" role="alert">
#{CmsAdminMessages.getMessage('contentsection.lifecycle.not_found', [sectionIdentifier, definitionIdentifier])}
</div>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,203 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
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/contentsection/contentsection.xhtml">
<ui:param name="activePage" value="configuration" />
<ui:param name="title"
value="#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration">
#{CmsAdminMessages['contentsection.configuration.title']}
</a>
</li>
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles">
#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}
</a>
</li>
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}">
#{SelectedLifecycleDefinitionModel.displayLabel}
</a>
</li>
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsection.configuration.lifecycles.phases.title']}
</li>
<li aria-current="page" class="breadcrumb-item">
#{SelectedPhaseDefinitionModel.displayLabel}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<ui:include src="configuration-tabs.xhtml">
<ui:param name="activeConfPage" value="lifecycles" />
</ui:include>
<c:if test="#{not empty errors}">
<c:forEach items="#{errors}" var="error">
<div class="alert alert-danger" role="alert">
#{error}
</div>
</c:forEach>
</c:if>
<h1>#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycle.phase_details.title', [SelectedLifecycleDefinitionModel.displayLabel ,SelectedPhaseDefinitionModel.displayLabel])}</h1>
<h2>#{CmsAdminMessages['contentsection.configuration.lifecycle.phase_details.properties']}</h2>
<dl>
<div>
<dt>
#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.default_delay.label']}
</dt>
<dd>
#{SelectedPhaseDefinitionModel.defaultDelay}
</dd>
</div>
<div>
<dt>
#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.default_duration.label']}
</dt>
<dd>
#{SelectedPhaseDefinitionModel.defaultDuration}
</dd>
</div>
</dl>
<button class="btn btn-primary"
data-target="#edit-phase-properties-dialog"
data-toggle="modal"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phase_details.properties.edit']}
</span>
</button>
<div aria-hidden="true"
aria-labelledby="edit-phase-properties-dialog-title"
class="modal fade"
id="edit-phase-properties-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/@edit"
class="modal-content"
method="post">
<div class="modal-header">
<h3 class="modal-title"
id="edit-phase-properties-dialog-title"
>
#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycle.phase_details.properties.edit.title', [SelectedLifecycleDefinitionModel.displayLabel, SelectedPhaseDefinitionModel.displayLabel])}
</h3>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phase_details.properties.edit.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-content">
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.help']}"
inputId="add-phase-dialog-default-delay"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.label']}"
name="defaultDelay"
value="#{SelectedPhaseDefinitionModel.defaultDelay}"
/>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help']}"
inputId="add-phase-dialog-default-duration"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label']}"
name="defaultDuration"
value="#{SelectedPhaseDefinitionModel.defaultDuration}"
/>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phase_details.properties.edit.close']}
</button>
<button class="btn btn-success"
type="submit">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phase_details.properties.edit.submit']}
</button>
</div>
</form>
</div>
</div>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.locale.label']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/label/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/label/@edit"
editorId="lifecycle-label"
hasUnusedLocales="#{SelectedLifecycleDefinitionModel.hasUnusedLabelLocales}"
objectIdentifier="ID-#{SelectedPhaseDefinitionModel.definitionId}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/label/@remove"
title="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.label.title']}"
unusedLocales="#{SelectedLifecycleDefinitionModel.unusedLabelLocales}"
values="#{SelectedLifecycleDefinitionModel.label}"
/>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.locale.description']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.add.value.description']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/description/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.edit.value.description']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/description/@edit"
editorId="lifecycle-description"
hasUnusedLocales="#{SelectedLifecycleDefinitionModel.hasUnusedLabelLocales}"
objectIdentifier="ID-#{SelectedPhaseDefinitionModel.definitionId}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{SelectedPhaseDefinitionModel.definitionId}/description/@remove"
title="#{CmsAdminMessages['contentsection.configuration.lifecycles.phase_details.description.title']}"
unusedLocales="#{SelectedLifecycleDefinitionModel.unusedLabelLocales}"
values="#{SelectedLifecycleDefinitionModel.description}"
/>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,308 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
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/contentsection/contentsection.xhtml">
<ui:param name="activePage" value="configuration" />
<ui:param name="title"
value="#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration">
#{CmsAdminMessages['contentsection.configuration.title']}
</a>
</li>
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles">
#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}
</a>
</li>
<li aria-current="page" class="breadcrumb-item">
#{SelectedLifecycleDefinitionModel.displayLabel}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<ui:include src="configuration-tabs.xhtml">
<ui:param name="activeConfPage" value="lifecycles" />
</ui:include>
<c:if test="#{not empty errors}">
<c:forEach items="#{errors}" var="error">
<div class="alert alert-danger" role="alert">
#{error}
</div>
</c:forEach>
</c:if>
<h1>#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycles.lifecycle_details.title', [SelectedLifecycleDefinitionModel.displayLabel])}</h1>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.locale.label']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/label/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/label/@edit"
editorId="lifecycle-label"
hasUnusedLocales="#{SelectedLifecycleDefinitionModel.hasUnusedLabelLocales}"
objectIdentifier="UUID-#{SelectedLifecycleDefinitionModel.uuid}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/label/@remove"
title="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.label.title']}"
unusedLocales="#{SelectedLifecycleDefinitionModel.unusedLabelLocales}"
values="#{SelectedLifecycleDefinitionModel.label}"
/>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.locale.description']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.add.value.description']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/description/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.edit.value.description']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/description/@edit"
editorId="lifecycle-description"
hasUnusedLocales="#{SelectedLifecycleDefinitionModel.hasUnusedLabelLocales}"
objectIdentifier="UUID-#{SelectedLifecycleDefinitionModel.uuid}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/description/@remove"
title="#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.description.title']}"
unusedLocales="#{SelectedLifecycleDefinitionModel.unusedLabelLocales}"
useTextarea="true"
values="#{SelectedLifecycleDefinitionModel.description}"
/>
<h2>#{CmsAdminMessages['contentsection.configuration.lifecycles.lifecycle_details.phases.title']}</h2>
<div class="mb-2">
<div class="text-right">
<button class="btn btn-primary"
data-toggle="modal"
data-target="#add-phase-dialog"
type="button">
<bootstrap:svgIcon icon="plus-circle" />
<span>#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add']}</span>
</button>
</div>
<div aria-hidden="true"
aria-labelledby="add-phase-dialog-title"
class="modal fade"
id="add-phase-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/@add"
class="modal-content"
method="post">
<div class="modal-header">
<h2 class="modal-title"
id="add-phase-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycle.phases.add.dialog.title', [ContentSectionModel.sectionName, SelectedLifecycleDefinitionModel.displayLabel])}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<bootstrap:formGroupText
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.label.help']}"
inputId="add-phase-dialog-label"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.label.label']}"
name="label"
/>
<fieldset class="form-group row">
<legend>#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.label']}</legend>
<small class="text-muted">#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.help']}</small>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.days.help']}"
inputId="add-phase-dialog-default-delay-days"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.days.label']}"
name="defaultDelayDays"
value="0"
/>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.hours.help']}"
inputId="add-phase-dialog-default-delay-hours"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.hours.label']}"
name="defaultDelayHours"
value="0"
/>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.minutes.help']}"
inputId="add-phase-dialog-default-delay-minutes"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_delay.minutes.label']}"
name="defaultDelayDays"
value="0"
/>
</fieldset>
<fieldset>
<legend>#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label']}</legend>
<small class="text-muted">#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help']}</small>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.days']}"
inputId="add-phase-dialog-default-duration-days"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.days']}"
name="defaultDurationDays"
value="0"
/>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.hours']}"
inputId="add-phase-dialog-default-duration-hours"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.hours']}"
name="defaultDurationHours"
value="0"
/>
<bootstrap:formGroupNumber
help="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.minutes']}"
inputId="add-phase-dialog-default-duration-minutes"
label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.minutes']}"
name="defaultDurationMinutes"
value="0"
/>
</fieldset>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.close']}
</button>
<button class="btn btn-primary"
type="submit" >
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.add.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
</div>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.table.cols.label']}
</th>
<th scope="col">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.table.cols.default_delay']}
</th>
<th scope="col">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.table.cols.default_duration']}
</th>
<th colspan="2">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.table.cols.actions']}
</th>
</tr>
</thead>
<tbody>
<c:forEach items="#{SelectedLifecycleDefinitionModel.phaseDefinitions}"
var="phaseDef">
<tr>
<td>
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{phaseDef.definitionId}">
#{phaseDef.label}
</a>
</td>
<td>#{phaseDef.defaultDelay}</td>
<td>#{phaseDef.defaultDuration}</td>
<td>
<button class="btn btn-info"
data-toggle="modal"
data-target="#phase-#{phaseDef.definitionId}-info-dialog"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.table.info_button.label']}
</span>
</button>
<div aria-hidden="true"
aria-labelledby="phase-#{phaseDef.definitionId}-info-dialog-title"
class="modal fade"
id="phase-#{phaseDef.definitionId}-info-dialog"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title"
id="phase-#{phaseDef.definitionId}-info-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycle.phases.info.dialog.title', [ContentSectionModel.sectionName, SelectedLifecycleDefinitionModel.label, phaseDef.label])}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.info.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<p>
#{phaseDef.description}
</p>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.info.dialog.close']}
</button>
</div>
</div>
</div>
</div>
</td>
<td>
<libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{SelectedLifecycleDefinitionModel.uuid}/phases/ID-#{phaseDef.definitionId}/@remove"
buttonText="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.remove.button.label']}"
cancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.remove.dialog.close']}"
confirmLabel="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.remove.dialog.confirm']}"
dialogId="phase-#{phaseDef.definitionId}-remove-dialog"
dialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycle.phases.remove.dialog.title']}"
message="#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycle.phases.remove.dialog.message', [ContentSectionModel.sectionName, SelectedLifecycleDefinitionModel.displayLabel, phaseDef.label])}"
/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,28 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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/content-section/contentsection.xhtml">
<ui:param name="activePage" value="folderBrowser" />
<ui:param name="title" value="#{CmsAdminMessages['contentsection.lifecycle_phase.not_found.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsections.list.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<div class="alert alert-danger" role="alert">
#{CmsAdminMessages.getMessage('contentsection.lifecycle_phase.not_found', [sectionIdentifier, lifecycleDefinitionIdentifier, phaseDefinitionIdentifier])}
</div>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,179 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
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/contentsection/contentsection.xhtml">
<ui:param name="activePage" value="configuration" />
<ui:param name="title"
value="#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration">
#{CmsAdminMessages['contentsection.configuration.title']}
</a>
</li>
<li aria-current="page" class="breadcrumb-item">
#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<ui:include src="configuration-tabs.xhtml">
<ui:param name="activeConfPage" value="lifecycles" />
</ui:include>
<h1>#{CmsAdminMessages['contentsection.configuration.lifecycles.title']}</h1>
<c:if test="#{not empty errors}">
<c:forEach items="#{errors}" var="error">
<div class="alert alert-danger" role="alert">
#{error}
</div>
</c:forEach>
</c:if>
<div class="mb-2">
<div class="text-right">
<button class="btn btn-primary"
data-toggle="modal"
data-target="#add-lifecycle-dialog"
type="button">
<bootstrap:svgIcon icon="plus-circle" />
<span>#{CmsAdminMessages['contentsection.configuration.lifecycles.add']}</span>
</button>
</div>
<div aria-hidden="true"
aria-labelledby="add-lifecycle-dialog-title"
class="modal fade"
id="add-lifecycle-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/@add"
class="modal-content"
method="post">
<div class="modal-header">
<h2 class="modal-title"
id="add-lifecycle-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycles.add.dialog.title', [ContentSectionModel.sectionName])}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.lifecycles.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<bootstrap:formGroupText
help="#{CmsAdminMessages['contentsection.configuration.lifecycles.add.dialog.label.help']}"
inputId="add-lifecycle-dialog-label"
label="#{CmsAdminMessages['contentsection.configuration.lifecycles.add.dialog.label.label']}"
name="label" />
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.lifecycles.add.dialog.close']}
</button>
<button class="btn btn-primary"
type="submit" >
#{CmsAdminMessages['contentsection.configuration.lifecycles.add.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
</div>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">
#{CmsAdminMessages['contentsection.configuration.lifecycles.table.cols.label']}
</th>
<th colspan="2">
#{CmsAdminMessages['contentsection.configuration.lifecycles.table.cols.actions']}
</th>
</tr>
</thead>
<tbody>
<c:forEach items="#{lifecycleDefinitions}"
var="lifecycleDef">
<tr>
<td>
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{lifecycleDef.uuid}">
#{lifecycleDef.label}
</a>
</td>
<td>
<button
class="btn btn-info"
data-toggle="modal"
data-target="#lifecycle-#{lifecycleDef.uuid}-info-dialog"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">
#{CmsAdminMessages['contentsection.configuration.lifecycles.table.info_button.label']}
</span>
</button>
<div aria-hidden="true"
aria-labelledby="lifecycle-#{lifecycleDef.uuid}-info-dialog-title"
class="modal fade"
id="lifecycle-#{lifecycleDef.uuid}-info-dialog"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 id="lifecycle-#{lifecycleDef.uuid}-info-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycles.info.dialog.title', lifecycleDef.label)}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.lifecycles.info.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<p>
#{lifecycleDef.description}
</p>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.lifecycles.info.dialog.close']}
</button>
</div>
</div>
</div>
</div>
</td>
<td>
<libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/lifecycles/UUID-#{lifecycleDef.uuid}/@delete"
buttonText="#{CmsAdminMessages['contentsection.configuration.lifecycles.delete_button.label']}"
cancelLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.delete_dialog.cancel']}"
confirmLabel="#{CmsAdminMessages['contentsection.configuration.lifecycles.delete_dialog.confirm']}"
dialogId="lifecycles-#{lifecycleDef.uuid}-delete-dialog"
dialogTitle="#{CmsAdminMessages['contentsection.configuration.lifecycles.delete_dialog.title']}"
message="#{CmsAdminMessages.getMessage('contentsection.configuration.lifecycles.delete_dialog.message', [ContentSectionModel.sectionName, lifecycleDef.label])}"
/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,28 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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/content-section/contentsection.xhtml">
<ui:param name="activePage" value="folderBrowser" />
<ui:param name="title" value="#{CmsAdminMessages['contentsection.workflow.not_found.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsections.list.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<div class="alert alert-danger" role="alert">
#{CmsAdminMessages.getMessage('contentsection.workflow.not_found', [sectionIdentifier, workflowTemplateIdentifier])}
</div>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,28 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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/content-section/contentsection.xhtml">
<ui:param name="activePage" value="folderBrowser" />
<ui:param name="title" value="#{CmsAdminMessages['contentsection.workflow.circular_dependency.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsections.list.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<div class="alert alert-danger" role="alert">
#{CmsAdminMessages.getMessage('contentsection.workflow.tasks.circular_dependency', [sectionIdentifier, workflowTemplateIdentifier, blockedTaskIdentifier, blockingTaskIdentifier])}
</div>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,29 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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/content-section/contentsection.xhtml">
<ui:param name="activePage" value="folderBrowser" />
<ui:param name="title" value="#{CmsAdminMessages['contentsection.workflow_task.not_found.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsections.list.label']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<div class="alert alert-danger" role="alert">
#{CmsAdminMessages.getMessage('contentsection.workflow_tasks.not_found', [sectionIdentifier, workflowTemplateIdentifier, workflowTaskTemplateIdentifier])}
</div>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,180 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
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/contentsection/contentsection.xhtml">
<ui:param name="activePage" value="configuration" />
<ui:param name="title"
value="#{CmsAdminMessages['contentsection.configuration.workflows.tasks.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration">
#{CmsAdminMessages['contentsection.configuration.title']}
</a>
</li>
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows">
#{CmsAdminMessages['contentsection.configuration.workflows.title']}
</a>
</li>
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}">
#{SelectedWorkflowTemplateModel.displayName}
</a>
</li>
<li class="breadcrumb-item">
#{CmsAdminMessages['contentsection.configuration.workflows.tasks.title']}
</li>
<li aria-current="page" class="breadcrumb-item">
#{SelectedWorkflowTaskTemplateModel.displayLabel}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<ui:include src="configuration-tabs.xhtml">
<ui:param name="activeConfPage" value="workflows" />
</ui:include>
<c:if test="#{not empty errors}">
<c:forEach items="#{errors}" var="error">
<div class="alert alert-danger" role="alert">
#{error}
</div>
</c:forEach>
</c:if>
<h1>#{CmsAdminMessages.getMessage('contentsection.configuration.workflow.task_details.title', [SelectedWorkflowTemplateModel.displayName ,SelectedWorkflowTaskTemplateModel.displayLabel])}</h1>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.locale.label']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/label/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/label/@edit"
editorId="workflow-label"
hasUnusedLocales="#{SelectedWorkflowTaskTemplateModel.hasUnusedLabelLocales}"
objectIdentifier="ID-#{SelectedPhaseDefinitionModel.definitionId}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/label/@remove"
title="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.label.title']}"
unusedLocales="#{SelectedWorkflowTaskTemplateModel.unusedLabelLocales}"
values="#{SelectedWorkflowTaskTemplateModel.label}"
/>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.locale.description']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/description/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/description/@edit"
editorId="workflow-description"
hasUnusedLocales="#{SelectedWorkflowTaskTemplateModel.hasUnusedLabelLocales}"
objectIdentifier="ID-#{SelectedPhaseDefinitionModel.definitionId}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/description/@remove"
title="#{CmsAdminMessages['contentsection.configuration.workflows.task_details.description.title']}"
unusedLocales="#{SelectedWorkflowTaskTemplateModel.unusedLabelLocales}"
values="#{SelectedWorkflowTaskTemplateModel.description}"
/>
<h2>#{CmsAdminMessages['contentsection.configuration.workflows.task_details.blocking_tasks.title']}</h2>
<div class="mb-2">
<div class="text-right">
<button class="btn btn-primary"
data-toggle="modal"
data-target="#add-blocking-task-dialog"
type="button">
<bootstrap:svgIcon icon="plus-circle" />
<span>#{CmsAdminMessages['contentsection.configuration.workflows.task_details.blocking_tasks.add']}</span>
</button>
</div>
<div aria-hidden="true"
aria-labelledby="add-blocking-task-dialog-title"
class="modal fade"
id="add-blocking-task-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{SelectedWorkflowTaskTemplateModel.uuid}/blocking-tasks/@add"
class="modal-content"
method="post">
<div class="modal-header">
<h3 class="modal-title"
id="add-blocking-task-dialog-title">
#{CmsAdminMessages['contentsection.configuration.workflows.task_details.blocking_tasks.add.dialog.title']}
</h3>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-content">
<bootstrap:formGroupSelect
help="#{CmsAdminMessages['contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.task_select.help']}"
inputId="add-blocking-task-dialog-task-select"
label="#{CmsAdminMessages['contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.task_select.label']}"
name="blockingTask"
options="#{SelectedWorkflowTaskTemplateModel.noneBlockingTasks}"
/>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.close']}
</button>
<button class="btn btn-primary"
type="submit" >
#{CmsAdminMessages['contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,252 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
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/contentsection/contentsection.xhtml">
<ui:param name="activePage" value="configuration" />
<ui:param name="title"
value="#{CmsAdminMessages['contentsection.configuration.workflows.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration">
#{CmsAdminMessages['contentsection.configuration.title']}
</a>
</li>
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows">
#{CmsAdminMessages['contentsection.configuration.workflows.title']}
</a>
</li>
<li aria-current="page" class="breadcrumb-item">
#{SelectedWorkflowTemplateModel.displayName}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<ui:include src="configuration-tabs.xhtml">
<ui:param name="activeConfPage" value="workflows" />
</ui:include>
<c:if test="#{not empty errors}">
<c:forEach items="#{errors}" var="error">
<div class="alert alert-danger" role="alert">
#{error}
</div>
</c:forEach>
</c:if>
<h1>#{CmsAdminMessages.getMessage('contentsection.configuration.workflows.workflow_details.title', [SelectedWorkflowTemplateModel.displayName])}</h1>
</div>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.locale.label']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/label/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/label/@edit"
editorId="workflow-label"
hasUnusedLocales="#{SelectedWorkflowTemplateModel.hasUnusedNameLocales}"
objectIdentifier="UUID-#{SelectedWorkflowTemplateModel.uuid}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/label/@remove"
title="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.name.title']}"
unusedLocales="#{SelectedWorkflowTemplateModel.unusedNameLocales}"
values="#{SelectedWorkflowTemplateModel.label}"
/>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.button']}"
addDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.locale.label']}"
addDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.locale.add.submit']}"
addDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.title']}"
addDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.value.help']}"
addDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/description/@add"
editButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.edit.button']}"
editDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.edit.cancel']}"
editDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.edit.submit']}"
editDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.edit.title']}"
editDialogValueHelp="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.edit.value.help']}"
editDialogValueLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.edit.value.description']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/description/@edit"
editorId="workflow-description"
hasUnusedLocales="#{SelectedWorkflowTemplateModel.hasUnusedLabelLocales}"
objectIdentifier="UUID-#{SelectedWorkflowTemplateModel.uuid}"
removeButtonLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.remove.button']}"
removeDialogCancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.remove.cancel']}"
removeDialogSubmitLabel="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.remove.submit']}"
removeDialogText="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.remove.text']}"
removeDialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/description/@remove"
title="#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.description.title']}"
unusedLocales="#{SelectedWorkflowTemplateModel.unusedLabelLocales}"
useTextarea="true"
values="#{SelectedWorkflowTemplateModel.description}"
/>
<h2>#{CmsAdminMessages['contentsection.configuration.workflows.workflow_details.tasks.title']}</h2>
<div class="mb-2">
<div class="text-right">
<button class="btn btn-primary"
data-toggle="modal"
data-target="#add-task-dialog"
type="button">
<bootstrap:svgIcon icon="plus-circle" />
<span>#{CmsAdminMessages['contentsection.configuration.workflow.tasks.add']}</span>
</button>
</div>
<div aria-hidden="true"
aria-labelledby="add-task-dialog-title"
class="modal fade"
id="add-task-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/@add"
class="modal-content"
method="post">
<div class="modal-header">
<h2 class="modal-title"
id="add-task-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.workflow.tasks.add.dialog.title', [ContentSectionModel.sectionName, SelectedWorkflowTemplateModel.displayName])}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<bootstrap:formGroupText
help="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.add.dialog.label.help']}"
inputId="add-task-dialog-label"
label="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.add.dialog.label.label']}"
name="label"
/>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.workflow.tasks.add.dialog.close']}
</button>
<button class="btn btn-primary"
type="submit" >
#{CmsAdminMessages['contentsection.configuration.workflow.tasks.add.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">
#{CmsAdminMessages['contentsection.configuration.workflow.tasks.table.cols.label']}
</th>
<th colspan="2">
#{CmsAdminMessages['contentsection.configuration.workflow.tasks.table.cols.actions']}
</th>
</tr>
</thead>
<tbody>
<c:forEach items="#{SelectedWorkflowTemplateModel.tasks}"
var="task">
<tr>
<td>
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{task.uuid}">
#{task.label}
</a>
</td>
<td>
<button class="btn btn-info"
data-toggle="modal"
data-target="#task-#{task.uuid}-info-dialog"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">
#{CmsAdminMessages['contentsection.configuration.workflow.tasks.table.info_button.label']}
</span>
</button>
<div aria-hidden="true"
aria-labelledby="task-#{task.uuid}-info-dialog-title"
class="modal fade"
id="task-#{task.uuid}-info-dialog"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title"
id="task-#{task.uuid}-info-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.workflow.tasks.info.dialog.title', [ContentSectionModel.sectionName, SelectedWorkflowTemplateModel.label, task.label])}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.info.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<p>
#{task.description}
</p>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.workflow.tasks.info.dialog.close']}
</button>
</div>
</div>
</div>
</div>
</td>
<td>
<libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{SelectedWorkflowTemplateModel.uuid}/tasks/UUID-#{task.uuid}/@remove"
buttonText="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.remove.button.label']}"
cancelLabel="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.remove.dialog.close']}"
confirmLabel="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.remove.dialog.confirm']}"
dialogId="task-#{task.definitionId}-remove-dialog"
dialogTitle="#{CmsAdminMessages['contentsection.configuration.workflow.tasks.remove.dialog.title']}"
message="#{CmsAdminMessages.getMessage('contentsection.configuration.workflow.tasks.remove.dialog.message', [ContentSectionModel.sectionName, SelectedWorkflowTemplateModel.displayName, task.label])}"
/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -0,0 +1,178 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
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/contentsection/contentsection.xhtml">
<ui:param name="activePage" value="configuration" />
<ui:param name="title"
value="#{CmsAdminMessages['contentsection.configuration.workflows.title']}" />
<ui:define name="breadcrumb">
<li class="breadcrumb-item">
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration">
#{CmsAdminMessages['contentsection.configuration.title']}
</a>
</li>
<li aria-current="page" class="breadcrumb-item">
#{CmsAdminMessages['contentsection.configuration.workflows.title']}
</li>
</ui:define>
<ui:define name="main">
<div class="container">
<ui:include src="configuration-tabs.xhtml">
<ui:param name="activeConfPage" value="workflows" />
</ui:include>
<h1>#{CmsAdminMessages['contentsection.configuration.workflows.title']}</h1>
<c:if test="#{not empty errors}">
<c:forEach items="#{errors}" var="error">
<div class="alert alert-danger" role="alert">
#{error}
</div>
</c:forEach>
</c:if>
<div class="mb-2">
<div class="text-right">
<button class="btn btn-primary"
data-toggle="modal"
data-target="#add-workflow-dialog"
type="button">
<bootstrap:svgIcon icon="plus-circle" />
<span>#{CmsAdminMessages['contentsection.configuration.workflows.add']}</span>
</button>
</div>
<div aria-hidden="true"
aria-labelledby="add-workflow-dialog-title"
class="modal fade"
id="add-workflow-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/@add"
class="modal-content"
method="post">
<div class="modal-header">
<h2 class="modal-title"
id="add-workflow-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.workflows.add.dialog.title', [ContentSectionModel.sectionName])}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.workflows.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<bootstrap:formGroupText
help="#{CmsAdminMessages['contentsection.configuration.workflows.add.dialog.label.help']}"
inputId="add-workflow-dialog-label"
label="#{CmsAdminMessages['contentsection.configuration.workflows.add.dialog.label.label']}"
name="label" />
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.workflows.add.dialog.close']}
</button>
<button class="btn btn-primary"
type="submit" >
#{CmsAdminMessages['contentsection.configuration.workflows.add.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
</div>
<table class="table table-hover">
<thead>
<tr>
<th scope="col">
#{CmsAdminMessages['contentsection.configuration.workflows.table.cols.name']}
</th>
<th colspan="2">
#{CmsAdminMessages['contentsection.configuration.workflows.table.cols.actions']}
</th>
</tr>
</thead>
<tbody>
<c:forEach items="#{workflowTemplates}"
var="workflowTemplate">
<tr>
<td>
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{workflowTemplate.uuid}">
#{workflowTemplate.name}
</a>
</td>
<td>
<button
class="btn btn-info"
data-toggle="modal"
data-target="#workflow-#{workflowTemplate.uuid}-info-dialog"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">
#{CmsAdminMessages['contentsection.configuration.workflows.table.info_button.label']}
</span>
</button>
<div aria-hidden="true"
aria-labelledby="workflow-#{workflowTemplate.uuid}-info-dialog-title"
class="modal fade"
id="workflow-#{workflowTemplate.uuid}-info-dialog"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 id="workflow-#{workflowTemplate.uuid}-info-dialog-title">
#{CmsAdminMessages.getMessage('contentsection.configuration.workflows.info.dialog.title', workflowTemplate.name)}
</h2>
<button aria-label="#{CmsAdminMessages['contentsection.configuration.workflows.info.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<p>
#{workflowTemplate.description}
</p>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsAdminMessages['contentsection.configuration.workflows.info.dialog.close']}
</button>
</div>
</div>
</div>
</div>
</td>
<td>
<libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/configuration/workflows/UUID-#{workflowTemplate.uuid}/@delete"
buttonText="#{CmsAdminMessages['contentsection.configuration.workflows.delete_button.label']}"
cancelLabel="#{CmsAdminMessages['contentsection.configuration.workflows.delete_dialog.cancel']}"
confirmLabel="#{CmsAdminMessages['contentsection.configuration.workflows.delete_dialog.confirm']}"
dialogId="workflows-#{workflowTemplate.uuid}-delete-dialog"
dialogTitle="#{CmsAdminMessages['contentsection.configuration.workflows.delete_dialog.title']}"
message="#{CmsAdminMessages.getMessage('contentsection.configuration.workflows.delete_dialog.message', [ContentSectionModel.sectionName, workflowTemplate.name])}"
/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</ui:define>
</ui:composition>
</html>

View File

@ -424,3 +424,269 @@ contentsection.configuration.documenttypes.remove_dialog.cancel=Cancel
contentsection.configuration.documenttypes.remove_dialog.confirm=Remove Document Type contentsection.configuration.documenttypes.remove_dialog.confirm=Remove Document Type
contentsection.configuration.documenttypes.remove_dialog.title=Confirm Document Type removal contentsection.configuration.documenttypes.remove_dialog.title=Confirm Document Type removal
contentsection.configuration.documenttypes.remove_dialog.message=Are you sure to remove the document type {1} from content section {0}? contentsection.configuration.documenttypes.remove_dialog.message=Are you sure to remove the document type {1} from content section {0}?
contentsection.configuration.lifecycles.add=Add lifecycle definition
contentsection.configuration.lifecycles.add.dialog.title=Add a lifecycle definition to content section {0}
'contentsection.configuration.lifecycles.add.dialog.close=Cancel
contentsection.configuration.lifecycles.add.dialog.label.help=Label for the new lifecycle definition
contentsection.configuration.lifecycles.add.dialog.label.label=Label
contentsection.configuration.lifecycles.add.dialog.submit=Add lifecycle definition
contentsection.configuration.lifecycles.table.cols.label=Label
contentsection.configuration.lifecycles.table.cols.actions=Actions
contentsection.configuration.lifecycles.table.info_button.label=Show description
contentsection.configuration.lifecycles.info.dialog.title=Description of lifecycle definition {0}
contentsection.configuration.lifecycles.info.dialog.close=Close
contentsection.configuration.lifecycles.delete_button.label=Delete
contentsection.configuration.lifecycles.delete_dialog.cancel=Cancel
contentsection.configuration.lifecycles.delete_dialog.confirm=Delete lifecycle definition
'contentsection.configuration.lifecycles.delete_dialog.title=Confirm lifecycle definition deletion
contentsection.configuration.lifecycles.delete_dialog.message=Are your sure to delete the lifecycle definition {1} for Content Section {0}?
contentsection.configuration.lifecycles.lifecycle_details.title=Details of Lifecycle Definition {0}
contentsection.configuration.lifecycles.lifecycle_details.label.add.button=Add localized label
contentsection.configuration.lifecycles.lifecycle_details.label.add.cancel=Cancel
contentsection.configuration.lifecycles.lifecycle_details.label.add.locale.help=Language of label
contentsection.configuration.lifecycles.lifecycle_details.label.add.locale.label=Locale
contentsection.configuration.lifecycles.lifecycle_details.label.locale.add.submit=Add label
contentsection.configuration.lifecycles.lifecycle_details.label.add.title=Add localized label
contentsection.configuration.lifecycles.lifecycle_details.label.add.value.help=The localized label
contentsection.configuration.lifecycles.lifecycle_details.label.add.value.label=Label
contentsection.configuration.lifecycles.lifecycle_details.label.edit.button=Edit
contentsection.configuration.lifecycles.lifecycle_details.label.edit.cancel=Cancel
contentsection.configuration.lifecycles.lifecycle_details.label.edit.submit=Save
contentsection.configuration.lifecycles.lifecycle_details.label.edit.title=Edit localized label
contentsection.configuration.lifecycles.lifecycle_details.label.edit.value.help=The localized label
contentsection.configuration.lifecycles.lifecycle_details.label.edit.value.label=Label
contentsection.configuration.lifecycles.lifecycle_details.label.remove.button=Remove
contentsection.configuration.lifecycles.lifecycle_details.label.remove.cancel=Cancel
contentsection.configuration.lifecycles.lifecycle_details.label.remove.submit=Remove
contentsection.configuration.lifecycles.lifecycle_details.label.remove.text=Are you sure to remove this localized label?
contentsection.configuration.lifecycles.lifecycle_details.label.remove.title=Confirm localized label removal
contentsection.configuration.lifecycles.lifecycle_details.label.title=Label
contentsection.configuration.lifecycles.lifecycle_details.description.add.button=Add localized description
contentsection.configuration.lifecycles.lifecycle_details.description.add.cancel=Cancel
contentsection.configuration.lifecycles.lifecycle_details.description.add.locale.help=The locale of the localized description
contentsection.configuration.lifecycles.lifecycle_details.description.add.locale.description=Locale
contentsection.configuration.lifecycles.lifecycle_details.description.locale.add.submit=Add
contentsection.configuration.lifecycles.lifecycle_details.description.add.title=Add localized description
contentsection.configuration.lifecycles.lifecycle_details.description.add.value.help=The localized description
contentsection.configuration.lifecycles.lifecycle_details.description.add.value.description=Description
contentsection.configuration.lifecycles.lifecycle_details.description.edit.button=Edit
contentsection.configuration.lifecycles.lifecycle_details.description.edit.cancel=Cancel
contentsection.configuration.lifecycles.lifecycle_details.description.edit.submit=Save
contentsection.configuration.lifecycles.lifecycle_details.description.edit.title=Edit localized description
contentsection.configuration.lifecycles.lifecycle_details.description.edit.value.help=The localized description
contentsection.configuration.lifecycles.lifecycle_details.description.edit.value.description=Description
contentsection.configuration.lifecycles.lifecycle_details.description.remove.button=Remove
contentsection.configuration.lifecycles.lifecycle_details.description.remove.cancel=Cancel
contentsection.configuration.lifecycles.lifecycle_details.description.remove.submit=Remove
contentsection.configuration.lifecycles.lifecycle_details.description.remove.text=Are your sure to remove this localized description?
contentsection.configuration.lifecycles.lifecycle_details.description.remove.title=Confirm localized description removal
contentsection.configuration.lifecycles.lifecycle_details.description.title=Description
contentsection.configuration.lifecycle.phases.add=Add a new phase definition
contentsection.configuration.lifecycle.phases.add.dialog.title=Add a phase definition to lifecycle definition {1} of content section {0}
contentsection.configuration.lifecycle.phases.add.dialog.close=Abbrechen
contentsection.configuration.lifecycle.phases.add.dialog.label.help=The label of the new phase definition
contentsection.configuration.lifecycle.phases.add.dialog.label.label=Label
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.help=Default value for delayed start
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.label=Default delay
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help=Default value for the duration of the phase. 0 means that the phase lasts forever.
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label=Default duration
contentsection.configuration.lifecycle.phases.add.dialog.submit=Add phase definition
contentsection.configuration.lifecycle.phases.table.cols.label=Label
contentsection.configuration.lifecycle.phases.table.cols.default_delay=Default Delay
contentsection.configuration.lifecycle.phases.table.cols.default_duration=Default duration
contentsection.configuration.lifecycle.phases.table.cols.actions=Actions
contentsection.configuration.lifecycle.phases.table.info_button.label=Show description
contentsection.configuration.lifecycle.phases.info.dialog.title=Description of phase definition {2} of lifecycle definition {1} of Content Section {0}
contentsection.configuration.lifecycle.phases.info.dialog.close=Close
contentsection.configuration.lifecycle.phases.remove.button.label=Delete
contentsection.configuration.lifecycle.phases.remove.dialog.close=Cancel
contentsection.configuration.lifecycle.phases.remove.dialog.confirm=Delete
contentsection.configuration.lifecycle.phases.remove.dialog.title=Confirm phase definition deletion
contentsection.configuration.lifecycle.phases.remove.dialog.message=Are you sure to delete the phase definition {2} of the lifecycle definition {1} of the Content Section {0}?
contentsection.configuration.lifecycle.phase_details.title=Details Phase Definition {1} of Lifecycle Definition {0}
contentsection.configuration.lifecycle.phase_details.properties=Properties
contentsection.configuration.lifecycles.phase_details.default_delay.label=Default Delay
contentsection.configuration.lifecycles.phase_details.default_duration.label=Default duration
contentsection.configuration.lifecycle.phase_details.properties.edit=Edit Phase Definition Properties
contentsection.configuration.lifecycle.phase_details.properties.edit.title=Edit properties of phase definition {2} of lifecycle definition {1} of content section {0}
contentsection.configuration.lifecycle.phase_details.properties.edit.close=Cancel
contentsection.configuration.lifecycle.phase_details.properties.edit.submit=Save
contentsection.configuration.lifecycles.phase_details.label.add.button=Add localized label
contentsection.configuration.lifecycles.phase_details.label.add.cancel=Cancel
contentsection.configuration.lifecycles.phase_details.label.add.locale.help=The locale of the localized label
contentsection.configuration.lifecycles.phase_details.label.add.locale.label=Locale
contentsection.configuration.lifecycles.phase_details.label.locale.add.submit=Add
contentsection.configuration.lifecycles.phase_details.label.add.title=Add localized label
contentsection.configuration.lifecycles.phase_details.label.add.value.help=The localized label
contentsection.configuration.lifecycles.phase_details.label.add.value.label=Label
contentsection.configuration.lifecycles.phase_details.label.edit.button=Edit
contentsection.configuration.lifecycles.phase_details.label.edit.cancel=Cancel
contentsection.configuration.lifecycles.phase_details.label.edit.submit=Save
contentsection.configuration.lifecycles.phase_details.label.edit.title=Edit localized label
contentsection.configuration.lifecycles.phase_details.label.edit.value.help=The localized label
contentsection.configuration.lifecycles.phase_details.label.edit.value.label=Label
contentsection.configuration.lifecycles.phase_details.label.remove.button=Remove
contentsection.configuration.lifecycles.phase_details.label.remove.cancel=Cancel
contentsection.configuration.lifecycles.phase_details.label.remove.submit=Remove
contentsection.configuration.lifecycles.phase_details.label.remove.text=Are you sure to remove this localized label?
contentsection.configuration.lifecycles.phase_details.label.remove.title=Confirm removal of localized label
contentsection.configuration.lifecycles.phase_details.label.title=Label
contentsection.configuration.lifecycles.phase_details.description.add.button=Add
contentsection.configuration.lifecycles.phase_details.description.add.cancel=Cancel
contentsection.configuration.lifecycles.phase_details.description.add.locale.help=The locale of the localized description
contentsection.configuration.lifecycles.phase_details.description.add.locale.description=Description
contentsection.configuration.lifecycles.phase_details.description.locale.add.submit=Add
contentsection.configuration.lifecycles.phase_details.description.add.title=Add localized description
contentsection.configuration.lifecycles.phase_details.description.add.value.help=The localized description
contentsection.configuration.lifecycles.phase_details.description.add.value.description=Description
contentsection.configuration.lifecycles.phase_details.description.edit.button=Edit
contentsection.configuration.lifecycles.phase_details.description.edit.cancel=Cancel
contentsection.configuration.lifecycles.phase_details.description.edit.submit=Save
contentsection.configuration.lifecycles.phase_details.description.edit.title=Edit localized description
contentsection.configuration.lifecycles.phase_details.description.edit.value.help=The localized description
contentsection.configuration.lifecycles.phase_details.description.edit.value.description=Description
contentsection.configuration.lifecycles.phase_details.description.remove.button=Remove
contentsection.configuration.lifecycles.phase_details.description.remove.cancel=Cancel
contentsection.configuration.lifecycles.phase_details.description.remove.submit=Remove
contentsection.configuration.lifecycles.phase_details.description.remove.text=Are your sure to remove this localized description?
contentsection.configuration.lifecycles.phase_details.description.remove.title=Confirm removal of localized description
contentsection.configuration.lifecycles.phase_details.description.title=Description
contentsection.lifecycle.not_found=No lifecycle identified by {1} was found for Content Section {0}.
contentsection.lifecycle_phase.not_found=No phase definition identified by {2} for the lifecycle definition {1} of the Content Section {0} found.
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.days.help=Delay days
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.days.label=Days
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.hours.help=Deply hours
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.hours.label=Hours
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.minutes.help=Delay minutes
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.minutes.label=Minutes
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.days=Duration days
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.days=Days
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.hours=Duration hours
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.hours=Hours
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.minutes=Duration minutes
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.minutes=Minutes
contentsection.configuration.workflows.add=Add workflow
contentsection.configuration.workflows.add.dialog.title=Add Workflow to Content Section {0}
contentsection.configuration.workflows.add.dialog.close=Cancel
contentsection.configuration.workflows.add.dialog.label.help=The name of the new workflow
contentsection.configuration.workflows.add.dialog.label.label=Name
contentsection.configuration.workflows.add.dialog.submit=Add workflow
contentsection.configuration.workflows.table.cols.name=Name
contentsection.configuration.workflows.table.cols.actions=Actions
contentsection.configuration.workflows.table.info_button.label=Show workflow description
contentsection.configuration.workflows.info.dialog.title=Description of Workflow {0}
contentsection.configuration.workflows.info.dialog.close=Close
contentsection.configuration.workflows.delete_button.label=Delete
contentsection.configuration.workflows.delete_dialog.cancel=Abbrechen
contentsection.configuration.workflows.delete_dialog.confirm=Delete workflow
contentsection.configuration.workflows.delete_dialog.title=Confirm Deletion of Workflow
contentsection.configuration.workflows.delete_dialog.message=Are you sure to delete the workflow {1} of Content Section {0}?
contentsection.configuration.workflows.workflow_details.title=Details of Workflow {1} of Content Section {0}
contentsection.configuration.workflows.workflow_details.name.add.button=Add localized name
contentsection.configuration.workflows.workflow_details.name.add.cancel=Cancel
contentsection.configuration.workflows.workflow_details.name.add.locale.help=The locale of the localized name
contentsection.configuration.workflows.workflow_details.name.add.locale.label=Locale
contentsection.configuration.workflows.workflow_details.name.locale.add.submit=Add
contentsection.configuration.workflows.workflow_details.name.add.title=Add localized name
contentsection.configuration.workflows.workflow_details.name.add.value.help=The localized name
contentsection.configuration.workflows.workflow_details.name.add.value.label=Name
contentsection.configuration.workflows.workflow_details.name.edit.button=Edit
contentsection.configuration.workflows.workflow_details.name.edit.cancel=Cancel
contentsection.configuration.workflows.workflow_details.name.edit.submit=Save
contentsection.configuration.workflows.workflow_details.name.edit.title=Edit localized name
contentsection.configuration.workflows.workflow_details.name.edit.value.help=The localized name
contentsection.configuration.workflows.workflow_details.name.edit.value.label=Name
contentsection.configuration.workflows.workflow_details.name.remove.button=Remove
contentsection.configuration.workflows.workflow_details.name.remove.cancel=Cancel
contentsection.configuration.workflows.workflow_details.name.remove.submit=Remove
contentsection.configuration.workflows.workflow_details.name.remove.text=Are you sure to remove this localized name?
contentsection.configuration.workflows.workflow_details.name.remove.title=Confirm removal of localized name
contentsection.configuration.workflows.workflow_details.name.title=Name
contentsection.configuration.workflows.workflow_details.description.add.button=Add localized description
contentsection.configuration.workflows.workflow_details.description.add.cancel=Cancel
contentsection.configuration.workflows.workflow_details.description.add.locale.help=The locale of the localized description
contentsection.configuration.workflows.workflow_details.description.add.locale.label=Locale
contentsection.configuration.workflows.workflow_details.description.locale.add.submit=Add
contentsection.configuration.workflows.workflow_details.description.add.title=Add localized decription
contentsection.configuration.workflows.workflow_details.description.add.value.help=The localized description
contentsection.configuration.workflows.workflow_details.description.add.value.label=Description
contentsection.configuration.workflows.workflow_details.description.edit.button=Edit
contentsection.configuration.workflows.workflow_details.description.edit.cancel=Cancel
contentsection.configuration.workflows.workflow_details.description.edit.submit=Save
contentsection.configuration.workflows.workflow_details.description.edit.title=Edit localized description
contentsection.configuration.workflows.workflow_details.description.edit.value.help=The localized description
contentsection.configuration.workflows.workflow_details.description.edit.value.description=Description
contentsection.configuration.workflows.workflow_details.description.remove.button=Remove
contentsection.configuration.workflows.workflow_details.description.remove.cancelq=Cancel
contentsection.configuration.workflows.workflow_details.description.remove.submit=Remove
contentsection.configuration.workflows.workflow_details.description.remove.text=Are you sure to remove this localized description?
contentsection.configuration.workflows.workflow_details.description.remove.title=Confirm removal of localized description
contentsection.configuration.workflows.workflow_details.description.title=Description
contentsection.configuration.workflows.workflow_details.tasks.title=Tasks
contentsection.configuration.workflow.tasks.add=Add task
contentsection.configuration.workflow.tasks.add.dialog.close=Cancel
contentsection.configuration.workflow.tasks.add.dialog.label.help=The label for the new task
contentsection.configuration.workflow.tasks.add.dialog.label.label=Label
contentsection.configuration.workflow.tasks.add.dialog.submit=Add task
contentsection.configuration.workflow.tasks.table.cols.label=Label
contentsection.configuration.workflow.tasks.table.cols.actions=Actions
contentsection.configuration.workflow.tasks.table.info_button.label=Show description of task
contentsection.configuration.workflow.tasks.info.dialog.title=Description of task {2} of workflow {1} of Content Section {0}
contentsection.configuration.workflow.tasks.info.dialog.close=Close
contentsection.configuration.workflow.tasks.remove.button.label=Delete
contentsection.configuration.workflow.tasks.remove.dialog.close=Cancel
contentsection.configuration.workflow.tasks.remove.dialog.confirm=Delete task
contentsection.configuration.workflow.tasks.remove.dialog.title=Confirm delation of the task
contentsection.configuration.workflow.tasks.remove.dialog.message=Are you sure to delete task {2} of workflow {1} of Content Section {0}?
contentsection.configuration.workflows.tasks.title=Workflow Tasks
contentsection.configuration.workflow.task_details.title=Details of task {2} of workflow {1} of Content Section {0}
contentsection.configuration.workflows.task_details.label.add.button=Add localized label
contentsection.configuration.workflows.task_details.label.add.cancel=Cancel
contentsection.configuration.workflows.task_details.label.add.locale.help=The locale of the localized label
contentsection.configuration.workflows.task_details.label.add.locale.label=Locale
contentsection.configuration.workflows.task_details.label.locale.add.submit=Add
contentsection.configuration.workflows.task_details.label.add.title=Add localized label
contentsection.configuration.workflows.task_details.label.add.value.help=The localized label
contentsection.configuration.workflows.task_details.label.add.value.label=Label
contentsection.configuration.workflows.task_details.label.edit.button=Edit
contentsection.configuration.workflows.task_details.label.edit.cancel=Cancel
contentsection.configuration.workflows.task_details.label.edit.submit=Save
contentsection.configuration.workflows.task_details.label.edit.title=Edit localized label
contentsection.configuration.workflows.task_details.label.edit.value.help=The localized label
contentsection.configuration.workflows.task_details.label.edit.value.label=Label
contentsection.configuration.workflows.task_details.label.remove.button=Remove
contentsection.configuration.workflows.task_details.label.remove.cancel=Cancel
contentsection.configuration.workflows.task_details.label.remove.submit=Remove
contentsection.configuration.workflows.task_details.label.remove.text=Are you sure to remove this localized lable?
contentsection.configuration.workflows.task_details.label.remove.title=Confirm removal of localized label
contentsection.configuration.workflows.task_details.label.title=Label
contentsection.configuration.workflows.task_details.description.add.button=Add localized decription
contentsection.configuration.workflows.task_details.description.add.cancel=Cancel
contentsection.configuration.workflows.task_details.description.add.locale.help=The locale of the localized description
contentsection.configuration.workflows.task_details.description.add.locale.description=Description
contentsection.configuration.workflows.task_details.description.locale.add.submit=Add
contentsection.configuration.workflows.task_details.description.add.title=Add localized decription
contentsection.configuration.workflows.task_details.description.add.value.help=The localized description
contentsection.configuration.workflows.task_details.description.add.value.label=Description
contentsection.configuration.workflows.task_details.description.edit.button=Edit
contentsection.configuration.workflows.task_details.description.edit.cancel=Cancel
contentsection.configuration.workflows.task_details.description.edit.submit=Save
contentsection.configuration.workflows.task_details.description.edit.title=Edit localized description
contentsection.configuration.workflows.task_details.description.edit.value.help=The localized description
contentsection.configuration.workflows.task_details.description.edit.value.label=Description
contentsection.configuration.workflows.task_details.description.remove.button=Remove
contentsection.configuration.workflows.task_details.description.remove.cancel=Cancel
contentsection.configuration.workflows.task_details.description.remove.submit=Remove
contentsection.configuration.workflows.task_details.description.remove.text=Are you sure to remove this localized description?
contentsection.configuration.workflows.task_details.description.remove.title=Confirm removal of localized description
contentsection.configuration.workflows.task_details.description.title=Description
contentsection.configuration.workflows.task_details.blocking_tasks.title=Blocking tasks
contentsection.configuration.workflows.task_details.blocking_tasks.add=Add blocking tasks
contentsection.configuration.workflows.task_details.blocking_tasks.add.dialog.title=Add blocking task
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.close=Cancel
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.task_select.help=Select the blocking task
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.task_select.label=Blocking task
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.submit=Add blocking task
contentsection.workflow.tasks.circular_dependency=Adding the task {3} as blocking task to task {2} of workflow {1} of Content Section {0} would create a circular dependency.
contentsection.workflow.not_found=Content Section {0} has not workflow {1}.
contentsection.workflow_tasks.not_found=No task {2} found for workflow {1} of Content Section {0}.

View File

@ -425,3 +425,269 @@ contentsection.configuration.documenttypes.remove_dialog.cancel=Abbrechen
contentsection.configuration.documenttypes.remove_dialog.confirm=Dokumenttyp entfernen contentsection.configuration.documenttypes.remove_dialog.confirm=Dokumenttyp entfernen
contentsection.configuration.documenttypes.remove_dialog.title=Entfernen des Dokumenttyps best\u00e4tigen contentsection.configuration.documenttypes.remove_dialog.title=Entfernen des Dokumenttyps best\u00e4tigen
contentsection.configuration.documenttypes.remove_dialog.message=Sind Sie sicher, dass Sie den Dokumenttyp {1} aus der Content Section {0} entfernen wollen? contentsection.configuration.documenttypes.remove_dialog.message=Sind Sie sicher, dass Sie den Dokumenttyp {1} aus der Content Section {0} entfernen wollen?
contentsection.configuration.lifecycles.add=Lebenszyklus-Definition hinzuf\u00fcgen
contentsection.configuration.lifecycles.add.dialog.title=Einen Lebenszyklus-Definition der Content Section {0} hinzuf\u00fcgen
'contentsection.configuration.lifecycles.add.dialog.close=Abbrechen
contentsection.configuration.lifecycles.add.dialog.label.help=Bezeichnung der neuen Lebenszyklus-Definition
contentsection.configuration.lifecycles.add.dialog.label.label=Bezeichnung
contentsection.configuration.lifecycles.add.dialog.submit=Lebenszyklus-Definition hinzf\u00fcgen
contentsection.configuration.lifecycles.table.cols.label=Bezeichnung
contentsection.configuration.lifecycles.table.cols.actions=Aktionen
contentsection.configuration.lifecycles.table.info_button.label=Beschreibung anzeigen
contentsection.configuration.lifecycles.info.dialog.title=Beschreibung der Lebenszyklus-Definition {0}
contentsection.configuration.lifecycles.info.dialog.close=Schlie\u00dfen
contentsection.configuration.lifecycles.delete_button.label=L\u00f6schen
contentsection.configuration.lifecycles.delete_dialog.cancel=Abbrechen
contentsection.configuration.lifecycles.delete_dialog.confirm=Lebenszyklus-Definition l\u00f6schen
'contentsection.configuration.lifecycles.delete_dialog.title=L\u00f6schen der Lebenszyklus-Definition best\u00e4tigen
contentsection.configuration.lifecycles.delete_dialog.message=Sind Sie sicher, dass Sie die Lebenszyklus-Definition {1} f\u00fcr die Content Section {0} l\u00f6schen wollen?
contentsection.configuration.lifecycles.lifecycle_details.title=Details der Lebenszyklus Definition {0}
contentsection.configuration.lifecycles.lifecycle_details.label.add.button=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.label.add.cancel=Abbrechen
contentsection.configuration.lifecycles.lifecycle_details.label.add.locale.help=Sprache der Bezeichnung
contentsection.configuration.lifecycles.lifecycle_details.label.add.locale.label=Sprache
contentsection.configuration.lifecycles.lifecycle_details.label.locale.add.submit=Bezeichnung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.label.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.label.add.value.help=Die lokalisierte Beschreibung
contentsection.configuration.lifecycles.lifecycle_details.label.add.value.label=Bezeichnung
contentsection.configuration.lifecycles.lifecycle_details.label.edit.button=Bearbeiten
contentsection.configuration.lifecycles.lifecycle_details.label.edit.cancel=Abbrechen
contentsection.configuration.lifecycles.lifecycle_details.label.edit.submit=Speichern
contentsection.configuration.lifecycles.lifecycle_details.label.edit.title=Lokalisierte Beschreibung bearbeiten
contentsection.configuration.lifecycles.lifecycle_details.label.edit.value.help=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.label.edit.value.label=Bezeichnung
contentsection.configuration.lifecycles.lifecycle_details.label.remove.button=Entfernen
contentsection.configuration.lifecycles.lifecycle_details.label.remove.cancel=Abbrechen
contentsection.configuration.lifecycles.lifecycle_details.label.remove.submit=Entfernen
contentsection.configuration.lifecycles.lifecycle_details.label.remove.text=Sind Sie sicher, dass Sie diese lokalisierte Bezeichnung entfernen wollen?
contentsection.configuration.lifecycles.lifecycle_details.label.remove.title=Entfernen einer lokalisierten Beschreibung best\u00e4tigen
contentsection.configuration.lifecycles.lifecycle_details.label.title=Bezeichnung
contentsection.configuration.lifecycles.lifecycle_details.description.add.button=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.description.add.cancel=Abbrechen
contentsection.configuration.lifecycles.lifecycle_details.description.add.locale.help=Die Sprache der lokalisierten Beschreibung
contentsection.configuration.lifecycles.lifecycle_details.description.add.locale.description=Sprache
contentsection.configuration.lifecycles.lifecycle_details.description.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.description.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.description.add.value.help=Die lokalisierte Beschreibung
contentsection.configuration.lifecycles.lifecycle_details.description.add.value.description=Beschreibung
contentsection.configuration.lifecycles.lifecycle_details.description.edit.button=Bearbeiten
contentsection.configuration.lifecycles.lifecycle_details.description.edit.cancel=Abbrechen
contentsection.configuration.lifecycles.lifecycle_details.description.edit.submit=Speichern
contentsection.configuration.lifecycles.lifecycle_details.description.edit.title=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.lifecycle_details.description.edit.value.help=Die lokalisierte Beschreibung
contentsection.configuration.lifecycles.lifecycle_details.description.edit.value.description=Bescchreibung
contentsection.configuration.lifecycles.lifecycle_details.description.remove.button=Entfernen
contentsection.configuration.lifecycles.lifecycle_details.description.remove.cancel=Abbrechen
contentsection.configuration.lifecycles.lifecycle_details.description.remove.submit=Entfernen
contentsection.configuration.lifecycles.lifecycle_details.description.remove.text=Sind Sie sicher, dass Sie diese lokalisierte Beschreibung entfernen wollen?
contentsection.configuration.lifecycles.lifecycle_details.description.remove.title=Entfernen einer lokalisierten Beschreibung best\u00e4tigen
contentsection.configuration.lifecycles.lifecycle_details.description.title=Beschreibung
contentsection.configuration.lifecycle.phases.add=Neue Definition einer Phase hinzuf\u00fcgen
contentsection.configuration.lifecycle.phases.add.dialog.title=Der Lebenszyklus-Definition {1} der Content Section {0} eine Phase hinzuf\u00fcgen
contentsection.configuration.lifecycle.phases.add.dialog.close=Abbrechen
contentsection.configuration.lifecycle.phases.add.dialog.label.help=Die Bezeichnung der neuen Phase
contentsection.configuration.lifecycle.phases.add.dialog.label.label=Bezeichnung
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.help=Vorgabewerte f\u00fcr den verz\u00f6gerten Start der Phase
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.label=Verz\u00f6gerung
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help=Standardwert f\u00fcr die Dauer der Phase. 0 bedeutet das die Phase kein Ende hat.
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label=Dauer
contentsection.configuration.lifecycle.phases.add.dialog.submit=Phasen-Definition hinzuf\u00fcgen
contentsection.configuration.lifecycle.phases.table.cols.label=Bezeichnung
contentsection.configuration.lifecycle.phases.table.cols.default_delay=Verz\u00f6gerung
contentsection.configuration.lifecycle.phases.table.cols.default_duration=Dauer
contentsection.configuration.lifecycle.phases.table.cols.actions=Aktionen
contentsection.configuration.lifecycle.phases.table.info_button.label=Beschreibung anzeigen
contentsection.configuration.lifecycle.phases.info.dialog.title=Beschreibung der Phasen-Definition {2} der Lebenszyklus-Definition {1} der Content Section {0}
contentsection.configuration.lifecycle.phases.info.dialog.close=Schlie\u00dfen
contentsection.configuration.lifecycle.phases.remove.button.label=L\u00f6schen
contentsection.configuration.lifecycle.phases.remove.dialog.close=Abbrechen
contentsection.configuration.lifecycle.phases.remove.dialog.confirm=L\u00f6schen
contentsection.configuration.lifecycle.phases.remove.dialog.title=L\u00f6schen einer Lebenszyklus-Phase best\u00e4tigen
contentsection.configuration.lifecycle.phases.remove.dialog.message=Sind Sie sicher, dass die die Phase-Definition {2} der Lebenszyklus-Definition {1} der Content Section {0} l\u00f6schen wollen?
contentsection.configuration.lifecycle.phase_details.title=Details Phase Definition {1} of Lifecycle Definition {0}
contentsection.configuration.lifecycle.phase_details.properties=Eigenschaften
contentsection.configuration.lifecycles.phase_details.default_delay.label=Voreingestellte Verz\u00f6gerung
contentsection.configuration.lifecycles.phase_details.default_duration.label=Voreingestellte Dauer
contentsection.configuration.lifecycle.phase_details.properties.edit=Eigenschaften der Phasen Definition bearbeiten
contentsection.configuration.lifecycle.phase_details.properties.edit.title=Eigenschaften der Phasen-Definition {2} der Lebenszyklus-Definition {1} der Content Section {0} bearbeiten
contentsection.configuration.lifecycle.phase_details.properties.edit.close=Abbrechen
contentsection.configuration.lifecycle.phase_details.properties.edit.submit=Speichern
contentsection.configuration.lifecycles.phase_details.label.add.button=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.phase_details.label.add.cancel=Abbrechen
contentsection.configuration.lifecycles.phase_details.label.add.locale.help=Die Sprache der lokalisierten Beschreibung
contentsection.configuration.lifecycles.phase_details.label.add.locale.label=Sprache
contentsection.configuration.lifecycles.phase_details.label.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.lifecycles.phase_details.label.add.title=Lokaliserte Bezeichnung hinzuf\u00fcgen
contentsection.configuration.lifecycles.phase_details.label.add.value.help=Die lokalisierte Bezeichnung
contentsection.configuration.lifecycles.phase_details.label.add.value.label=Bezeichnung
contentsection.configuration.lifecycles.phase_details.label.edit.button=Bearbeiten
contentsection.configuration.lifecycles.phase_details.label.edit.cancel=Abbrechen
contentsection.configuration.lifecycles.phase_details.label.edit.submit=Speichern
contentsection.configuration.lifecycles.phase_details.label.edit.title=Lokalisierte Bezeichnung bearbeiten
contentsection.configuration.lifecycles.phase_details.label.edit.value.help=Die lokalisierte Bezeichnung
contentsection.configuration.lifecycles.phase_details.label.edit.value.label=Bezeichnung
contentsection.configuration.lifecycles.phase_details.label.remove.button=Entfernen
contentsection.configuration.lifecycles.phase_details.label.remove.cancel=Abbrechen
contentsection.configuration.lifecycles.phase_details.label.remove.submit=Entfernen
contentsection.configuration.lifecycles.phase_details.label.remove.text=Sind Sie sicher, dass Sie diese lokaliserte Beschreibung entfernen wollen?
contentsection.configuration.lifecycles.phase_details.label.remove.title=Entfernen einer lokalisierten Beschreibung best\u00e4tigen
contentsection.configuration.lifecycles.phase_details.label.title=Bezeichnung
contentsection.configuration.lifecycles.phase_details.description.add.button=Hinzuf\u00fcgen
contentsection.configuration.lifecycles.phase_details.description.add.cancel=Abbrechen
contentsection.configuration.lifecycles.phase_details.description.add.locale.help=Die Sprache der lokalisierten Beschreibung
contentsection.configuration.lifecycles.phase_details.description.add.locale.description=Beschreibung
contentsection.configuration.lifecycles.phase_details.description.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.lifecycles.phase_details.description.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.lifecycles.phase_details.description.add.value.help=Die lokalisierte Beschreibung
contentsection.configuration.lifecycles.phase_details.description.add.value.description=Beschreibung
contentsection.configuration.lifecycles.phase_details.description.edit.button=Bearbeiten
contentsection.configuration.lifecycles.phase_details.description.edit.cancel=Abbrechen
contentsection.configuration.lifecycles.phase_details.description.edit.submit=Speichern
contentsection.configuration.lifecycles.phase_details.description.edit.title=Lokalisierte Beschreibung bearbeiten
contentsection.configuration.lifecycles.phase_details.description.edit.value.help=Die lokalisierte Beschreibung
contentsection.configuration.lifecycles.phase_details.description.edit.value.description=Beschreibung
contentsection.configuration.lifecycles.phase_details.description.remove.button=Entfernen
contentsection.configuration.lifecycles.phase_details.description.remove.cancel=Abbrechen
contentsection.configuration.lifecycles.phase_details.description.remove.submit=Entfernen
contentsection.configuration.lifecycles.phase_details.description.remove.text=Sind Sie sicher, dass Sie diese lokaliserte Beschreibung entfernen wollen?
contentsection.configuration.lifecycles.phase_details.description.remove.title=Entfernen einer lokaliserten Beschreibung best\u00e4tigen
contentsection.configuration.lifecycles.phase_details.description.title=Beschreibung
contentsection.lifecycle.not_found=F\u00fcr die Content Section {0} wurde keine Lebenszyklus-Definition {1} gefunden.
contentsection.lifecycle_phase.not_found=F\u00fcr die Lebenszyklus-Definition {1} der Content-Section {0} wurde keine Phase-Definition {2} gefunden.
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.days.help=Verz\u00f6gerung um Tage
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.days.label=Tage
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.hours.help=Verz\u00f6gerung um Stunden
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.hours.label=Stunden
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.minutes.help=Verz\u00f6gerung um Minuten
contentsection.configuration.lifecycle.phases.add.dialog.default_delay.minutes.label=Minuten
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.days=Dauer Tage
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.days=Tage
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.hours=Dauer Stunden
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.hours=Stunden
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.help.minutes=Dauer Minuten
contentsection.configuration.lifecycle.phases.add.dialog.default_duration.label.minutes=Minuten
contentsection.configuration.workflows.add=Arbeitsablauf hinzuf\u00fcgen
contentsection.configuration.workflows.add.dialog.title=Arbeitsablauf der Content Section {0} hinzuf\u00fcgen
contentsection.configuration.workflows.add.dialog.close=Abbrechen
contentsection.configuration.workflows.add.dialog.label.help=Der Name des neuen Arbeitsablaufs
contentsection.configuration.workflows.add.dialog.label.label=Name
contentsection.configuration.workflows.add.dialog.submit=Arbeitsablauf hinzuf\u00fcgen
contentsection.configuration.workflows.table.cols.name=Name
contentsection.configuration.workflows.table.cols.actions=Aktionen
contentsection.configuration.workflows.table.info_button.label=Beschreibung des Arbeitsablaufs anzeigen
contentsection.configuration.workflows.info.dialog.title=Beschreibung Arbeitsablauf {0}
contentsection.configuration.workflows.info.dialog.close=Schlie\u00dfen
contentsection.configuration.workflows.delete_button.label=L\u00f6schen
contentsection.configuration.workflows.delete_dialog.cancel=Abbrechen
contentsection.configuration.workflows.delete_dialog.confirm=Arbeitsablauf l\u00f6schen
contentsection.configuration.workflows.delete_dialog.title=L\u00f6schen des Arbeitsablaufs best\u00e4tigen
contentsection.configuration.workflows.delete_dialog.message=Sind Sie sicher, dass Sie den Arbeitsablauf {1} der Content Section {0} l\u00f6schen wollen?
contentsection.configuration.workflows.workflow_details.title=Details Arbeitsablauf {1} der Content Section {0}
contentsection.configuration.workflows.workflow_details.name.add.button=Lokalisierten Namen hinzuf\u00fcgen
contentsection.configuration.workflows.workflow_details.name.add.cancel=Abbrechen
contentsection.configuration.workflows.workflow_details.name.add.locale.help=Die Sprache des lokalisierten Namens
contentsection.configuration.workflows.workflow_details.name.add.locale.label=Sprache
contentsection.configuration.workflows.workflow_details.name.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.workflows.workflow_details.name.add.title=Lokalisierten Namen hinzuf\u00fcgen
contentsection.configuration.workflows.workflow_details.name.add.value.help=Der lokalisierte Name
contentsection.configuration.workflows.workflow_details.name.add.value.label=Name
contentsection.configuration.workflows.workflow_details.name.edit.button=Bearbeiten
contentsection.configuration.workflows.workflow_details.name.edit.cancel=Abbrechen
contentsection.configuration.workflows.workflow_details.name.edit.submit=Speichern
contentsection.configuration.workflows.workflow_details.name.edit.title=Lokalisierten Namen bearbeiten
contentsection.configuration.workflows.workflow_details.name.edit.value.help=Der lokalisierte Name
contentsection.configuration.workflows.workflow_details.name.edit.value.label=Name
contentsection.configuration.workflows.workflow_details.name.remove.button=Entfernen
contentsection.configuration.workflows.workflow_details.name.remove.cancel=Abbrechen
contentsection.configuration.workflows.workflow_details.name.remove.submit=Entfernen
contentsection.configuration.workflows.workflow_details.name.remove.text=Sind Sie sicher, dass Sie diesen lokalisierten Name entfernen wollen?
contentsection.configuration.workflows.workflow_details.name.remove.title=Entfernen eines lokalisierten Names best\u00e4tigen
contentsection.configuration.workflows.workflow_details.name.title=Name
contentsection.configuration.workflows.workflow_details.description.add.button=Lokalisierte Beschreibung entfernen
contentsection.configuration.workflows.workflow_details.description.add.cancel=Abbrechen
contentsection.configuration.workflows.workflow_details.description.add.locale.help=Die Sprache der lokalisierten Beschreibung
contentsection.configuration.workflows.workflow_details.description.add.locale.label=Sprache
contentsection.configuration.workflows.workflow_details.description.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.workflows.workflow_details.description.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.workflows.workflow_details.description.add.value.help=Die lokaliserte Beschreibung
contentsection.configuration.workflows.workflow_details.description.add.value.label=Beschreibung
contentsection.configuration.workflows.workflow_details.description.edit.button=Bearbeiten
contentsection.configuration.workflows.workflow_details.description.edit.cancel=Abbrechen
contentsection.configuration.workflows.workflow_details.description.edit.submit=Speichern
contentsection.configuration.workflows.workflow_details.description.edit.title=Lokaliserte Beschreibung bearbeiten
contentsection.configuration.workflows.workflow_details.description.edit.value.help=Die lokaliserte Beschreibung
contentsection.configuration.workflows.workflow_details.description.edit.value.description=Beschreibung
contentsection.configuration.workflows.workflow_details.description.remove.button=Entfernen
contentsection.configuration.workflows.workflow_details.description.remove.cancelq=Abbrechen
contentsection.configuration.workflows.workflow_details.description.remove.submit=Entfernen
contentsection.configuration.workflows.workflow_details.description.remove.text=Sind Sie sicher, dass Sie diese lokalisierte Beschreibung entfernen wollen?
contentsection.configuration.workflows.workflow_details.description.remove.title=Entfernen einer lokaliserten Beschreibung best\u00e4tigen
contentsection.configuration.workflows.workflow_details.description.title=Beschreibung
contentsection.configuration.workflows.workflow_details.tasks.title=Aufgaben
contentsection.configuration.workflow.tasks.add=Aufgabe hinzuf\u00fcgen
contentsection.configuration.workflow.tasks.add.dialog.close=Abbrechen
contentsection.configuration.workflow.tasks.add.dialog.label.help=Bezeichnung der neuen Aufgabe
contentsection.configuration.workflow.tasks.add.dialog.label.label=Bezeichnung
contentsection.configuration.workflow.tasks.add.dialog.submit=Aufgabe hinzuf\u00fcgen
contentsection.configuration.workflow.tasks.table.cols.label=Bezeichnung
contentsection.configuration.workflow.tasks.table.cols.actions=Aktionen
contentsection.configuration.workflow.tasks.table.info_button.label=Beschreibung der Aufgabe anzeigen
contentsection.configuration.workflow.tasks.info.dialog.title=Beschreibung der Aufgabe {2} des Arbeitsablaufs {1} der Content Section {0}
contentsection.configuration.workflow.tasks.info.dialog.close=Schlie\u00dfen
contentsection.configuration.workflow.tasks.remove.button.label=L\u00f6schen
contentsection.configuration.workflow.tasks.remove.dialog.close=Abbrechen
contentsection.configuration.workflow.tasks.remove.dialog.confirm=Aufgabe l\u00f6schen
contentsection.configuration.workflow.tasks.remove.dialog.title=L\u00f6schen der Aufgabe best\u00e4tigen
contentsection.configuration.workflow.tasks.remove.dialog.message=Sind Sie sicher, dass Sie die Aufgabe {2} des Arbeitsablaufs {1} der Content Section {0} l\u00f6schen wollen?
contentsection.configuration.workflows.tasks.title=Arbeitsablauf Aufgaben
contentsection.configuration.workflow.task_details.title=Details der Aufgabe {2} des Arbeitsablaufs {1} der Content Section {0}
contentsection.configuration.workflows.task_details.label.add.button=Lokalisierte Bezeichnung hinzuf\u00fcgen
contentsection.configuration.workflows.task_details.label.add.cancel=Abbrechen
contentsection.configuration.workflows.task_details.label.add.locale.help=Die Sprache der lokalisierten Bezeichnung
contentsection.configuration.workflows.task_details.label.add.locale.label=Sprache
contentsection.configuration.workflows.task_details.label.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.workflows.task_details.label.add.title=Lokalisierte Bezeichnung hinzuf\u00fcgen
contentsection.configuration.workflows.task_details.label.add.value.help=Die lokaliserte Beschreibung
contentsection.configuration.workflows.task_details.label.add.value.label=Bezeichnung
contentsection.configuration.workflows.task_details.label.edit.button=Bearbeiten
contentsection.configuration.workflows.task_details.label.edit.cancel=Abbrechen
contentsection.configuration.workflows.task_details.label.edit.submit=Speichern
contentsection.configuration.workflows.task_details.label.edit.title=Lokalisierte Bezeichnung bearbeiten
contentsection.configuration.workflows.task_details.label.edit.value.help=Die lokaliserte Beschreibung
contentsection.configuration.workflows.task_details.label.edit.value.label=Bezeichnung
contentsection.configuration.workflows.task_details.label.remove.button=Entfernen
contentsection.configuration.workflows.task_details.label.remove.cancel=Abbrechen
contentsection.configuration.workflows.task_details.label.remove.submit=Entfernen
contentsection.configuration.workflows.task_details.label.remove.text=Sind Sie sicher, dass Sie diese lokalisierte Bezeichnung entfernen wollen?
contentsection.configuration.workflows.task_details.label.remove.title=Entfernen einer lokaliserten Bezeichnung best\u00e4tigen
contentsection.configuration.workflows.task_details.label.title=Bezeichnung
contentsection.configuration.workflows.task_details.description.add.button=Add localized decription
contentsection.configuration.workflows.task_details.description.add.cancel=Abbrechen
contentsection.configuration.workflows.task_details.description.add.locale.help=Die Sprache der lokalisierten Beschreibung
contentsection.configuration.workflows.task_details.description.add.locale.description=Beschreibung
contentsection.configuration.workflows.task_details.description.locale.add.submit=Hinzuf\u00fcgen
contentsection.configuration.workflows.task_details.description.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen
contentsection.configuration.workflows.task_details.description.add.value.help=Die lokalisierte Beschreibung
contentsection.configuration.workflows.task_details.description.add.value.label=Beschreibung
contentsection.configuration.workflows.task_details.description.edit.button=Bearbeiten
contentsection.configuration.workflows.task_details.description.edit.cancel=Abbrechen
contentsection.configuration.workflows.task_details.description.edit.submit=Speichern
contentsection.configuration.workflows.task_details.description.edit.title=Lokalisierte Beschreibung bearbeiten
contentsection.configuration.workflows.task_details.description.edit.value.help=Die lokalisierte Beschreibung
contentsection.configuration.workflows.task_details.description.edit.value.label=Beschreibung
contentsection.configuration.workflows.task_details.description.remove.button=Entfernen
contentsection.configuration.workflows.task_details.description.remove.cancel=Abbrechen
contentsection.configuration.workflows.task_details.description.remove.submit=Entfernen
contentsection.configuration.workflows.task_details.description.remove.text=Sind Sie sicher, dass Sie diese lokalisierte Beschreibung entfernen wollen?
contentsection.configuration.workflows.task_details.description.remove.title=Entfernen einer lokaliserten Beschreibung best\u00e4tigen
contentsection.configuration.workflows.task_details.description.title=Description
contentsection.configuration.workflows.task_details.blocking_tasks.title=Wird von folgenden Aufgaben blockiert
contentsection.configuration.workflows.task_details.blocking_tasks.add=Blockierende Aufgabe hinzuf\u00fcgen
contentsection.configuration.workflows.task_details.blocking_tasks.add.dialog.title=Blockierende Aufgabe hinzuf\u00fcgen
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.close=Abbrechen
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.task_select.help=W\u00e4hlen Sie die blockierende Aufgabe aus
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.task_select.label=Blockierende Aufgabe
contentsection.configuration.workflow.task_details.blocking_tasks.add.dialog.submit=Blockierende Aufgabe hinzuf\u00fcgen
contentsection.workflow.tasks.circular_dependency=Das Hinzuf\u00fcgen der Aufgabe {3} als blockierende Aufgabe zur Aufgabe {2} des Arbeitsablaufs {1} der Content Section {0} w\u00fcrde eine zirkul\u00e4re Abh\u00e4nigkeit erzeugen.
contentsection.workflow.not_found=Keine Arbeitsablauf {1} f\u00fcr Content Section {0} gefunden.
contentsection.workflow_tasks.not_found=Arbeitsablauf {1} der Content Section {0} hat keine Aufgabe {2}.