diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java.off
index 01ef79e25..4e13c2415 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java.off
@@ -22,30 +22,21 @@ import com.arsdigita.bebop.*;
import com.arsdigita.bebop.event.*;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
-import com.arsdigita.categorization.CategorizedCollection;
-import com.arsdigita.categorization.Category;
-import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.cms.CMS;
-import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.ui.BaseAdminPane;
import com.arsdigita.cms.ui.BaseDeleteForm;
import com.arsdigita.cms.ui.BaseTree;
import com.arsdigita.cms.ui.VisibilityComponent;
-import com.arsdigita.kernel.Kernel;
-import com.arsdigita.kernel.permissions.PermissionDescriptor;
-import com.arsdigita.kernel.permissions.PermissionService;
-import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.toolbox.ui.ActionGroup;
import com.arsdigita.toolbox.ui.Section;
import com.arsdigita.xml.Element;
import java.math.BigDecimal;
-import org.apache.log4j.Logger;
/**
* A split pane for the Category Administration UI.
*
* @author Justin Ross <jross@redhat.com>
- * @version $Id: CategoryAdminPane.java 2090 2010-04-17 08:04:14Z pboy $
+ * @author Yannick Bülter
*/
public final class CategoryAdminPane extends BaseAdminPane {
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemsBrowser.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemsBrowser.java.off
index 00ac15e07..544b5038d 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemsBrowser.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryItemsBrowser.java.off
@@ -21,25 +21,16 @@ package com.arsdigita.cms.ui.category;
import com.arsdigita.bebop.*;
import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.categorization.Category;
+import com.arsdigita.bebop.util.GlobalizationUtil;
import com.arsdigita.cms.CMS;
-import com.arsdigita.cms.ContentPage;
-import com.arsdigita.cms.ContentSection;
-import com.arsdigita.cms.ContentType;
-import com.arsdigita.cms.dispatcher.ItemResolver;
+
import com.arsdigita.cms.ui.CMSContainer;
-import com.arsdigita.cms.util.GlobalizationUtil;
-import com.arsdigita.domain.DomainObject;
-import com.arsdigita.domain.DomainObjectFactory;
-import com.arsdigita.kernel.ACSObject;
-import com.arsdigita.kernel.Kernel;
-import com.arsdigita.kernel.User;
import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
-import com.arsdigita.persistence.DataObject;
-import com.arsdigita.persistence.DataQuery;
-import com.arsdigita.persistence.OID;
-import com.arsdigita.toolbox.ui.DataQueryListModelBuilder;
import com.arsdigita.util.Assert;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.librecms.contentsection.ContentSection;
+import org.librecms.dispatcher.ItemResolver;
/**
* Displays a list of items for the given category
@@ -50,8 +41,8 @@ import com.arsdigita.util.Assert;
*/
public class CategoryItemsBrowser extends Grid {
- private static final org.apache.log4j.Logger s_log =
- org.apache.log4j.Logger.getLogger(CategoryItemsBrowser.class);
+ private static final Logger LOGGER = LogManager.getLogger(
+ CategoryItemsBrowser.class);
private RequestLocal m_resolver;
@@ -87,7 +78,7 @@ public class CategoryItemsBrowser extends Grid {
ContentSection section =
CMS.getContext().getContentSection();
final ItemResolver itemResolver = section.getItemResolver();
- s_log.warn("Item resolver is" + itemResolver.getClass());
+ LOGGER.warn("Item resolver is" + itemResolver.getClass());
return itemResolver;
}
};
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryMoveForm.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryMoveForm.java.off
index 52c984dae..c349abe31 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryMoveForm.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryMoveForm.java.off
@@ -18,15 +18,7 @@
*/
package com.arsdigita.cms.ui.category;
-import com.arsdigita.bebop.ColumnPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.SingleSelectionModel;
-import com.arsdigita.bebop.Tree;
+import com.arsdigita.bebop.*;
import com.arsdigita.bebop.event.ChangeEvent;
import com.arsdigita.bebop.event.ChangeListener;
import com.arsdigita.bebop.event.FormInitListener;
@@ -43,10 +35,13 @@ import com.arsdigita.cms.ui.CMSForm;
import com.arsdigita.cms.ui.FormSecurityListener;
import com.arsdigita.util.Assert;
import org.libreccm.categorization.Category;
+import org.libreccm.categorization.CategoryManager;
import org.libreccm.categorization.CategoryRepository;
import org.libreccm.cdi.utils.CdiUtil;
+import org.librecms.contentsection.privileges.AdminPrivileges;
import java.math.BigDecimal;
+import java.util.Optional;
/**
*
@@ -55,12 +50,12 @@ import java.math.BigDecimal;
public class CategoryMoveForm extends CMSForm {
public static final String CONTEXT_SELECTED = "sel_context";
- private static final String DEFAULT_USE_CONTEXT =
- CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT;
+ //private static final String DEFAULT_USE_CONTEXT =
+ // CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT;
private final CategoryRequestLocal selectedCategory;
private final SaveCancelSection saveCancelSection;
private final ChangeListener changeListener;
- //private final SingleSelectionModel selectionModel;
+ private final SingleSelectionModel selectionModel;
private final Tree categoryTree;
public CategoryMoveForm(final CategoryRequestLocal selectedCategory,
@@ -88,7 +83,7 @@ public class CategoryMoveForm extends CMSForm {
add(header, ColumnPanel.FULL_WIDTH);
changeListener = new TreeChangeListener();
- //selectionModel = new ParameterSingleSelectionModel(new StringParameter("selectedCategory"));
+ selectionModel = new ParameterSingleSelectionModel(new StringParameter("selectedCategory"));
categoryTree = new BaseTree(new CategoryTreeModelBuilder(contextModel));
categoryTree.addChangeListener(changeListener);
@@ -99,8 +94,7 @@ public class CategoryMoveForm extends CMSForm {
addInitListener(new InitListener());
addProcessListener(new ProcessListener());
- addSubmissionListener(new FormSecurityListener(
- com.arsdigita.cms.SecurityManager.CATEGORY_ADMIN));
+ addSubmissionListener(new FormSecurityListener(AdminPrivileges.ADMINISTER_CATEGORIES));
}
@@ -151,26 +145,31 @@ public class CategoryMoveForm extends CMSForm {
final PageState state = event.getPageState();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryRepository categoryRepository = cdiUtil.findBean(CategoryRepository.class);
+ final CategoryManager categoryManager = cdiUtil.findBean(CategoryManager.class);
if (saveCancelSection.getSaveButton().isSelected(state)
&& !(categoryTree.getSelectedKey(state).equals(selectedCategory.getCategory(state).getUniqueId()))) {
final Category categoryToMove = selectedCategory.getCategory(state);
final String targetKey = (String) categoryTree.getSelectedKey(state);
- final Category target = categoryRepository.findById(Long.parseLong(targetKey));
- final CategoryCollection parents = categoryToMove.getParents();
- while (parents.next()) {
- final Category parent = parents.getCategory();
- parent.removeChild(categoryToMove);
- parent.save();
+ final Optional categoryOptional = categoryRepository.findById(Long.parseLong(targetKey));
+ if (categoryOptional.isPresent()) {
+ final Category target = categoryOptional.get();
+
+ final Category parent = categoryToMove.getParentCategory();
+
+ categoryManager.removeSubCategoryFromCategory(categoryToMove, parent);
+ categoryRepository.save(parent);
+
+ categoryManager.addSubCategoryToCategory(categoryToMove, target);
+ categoryToMove.setParentCategory(target);
+
+ categoryRepository.save(target);
+ categoryRepository.save(categoryToMove);
+ } else {
+ throw new FormProcessException(GlobalizationUtil.globalize("Category with id" + targetKey + " does not exist!"));
}
-
- target.addChild(categoryToMove);
- categoryToMove.setDefaultParentCategory(target);
-
- target.save();
- categoryToMove.save();
}
categoryTree.clearSelection(state);
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java.off
index 54c75daf5..c2e1fa3e2 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java.off
@@ -23,11 +23,9 @@ import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.Tree;
import com.arsdigita.bebop.tree.TreeModel;
import com.arsdigita.bebop.tree.TreeModelBuilder;
-import com.arsdigita.categorization.Category;
-import com.arsdigita.categorization.CategoryTreeModelLite;
-import com.arsdigita.cms.CMS;
-import com.arsdigita.cms.ContentSection;
import com.arsdigita.util.LockableImpl;
+import org.libreccm.categorization.Category;
+import org.libreccm.categorization.CategoryTreeModelLite;
/**
* Lists category tree.
@@ -50,11 +48,9 @@ class CategoryTreeModelBuilder extends LockableImpl
}
public final TreeModel makeModel(final Tree tree, final PageState state) {
- final ContentSection section = CMS.getContext().getContentSection();
- final Category root = Category.getRootForObject(section,
- getUseContext(state));
- String order = ContentSection.getConfig().getCategoryTreeOrder();
- final CategoryTreeModelLite model = new CategoryTreeModelLite(root, order);
+ final Category category = (Category) m_contextModel.getSelectedKey(state);
+
+ final CategoryTreeModelLite model = new CategoryTreeModelLite(category);
return model;
}
@@ -69,5 +65,4 @@ class CategoryTreeModelBuilder extends LockableImpl
}
return context;
}
-
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java.off
index fb8062191..5937a45ca 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java.off
@@ -23,12 +23,15 @@ import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.list.AbstractListModelBuilder;
import com.arsdigita.bebop.list.ListModel;
import com.arsdigita.cms.CMS;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryManager;
import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.contentsection.ContentSection;
+import java.util.Collection;
+
/**
* Builds a list of category use contexts for the current
* content section.
@@ -41,15 +44,15 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
private static String DEFAULT_USE_CONTEXT = "";
- private static final Logger s_log = Logger.getLogger
- (CategoryUseContextModelBuilder.class);
+ private static final Logger LOGGER = LogManager.getLogger(
+ CategoryUseContextModelBuilder.class);
public final ListModel makeModel(final List list, final PageState state) {
return new Model();
}
private class Model implements ListModel {
- private final RootCategoryCollection m_roots;
+ private final java.util.List m_roots;
public Model() {
final ContentSection section =
@@ -58,7 +61,7 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryManager manager = cdiUtil.findBean(CategoryManager.class);
- m_roots = manager.get
+ m_roots = (Category) CMS.getContext().getContentItem();
//m_roots.addOrder(Category.USE_CONTEXT);
}