diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java
index 3ffc3bba5..decc0f0d6 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java
@@ -48,7 +48,9 @@ import org.apache.logging.log4j.Logger;
import org.libreccm.categorization.Categorization;
import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryRepository;
+import org.libreccm.categorization.Domain;
import org.libreccm.categorization.DomainOwnership;
+import org.libreccm.categorization.DomainRepository;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.security.PermissionChecker;
@@ -60,39 +62,45 @@ import org.librecms.contentsection.privileges.AdminPrivileges;
*
* @author Justin Ross <jross@redhat.com>
* @author Yannick Bülter
+ * @author Jens Pelzetter
*/
-public final class CategoryAdminPane extends BaseAdminPane {
+public final class CategoryAdminPane extends BaseAdminPane {
+
+ private static final Logger LOGGER = LogManager
+ .getLogger(CategoryAdminPane.class);
public static final String CONTEXT_SELECTED = "sel_context";
- private static final String DEFAULT_USE_CONTEXT = "";
- private static final Logger LOGGER = LogManager.getLogger(
- CategoryAdminPane.class);
- private final SingleSelectionModel m_contextModel;
- private final Tree m_categoryTree;
- private final SingleSelectionModel m_model;
- private final CategoryRequestLocal m_parent;
- private final CategoryRequestLocal m_category;
+// private static final String DEFAULT_USE_CONTEXT = "";
+
+ private final SingleSelectionModel selectedCategorySystem;
+ private final SingleSelectionModel selectedCategory;
+
+ private final Tree categoryTree;
+
+ private final CategoryRequestLocal parentCategoryRequestLocal;
+ private final CategoryRequestLocal categoryRequestLocal;
public CategoryAdminPane() {
super();
- m_contextModel = new UseContextSelectionModel(new StringParameter(
- CONTEXT_SELECTED));
+ selectedCategorySystem = new UseContextSelectionModel(
+ new StringParameter(
+ CONTEXT_SELECTED));
// Left column
// Use context section
List list = new List(new CategoryUseContextModelBuilder());
- list.setSelectionModel(m_contextModel);
+ list.setSelectionModel(selectedCategorySystem);
list.addChangeListener(new ContextSelectionListener());
/* Category tree section */
- m_categoryTree = new BaseTree(new CategoryTreeModelBuilder(
- m_contextModel));
- m_categoryTree.addChangeListener(new SelectionListener());
- m_model = m_categoryTree.getSelectionModel();
+ categoryTree = new BaseTree(new CategoryTreeModelBuilder(
+ selectedCategorySystem));
+ categoryTree.addChangeListener(new SelectionListener());
+ selectedCategory = categoryTree.getSelectionModel();
- setSelectionModel(m_model);
- setSelector(m_categoryTree);
+ super.setSelectionModel(selectedCategory);
+ setSelector(categoryTree);
/* setup use context form */
final Section contextSection = new Section();
@@ -108,41 +116,43 @@ public final class CategoryAdminPane extends BaseAdminPane {
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES)) {
ActionLink addContextAction = new ActionLink(new Label(gz(
"cms.ui.category.add_use_context")));
- Form addContextForm = new AddUseContextForm(m_contextModel);
+ Form addContextForm = new AddUseContextForm(selectedCategorySystem);
getBody().add(addContextForm);
getBody().connect(addContextAction, addContextForm);
- contextGroup.addAction(new VisibilityComponent(addContextAction,
- AdminPrivileges.ADMINISTER_CATEGORIES));
+ contextGroup
+ .addAction(new VisibilityComponent(addContextAction,
+ AdminPrivileges.ADMINISTER_CATEGORIES));
}
final Section categorySection = new Section();
categorySection.setHeading(new Label(gz("cms.ui.categories")));
ActionGroup categoryGroup = new ActionGroup();
categorySection.setBody(categoryGroup);
- categoryGroup.setSubject(m_categoryTree);
+ categoryGroup.setSubject(categoryTree);
final SimpleContainer leftContainer = new SimpleContainer();
leftContainer.add(contextSection);
leftContainer.add(categorySection);
setLeft(leftContainer);
- m_parent = new ParentRequestLocal();
- m_category = new SelectionRequestLocal();
+ parentCategoryRequestLocal = new ParentRequestLocal();
+ categoryRequestLocal = new SelectionRequestLocal();
setAdd(gz("cms.ui.category.add"),
- new CategoryAddForm(m_category, m_model));
+ new CategoryAddForm(categoryRequestLocal, selectedCategory));
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"))),
new DeleteForm(
new SimpleContainer()));
setIntroPane(new Label(gz("cms.ui.category.intro")));
- setItemPane(new CategoryItemPane(m_model,
- m_contextModel,
- m_category,
+ setItemPane(new CategoryItemPane(selectedCategory,
+ selectedCategorySystem,
+ categoryRequestLocal,
getAddLink(),
getEditLink(),
getDeleteLink()));
@@ -165,7 +175,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
}
@Override
- public void generateXML(PageState state, Element parent) {
+ public void generateXML(final PageState state, final Element parent) {
+
if (!isVisible(state)) {
return;
}
@@ -185,45 +196,47 @@ public final class CategoryAdminPane extends BaseAdminPane {
private final class DeleteForm extends BaseDeleteForm {
- DeleteForm(SimpleContainer prompt) {
+ DeleteForm(final SimpleContainer prompt) {
super(prompt);
prompt.add(new Label(gz("cms.ui.category.delete_prompt")));
Label catLabel = new Label();
catLabel.addPrintListener(pe -> {
Label label = (Label) pe.getTarget();
- Category cat = m_category.getCategory(pe.getPageState());
+ Category cat = categoryRequestLocal.getCategory(pe
+ .getPageState());
java.util.List descendants = cat.getSubCategories();
java.util.List catObjects = cat.getObjects();
- StringBuffer sb = new StringBuffer(" ");
+ final StringBuilder builder = new StringBuilder(" ");
if (descendants.size() > 0) {
- sb.append("This category has ");
- sb.append(descendants.size());
- sb.append(" descendant category(ies). ");
+ builder.append("This category has ");
+ builder.append(descendants.size());
+ builder.append(" descendant category(ies). ");
}
if (catObjects.size() > 0) {
- sb.append("It has ").append(catObjects.size());
- sb.append(" descendant object(s). ");
+ builder.append("It has ").append(catObjects.size());
+ builder.append(" descendant object(s). ");
}
if (descendants.size() > 0 || catObjects.size() > 0) {
- sb.append(
+ builder.append(
"Descendants will be orphaned, if this category is removed.");
}
- label.setLabel(gz(sb.toString()));
+ label.setLabel(gz(builder.toString()));
});
prompt.add(catLabel);
}
@Override
- public final void process(final FormSectionEvent e)
+ public final void process(final FormSectionEvent event)
+
throws FormProcessException {
- final PageState state = e.getPageState();
+ final PageState state = event.getPageState();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final PermissionChecker permissionChecker = cdiUtil.findBean(
PermissionChecker.class);
final CategoryRepository repository = cdiUtil.findBean(
CategoryRepository.class);
- final Category category = m_category.getCategory(state);
+ final Category category = categoryRequestLocal.getCategory(state);
if (category == null) {
return;
}
@@ -246,7 +259,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
// m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT);
// } else {
Category parent = category.getParentCategory();
- m_model.setSelectedKey(state, parent.getUniqueId());
+ selectedCategory.setSelectedKey(state, parent.getUniqueId());
// }
//category.deleteCategoryAndOrphan();
@@ -259,7 +272,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
@Override
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 CategoryRepository repository = cdiUtil.findBean(
CategoryRepository.class);
@@ -276,7 +289,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
@Override
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 {
- public UseContextSelectionModel(ParameterModel m) {
- super(m);
+ public UseContextSelectionModel(final ParameterModel parameterModel) {
+ super(parameterModel);
}
@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
- || ((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);
fireStateChanged(state);
}
@@ -321,13 +345,16 @@ public final class CategoryAdminPane extends BaseAdminPane {
public String getUseContext(final PageState state) {
- String selected = (String) m_contextModel.getSelectedKey(state);
- if (DEFAULT_USE_CONTEXT.equals(selected)) {
- return null;
- } else {
- return selected;
- }
-// return (DEFAULT_USE_CONTEXT).equals(selected) ? (String) null : selected;
+ final String selected = selectedCategorySystem.getSelectedKey(state);
+ return selected;
+// if (DEFAULT_USE_CONTEXT.equals(selected)) {
+//
+//
+//
+// return null;
+// } else {
+// return selected;
+// }
}
private class ContextSelectionListener implements ChangeListener {
@@ -342,40 +369,64 @@ public final class CategoryAdminPane extends BaseAdminPane {
getBody().reset(state);
- if (m_contextModel.isSelected(state)) {
-
- final String rootCategoryId = (String) m_contextModel
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final Category root;
+ if (selectedCategorySystem.isSelected(state)) {
+ final String categorySystemIdStr = selectedCategorySystem
.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
- .createCdiUtil()
- .findBean(CategoryAdminController.class);
- final java.util.List ownerships
+ final DomainRepository domainRepo = cdiUtil
+ .findBean(DomainRepository.class);
+ final Domain categorySystem = domainRepo
+ .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 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 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)));
- }
- if (root != null) {
- m_model.setSelectedKey(state, root.getUniqueId());
- m_categoryTree.reset(state);
- }
-
+ .retrieveDomains(section);
+ root = ownerships.get(0).getDomain().getRoot();
}
- 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 "
+ "the item pane");
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java
index 399490350..cdece894e 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java
@@ -27,11 +27,11 @@ import com.arsdigita.cms.CMS;
import com.arsdigita.util.LockableImpl;
import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
import org.libreccm.categorization.CategoryTreeModelLite;
+import org.libreccm.categorization.Domain;
import org.libreccm.categorization.DomainOwnership;
+import org.libreccm.categorization.DomainRepository;
import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.core.UnexpectedErrorException;
import org.librecms.contentsection.ContentSection;
/**
@@ -43,17 +43,18 @@ import org.librecms.contentsection.ContentSection;
class CategoryTreeModelBuilder extends LockableImpl
implements TreeModelBuilder {
- private static String DEFAULT_USE_CONTEXT = "";
-
- private SingleSelectionModel m_contextModel = null;
+// private static String DEFAULT_USE_CONTEXT = "";
+ private final SingleSelectionModel selectedCategorySystem;
public CategoryTreeModelBuilder() {
this(null);
}
- public CategoryTreeModelBuilder(SingleSelectionModel contextModel) {
+ public CategoryTreeModelBuilder(
+ final SingleSelectionModel selectedCategorySystem) {
+
super();
- m_contextModel = contextModel;
+ this.selectedCategorySystem = selectedCategorySystem;
}
@Override
@@ -61,11 +62,9 @@ class CategoryTreeModelBuilder extends LockableImpl
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
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
.findBean(CategoryAdminController.class);
final java.util.List ownerships
@@ -73,16 +72,40 @@ class CategoryTreeModelBuilder extends LockableImpl
.retrieveDomains(section);
root = ownerships.get(0).getDomain().getRoot();
} else {
- final CategoryRepository categoryRepo = cdiUtil
- .findBean(CategoryRepository.class);
- root = categoryRepo
- .findById(Long.parseLong((String) m_contextModel
+ final DomainRepository domainRepo = cdiUtil
+ .findBean(DomainRepository.class);
+ final Domain categorySystem = domainRepo
+ .findById(Long.parseLong(selectedCategorySystem
.getSelectedKey(state)))
- .orElseThrow(() -> new UnexpectedErrorException(String
- .format("No Category with ID %s in the database.",
- m_contextModel.getSelectedKey(state))));
+ .orElseThrow(() -> new IllegalArgumentException(String
+ .format("No Domain with ID %s in the database.",
+ 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 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);
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java
index 120492792..b77ac0021 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java
@@ -23,8 +23,11 @@ import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.list.AbstractListModelBuilder;
import com.arsdigita.bebop.list.ListModel;
import com.arsdigita.cms.CMS;
+
+import org.libreccm.categorization.Domain;
import org.libreccm.categorization.DomainOwnership;
import org.libreccm.cdi.utils.CdiUtil;
+import org.libreccm.l10n.GlobalizationHelper;
import org.librecms.contentsection.ContentSection;
import java.util.Iterator;
@@ -37,8 +40,6 @@ import java.util.Iterator;
*/
class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
- private static String DEFAULT_USE_CONTEXT = "";
-
@Override
public final ListModel makeModel(final List list, final PageState state) {
return new Model();
@@ -74,12 +75,28 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
@Override
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
public String getKey() {
- return current.getContext() != null ? current.getContext() : DEFAULT_USE_CONTEXT;
+
+ return Long.toString(current.getDomain().getObjectId());
}
+
}
+
}
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
index eddd91888..a143400f8 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
@@ -106,8 +106,8 @@ cms.ui.category.templates=Category 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.url=URL
-cms.ui.category.use_context=Use Context
-cms.ui.category.use_contexts=Use Contexts
+cms.ui.category.use_context=Category system
+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.view_index_item=View index item
cms.ui.category.assign_select_missing="Please select a category to assign"
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
index c141513e0..d9b434163 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
@@ -105,8 +105,8 @@ cms.ui.category.templates=Kategorievorlage
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.url=URL
-cms.ui.category.use_context=Use Context
-cms.ui.category.use_contexts=Use Contexts
+cms.ui.category.use_context=Kategoriensystem
+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.view_index_item=Index Element anzeigen