CCM NG: Content Center Category Tab (not finished yet)
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5167 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
439efa2e73
commit
85a5ace44a
|
|
@ -48,7 +48,9 @@ import org.apache.logging.log4j.Logger;
|
||||||
import org.libreccm.categorization.Categorization;
|
import org.libreccm.categorization.Categorization;
|
||||||
import org.libreccm.categorization.Category;
|
import org.libreccm.categorization.Category;
|
||||||
import org.libreccm.categorization.CategoryRepository;
|
import org.libreccm.categorization.CategoryRepository;
|
||||||
|
import org.libreccm.categorization.Domain;
|
||||||
import org.libreccm.categorization.DomainOwnership;
|
import org.libreccm.categorization.DomainOwnership;
|
||||||
|
import org.libreccm.categorization.DomainRepository;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.core.UnexpectedErrorException;
|
import org.libreccm.core.UnexpectedErrorException;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
|
|
@ -60,39 +62,45 @@ import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||||
*
|
*
|
||||||
* @author Justin Ross <jross@redhat.com>
|
* @author Justin Ross <jross@redhat.com>
|
||||||
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public final class CategoryAdminPane extends BaseAdminPane {
|
public final class CategoryAdminPane extends BaseAdminPane<String> {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LogManager
|
||||||
|
.getLogger(CategoryAdminPane.class);
|
||||||
|
|
||||||
public static final String CONTEXT_SELECTED = "sel_context";
|
public static final String CONTEXT_SELECTED = "sel_context";
|
||||||
private static final String DEFAULT_USE_CONTEXT = "<default>";
|
// private static final String DEFAULT_USE_CONTEXT = "<default>";
|
||||||
private static final Logger LOGGER = LogManager.getLogger(
|
|
||||||
CategoryAdminPane.class);
|
private final SingleSelectionModel<String> selectedCategorySystem;
|
||||||
private final SingleSelectionModel m_contextModel;
|
private final SingleSelectionModel<String> selectedCategory;
|
||||||
private final Tree m_categoryTree;
|
|
||||||
private final SingleSelectionModel m_model;
|
private final Tree categoryTree;
|
||||||
private final CategoryRequestLocal m_parent;
|
|
||||||
private final CategoryRequestLocal m_category;
|
private final CategoryRequestLocal parentCategoryRequestLocal;
|
||||||
|
private final CategoryRequestLocal categoryRequestLocal;
|
||||||
|
|
||||||
public CategoryAdminPane() {
|
public CategoryAdminPane() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
m_contextModel = new UseContextSelectionModel(new StringParameter(
|
selectedCategorySystem = new UseContextSelectionModel(
|
||||||
CONTEXT_SELECTED));
|
new StringParameter(
|
||||||
|
CONTEXT_SELECTED));
|
||||||
|
|
||||||
// Left column
|
// Left column
|
||||||
// Use context section
|
// Use context section
|
||||||
List list = new List(new CategoryUseContextModelBuilder());
|
List list = new List(new CategoryUseContextModelBuilder());
|
||||||
list.setSelectionModel(m_contextModel);
|
list.setSelectionModel(selectedCategorySystem);
|
||||||
list.addChangeListener(new ContextSelectionListener());
|
list.addChangeListener(new ContextSelectionListener());
|
||||||
|
|
||||||
/* Category tree section */
|
/* Category tree section */
|
||||||
m_categoryTree = new BaseTree(new CategoryTreeModelBuilder(
|
categoryTree = new BaseTree(new CategoryTreeModelBuilder(
|
||||||
m_contextModel));
|
selectedCategorySystem));
|
||||||
m_categoryTree.addChangeListener(new SelectionListener());
|
categoryTree.addChangeListener(new SelectionListener());
|
||||||
m_model = m_categoryTree.getSelectionModel();
|
selectedCategory = categoryTree.getSelectionModel();
|
||||||
|
|
||||||
setSelectionModel(m_model);
|
super.setSelectionModel(selectedCategory);
|
||||||
setSelector(m_categoryTree);
|
setSelector(categoryTree);
|
||||||
|
|
||||||
/* setup use context form */
|
/* setup use context form */
|
||||||
final Section contextSection = new Section();
|
final Section contextSection = new Section();
|
||||||
|
|
@ -108,41 +116,43 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES)) {
|
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES)) {
|
||||||
ActionLink addContextAction = new ActionLink(new Label(gz(
|
ActionLink addContextAction = new ActionLink(new Label(gz(
|
||||||
"cms.ui.category.add_use_context")));
|
"cms.ui.category.add_use_context")));
|
||||||
Form addContextForm = new AddUseContextForm(m_contextModel);
|
Form addContextForm = new AddUseContextForm(selectedCategorySystem);
|
||||||
getBody().add(addContextForm);
|
getBody().add(addContextForm);
|
||||||
getBody().connect(addContextAction, addContextForm);
|
getBody().connect(addContextAction, addContextForm);
|
||||||
contextGroup.addAction(new VisibilityComponent(addContextAction,
|
contextGroup
|
||||||
AdminPrivileges.ADMINISTER_CATEGORIES));
|
.addAction(new VisibilityComponent(addContextAction,
|
||||||
|
AdminPrivileges.ADMINISTER_CATEGORIES));
|
||||||
}
|
}
|
||||||
|
|
||||||
final Section categorySection = new Section();
|
final Section categorySection = new Section();
|
||||||
categorySection.setHeading(new Label(gz("cms.ui.categories")));
|
categorySection.setHeading(new Label(gz("cms.ui.categories")));
|
||||||
ActionGroup categoryGroup = new ActionGroup();
|
ActionGroup categoryGroup = new ActionGroup();
|
||||||
categorySection.setBody(categoryGroup);
|
categorySection.setBody(categoryGroup);
|
||||||
categoryGroup.setSubject(m_categoryTree);
|
categoryGroup.setSubject(categoryTree);
|
||||||
|
|
||||||
final SimpleContainer leftContainer = new SimpleContainer();
|
final SimpleContainer leftContainer = new SimpleContainer();
|
||||||
leftContainer.add(contextSection);
|
leftContainer.add(contextSection);
|
||||||
leftContainer.add(categorySection);
|
leftContainer.add(categorySection);
|
||||||
setLeft(leftContainer);
|
setLeft(leftContainer);
|
||||||
|
|
||||||
m_parent = new ParentRequestLocal();
|
parentCategoryRequestLocal = new ParentRequestLocal();
|
||||||
m_category = new SelectionRequestLocal();
|
categoryRequestLocal = new SelectionRequestLocal();
|
||||||
|
|
||||||
setAdd(gz("cms.ui.category.add"),
|
setAdd(gz("cms.ui.category.add"),
|
||||||
new CategoryAddForm(m_category, m_model));
|
new CategoryAddForm(categoryRequestLocal, selectedCategory));
|
||||||
|
|
||||||
setEdit(gz("cms.ui.category.edit"),
|
setEdit(gz("cms.ui.category.edit"),
|
||||||
new CategoryEditForm(m_parent, m_category));
|
new CategoryEditForm(parentCategoryRequestLocal,
|
||||||
|
categoryRequestLocal));
|
||||||
|
|
||||||
setDelete(new DeleteLink(new Label(gz("cms.ui.category.delete"))),
|
setDelete(new DeleteLink(new Label(gz("cms.ui.category.delete"))),
|
||||||
new DeleteForm(
|
new DeleteForm(
|
||||||
new SimpleContainer()));
|
new SimpleContainer()));
|
||||||
|
|
||||||
setIntroPane(new Label(gz("cms.ui.category.intro")));
|
setIntroPane(new Label(gz("cms.ui.category.intro")));
|
||||||
setItemPane(new CategoryItemPane(m_model,
|
setItemPane(new CategoryItemPane(selectedCategory,
|
||||||
m_contextModel,
|
selectedCategorySystem,
|
||||||
m_category,
|
categoryRequestLocal,
|
||||||
getAddLink(),
|
getAddLink(),
|
||||||
getEditLink(),
|
getEditLink(),
|
||||||
getDeleteLink()));
|
getDeleteLink()));
|
||||||
|
|
@ -165,7 +175,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generateXML(PageState state, Element parent) {
|
public void generateXML(final PageState state, final Element parent) {
|
||||||
|
|
||||||
if (!isVisible(state)) {
|
if (!isVisible(state)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -185,45 +196,47 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
private final class DeleteForm extends BaseDeleteForm {
|
private final class DeleteForm extends BaseDeleteForm {
|
||||||
|
|
||||||
DeleteForm(SimpleContainer prompt) {
|
DeleteForm(final SimpleContainer prompt) {
|
||||||
super(prompt);
|
super(prompt);
|
||||||
prompt.add(new Label(gz("cms.ui.category.delete_prompt")));
|
prompt.add(new Label(gz("cms.ui.category.delete_prompt")));
|
||||||
Label catLabel = new Label();
|
Label catLabel = new Label();
|
||||||
catLabel.addPrintListener(pe -> {
|
catLabel.addPrintListener(pe -> {
|
||||||
Label label = (Label) pe.getTarget();
|
Label label = (Label) pe.getTarget();
|
||||||
Category cat = m_category.getCategory(pe.getPageState());
|
Category cat = categoryRequestLocal.getCategory(pe
|
||||||
|
.getPageState());
|
||||||
java.util.List<Category> descendants = cat.getSubCategories();
|
java.util.List<Category> descendants = cat.getSubCategories();
|
||||||
java.util.List<Categorization> catObjects = cat.getObjects();
|
java.util.List<Categorization> catObjects = cat.getObjects();
|
||||||
|
|
||||||
StringBuffer sb = new StringBuffer(" ");
|
final StringBuilder builder = new StringBuilder(" ");
|
||||||
if (descendants.size() > 0) {
|
if (descendants.size() > 0) {
|
||||||
sb.append("This category has ");
|
builder.append("This category has ");
|
||||||
sb.append(descendants.size());
|
builder.append(descendants.size());
|
||||||
sb.append(" descendant category(ies). ");
|
builder.append(" descendant category(ies). ");
|
||||||
}
|
}
|
||||||
if (catObjects.size() > 0) {
|
if (catObjects.size() > 0) {
|
||||||
sb.append("It has ").append(catObjects.size());
|
builder.append("It has ").append(catObjects.size());
|
||||||
sb.append(" descendant object(s). ");
|
builder.append(" descendant object(s). ");
|
||||||
}
|
}
|
||||||
if (descendants.size() > 0 || catObjects.size() > 0) {
|
if (descendants.size() > 0 || catObjects.size() > 0) {
|
||||||
sb.append(
|
builder.append(
|
||||||
"Descendants will be orphaned, if this category is removed.");
|
"Descendants will be orphaned, if this category is removed.");
|
||||||
}
|
}
|
||||||
label.setLabel(gz(sb.toString()));
|
label.setLabel(gz(builder.toString()));
|
||||||
});
|
});
|
||||||
prompt.add(catLabel);
|
prompt.add(catLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void process(final FormSectionEvent e)
|
public final void process(final FormSectionEvent event)
|
||||||
|
|
||||||
throws FormProcessException {
|
throws FormProcessException {
|
||||||
final PageState state = e.getPageState();
|
final PageState state = event.getPageState();
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
||||||
PermissionChecker.class);
|
PermissionChecker.class);
|
||||||
final CategoryRepository repository = cdiUtil.findBean(
|
final CategoryRepository repository = cdiUtil.findBean(
|
||||||
CategoryRepository.class);
|
CategoryRepository.class);
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = categoryRequestLocal.getCategory(state);
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -246,7 +259,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
// m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT);
|
// m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT);
|
||||||
// } else {
|
// } else {
|
||||||
Category parent = category.getParentCategory();
|
Category parent = category.getParentCategory();
|
||||||
m_model.setSelectedKey(state, parent.getUniqueId());
|
selectedCategory.setSelectedKey(state, parent.getUniqueId());
|
||||||
// }
|
// }
|
||||||
|
|
||||||
//category.deleteCategoryAndOrphan();
|
//category.deleteCategoryAndOrphan();
|
||||||
|
|
@ -259,7 +272,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Object initialValue(final PageState state) {
|
protected final Object initialValue(final PageState state) {
|
||||||
final String id = m_model.getSelectedKey(state).toString();
|
final String id = selectedCategory.getSelectedKey(state);
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final CategoryRepository repository = cdiUtil.findBean(
|
final CategoryRepository repository = cdiUtil.findBean(
|
||||||
CategoryRepository.class);
|
CategoryRepository.class);
|
||||||
|
|
@ -276,7 +289,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Object initialValue(final PageState state) {
|
protected final Object initialValue(final PageState state) {
|
||||||
return m_category.getCategory(state).getParentCategory();
|
return categoryRequestLocal.getCategory(state).getParentCategory();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -297,20 +310,31 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
private class UseContextSelectionModel extends ParameterSingleSelectionModel {
|
private class UseContextSelectionModel
|
||||||
|
extends ParameterSingleSelectionModel<String> {
|
||||||
|
|
||||||
public UseContextSelectionModel(ParameterModel m) {
|
public UseContextSelectionModel(final ParameterModel parameterModel) {
|
||||||
super(m);
|
super(parameterModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getSelectedKey(final PageState state) {
|
public String getSelectedKey(final PageState state) {
|
||||||
|
|
||||||
Object val = super.getSelectedKey(state);
|
String val = super.getSelectedKey(state);
|
||||||
if (val == null
|
if (val == null
|
||||||
|| ((CharSequence) val).length() == 0) {
|
|| val.isEmpty()
|
||||||
|
|| val.matches("\\s*")) {
|
||||||
|
|
||||||
val = DEFAULT_USE_CONTEXT;
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final CategoryAdminController controller = cdiUtil
|
||||||
|
.findBean(CategoryAdminController.class);
|
||||||
|
final Domain categorySystem = controller
|
||||||
|
.retrieveDomains(section).get(0).getDomain();
|
||||||
|
val = Long.toString(categorySystem.getObjectId());
|
||||||
|
|
||||||
state.setValue(getStateParameter(), val);
|
state.setValue(getStateParameter(), val);
|
||||||
fireStateChanged(state);
|
fireStateChanged(state);
|
||||||
}
|
}
|
||||||
|
|
@ -321,13 +345,16 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
public String getUseContext(final PageState state) {
|
public String getUseContext(final PageState state) {
|
||||||
|
|
||||||
String selected = (String) m_contextModel.getSelectedKey(state);
|
final String selected = selectedCategorySystem.getSelectedKey(state);
|
||||||
if (DEFAULT_USE_CONTEXT.equals(selected)) {
|
return selected;
|
||||||
return null;
|
// if (DEFAULT_USE_CONTEXT.equals(selected)) {
|
||||||
} else {
|
//
|
||||||
return selected;
|
//
|
||||||
}
|
//
|
||||||
// return (DEFAULT_USE_CONTEXT).equals(selected) ? (String) null : selected;
|
// return null;
|
||||||
|
// } else {
|
||||||
|
// return selected;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ContextSelectionListener implements ChangeListener {
|
private class ContextSelectionListener implements ChangeListener {
|
||||||
|
|
@ -342,40 +369,64 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
getBody().reset(state);
|
getBody().reset(state);
|
||||||
|
|
||||||
if (m_contextModel.isSelected(state)) {
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final Category root;
|
||||||
final String rootCategoryId = (String) m_contextModel
|
if (selectedCategorySystem.isSelected(state)) {
|
||||||
|
final String categorySystemIdStr = selectedCategorySystem
|
||||||
.getSelectedKey(state);
|
.getSelectedKey(state);
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
|
||||||
final CategoryRepository categoryRepo = cdiUtil
|
|
||||||
.findBean(CategoryRepository.class);
|
|
||||||
final Category root;
|
|
||||||
if (DEFAULT_USE_CONTEXT.equals(rootCategoryId)) {
|
|
||||||
final ContentSection section = CMS
|
|
||||||
.getContext()
|
|
||||||
.getContentSection();
|
|
||||||
|
|
||||||
final CategoryAdminController controller = CdiUtil
|
final DomainRepository domainRepo = cdiUtil
|
||||||
.createCdiUtil()
|
.findBean(DomainRepository.class);
|
||||||
.findBean(CategoryAdminController.class);
|
final Domain categorySystem = domainRepo
|
||||||
final java.util.List<DomainOwnership> ownerships
|
.findById(Long.parseLong(categorySystemIdStr))
|
||||||
|
.orElseThrow(() -> new UnexpectedErrorException(String
|
||||||
|
.format("No Domain with ID %s in the database.",
|
||||||
|
categorySystemIdStr)));
|
||||||
|
root = categorySystem.getRoot();
|
||||||
|
|
||||||
|
// final String rootCategoryId = selectedCategorySystem
|
||||||
|
// .getSelectedKey(state);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// final Category root;
|
||||||
|
// if (DEFAULT_USE_CONTEXT.equals(rootCategoryId)) {
|
||||||
|
// final ContentSection section = CMS
|
||||||
|
// .getContext()
|
||||||
|
// .getContentSection();
|
||||||
|
//
|
||||||
|
// final CategoryAdminController controller = CdiUtil
|
||||||
|
// .createCdiUtil()
|
||||||
|
// .findBean(CategoryAdminController.class);
|
||||||
|
// final java.util.List<DomainOwnership> ownerships
|
||||||
|
// = controller
|
||||||
|
// .retrieveDomains(section);
|
||||||
|
// root = ownerships.get(0).getDomain().getRoot();
|
||||||
|
// } else {
|
||||||
|
// root = categoryRepo
|
||||||
|
// .findById(Long.parseLong(rootCategoryId))
|
||||||
|
// .orElseThrow(() -> new UnexpectedErrorException(String
|
||||||
|
// .format("No Category with ID %s in the database.",
|
||||||
|
// rootCategoryId)));
|
||||||
|
// }
|
||||||
|
} else {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
|
||||||
|
final CategoryAdminController controller = CdiUtil
|
||||||
|
.createCdiUtil()
|
||||||
|
.findBean(CategoryAdminController.class);
|
||||||
|
final java.util.List<DomainOwnership> ownerships
|
||||||
= controller
|
= controller
|
||||||
.retrieveDomains(section);
|
.retrieveDomains(section);
|
||||||
root = ownerships.get(0).getDomain().getRoot();
|
root = ownerships.get(0).getDomain().getRoot();
|
||||||
} else {
|
|
||||||
root = categoryRepo
|
|
||||||
.findById(Long.parseLong(rootCategoryId))
|
|
||||||
.orElseThrow(() -> new UnexpectedErrorException(String
|
|
||||||
.format("No Category with ID %s in the database.",
|
|
||||||
rootCategoryId)));
|
|
||||||
}
|
|
||||||
if (root != null) {
|
|
||||||
m_model.setSelectedKey(state, root.getUniqueId());
|
|
||||||
m_categoryTree.reset(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (m_model.isSelected(state)) {
|
|
||||||
|
if (root != null) {
|
||||||
|
selectedCategory.setSelectedKey(state, root.getUniqueId());
|
||||||
|
categoryTree.reset(state);
|
||||||
|
}
|
||||||
|
if (selectedCategory.isSelected(state)) {
|
||||||
LOGGER.debug("The selection model is selected; displaying "
|
LOGGER.debug("The selection model is selected; displaying "
|
||||||
+ "the item pane");
|
+ "the item pane");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,11 +27,11 @@ import com.arsdigita.cms.CMS;
|
||||||
import com.arsdigita.util.LockableImpl;
|
import com.arsdigita.util.LockableImpl;
|
||||||
|
|
||||||
import org.libreccm.categorization.Category;
|
import org.libreccm.categorization.Category;
|
||||||
import org.libreccm.categorization.CategoryRepository;
|
|
||||||
import org.libreccm.categorization.CategoryTreeModelLite;
|
import org.libreccm.categorization.CategoryTreeModelLite;
|
||||||
|
import org.libreccm.categorization.Domain;
|
||||||
import org.libreccm.categorization.DomainOwnership;
|
import org.libreccm.categorization.DomainOwnership;
|
||||||
|
import org.libreccm.categorization.DomainRepository;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.core.UnexpectedErrorException;
|
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.librecms.contentsection.ContentSection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -43,17 +43,18 @@ import org.librecms.contentsection.ContentSection;
|
||||||
class CategoryTreeModelBuilder extends LockableImpl
|
class CategoryTreeModelBuilder extends LockableImpl
|
||||||
implements TreeModelBuilder {
|
implements TreeModelBuilder {
|
||||||
|
|
||||||
private static String DEFAULT_USE_CONTEXT = "<default>";
|
// private static String DEFAULT_USE_CONTEXT = "<default>";
|
||||||
|
private final SingleSelectionModel<String> selectedCategorySystem;
|
||||||
private SingleSelectionModel m_contextModel = null;
|
|
||||||
|
|
||||||
public CategoryTreeModelBuilder() {
|
public CategoryTreeModelBuilder() {
|
||||||
this(null);
|
this(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CategoryTreeModelBuilder(SingleSelectionModel contextModel) {
|
public CategoryTreeModelBuilder(
|
||||||
|
final SingleSelectionModel<String> selectedCategorySystem) {
|
||||||
|
|
||||||
super();
|
super();
|
||||||
m_contextModel = contextModel;
|
this.selectedCategorySystem = selectedCategorySystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -61,11 +62,9 @@ class CategoryTreeModelBuilder extends LockableImpl
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final Category root;
|
final Category root;
|
||||||
if (DEFAULT_USE_CONTEXT.equals(m_contextModel.getSelectedKey(state))) {
|
|
||||||
final ContentSection section = CMS
|
|
||||||
.getContext()
|
|
||||||
.getContentSection();
|
|
||||||
|
|
||||||
|
if (selectedCategorySystem.getSelectedKey(state) == null) {
|
||||||
|
final ContentSection section =CMS.getContext().getContentSection();
|
||||||
final CategoryAdminController controller = cdiUtil
|
final CategoryAdminController controller = cdiUtil
|
||||||
.findBean(CategoryAdminController.class);
|
.findBean(CategoryAdminController.class);
|
||||||
final java.util.List<DomainOwnership> ownerships
|
final java.util.List<DomainOwnership> ownerships
|
||||||
|
|
@ -73,16 +72,40 @@ class CategoryTreeModelBuilder extends LockableImpl
|
||||||
.retrieveDomains(section);
|
.retrieveDomains(section);
|
||||||
root = ownerships.get(0).getDomain().getRoot();
|
root = ownerships.get(0).getDomain().getRoot();
|
||||||
} else {
|
} else {
|
||||||
final CategoryRepository categoryRepo = cdiUtil
|
final DomainRepository domainRepo = cdiUtil
|
||||||
.findBean(CategoryRepository.class);
|
.findBean(DomainRepository.class);
|
||||||
root = categoryRepo
|
final Domain categorySystem = domainRepo
|
||||||
.findById(Long.parseLong((String) m_contextModel
|
.findById(Long.parseLong(selectedCategorySystem
|
||||||
.getSelectedKey(state)))
|
.getSelectedKey(state)))
|
||||||
.orElseThrow(() -> new UnexpectedErrorException(String
|
.orElseThrow(() -> new IllegalArgumentException(String
|
||||||
.format("No Category with ID %s in the database.",
|
.format("No Domain with ID %s in the database.",
|
||||||
m_contextModel.getSelectedKey(state))));
|
selectedCategorySystem.getSelectedKey(state))));
|
||||||
|
|
||||||
|
root = categorySystem.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if (DEFAULT_USE_CONTEXT.equals(selectedCategorySystem.getSelectedKey(
|
||||||
|
// state))) {
|
||||||
|
// final ContentSection section = CMS
|
||||||
|
// .getContext()
|
||||||
|
// .getContentSection();
|
||||||
|
//
|
||||||
|
// final CategoryAdminController controller = cdiUtil
|
||||||
|
// .findBean(CategoryAdminController.class);
|
||||||
|
// final java.util.List<DomainOwnership> ownerships
|
||||||
|
// = controller
|
||||||
|
// .retrieveDomains(section);
|
||||||
|
// root = ownerships.get(0).getDomain().getRoot();
|
||||||
|
// } else {
|
||||||
|
// final CategoryRepository categoryRepo = cdiUtil
|
||||||
|
// .findBean(CategoryRepository.class);
|
||||||
|
// root = categoryRepo
|
||||||
|
// .findById(Long.parseLong((String) m_contextModel
|
||||||
|
// .getSelectedKey(state)))
|
||||||
|
// .orElseThrow(() -> new UnexpectedErrorException(String
|
||||||
|
// .format("No Category with ID %s in the database.",
|
||||||
|
// m_contextModel.getSelectedKey(state))));
|
||||||
|
// }
|
||||||
return new CategoryTreeModelLite(root);
|
return new CategoryTreeModelLite(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,11 @@ import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.list.AbstractListModelBuilder;
|
import com.arsdigita.bebop.list.AbstractListModelBuilder;
|
||||||
import com.arsdigita.bebop.list.ListModel;
|
import com.arsdigita.bebop.list.ListModel;
|
||||||
import com.arsdigita.cms.CMS;
|
import com.arsdigita.cms.CMS;
|
||||||
|
|
||||||
|
import org.libreccm.categorization.Domain;
|
||||||
import org.libreccm.categorization.DomainOwnership;
|
import org.libreccm.categorization.DomainOwnership;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.libreccm.l10n.GlobalizationHelper;
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.librecms.contentsection.ContentSection;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
@ -37,8 +40,6 @@ import java.util.Iterator;
|
||||||
*/
|
*/
|
||||||
class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
|
class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
|
||||||
|
|
||||||
private static String DEFAULT_USE_CONTEXT = "<default>";
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final ListModel makeModel(final List list, final PageState state) {
|
public final ListModel makeModel(final List list, final PageState state) {
|
||||||
return new Model();
|
return new Model();
|
||||||
|
|
@ -74,12 +75,28 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getElement() {
|
public Object getElement() {
|
||||||
return current.getDomain().getRoot();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final GlobalizationHelper globalizationHelper = cdiUtil
|
||||||
|
.findBean(GlobalizationHelper.class);
|
||||||
|
final Domain categorySystem = current.getDomain();
|
||||||
|
if (categorySystem
|
||||||
|
.getTitle()
|
||||||
|
.hasValue(globalizationHelper.getNegotiatedLocale())) {
|
||||||
|
|
||||||
|
return globalizationHelper
|
||||||
|
.getValueFromLocalizedString(current.getDomain().getTitle());
|
||||||
|
} else {
|
||||||
|
return categorySystem.getDomainKey();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getKey() {
|
public String getKey() {
|
||||||
return current.getContext() != null ? current.getContext() : DEFAULT_USE_CONTEXT;
|
|
||||||
|
return Long.toString(current.getDomain().getObjectId());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,8 +106,8 @@ cms.ui.category.templates=Category templates
|
||||||
cms.ui.category.templates.assigned=Assigned templates
|
cms.ui.category.templates.assigned=Assigned templates
|
||||||
cms.ui.category.there_are_no_items_in_this_category=There are no items in this category
|
cms.ui.category.there_are_no_items_in_this_category=There are no items in this category
|
||||||
cms.ui.category.url=URL
|
cms.ui.category.url=URL
|
||||||
cms.ui.category.use_context=Use Context
|
cms.ui.category.use_context=Category system
|
||||||
cms.ui.category.use_contexts=Use Contexts
|
cms.ui.category.use_contexts=Category systems
|
||||||
cms.ui.category.use_context_must_be_unique=Use context must be unique within a Content Section.
|
cms.ui.category.use_context_must_be_unique=Use context must be unique within a Content Section.
|
||||||
cms.ui.category.view_index_item=View index item
|
cms.ui.category.view_index_item=View index item
|
||||||
cms.ui.category.assign_select_missing="Please select a category to assign"
|
cms.ui.category.assign_select_missing="Please select a category to assign"
|
||||||
|
|
|
||||||
|
|
@ -105,8 +105,8 @@ cms.ui.category.templates=Kategorievorlage
|
||||||
cms.ui.category.templates.assigned=Zugewiesene Vorlagen
|
cms.ui.category.templates.assigned=Zugewiesene Vorlagen
|
||||||
cms.ui.category.there_are_no_items_in_this_category=Es gibt keine Elemente in dieser Kategorie
|
cms.ui.category.there_are_no_items_in_this_category=Es gibt keine Elemente in dieser Kategorie
|
||||||
cms.ui.category.url=URL
|
cms.ui.category.url=URL
|
||||||
cms.ui.category.use_context=Use Context
|
cms.ui.category.use_context=Kategoriensystem
|
||||||
cms.ui.category.use_contexts=Use Contexts
|
cms.ui.category.use_contexts=Kategoriensysteme
|
||||||
cms.ui.category.use_context_must_be_unique=Use Context muss innerhalb einer Content Section unique sein.
|
cms.ui.category.use_context_must_be_unique=Use Context muss innerhalb einer Content Section unique sein.
|
||||||
cms.ui.category.view_index_item=Index Element anzeigen
|
cms.ui.category.view_index_item=Index Element anzeigen
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue