Views for managing categories
parent
854ed35c61
commit
4b6346e79a
|
|
@ -19,6 +19,7 @@
|
|||
package org.libreccm.ui.admin.categories;
|
||||
|
||||
import org.libreccm.categorization.Category;
|
||||
import org.libreccm.categorization.CategoryManager;
|
||||
import org.libreccm.ui.Message;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -28,10 +29,10 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
|
|
@ -43,6 +44,9 @@ import javax.transaction.Transactional;
|
|||
@Named("CategoryDetailsModel")
|
||||
public class CategoryDetailsModel {
|
||||
|
||||
@Inject
|
||||
private CategoryManager categoryManager;
|
||||
|
||||
private long categoryId;
|
||||
|
||||
private String uuid;
|
||||
|
|
@ -51,6 +55,8 @@ public class CategoryDetailsModel {
|
|||
|
||||
private String name;
|
||||
|
||||
private String path;
|
||||
|
||||
private Map<String, String> title;
|
||||
|
||||
private Map<String, String> description;
|
||||
|
|
@ -69,6 +75,8 @@ public class CategoryDetailsModel {
|
|||
|
||||
private final List<Message> messages;
|
||||
|
||||
private Set<String> invalidFields;
|
||||
|
||||
public CategoryDetailsModel() {
|
||||
this.messages = new ArrayList<>();
|
||||
}
|
||||
|
|
@ -77,6 +85,10 @@ public class CategoryDetailsModel {
|
|||
return categoryId;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return String.format("ID-%d", categoryId);
|
||||
}
|
||||
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
|
@ -89,6 +101,10 @@ public class CategoryDetailsModel {
|
|||
return name;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public Map<String, String> getTitle() {
|
||||
return Collections.unmodifiableMap(title);
|
||||
}
|
||||
|
|
@ -117,37 +133,18 @@ public class CategoryDetailsModel {
|
|||
return parentCategory;
|
||||
}
|
||||
|
||||
protected void setParentCategory(final Category parent) {
|
||||
parentCategory = buildCategoryNodeModel(parent);
|
||||
}
|
||||
|
||||
public long getCategoryOrder() {
|
||||
return categoryOrder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only for testing components
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> getOptions() {
|
||||
final Map<String, String> options = new TreeMap<>();
|
||||
options.put("alpha", "Option Alpha");
|
||||
options.put("bravo", "Option Bravo");
|
||||
options.put("charlie", "Option Charlie");
|
||||
options.put("delta", "Option Delta");
|
||||
options.put("echo", "Option Echo");
|
||||
return options;
|
||||
public boolean isNew() {
|
||||
return categoryId == 0;
|
||||
}
|
||||
|
||||
public Set<String> getSelectedOptions() {
|
||||
final Set<String> selectedOptions = new HashSet<>();
|
||||
selectedOptions.add("delta");
|
||||
return selectedOptions;
|
||||
}
|
||||
|
||||
public Set<String> getMultipleSelectedOptions() {
|
||||
final Set<String> selectedOptions = new HashSet<>();
|
||||
selectedOptions.add("delta");
|
||||
selectedOptions.add("bravo");
|
||||
return selectedOptions;
|
||||
}
|
||||
|
||||
|
||||
public List<Message> getMessages() {
|
||||
return Collections.unmodifiableList(messages);
|
||||
}
|
||||
|
|
@ -156,6 +153,18 @@ public class CategoryDetailsModel {
|
|||
messages.add(message);
|
||||
}
|
||||
|
||||
public Set<String> getInvalidFields() {
|
||||
return Collections.unmodifiableSet(invalidFields);
|
||||
}
|
||||
|
||||
protected void addInvalidField(final String invalidField) {
|
||||
invalidFields.add(invalidField);
|
||||
}
|
||||
|
||||
protected void setInvalidFields(final Set<String> invalidFields) {
|
||||
this.invalidFields = new HashSet<>(invalidFields);
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
protected void setCategory(final Category category) {
|
||||
Objects.requireNonNull(category);
|
||||
|
|
@ -164,6 +173,7 @@ public class CategoryDetailsModel {
|
|||
uuid = category.getUuid();
|
||||
uniqueId = category.getUniqueId();
|
||||
name = category.getName();
|
||||
path = categoryManager.getCategoryPath(category);
|
||||
title = category
|
||||
.getTitle()
|
||||
.getValues()
|
||||
|
|
@ -192,11 +202,22 @@ public class CategoryDetailsModel {
|
|||
subCategories = category
|
||||
.getSubCategories()
|
||||
.stream()
|
||||
.map(CategoryNodeModel::new)
|
||||
.map(this::buildCategoryNodeModel)
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
parentCategory = new CategoryNodeModel(category.getParentCategory());
|
||||
parentCategory = buildCategoryNodeModel(category.getParentCategory());
|
||||
categoryOrder = category.getCategoryOrder();
|
||||
}
|
||||
|
||||
private CategoryNodeModel buildCategoryNodeModel(final Category category) {
|
||||
final CategoryNodeModel model = new CategoryNodeModel();
|
||||
model.setCategoryId(category.getObjectId());
|
||||
model.setUuid(category.getUuid());
|
||||
model.setUniqueId(category.getUniqueId());
|
||||
model.setName(category.getName());
|
||||
model.setPath(categoryManager.getCategoryPath(category));
|
||||
model.setCategoryOrder(category.getCategoryOrder());
|
||||
return model;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,23 +76,19 @@ public class CategoryFormController {
|
|||
private boolean enabled;
|
||||
|
||||
@FormParam("visible")
|
||||
private boolean visisble;
|
||||
private boolean visible;
|
||||
|
||||
@FormParam("abstractCategory")
|
||||
private boolean abstractCategory;
|
||||
|
||||
@FormParam("categoryOrder")
|
||||
private long categoryOrder;
|
||||
|
||||
@FormParam("parentCategoryIdentifier")
|
||||
private String parentCategoryIdentifier;
|
||||
|
||||
@POST
|
||||
@Path("/new")
|
||||
@Path("/{parentCategoryIdentifier}/new")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String createCategory() {
|
||||
public String createCategory(
|
||||
@PathParam("parentCategoryIdentifier") final String parentCategoryIdentifier
|
||||
) {
|
||||
final Identifier parentIdentifier = identifierParser.parseIdentifier(
|
||||
parentCategoryIdentifier
|
||||
);
|
||||
|
|
@ -118,9 +114,8 @@ public class CategoryFormController {
|
|||
category.setUniqueId(uniqueId);
|
||||
category.setName(name);
|
||||
category.setEnabled(enabled);
|
||||
category.setVisible(visisble);
|
||||
category.setVisible(visible);
|
||||
category.setAbstractCategory(abstractCategory);
|
||||
category.setCategoryOrder(categoryOrder);
|
||||
|
||||
categoryRepository.save(category);
|
||||
categoryManager.addSubCategoryToCategory(category, parentCategory);
|
||||
|
|
@ -152,7 +147,7 @@ public class CategoryFormController {
|
|||
final String categoryIdentifierParam
|
||||
) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
parentCategoryIdentifier
|
||||
categoryIdentifierParam
|
||||
);
|
||||
final Optional<Category> result;
|
||||
switch (identifier.getType()) {
|
||||
|
|
@ -175,12 +170,11 @@ public class CategoryFormController {
|
|||
category.setUniqueId(uniqueId);
|
||||
category.setName(name);
|
||||
category.setEnabled(enabled);
|
||||
category.setVisible(visisble);
|
||||
category.setVisible(visible);
|
||||
category.setAbstractCategory(abstractCategory);
|
||||
category.setCategoryOrder(categoryOrder);
|
||||
|
||||
|
||||
categoryRepository.save(category);
|
||||
|
||||
|
||||
return String.format(
|
||||
"redirect:categorymanager/categories/ID-%s",
|
||||
category.getObjectId()
|
||||
|
|
|
|||
|
|
@ -28,45 +28,70 @@ import java.util.Objects;
|
|||
*/
|
||||
public class CategoryNodeModel implements Comparable<CategoryNodeModel> {
|
||||
|
||||
private final long categoryId;
|
||||
private long categoryId;
|
||||
|
||||
private final String uuid;
|
||||
private String uuid;
|
||||
|
||||
private final String uniqueId;
|
||||
private String uniqueId;
|
||||
|
||||
private final String name;
|
||||
private String name;
|
||||
|
||||
private String path;
|
||||
|
||||
private final long categoryOrder;
|
||||
|
||||
public CategoryNodeModel(final Category category) {
|
||||
Objects.requireNonNull(category);
|
||||
categoryId = category.getObjectId();
|
||||
uuid = category.getUuid();
|
||||
uniqueId = category.getUniqueId();
|
||||
categoryOrder = category.getCategoryOrder();
|
||||
name = category.getName();
|
||||
}
|
||||
private long categoryOrder;
|
||||
|
||||
public long getCategoryId() {
|
||||
return categoryId;
|
||||
}
|
||||
|
||||
protected void setCategoryId(final long categoryId) {
|
||||
this.categoryId = categoryId;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return String.format("ID-%d", categoryId);
|
||||
}
|
||||
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
protected void setUuid(final String uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public String getUniqueId() {
|
||||
return uniqueId;
|
||||
}
|
||||
|
||||
protected void setUniqueId(final String uniqueId) {
|
||||
this.uniqueId = uniqueId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
protected void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
protected void setPath(final String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public long getCategoryOrder() {
|
||||
return categoryOrder;
|
||||
}
|
||||
|
||||
protected void setCategoryOrder(final long categoryOrder) {
|
||||
this.categoryOrder = categoryOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(final CategoryNodeModel other) {
|
||||
int result = Long.compare(
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
type="String" />
|
||||
<cc:attribute name="buttonText"
|
||||
required="true"
|
||||
shortDescription="Text for the button toggleing the modal form."
|
||||
shortDescription="Text of the button toggleing the modal form."
|
||||
type="String" />
|
||||
<cc:attribute name="buttonTextClass"
|
||||
default=""
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
type="String" />
|
||||
<cc:attribute name="dialogId"
|
||||
required="true"
|
||||
shortDescription="ID for the dialog."
|
||||
shortDescription="ID of the dialog."
|
||||
type="String" />
|
||||
<cc:attribute name="method"
|
||||
default="post"
|
||||
|
|
@ -41,8 +41,7 @@
|
|||
</cc:interface>
|
||||
<cc:implementation>
|
||||
<div class="#{cc.attrs.buttonTextClass}">
|
||||
<button aria-labelledby="#{cc.attrs.dialogId}-title"
|
||||
class="btn #{cc.attrs.buttonClass}"
|
||||
<button class="btn #{cc.attrs.buttonClass}"
|
||||
data-target="##{cc.attrs.dialogId}"
|
||||
data-toggle="modal"
|
||||
type="button">
|
||||
|
|
@ -52,7 +51,9 @@
|
|||
<span>#{cc.attrs.buttonText}</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal fade"
|
||||
<div aria-labelledby="#{cc.attrs.dialogId}-title"
|
||||
aria-hidden="true"
|
||||
class="modal fade"
|
||||
data-backdrop="static"
|
||||
id="#{cc.attrs.dialogId}"
|
||||
tabindex="-1">
|
||||
|
|
|
|||
|
|
@ -213,19 +213,24 @@
|
|||
<div class="modal-header">
|
||||
<c:choose>
|
||||
<c:when test="#{cc.attrs.headingLevel == 1}">
|
||||
<h2>#{cc.attrs.addDialogTitle}</h2>
|
||||
<h2 class="modal-title"
|
||||
id="#{cc.attrs.editorId}-dialog-title">#{cc.attrs.addDialogTitle}</h2>
|
||||
</c:when>
|
||||
<c:when test="#{cc.attrs.headingLevel == 2}">
|
||||
<h3>#{cc.attrs.addDialogTitle}</h3>
|
||||
<h3 class="modal-title"
|
||||
id="#{cc.attrs.editorId}-dialog-title">#{cc.attrs.addDialogTitle}</h3>
|
||||
</c:when>
|
||||
<c:when test="#{cc.attrs.headingLevel == 3}">
|
||||
<h4>#{cc.attrs.addDialogTitle}</h4>
|
||||
<h4 class="modal-title"
|
||||
id="#{cc.attrs.editorId}-dialog-title">#{cc.attrs.addDialogTitle}</h4>
|
||||
</c:when>
|
||||
<c:when test="#{cc.attrs.headingLevel == 4}">
|
||||
<h5>#{cc.attrs.addDialogTitle}</h5>
|
||||
<h5 class="modal-title"
|
||||
id="#{cc.attrs.editorId}-dialog-title">#{cc.attrs.addDialogTitle}</h5>
|
||||
</c:when>
|
||||
<c:when test="#{cc.attrs.headingLevel == 5}">
|
||||
<h6>#{cc.attrs.addDialogTitle}</h6>
|
||||
<h6 class="modal-title"
|
||||
id="#{cc.attrs.editorId}-dialog-title">#{cc.attrs.addDialogTitle}</h6>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div>#{cc.attrs.addDialogTitle}</div>
|
||||
|
|
|
|||
|
|
@ -6,17 +6,17 @@
|
|||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="main">
|
||||
<div class="container">
|
||||
<h1>#{AdminMessages['categories.label']}</h1>
|
||||
<h1>#{AdminMessages['categorymanager.label']}</h1>
|
||||
<p>ToDo</p>
|
||||
</div>
|
||||
</ui:define>
|
||||
|
|
|
|||
|
|
@ -1,25 +1,257 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||
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/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
#{AdminMessages['categories.label']}
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
#{CategoryDetailsModel.categoryId}
|
||||
</li>
|
||||
</ui:define>
|
||||
|
||||
|
||||
<ui:define name="main">
|
||||
<div class="container">
|
||||
<h1>#{AdminMessages['categories.label']}</h1>
|
||||
<p>ToDo</p>
|
||||
<h1>#{AdminMessages.getMessage('categories.details.title', [CategoryDetailsModel.path])}</h1>
|
||||
|
||||
<libreccm:messages messages="#{CategoryDetailsModel.messages}" />
|
||||
|
||||
<dl>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.id']}</dt>
|
||||
<dd>#{CategoryDetailsModel.categoryId}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.uuid']}</dt>
|
||||
<dd>#{CategoryDetailsModel.uuid}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.uniqueId']}</dt>
|
||||
<dd>#{CategoryDetailsModel.uniqueId}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.name']}</dt>
|
||||
<dd>#{CategoryDetailsModel.name}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.enabled']}</dt>
|
||||
<dd>
|
||||
<c:choose>
|
||||
<c:when test="#{CategoryDetailsModel.enabled}">
|
||||
#{AdminMessages['categories.details.enabled.yes']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.details.enabled.no']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.visible']}</dt>
|
||||
<dd>
|
||||
<c:choose>
|
||||
<c:when test="#{CategoryDetailsModel.enabled}">
|
||||
#{AdminMessages['categories.details.visible.yes']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.details.visible.no']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>#{AdminMessages['categories.details.abstract_category']}</dt>
|
||||
<dd>
|
||||
<c:choose>
|
||||
<c:when test="#{CategoryDetailsModel.enabled}">
|
||||
#{AdminMessages['categories.details.abstract_category.yes']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.details.abstract_category.no']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
|
||||
<div class="mb-4">
|
||||
<a class="btn btn-primary"
|
||||
href="#{mvc.uri('CategoriesController#editCategory', {'categoryIdentifier': CategoryDetailsModel.identifier } )}">
|
||||
<bootstrap:svgIcon icon="pen" />
|
||||
<span>#{AdminMessages['categories.details.edit']}</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<libreccm:localizedStringEditor addMethod="CategoriesController#addTitle"
|
||||
addButtonLabel="#{AdminMessages['categories.details.title.add']}"
|
||||
addDialogCancelLabel="#{AdminMessages['categories.details.title.add.dialog.close']}"
|
||||
addDialogLocaleSelectHelp="#{AdminMessages['categories.details.title.add.dialog.locale.help']}"
|
||||
addDialogLocaleSelectLabel="#{AdminMessages['categories.details.title.add.dialog.locale.label']}"
|
||||
addDialogSubmitLabel="#{AdminMessages['categories.details.title.add.dialog.submit']}"
|
||||
addDialogTitle="#{AdminMessages['categories.details.title.add.dialog.title']}"
|
||||
addDialogValueHelp="#{AdminMessages['categories.details.title.add.dialog.value.help']}"
|
||||
addDialogValueLabel="#{AdminMessages['categories.details.title.add.dialog.value.label']}"
|
||||
editButtonLabel="#{AdminMessages['categories.details.title.table.actions.edit']}"
|
||||
editDialogCancelLabel="#{AdminMessages['categories.details.title.edit.dialog.close']}"
|
||||
editDialogSubmitLabel="#{AdminMessages['categories.details.title.edit.dialog.submit']}"
|
||||
editDialogTitle="#{AdminMessages['categories.details.title.table.actions.edit.dialog.title']}"
|
||||
editDialogValueHelp="#{AdminMessages['categories.details.title.edit.dialog.value.help']}"
|
||||
editDialogValueLabel="#{AdminMessages['categories.details.title.edit.dialog.value.label']}"
|
||||
editMethod="CategoriesController#editTitle"
|
||||
editorId="categorysystem-title"
|
||||
emptyText="#{AdminMessages['categories.details.title.none']}"
|
||||
hasUnusedLocales="#{CategorySystemDetailsModel.hasUnusedTitleLocales()}"
|
||||
objectIdentifier="#{CategorySystemDetailsModel.identifier}"
|
||||
removeButtonLabel="#{AdminMessages['categories.details.title.table.actions.remove']}"
|
||||
removeDialogCancelLabel="#{AdminMessages['categories.details.title.remove.dialog.close']}"
|
||||
removeDialogSubmitLabel="#{AdminMessages['categories.details.title.remove.dialog.submit']}"
|
||||
removeDialogText="#{AdminMessages['categories.details.title.remove.dialog.message']}"
|
||||
removeDialogTitle="#{AdminMessages['categories.details.title.table.actions.remove.dialog.title']}"
|
||||
removeMethod="CategoriesController#removeTitle"
|
||||
tableActionsHeading="#{AdminMessages['categories.details.title.table.headings.actions']}"
|
||||
tableLocaleHeading="#{AdminMessages['categories.details.title.table.headings.locale']}"
|
||||
tableValueHeading="#{AdminMessages['categories.details.title.table.headings.value']}"
|
||||
title="#{AdminMessages['categories.details.title.heading']}"
|
||||
unusedLocales="#{CategorySystemDetailsModel.unusedTitleLocales}"
|
||||
values="#{CategorySystemDetailsModel.title}" />
|
||||
|
||||
<libreccm:localizedStringEditor addMethod="CategoriesController#addDescription"
|
||||
addButtonLabel="#{AdminMessages['categories.details.description.add']}"
|
||||
addDialogCancelLabel="#{AdminMessages['categories.details.description.add.dialog.close']}"
|
||||
addDialogLocaleSelectHelp="#{AdminMessages['categories.details.description.add.dialog.locale.help']}"
|
||||
addDialogLocaleSelectLabel=" #{AdminMessages['categories.details.description.add.dialog.locale.label']}"
|
||||
addDialogSubmitLabel="#{AdminMessages['categories.details.description.add.dialog.submit']}"
|
||||
addDialogTitle="#{AdminMessages['categories.details.description.add.dialog.title']}"
|
||||
addDialogValueHelp="#{AdminMessages['categories.details.description.add.dialog.value.help']}"
|
||||
addDialogValueLabel="#{AdminMessages['categories.details.description.add.dialog.value.label']}"
|
||||
editButtonLabel="#{AdminMessages['categories.details.description.table.actions.edit']}"
|
||||
editDialogCancelLabel="#{AdminMessages['categories.details.description.edit.dialog.close']}"
|
||||
editDialogSubmitLabel="#{AdminMessages['categories.details.description.edit.dialog.submit']}"
|
||||
editDialogTitle="#{AdminMessages['categories.details.description.table.actions.edit.dialog.title']}"
|
||||
editDialogValueHelp="#{AdminMessages['categories.details.description.edit.dialog.value.help']}"
|
||||
editDialogValueLabel="#{AdminMessages['categories.details.description.edit.dialog.value.label']}"
|
||||
editMethod="CategoriesController#editDescription"
|
||||
editorId="categorysystem-description"
|
||||
emptyText="#{AdminMessages['categories.details.description.none']}"
|
||||
hasUnusedLocales="#{CategorySystemDetailsModel.hasUnusedDescriptionLocales()}"
|
||||
objectIdentifier="#{CategorySystemDetailsModel.identifier}"
|
||||
removeButtonLabel="#{AdminMessages['categories.details.description.table.actions.remove']}"
|
||||
removeDialogCancelLabel="#{AdminMessages['categories.details.description.remove.dialog.close']}"
|
||||
removeDialogSubmitLabel="#{AdminMessages['categories.details.description.remove.dialog.submit']}"
|
||||
removeDialogText="#{AdminMessages['categories.details.description.remove.dialog.message']}"
|
||||
removeDialogTitle="#{AdminMessages['categories.details.description.table.actions.remove.dialog.title']}"
|
||||
removeMethod="CategoriesController#removeDescription"
|
||||
tableActionsHeading="#{AdminMessages['categories.details.description.table.headings.actions']}"
|
||||
tableLocaleHeading="#{AdminMessages['categories.details.description.table.headings.locale']}"
|
||||
tableValueHeading="#{AdminMessages['categories.details.description.table.headings.value']}"
|
||||
title="#{AdminMessages['categories.details.description.heading']}"
|
||||
unusedLocales="#{CategorySystemDetailsModel.unusedTitleLocales}"
|
||||
useTextarea="true"
|
||||
values="#{CategorySystemDetailsModel.description}" />
|
||||
|
||||
<h2>#{AdminMessages['categories.details.subcategories.heading']}</h2>
|
||||
<div class="mb-2">
|
||||
<div class="text-right">
|
||||
<a class="btn btn-secondary"
|
||||
href="#{mvc.uri('CategoriesController#newSubCategory', {'categoryIdentifier': CategorySystemDetailsModel.parentIdentifier})}">
|
||||
<bootstrap:svgIcon icon="plus-circle" />
|
||||
<span>#{AdminMessages['categories.details.subcategories.add']}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<c:choose>
|
||||
<c:when test="#{CategoryDetailsModel.subCategories.isEmpty()}">
|
||||
<p>#{AdminMessages['categories.details.subcategories.none']}</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
#{AdminMessages['categories.details.subcategories.table.headings.name']}
|
||||
</th>
|
||||
<th>
|
||||
#{AdminMessages['categories.details.subcategories.table.headings.enabled']}
|
||||
</th>
|
||||
<th>
|
||||
#{AdminMessages['categories.details.subcategories.table.headings.visible']}
|
||||
</th>
|
||||
<th>
|
||||
#{AdminMessages['categories.details.subcategories.table.headings.abstract']}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="#{CategoryDetailsModel.subCategories}"
|
||||
var="category">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="#{mvc.uri('CategoriesController#getCategory', { 'categoryIdentifier': category.identifier})}">
|
||||
#{category.name}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="#{category.enabled}">
|
||||
#{AdminMessages['categories.details.enabled.yes']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.details.enabled.no']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="#{category.visible}">
|
||||
#{AdminMessages['categories.details.visible.yes']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.details.visible.no']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="#{category.abstractCategory}">
|
||||
#{AdminMessages['categories.details.abstract_category.yes']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.details.abstract_category.no']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<libreccm:deleteDialog
|
||||
actionTarget="#{mvc.uri('CategoriesController#removeSubCategory', {'categoryIdentifier': category.identifier})}"
|
||||
buttonText="#{AdminMeesages['categories.details.subcategories.delete']}"
|
||||
buttonTextClass="text-center"
|
||||
cancelLabel="#{AdminMessages['categories.details.subcategories.delete.cancel']}"
|
||||
confirmLabel="#{AdminMessages['categories.details.subcategories.delete.confirm']}"
|
||||
dialogId="categories-subcategories-#{category.categoryId}-delete"
|
||||
dialogTitle="#{AdminMessages['categories.details.subcategories.delete.title']}"
|
||||
message="#{AdminMessages.getMessage('categories.details.subcategories.delete.message', [category.path])}"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</div>
|
||||
</ui:define>
|
||||
|
||||
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -7,148 +7,80 @@
|
|||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
#{AdminMessages['categories.label']}
|
||||
</li>
|
||||
<c:choose>
|
||||
<c:when test="#{CategoryDetailsModel.new}">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.new.breadcrumb']}
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages.getMessage('categories.edit.breadcrumb', CategoryDetailsModel.name)}
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="main">
|
||||
<div class="container">
|
||||
<h1>#{AdminMessages['categories.label']}</h1>
|
||||
<h1>
|
||||
<c:choose>
|
||||
<c:when test="#{CategoryDetailsModel.new}">
|
||||
#{AdminMessage.getMessage('categories.new.label', CategoryDetailsModel.parent.path)}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessage.getMessage('categories.edit.label', CategoryDetailsModel.path)}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
#{AdminMessages['categories.label']}
|
||||
</h1>
|
||||
|
||||
<form action="#" method="post">
|
||||
<bootstrap:formGroupText help="test"
|
||||
inputId="test"
|
||||
label="Test"
|
||||
name="test"
|
||||
value="foobar bar" />
|
||||
<bootstrap:formGroupNumber help="The price"
|
||||
inputId="price"
|
||||
label="Price"
|
||||
name="price"
|
||||
step="0.01"
|
||||
value="10.0" />
|
||||
<bootstrap:formGroupDate help="Test of date form group"
|
||||
inputId="dateTest"
|
||||
label="Date Test"
|
||||
max="2020-11-30"
|
||||
min="2020-11-02"
|
||||
name="dateTest"
|
||||
step="7"
|
||||
value="2020-11-02" />
|
||||
<bootstrap:formGroupTime help="Test of date form group"
|
||||
inputId="dateTest"
|
||||
label="Date Test"
|
||||
max="08:00"
|
||||
min="18:00"
|
||||
name="dateTest"
|
||||
step="900"
|
||||
value="08:00" />
|
||||
<bootstrap:formGroupSearch help="search test"
|
||||
inputId="searchtest"
|
||||
label="Search Test"
|
||||
name="searchtest"
|
||||
placeholder="Search" />
|
||||
<bootstrap:formGroupPassword help="password test"
|
||||
inputId="passwordtest"
|
||||
label="Password Test"
|
||||
name="passwordtest"
|
||||
placeholder="Password" />
|
||||
<bootstrap:formGroupEmail help="email test"
|
||||
inputId="emailtest"
|
||||
label="Email Test"
|
||||
name="emailtest"
|
||||
placeholder="foo@example.com" />
|
||||
<bootstrap:formGroupTel help="Tel test"
|
||||
inputId="teltest"
|
||||
label="Tel Test"
|
||||
name="teltest"
|
||||
placeholder="00000 00000" />
|
||||
<bootstrap:formGroupFile help="File test"
|
||||
inputId="filetest"
|
||||
label="File Test"
|
||||
name="filetest" />
|
||||
<bootstrap:formGroupUrl help="URL test"
|
||||
inputId="urltest"
|
||||
label="URL Test"
|
||||
name="urltest"
|
||||
placeholder="https://www.example.org/foo/bar" />
|
||||
<bootstrap:formGroupColor help="Color Test"
|
||||
inputId="colortest"
|
||||
label="Color"
|
||||
name="color" />
|
||||
<bootstrap:formGroupRange help="A range"
|
||||
inputId="rangetest"
|
||||
label="Range"
|
||||
max="20"
|
||||
min="5"
|
||||
name="rangetest"
|
||||
step="0.1"
|
||||
value="10.0" />
|
||||
<bootstrap:formGroupTextarea cols="80"
|
||||
help="Textarea Test"
|
||||
label="Textarea"
|
||||
inputId="textareatest"
|
||||
name="textareatest"
|
||||
rows="10" />
|
||||
<bootstrap:formGroupSelect help="Select Test 1"
|
||||
label="choose an option"
|
||||
inputId="selecttest1"
|
||||
name="selecttest1"
|
||||
options="#{CategoryDetailsModel.options}" />
|
||||
<bootstrap:formGroupSelect help="Select Test 2"
|
||||
label="choose an option"
|
||||
inputId="selecttest2"
|
||||
name="selecttest2"
|
||||
options="#{CategoryDetailsModel.options}"
|
||||
selectedOptions="#{CategoryDetailsModel.selectedOptions}"
|
||||
size="3" />
|
||||
|
||||
<bootstrap:formGroupSelect help="Select Test 2"
|
||||
label="choose an option"
|
||||
inputId="selecttest2"
|
||||
multiple="true"
|
||||
name="selecttest2"
|
||||
options="#{CategoryDetailsModel.options}"
|
||||
selectedOptions="#{CategoryDetailsModel.multipleSelectedOptions}"
|
||||
size="3" />
|
||||
<bootstrap:formCheck label="Are you sure?"
|
||||
inputId="checkboxtest1"
|
||||
name="checkboxtest1" />
|
||||
<bootstrap:formGroupChecks help="Checkbox Test 1"
|
||||
inputId="checkboxes1"
|
||||
label="Checkboxes 1"
|
||||
name="checkboxes1"
|
||||
options="#{CategoryDetailsModel.options}" />
|
||||
<bootstrap:formGroupChecks help="Checkbox Test2 "
|
||||
inputId="checkboxes2"
|
||||
label="Checkboxes 2"
|
||||
name="checkboxes2"
|
||||
selectedOptions="#{CategoryDetailsModel.selectedOptions}"
|
||||
options="#{CategoryDetailsModel.options}" />
|
||||
<bootstrap:formGroupChecks help="Checkbox Test 3"
|
||||
inputId="checkboxes3"
|
||||
label="Checkboxes 3"
|
||||
name="checkboxes3"
|
||||
selectedOptions="#{CategoryDetailsModel.multipleSelectedOptions}"
|
||||
options="#{CategoryDetailsModel.options}" />
|
||||
|
||||
<bootstrap:formGroupRadio help="Radio Test 1"
|
||||
inputId="radio1"
|
||||
label="Radio 1"
|
||||
name="radio1"
|
||||
options="#{CategoryDetailsModel.options}" />
|
||||
<bootstrap:formGroupRadio help="Radio Test 2 "
|
||||
inputId="radios2"
|
||||
label="Radio 2"
|
||||
name="radio2"
|
||||
selectedOption="charlie"
|
||||
options="#{CategoryDetailsModel.options}" />
|
||||
<form action="#{CategoryDetailsModel.new ? mvc.uri('CategoryFormController#createCategory', {'parentCategoryIdentifier', CategoryDetailsModel.parentCategory.identifier }) : mvc.uri('CategoryFormController#updateCategory', {'categoryIdentifier', CategoryDetailsModel.identifier })}"
|
||||
method="post">
|
||||
<bootstrap:formGroupText help="#{AdminMessages['categories.form.name.help']}"
|
||||
inputId="name"
|
||||
label="#{AdminMessages['categories.form.name.label']}"
|
||||
name="name"
|
||||
pattern="[\\w-.]*"
|
||||
required="true" />
|
||||
<bootstrap:formGroupText help="#{AdminMessages['categories.form.uniqueId.help']}"
|
||||
inputId="uniqueId"
|
||||
label="#{AdminMessages['categories.form.uniqueId.label']}"
|
||||
name="uniqueId"
|
||||
required="false" />
|
||||
<bootstrap:formCheck label="#{AdminMessages['categories.form.enabled.label']}"
|
||||
inputId="enabled"
|
||||
name="enabled" />
|
||||
<bootstrap:formCheck label="#{AdminMessages['categories.form.visible.label']}"
|
||||
inputId="visible"
|
||||
name="visible" />
|
||||
<bootstrap:formCheck label="#{AdminMessages['categories.form.abstractCategory.label']}"
|
||||
inputId="abstractCategory"
|
||||
name="abstractCategory" />
|
||||
<a class="btn btn-warning"
|
||||
href="#{mvc.uri('CategorySystemsController#getCategorySystems')}">
|
||||
#{AdminMessages['categories.form.buttons.cancel']}
|
||||
</a>
|
||||
<button class="btn btn-success" type="submit">
|
||||
<c:choose>
|
||||
<c:when test="#{CategorySystemDetailsModel.new}">
|
||||
#{AdminMessages['categories.form.buttons.create']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
#{AdminMessages['categories.form.buttons.save']}
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</button>
|
||||
</form>
|
||||
<p>ToDo</p>
|
||||
</div>
|
||||
</ui:define>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,22 +4,26 @@
|
|||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
</ui:define>
|
||||
|
||||
|
||||
<ui:define name="main">
|
||||
<div class="container">
|
||||
<h1>#{AdminMessages['categories.label']}</h1>
|
||||
<p>ToDo</p>
|
||||
<h1>#{AdminMessages['categories.not_found.title']}</h1>
|
||||
<c:forEach items="#{CategoryDetailsModel.messages}" var="message">
|
||||
<div class="alert alert-#{message.messageType}" role="alert">
|
||||
#{message}
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</ui:define>
|
||||
|
||||
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -9,12 +9,12 @@
|
|||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#{mvc.uri('CategorySystemsController#getCategorySystems')}">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active">
|
||||
|
|
@ -308,8 +308,7 @@
|
|||
<div class="mb-2">
|
||||
<div class="text-right">
|
||||
<a class="btn btn-secondary"
|
||||
href="#{mvc.uri('CategoriesController#newSubCategory', {'categoryIdentifier': CategorySystemDetailsModel.rootIdentifier})}"
|
||||
type="button">
|
||||
href="#{mvc.uri('CategoriesController#newSubCategory', {'categoryIdentifier': CategorySystemDetailsModel.rootIdentifier})}">
|
||||
<bootstrap:svgIcon icon="plus-circle" />
|
||||
<span>#{AdminMessages['categorysystems.details.categories.add']}</span>
|
||||
</a>
|
||||
|
|
@ -378,15 +377,17 @@
|
|||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-danger"
|
||||
data-target="#categorysystem-categories-#{category.uuid}-delete"
|
||||
data-toggle="modal"
|
||||
type="button">
|
||||
<bootstrap:svgIcon icon="x-circle" />
|
||||
<span>#{AdminMessages['categorysystems.details.categories.delete']}</span>
|
||||
</button>
|
||||
<!-- ToDo: Delete Dialog -->
|
||||
<td>
|
||||
<libreccm:deleteDialog
|
||||
actionTarget="#{mvc.uri('CategoriesController#removeSubCategory', {'categoryIdentifier': category.identifier})}"
|
||||
buttonText="#{AdminMeesages['categories.details.subcategories.delete']}"
|
||||
buttonTextClass="text-center"
|
||||
cancelLabel="#{AdminMessages['categories.details.subcategories.delete.cancel']}"
|
||||
confirmLabel="#{AdminMessages['categories.details.subcategories.delete.confirm']}"
|
||||
dialogId="categories-subcategories-#{category.categoryId}-delete"
|
||||
dialogTitle="#{AdminMessages['categories.details.subcategories.delete.title']}"
|
||||
message="#{AdminMessages.getMessage('categories.details.subcategories.delete.message', [category.path])}"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
<li class="breadcrumb-item active">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#{mvc.uri('CategorySystemsController#getCategorySystems')}">
|
||||
#{AdminMessages['categorysystems.label']}
|
||||
</a>
|
||||
|
|
@ -29,7 +29,6 @@
|
|||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="main">
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
</ui:define>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="categories" />
|
||||
<ui:param name="title" value="#{AdminMessages['categories.label']}" />
|
||||
<ui:param name="title" value="#{AdminMessages['categorymanager.label']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categories.label']}
|
||||
#{AdminMessages['categorymanager.label']}
|
||||
</li>
|
||||
<li class="breadcrumb-item active">
|
||||
#{AdminMessages['categorysystems.label']}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ systeminformation.label=System Information
|
|||
applications.label=Applications
|
||||
applications.description=Manage application instances
|
||||
imexport.label=Import/Export
|
||||
categories.label=Categories Manager
|
||||
categorymanager.label=Categories Manager
|
||||
categories.description=Manage categories
|
||||
configuration.label=Configuration
|
||||
configuration.description=Manage configuration settings
|
||||
|
|
@ -358,3 +358,42 @@ categorysystems.details.categories.table.headings.visible.false=No
|
|||
categorysystems.details.categories.table.headings.abstract.true=Yes
|
||||
categorysystems.details.categories.table.headings.abstract.false=No
|
||||
categorysystems.details.categories.delete=Delete
|
||||
categories.label=Categories
|
||||
categories.new.label=Create new subcategory of category {0}
|
||||
categories.edit.label=Edit category {0}
|
||||
categories.new.breadcrumb=Create new category
|
||||
categories.edit.breadcrumb=Edit category {0}
|
||||
categories.form.uniqueId.help=Unique ID of the new category. Should be unique for the complete category system
|
||||
categories.form.uniqueId.label=Unique ID
|
||||
categories.form.name.help=Name of the category. May only contain the letters, numbers and hypens.
|
||||
categories.form.name.label=Name
|
||||
categories.form.enabled.label=Enabled?
|
||||
categories.form.visible.label=Visible?
|
||||
categories.form.abstractCategory.label=Abstract Category?
|
||||
categories.form.buttons.create=Create new category
|
||||
categories.form.buttons.save=Save
|
||||
categories.form.buttons.cancel=Cancel
|
||||
categories.not_found.title=Category not found
|
||||
categories.details.title=Details of category {0}
|
||||
categories.details.edit=Edit
|
||||
categories.details.enabled.yes=Yes
|
||||
categories.details.enabled.no=No
|
||||
categories.details.visible.yes=Yes
|
||||
categories.details.visible.no=No
|
||||
categories.details.abstract_category.yes=Yes
|
||||
categories.details.abstract_category.no=No
|
||||
categories.details.enabled=Enabled?
|
||||
categories.details.visible=Visible?
|
||||
categories.details.abstract_category=Abstract Category?
|
||||
categories.details.subcategories.heading=Subcategories
|
||||
categories.details.subcategories.add=Add new subcategory
|
||||
categories.details.subcategories.none=This category has no subcategories
|
||||
categories.details.subcategories.table.headings.name=Name
|
||||
categories.details.subcategories.table.headings.enabled=Enabled?
|
||||
categories.details.subcategories.table.headings.visible=Visible?
|
||||
categories.details.subcategories.table.headings.abstract=Abstract?
|
||||
categories.details.subcategories.delete=Delete
|
||||
categories.details.subcategories.delete.cancel=Cancel
|
||||
categories.details.subcategories.delete.confirm=Delete category
|
||||
categories.details.subcategories.delete.title=Delete category?
|
||||
categories.details.subcategories.delete.message=Are you sure to delete category {0}?
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ systeminformation.label=System Informationen
|
|||
applications.label=Anwendungen
|
||||
applications.description=Verwalten der Anwendungsinstanzen
|
||||
imexport.label=Import/Export
|
||||
categories.label=Kategorienmanager
|
||||
categorymanager.label=Kategorienmanager
|
||||
categories.description=Verwaltung der Kategorien
|
||||
configuration.label=Konfiguration
|
||||
configuration.description=Bearbeiten der Konfiguration
|
||||
|
|
@ -358,3 +358,42 @@ categorysystems.details.categories.table.headings.visible.false=Nein
|
|||
categorysystems.details.categories.table.headings.abstract.true=Ja
|
||||
categorysystems.details.categories.table.headings.abstract.false=Nein
|
||||
categorysystems.details.categories.delete=L\u00f6schen
|
||||
categories.label=Kategorien
|
||||
categories.new.label=Neue Unterkategorie f\u00fcr Kategorie {0} erstellen
|
||||
categories.edit.label=Kategorie {0} bearbeiten
|
||||
categories.new.breadcrumb=Neue Kategorie anlegen
|
||||
categories.edit.breadcrumb=Kategorie {0} bearbeiten
|
||||
categories.form.uniqueId.help=Eindeutige ID der Kategorie. Sollte innerhalb des gesamten Kategoriensystems eindeutig sein.
|
||||
categories.form.uniqueId.label=Eindeutige ID
|
||||
categories.form.name.help=Name der Kategorie. Darf nur Buchstaben, Zahlen und den Bindestrich enthalten.
|
||||
categories.form.name.label=Name
|
||||
categories.form.enabled.label=Aktiv?
|
||||
categories.form.visible.label=Sichtbar?
|
||||
categories.form.abstractCategory.label=Abstrakte Kategorie?
|
||||
categories.form.buttons.create=Neue Kategorie anlegen
|
||||
categories.form.buttons.save=Speichern
|
||||
categories.form.buttons.cancel=Abbrechen
|
||||
categories.not_found.title=Kategorie nicht gefunden
|
||||
categories.details.title=Details Kategorie {0}
|
||||
categories.details.edit=Bearbeiten
|
||||
categories.details.enabled.yes=Ja
|
||||
categories.details.enabled.no=Nein
|
||||
categories.details.visible.yes=Ja
|
||||
categories.details.visible.no=Nein
|
||||
categories.details.abstract_category.yes=Ja
|
||||
categories.details.abstract_category.no=Nein
|
||||
categories.details.enabled=Aktiv?
|
||||
categories.details.visible=Sichtbar?
|
||||
categories.details.abstract_category=Abstrakte Kategorie?
|
||||
categories.details.subcategories.heading=Subkategorien
|
||||
categories.details.subcategories.add=Neue Unterkategorie erstellen
|
||||
categories.details.subcategories.none=Diese Kategorie hat keine Unterkategorien
|
||||
categories.details.subcategories.table.headings.name=Name
|
||||
categories.details.subcategories.table.headings.enabled=Aktiv?
|
||||
categories.details.subcategories.table.headings.visible=Sichtbar?
|
||||
categories.details.subcategories.table.headings.abstract=Abstrakt?
|
||||
categories.details.subcategories.delete=L\u00f6schen
|
||||
categories.details.subcategories.delete.cancel=Abbrechen
|
||||
categories.details.subcategories.delete.confirm=Kategorie l\u00f6schen
|
||||
categories.details.subcategories.delete.title=Kategorie l\u00f6schen?
|
||||
categories.details.subcategories.delete.message=Sind Sie sicher, dass Sie die Kategorie {0} l\u00f6schen wollen?
|
||||
|
|
|
|||
Loading…
Reference in New Issue