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
baka 2017-03-14 17:38:38 +00:00
parent 0bf76b01e2
commit c5a1508e2d
5 changed files with 49 additions and 70 deletions

View File

@ -22,30 +22,21 @@ import com.arsdigita.bebop.*;
import com.arsdigita.bebop.event.*; import com.arsdigita.bebop.event.*;
import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter; 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.CMS;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.ui.BaseAdminPane; import com.arsdigita.cms.ui.BaseAdminPane;
import com.arsdigita.cms.ui.BaseDeleteForm; import com.arsdigita.cms.ui.BaseDeleteForm;
import com.arsdigita.cms.ui.BaseTree; import com.arsdigita.cms.ui.BaseTree;
import com.arsdigita.cms.ui.VisibilityComponent; 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.ActionGroup;
import com.arsdigita.toolbox.ui.Section; import com.arsdigita.toolbox.ui.Section;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.apache.log4j.Logger;
/** /**
* A split pane for the Category Administration UI. * A split pane for the Category Administration UI.
* *
* @author Justin Ross <jross@redhat.com> * @author Justin Ross <jross@redhat.com>
* @version $Id: CategoryAdminPane.java 2090 2010-04-17 08:04:14Z pboy $ * @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
*/ */
public final class CategoryAdminPane extends BaseAdminPane { public final class CategoryAdminPane extends BaseAdminPane {

View File

@ -21,25 +21,16 @@ package com.arsdigita.cms.ui.category;
import com.arsdigita.bebop.*; import com.arsdigita.bebop.*;
import com.arsdigita.bebop.table.TableCellRenderer; 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.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.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.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 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 * Displays a list of items for the given category
@ -50,8 +41,8 @@ import com.arsdigita.util.Assert;
*/ */
public class CategoryItemsBrowser extends Grid { public class CategoryItemsBrowser extends Grid {
private static final org.apache.log4j.Logger s_log = private static final Logger LOGGER = LogManager.getLogger(
org.apache.log4j.Logger.getLogger(CategoryItemsBrowser.class); CategoryItemsBrowser.class);
private RequestLocal m_resolver; private RequestLocal m_resolver;
@ -87,7 +78,7 @@ public class CategoryItemsBrowser extends Grid {
ContentSection section = ContentSection section =
CMS.getContext().getContentSection(); CMS.getContext().getContentSection();
final ItemResolver itemResolver = section.getItemResolver(); final ItemResolver itemResolver = section.getItemResolver();
s_log.warn("Item resolver is" + itemResolver.getClass()); LOGGER.warn("Item resolver is" + itemResolver.getClass());
return itemResolver; return itemResolver;
} }
}; };

View File

@ -18,15 +18,7 @@
*/ */
package com.arsdigita.cms.ui.category; package com.arsdigita.cms.ui.category;
import com.arsdigita.bebop.ColumnPanel; import com.arsdigita.bebop.*;
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.event.ChangeEvent; import com.arsdigita.bebop.event.ChangeEvent;
import com.arsdigita.bebop.event.ChangeListener; import com.arsdigita.bebop.event.ChangeListener;
import com.arsdigita.bebop.event.FormInitListener; 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.cms.ui.FormSecurityListener;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
import org.libreccm.categorization.Category; import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryManager;
import org.libreccm.categorization.CategoryRepository; import org.libreccm.categorization.CategoryRepository;
import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.contentsection.privileges.AdminPrivileges;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Optional;
/** /**
* *
@ -55,12 +50,12 @@ import java.math.BigDecimal;
public class CategoryMoveForm extends CMSForm { public class CategoryMoveForm extends CMSForm {
public static final String CONTEXT_SELECTED = "sel_context"; public static final String CONTEXT_SELECTED = "sel_context";
private static final String DEFAULT_USE_CONTEXT = //private static final String DEFAULT_USE_CONTEXT =
CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT; // CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT;
private final CategoryRequestLocal selectedCategory; private final CategoryRequestLocal selectedCategory;
private final SaveCancelSection saveCancelSection; private final SaveCancelSection saveCancelSection;
private final ChangeListener changeListener; private final ChangeListener changeListener;
//private final SingleSelectionModel selectionModel; private final SingleSelectionModel selectionModel;
private final Tree categoryTree; private final Tree categoryTree;
public CategoryMoveForm(final CategoryRequestLocal selectedCategory, public CategoryMoveForm(final CategoryRequestLocal selectedCategory,
@ -88,7 +83,7 @@ public class CategoryMoveForm extends CMSForm {
add(header, ColumnPanel.FULL_WIDTH); add(header, ColumnPanel.FULL_WIDTH);
changeListener = new TreeChangeListener(); changeListener = new TreeChangeListener();
//selectionModel = new ParameterSingleSelectionModel(new StringParameter("selectedCategory")); selectionModel = new ParameterSingleSelectionModel(new StringParameter("selectedCategory"));
categoryTree = new BaseTree(new CategoryTreeModelBuilder(contextModel)); categoryTree = new BaseTree(new CategoryTreeModelBuilder(contextModel));
categoryTree.addChangeListener(changeListener); categoryTree.addChangeListener(changeListener);
@ -99,8 +94,7 @@ public class CategoryMoveForm extends CMSForm {
addInitListener(new InitListener()); addInitListener(new InitListener());
addProcessListener(new ProcessListener()); addProcessListener(new ProcessListener());
addSubmissionListener(new FormSecurityListener( addSubmissionListener(new FormSecurityListener(AdminPrivileges.ADMINISTER_CATEGORIES));
com.arsdigita.cms.SecurityManager.CATEGORY_ADMIN));
} }
@ -151,26 +145,31 @@ public class CategoryMoveForm extends CMSForm {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryRepository categoryRepository = cdiUtil.findBean(CategoryRepository.class); final CategoryRepository categoryRepository = cdiUtil.findBean(CategoryRepository.class);
final CategoryManager categoryManager = cdiUtil.findBean(CategoryManager.class);
if (saveCancelSection.getSaveButton().isSelected(state) if (saveCancelSection.getSaveButton().isSelected(state)
&& !(categoryTree.getSelectedKey(state).equals(selectedCategory.getCategory(state).getUniqueId()))) { && !(categoryTree.getSelectedKey(state).equals(selectedCategory.getCategory(state).getUniqueId()))) {
final Category categoryToMove = selectedCategory.getCategory(state); final Category categoryToMove = selectedCategory.getCategory(state);
final String targetKey = (String) categoryTree.getSelectedKey(state); final String targetKey = (String) categoryTree.getSelectedKey(state);
final Category target = categoryRepository.findById(Long.parseLong(targetKey));
final CategoryCollection parents = categoryToMove.getParents(); final Optional<Category> categoryOptional = categoryRepository.findById(Long.parseLong(targetKey));
while (parents.next()) { if (categoryOptional.isPresent()) {
final Category parent = parents.getCategory(); final Category target = categoryOptional.get();
parent.removeChild(categoryToMove);
parent.save(); 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); categoryTree.clearSelection(state);

View File

@ -23,11 +23,9 @@ import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.Tree; import com.arsdigita.bebop.Tree;
import com.arsdigita.bebop.tree.TreeModel; import com.arsdigita.bebop.tree.TreeModel;
import com.arsdigita.bebop.tree.TreeModelBuilder; 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 com.arsdigita.util.LockableImpl;
import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryTreeModelLite;
/** /**
* Lists category tree. * Lists category tree.
@ -50,11 +48,9 @@ class CategoryTreeModelBuilder extends LockableImpl
} }
public final TreeModel makeModel(final Tree tree, final PageState state) { public final TreeModel makeModel(final Tree tree, final PageState state) {
final ContentSection section = CMS.getContext().getContentSection(); final Category category = (Category) m_contextModel.getSelectedKey(state);
final Category root = Category.getRootForObject(section,
getUseContext(state)); final CategoryTreeModelLite model = new CategoryTreeModelLite(category);
String order = ContentSection.getConfig().getCategoryTreeOrder();
final CategoryTreeModelLite model = new CategoryTreeModelLite(root, order);
return model; return model;
} }
@ -69,5 +65,4 @@ class CategoryTreeModelBuilder extends LockableImpl
} }
return context; return context;
} }
} }

View File

@ -23,12 +23,15 @@ 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.apache.log4j.Logger; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.libreccm.categorization.Category; import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryManager; import org.libreccm.categorization.CategoryManager;
import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import java.util.Collection;
/** /**
* Builds a list of category use contexts for the current * Builds a list of category use contexts for the current
* content section. * content section.
@ -41,15 +44,15 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
private static String DEFAULT_USE_CONTEXT = "<default>"; private static String DEFAULT_USE_CONTEXT = "<default>";
private static final Logger s_log = Logger.getLogger private static final Logger LOGGER = LogManager.getLogger(
(CategoryUseContextModelBuilder.class); CategoryUseContextModelBuilder.class);
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();
} }
private class Model implements ListModel { private class Model implements ListModel {
private final RootCategoryCollection m_roots; private final java.util.List<Category> m_roots;
public Model() { public Model() {
final ContentSection section = final ContentSection section =
@ -58,7 +61,7 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryManager manager = cdiUtil.findBean(CategoryManager.class); final CategoryManager manager = cdiUtil.findBean(CategoryManager.class);
m_roots = manager.get m_roots = (Category) CMS.getContext().getContentItem();
//m_roots.addOrder(Category.USE_CONTEXT); //m_roots.addOrder(Category.USE_CONTEXT);
} }