From 390aa17f133cbef1e78ae1da4e6cae9a4c201b9c Mon Sep 17 00:00:00 2001 From: baka Date: Mon, 24 Apr 2017 12:39:36 +0000 Subject: [PATCH] Implementes using points discussed during last meeting git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4686 8810af33-2d31-482b-a856-94f89814c4df --- .../com/arsdigita/cms/ui/CategoryForm.java | 108 ++++++------------ ...ff => CategoryUseContextModelBuilder.java} | 25 ++-- .../org/librecms/CmsResources.properties | 1 + 3 files changed, 50 insertions(+), 84 deletions(-) rename ccm-cms/src/main/java/com/arsdigita/cms/ui/category/{CategoryUseContextModelBuilder.java.off => CategoryUseContextModelBuilder.java} (75%) diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/CategoryForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/CategoryForm.java index 9a9382286..5b4a66e00 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/CategoryForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/CategoryForm.java @@ -33,6 +33,7 @@ import com.arsdigita.bebop.util.GlobalizationUtil; import com.arsdigita.bebop.util.SequentialMap; import com.arsdigita.cms.CMS; import com.arsdigita.cms.ui.authoring.BasicItemForm; +import com.arsdigita.globalization.Globalization; import com.arsdigita.util.StringUtils; import com.arsdigita.util.UncheckedWrapperException; import org.apache.logging.log4j.LogManager; @@ -45,13 +46,7 @@ import org.libreccm.core.CcmObject; import javax.enterprise.inject.spi.CDI; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; -import java.util.SortedMap; -import java.util.TooManyListenersException; -import java.util.TreeMap; +import java.util.*; /** * This is an abstract class which displays the category assignment UI. @@ -367,60 +362,32 @@ public abstract class CategoryForm extends Form public void process(FormSectionEvent e) throws FormProcessException { final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CategoryRepository categoryRepository = cdiUtil.findBean(CategoryRepository.class); - final CategoryManager categoryManager = cdiUtil.findBean(CategoryManager.class); PageState state = e.getPageState(); FormData data = e.getFormData(); - BigDecimal id; + Long id; if (m_assign.isSelected(state)) { - Category cat = new Category(); - assignCategory(state, cat); - + id = ((BigDecimal) data.get(FREE)).longValue(); + Optional optional = categoryRepository.findById(id); + if (optional.isPresent()) { + Category cat = optional.get(); + assignCategory(state, cat); + data.put(ASSIGNED, id); + } else { + throw new FormProcessException(GlobalizationUtil.globalize(String.format("Can't find category with id %d", id))); + } + } else if (m_remove.isSelected(state)) { + id = ((BigDecimal) data.get(ASSIGNED)).longValue(); + Optional optional = categoryRepository.findById(id); + if (optional.isPresent()) { + Category cat = optional.get(); + unassignCategory(state, cat); + data.put(FREE, id); + } else { + throw new FormProcessException(GlobalizationUtil.globalize(String.format("Can't find category with id %d", id))); + } } - -// if (m_assign.isSelected(state)) { -// id = (BigDecimal) data.get(FREE); -// -// // Assign a new category -// try { -// Category cat = new Category( -// new OID(Category.BASE_DATA_OBJECT_TYPE, id)); -// if (!cat.canMap()) { -// data.addError( -// (String) GlobalizationUtil.globalize( -// "cms.ui.need_category_map_privilege").localize()); -// return; -// } -// assignCategory(state, cat); -// // Highlight the item -// data.put(ASSIGNED, id); -// } catch (DataObjectNotFoundException ex) { -// s_log.error("Couldn't find Category", ex); -// throw new FormProcessException(ex); -// } -// -// } else if (m_remove.isSelected(state)) { -// id = (BigDecimal) data.get(ASSIGNED); -// -// // Unassign a category -// try { -// Category cat = new Category( -// new OID(Category.BASE_DATA_OBJECT_TYPE, id)); -// if (!cat.canMap()) { -// data.addError( -// (String) GlobalizationUtil.globalize( -// "cms.ui.need_category_map_privilege").localize()); -// return; -// } -// unassignCategory(state, cat); -// // Highlight the item -// data.put(FREE, id); -// } catch (DataObjectNotFoundException ex) { -// s_log.error("Couldn't find category"); -// throw new FormProcessException(ex); -// } -// } } // Validate the form: make sure that a category is selected @@ -429,19 +396,16 @@ public abstract class CategoryForm extends Form public void validate(FormSectionEvent e) throws FormProcessException { PageState state = e.getPageState(); FormData data = e.getFormData(); + if (m_assign.isSelected(state)) { + if (data.get(FREE) == null) { + data.addError(GlobalizationUtil.globalize("cms.ui.category.assign_select_missing")); + } else { + // we need to make sure that no other item in this + // category has the same name (url) + Long id = ((BigDecimal) data.get(FREE)).longValue(); -// if (m_assign.isSelected(state)) { -// if (data.get(FREE) == null) { -// data.addError("Please select a category to assign"); -// } else { -// // we need to make sure that no other item in this -// // category has the same name (url) -// BigDecimal id = (BigDecimal) data.get(FREE); -// -// // Assign a new category + // Assign a new category // try { -// Category cat = -// new Category(new OID(Category.BASE_DATA_OBJECT_TYPE, id)); // String url = getItemURL(state); // // if (url != null) { @@ -477,12 +441,12 @@ public abstract class CategoryForm extends Form // + "category with id " + id); // throw new FormProcessException(ex); // } -// } -// } else if (m_remove.isSelected(state)) { -// if (data.get(ASSIGNED) == null) { -// data.addError("Please select a category to remove"); -// } -// } + } + } else if (m_remove.isSelected(state)) { + if (data.get(ASSIGNED) == null) { + data.addError(GlobalizationUtil.globalize("cms.ui.category.assign_select_missing")); + } + } } // Add a "filler" option to the option group in order to ensure 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 similarity index 75% rename from ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java.off rename to ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryUseContextModelBuilder.java index 5937a45ca..aca81fd80 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 @@ -27,10 +27,15 @@ 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.categorization.DomainManager; +import org.libreccm.categorization.DomainOwnership; import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.web.ApplicationManager; +import org.libreccm.web.CcmApplication; import org.librecms.contentsection.ContentSection; import java.util.Collection; +import java.util.Iterator; /** * Builds a list of category use contexts for the current @@ -38,7 +43,6 @@ import java.util.Collection; * * @author Yannick Bülter * @author Scott Seago - * @version $Id: CategoryUseContextModelBuilder.java 2090 2010-04-17 08:04:14Z pboy $ */ class CategoryUseContextModelBuilder extends AbstractListModelBuilder { @@ -52,31 +56,28 @@ class CategoryUseContextModelBuilder extends AbstractListModelBuilder { } private class Model implements ListModel { - private final java.util.List m_roots; + private final Iterator m_roots; + private DomainOwnership current; public Model() { final ContentSection section = CMS.getContext().getContentSection(); - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryManager manager = cdiUtil.findBean(CategoryManager.class); - - m_roots = (Category) CMS.getContext().getContentItem(); - //m_roots.addOrder(Category.USE_CONTEXT); + m_roots = section.getDomains().iterator(); + current = null; } public boolean next() { - return m_roots.next(); + current = m_roots.next(); + return current != null; } public Object getElement() { - String useContext = m_roots.getUseContext(); - return useContext == null ? DEFAULT_USE_CONTEXT : useContext; + return current; } public String getKey() { - String useContext = m_roots.getUseContext(); - return useContext == null ? DEFAULT_USE_CONTEXT : useContext; + return current.getContext() != null ? current.getContext() : DEFAULT_USE_CONTEXT; } } } diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index 220e377c5..1c840d69c 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -110,6 +110,7 @@ cms.ui.category.use_context=Use Context cms.ui.category.use_contexts=Use Contexts 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" cms.ui.authoring.no_types_registered=No types registered cms.ui.contents_of=Contents of