Controller for categories view in cms admin UI
Former-commit-id: 2d959e5ced3b027376a18134ad2941966ba0a63bpull/10/head
parent
7bd424537e
commit
0f1f0fadd4
|
|
@ -0,0 +1,175 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.librecms.ui.contentsections;
|
||||
|
||||
import org.libreccm.api.Identifier;
|
||||
import org.libreccm.api.IdentifierParser;
|
||||
import org.libreccm.categorization.Domain;
|
||||
import org.libreccm.categorization.DomainOwnership;
|
||||
import org.libreccm.l10n.GlobalizationHelper;
|
||||
import org.libreccm.security.AuthorizationRequired;
|
||||
import org.librecms.contentsection.ContentSection;
|
||||
import org.librecms.contentsection.ContentSectionRepository;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import javax.mvc.Controller;
|
||||
import javax.mvc.Models;
|
||||
import javax.transaction.Transactional;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@RequestScoped
|
||||
@Controller
|
||||
@Path("/{sectionIdentifier}/categorysystems")
|
||||
public class CategoriesController {
|
||||
|
||||
@Inject
|
||||
private ContentSectionRepository sectionRepo;
|
||||
|
||||
@Inject
|
||||
private GlobalizationHelper globalizationHelper;
|
||||
|
||||
@Inject
|
||||
private IdentifierParser identifierParser;
|
||||
|
||||
@Inject
|
||||
private Models models;
|
||||
|
||||
@GET
|
||||
@Path("/")
|
||||
@AuthorizationRequired
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String listCategorySystems(
|
||||
@PathParam("sectionIdentifier") final String sectionIdentifier
|
||||
) {
|
||||
final Optional<ContentSection> sectionResult = retrieveContentSection(
|
||||
sectionIdentifier);
|
||||
if (!sectionResult.isPresent()) {
|
||||
models.put("sectionIdentifier", sectionIdentifier);
|
||||
return "org/librecms/ui/contentsection/contentsection-not-found.xhtml";
|
||||
}
|
||||
final ContentSection section = sectionResult.get();
|
||||
|
||||
final List<DomainListEntryModel> domains = section
|
||||
.getDomains()
|
||||
.stream()
|
||||
.map(this::buildDomainListEntryModel)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
models.put("categorySystems", domains);
|
||||
|
||||
return "org/librecms/ui/contentsection/categorysystems/categorysystems.xhtml";
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{key}")
|
||||
@AuthorizationRequired
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String showCategorySystem(
|
||||
@PathParam("sectionIdentifier") final String sectionIdentifier,
|
||||
@PathParam("key") final String domainKey
|
||||
) {
|
||||
return showCategorySystem(sectionIdentifier, domainKey, "");
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{key}/{categoryPath:(.+)?}")
|
||||
@AuthorizationRequired
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String showCategorySystem(
|
||||
@PathParam("sectionIdentifier") final String sectionIdentifier,
|
||||
@PathParam("key") final String domainKey,
|
||||
@PathParam("categoryPath") final String categoryPath
|
||||
) {
|
||||
//ToDo: Category System Model with
|
||||
//* List of category systems
|
||||
//* Category tree
|
||||
//* Display of active category (if none = root?) with edit options
|
||||
// listed below
|
||||
//
|
||||
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
//ToDo: Show category details
|
||||
//
|
||||
//ToDo: Rename category (disabled for root category)
|
||||
//
|
||||
//ToDo: Add, update, remove localized title
|
||||
//
|
||||
//ToDo: Set enabled, visible, abstract
|
||||
//
|
||||
//ToDo: Set and unset index element
|
||||
//
|
||||
//ToDo: Move category (disabled for root category)
|
||||
|
||||
//ToDo: Delete category (disabled for root category)
|
||||
//
|
||||
//ToDo: List subcategories
|
||||
//
|
||||
//ToDo: Order subcategories
|
||||
//
|
||||
//ToDo: Add subcategory
|
||||
|
||||
private Optional<ContentSection> retrieveContentSection(
|
||||
final String sectionIdentifier
|
||||
) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
sectionIdentifier
|
||||
);
|
||||
|
||||
final Optional<ContentSection> sectionResult;
|
||||
switch (identifier.getType()) {
|
||||
case ID:
|
||||
sectionResult = sectionRepo.findById(
|
||||
Long.parseLong(identifier.getIdentifier())
|
||||
);
|
||||
break;
|
||||
case UUID:
|
||||
sectionResult = sectionRepo.findByUuid(identifier
|
||||
.getIdentifier());
|
||||
break;
|
||||
default:
|
||||
sectionResult = sectionRepo.findByLabel(identifier
|
||||
.getIdentifier());
|
||||
break;
|
||||
}
|
||||
return sectionResult;
|
||||
}
|
||||
|
||||
private DomainListEntryModel buildDomainListEntryModel(
|
||||
final DomainOwnership ownership
|
||||
) {
|
||||
final Domain domain = ownership.getDomain();
|
||||
|
||||
final DomainListEntryModel model = new DomainListEntryModel();
|
||||
model.setContext(ownership.getContext());
|
||||
model.setDomainKey(domain.getDomainKey());
|
||||
model.setReleased(
|
||||
DateTimeFormatter.ISO_DATE.withZone(ZoneId.systemDefault())
|
||||
.format(domain.getReleased()));
|
||||
model.setTitle(
|
||||
globalizationHelper.getValueFromLocalizedString(domain.getTitle())
|
||||
);
|
||||
model.setUri(domain.getUri());
|
||||
model.setVersion(domain.getVersion());
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* 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 CategorizedObjectModel {
|
||||
|
||||
private String displayName;
|
||||
|
||||
private String title;
|
||||
|
||||
private String type;
|
||||
|
||||
private boolean indexObject;
|
||||
|
||||
private long objectOrder;
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(final String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(final String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(final String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public boolean isIndexObject() {
|
||||
return indexObject;
|
||||
}
|
||||
|
||||
public void setIndexObject(final boolean indexObject) {
|
||||
this.indexObject = indexObject;
|
||||
}
|
||||
|
||||
public long getObjectOrder() {
|
||||
return objectOrder;
|
||||
}
|
||||
|
||||
public void setObjectOrder(final long objectOrder) {
|
||||
this.objectOrder = objectOrder;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.librecms.ui.contentsections;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class CategoryModel {
|
||||
|
||||
private long categoryId;
|
||||
|
||||
private String uniqueId;
|
||||
|
||||
private String name;
|
||||
|
||||
private String path;
|
||||
|
||||
private String title;
|
||||
|
||||
private String description;
|
||||
|
||||
private boolean enabled;
|
||||
|
||||
private boolean visible;
|
||||
|
||||
private boolean abstractCategory;
|
||||
|
||||
private List<CategoryModel> subCategories;
|
||||
|
||||
private List<CategorizedObjectModel> objects;
|
||||
|
||||
private long categoryOrder;
|
||||
|
||||
public CategoryModel() {
|
||||
subCategories = new ArrayList<>();
|
||||
objects = new ArrayList<>();
|
||||
}
|
||||
|
||||
public long getCategoryId() {
|
||||
return categoryId;
|
||||
}
|
||||
|
||||
public void setCategoryId(final long categoryId) {
|
||||
this.categoryId = categoryId;
|
||||
}
|
||||
|
||||
public String getUniqueId() {
|
||||
return uniqueId;
|
||||
}
|
||||
|
||||
public void setUniqueId(final String uniqueId) {
|
||||
this.uniqueId = uniqueId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(final String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(final String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(final String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(final boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
return visible;
|
||||
}
|
||||
|
||||
public void setVisible(final boolean visible) {
|
||||
this.visible = visible;
|
||||
}
|
||||
|
||||
public boolean isAbstractCategory() {
|
||||
return abstractCategory;
|
||||
}
|
||||
|
||||
public void setAbstractCategory(final boolean abstractCategory) {
|
||||
this.abstractCategory = abstractCategory;
|
||||
}
|
||||
|
||||
public List<CategoryModel> getSubCategories() {
|
||||
return Collections.unmodifiableList(subCategories);
|
||||
}
|
||||
|
||||
public void setSubCategories(final List<CategoryModel> subCategories) {
|
||||
this.subCategories = new ArrayList<>(subCategories);
|
||||
}
|
||||
|
||||
public List<CategorizedObjectModel> getObjects() {
|
||||
return Collections.unmodifiableList(objects);
|
||||
}
|
||||
|
||||
public void setObjects(final List<CategorizedObjectModel> objects) {
|
||||
this.objects = new ArrayList<>();
|
||||
}
|
||||
|
||||
public long getCategoryOrder() {
|
||||
return categoryOrder;
|
||||
}
|
||||
|
||||
public void setCategoryOrder(final long categoryOrder) {
|
||||
this.categoryOrder = categoryOrder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.librecms.ui.contentsections;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Named;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@RequestScoped
|
||||
@Named("CategorySystemModel")
|
||||
public class CategorySystemModel {
|
||||
|
||||
private List<DomainListEntryModel> categorySystems;
|
||||
|
||||
private DomainListEntryModel selectedCategorySystem;
|
||||
|
||||
private CategoryTreeNodeModel categoryTree;
|
||||
|
||||
private CategoryModel selectedCategory;
|
||||
|
||||
public CategorySystemModel() {
|
||||
categorySystems = new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<DomainListEntryModel> getCategorySystems() {
|
||||
return Collections.unmodifiableList(categorySystems);
|
||||
}
|
||||
|
||||
public void setCategorySystems(
|
||||
final List<DomainListEntryModel> categorySystems
|
||||
) {
|
||||
this.categorySystems = new ArrayList<>(categorySystems);
|
||||
}
|
||||
|
||||
public DomainListEntryModel getSelectedCategorySystem() {
|
||||
return selectedCategorySystem;
|
||||
}
|
||||
|
||||
public void setSelectedCategorySystem(
|
||||
final DomainListEntryModel selectedCategorySystem
|
||||
) {
|
||||
this.selectedCategorySystem = selectedCategorySystem;
|
||||
}
|
||||
|
||||
public CategoryTreeNodeModel getCategoryTree() {
|
||||
return categoryTree;
|
||||
}
|
||||
|
||||
public void setCategoryTree(final CategoryTreeNodeModel categoryTree) {
|
||||
this.categoryTree = categoryTree;
|
||||
}
|
||||
|
||||
public CategoryModel getSelectedCategory() {
|
||||
return selectedCategory;
|
||||
}
|
||||
|
||||
public void setSelectedCategory(final CategoryModel selectedCategory) {
|
||||
this.selectedCategory = selectedCategory;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.librecms.ui.contentsections;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class CategoryTreeNodeModel {
|
||||
|
||||
private String path;
|
||||
|
||||
private String title;
|
||||
|
||||
private List<CategoryTreeNodeModel> subCategories;
|
||||
|
||||
public CategoryTreeNodeModel() {
|
||||
subCategories = new ArrayList<>();
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(final String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(final String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public List<CategoryTreeNodeModel> getSubCategories() {
|
||||
return Collections.unmodifiableList(subCategories);
|
||||
}
|
||||
|
||||
public void setSubCategories(
|
||||
final List<CategoryTreeNodeModel> subCategories
|
||||
) {
|
||||
this.subCategories = new ArrayList<>(subCategories);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -25,9 +25,12 @@ public class ContentSectionApplication extends Application {
|
|||
final Set<Class<?>> classes = new HashSet<>();
|
||||
|
||||
classes.add(AssetFolderController.class);
|
||||
classes.add(CategoriesController.class);
|
||||
classes.add(ContentSectionController.class);
|
||||
classes.add(DocumentFolderController.class);
|
||||
classes.add(IsAuthenticatedFilter.class);
|
||||
|
||||
|
||||
return classes;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* 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 DomainListEntryModel {
|
||||
|
||||
private String context;
|
||||
|
||||
private String domainKey;
|
||||
|
||||
private String uri;
|
||||
|
||||
private String title;
|
||||
|
||||
private String version;
|
||||
|
||||
private String released;
|
||||
|
||||
public String getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public void setContext(String context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public String getDomainKey() {
|
||||
return domainKey;
|
||||
}
|
||||
|
||||
public void setDomainKey(final String domainKey) {
|
||||
this.domainKey = domainKey;
|
||||
}
|
||||
|
||||
public String getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
public void setUri(final String uri) {
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(final String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(final String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getReleased() {
|
||||
return released;
|
||||
}
|
||||
|
||||
public void setReleased(final String released) {
|
||||
this.released = released;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue