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: c5a1508e2d
pull/2/head
baka 2017-03-14 17:38:38 +00:00
parent 406f645407
commit 170e02fea3
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.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 <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
*/
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.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;
}
};

View File

@ -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<Category> 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);

View File

@ -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;
}
}

View File

@ -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 = "<default>";
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<Category> 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);
}