From 170e02fea3d4b34e3aa2f898adb6bfd014589ce4 Mon Sep 17 00:00:00 2001 From: baka Date: Tue, 14 Mar 2017 17:38:38 +0000 Subject: [PATCH] Adds more implementations for the category part of the cms frontend 2nd! git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4628 8810af33-2d31-482b-a856-94f89814c4df Former-commit-id: c5a1508e2dcf11771f638ee0e2e359d650a7c003 --- .../ui/category/CategoryAdminPane.java.off | 11 +--- .../ui/category/CategoryItemsBrowser.java.off | 27 ++++------ .../cms/ui/category/CategoryMoveForm.java.off | 53 +++++++++---------- .../CategoryTreeModelBuilder.java.off | 15 ++---- .../CategoryUseContextModelBuilder.java.off | 13 +++-- 5 files changed, 49 insertions(+), 70 deletions(-) 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); }