From 1bb45012d21a90c0a4c838b5d28eea6b79aa9280 Mon Sep 17 00:00:00 2001 From: jensp Date: Mon, 3 Jan 2011 18:08:53 +0000 Subject: [PATCH] =?UTF-8?q?-=20DataCollectionRenderer=20und=20CMSDataColle?= =?UTF-8?q?ctionRenderer=20so=20angepasst,=20dass=20man=20=C3=BCber=20eine?= =?UTF-8?q?=20JSP=20einen=20anderen=20Kontext=20f=C3=BCr=20den=20Traversal?= =?UTF-8?q?adapter=20setzen=20kann.=20Dies=20erlaubt=20=20=20es=20in=20ein?= =?UTF-8?q?er=20mit=20spezializierten=20Objekten=20einen=20anderen=20Trave?= =?UTF-8?q?rsalAdapter=20als=20f=C3=BCr=20die=20Detailansicht=20zu=20verwe?= =?UTF-8?q?nden.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@667 8810af33-2d31-482b-a856-94f89814c4df --- .../navigation/DataCollectionRenderer.java | 22 ++++++++++++++++++ .../cms/CMSDataCollectionRenderer.java | 9 +++++++- .../ui/object/SimpleObjectList.java | 22 ++++++------------ .../arsdigita/cms/contenttypes/SciProject.xml | 23 ++++++++++++++----- .../navigation/templates/SciProjectList.jsp | 1 + 5 files changed, 55 insertions(+), 22 deletions(-) diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/DataCollectionRenderer.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/DataCollectionRenderer.java index 3368c57b7..018e9df37 100755 --- a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/DataCollectionRenderer.java +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/DataCollectionRenderer.java @@ -17,6 +17,7 @@ */ package com.arsdigita.london.navigation; +import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.kernel.ACSObject; import com.arsdigita.persistence.DataAssociation; @@ -54,6 +55,13 @@ public class DataCollectionRenderer extends LockableImpl { private ArrayList m_properties = new ArrayList(); private int m_pageSize = 20; private boolean m_specializeObjects = false; + /** + * The traversal adapter context used if {@link #m_specializeObjects} is + * true. Defaults to + * {@link SimpleXMLGenerator.ADAPTER_CONTEXT}. + */ + private String m_specializeObjectsContext = + SimpleXMLGenerator.ADAPTER_CONTEXT; private boolean m_wrapAttributes = false; private boolean m_navItems = true; @@ -91,6 +99,20 @@ public class DataCollectionRenderer extends LockableImpl { m_specializeObjects = specializeObjects; } + protected String getSpecializeObjectsContext() { + return m_specializeObjectsContext; + } + + /** + * Sets the context of the traversal adapter used the render the objects + * if {@link #m_specializeObjects} is set to true + * + * @param context The adapter context. + */ + public void setSpecializeObjectsContext(String context) { + m_specializeObjectsContext = context; + } + public void setWrapAttributes(boolean wrapAttributes) { Assert.isUnlocked(this); m_wrapAttributes = wrapAttributes; diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/cms/CMSDataCollectionRenderer.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/cms/CMSDataCollectionRenderer.java index 308107788..46fdf09cb 100755 --- a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/cms/CMSDataCollectionRenderer.java +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/cms/CMSDataCollectionRenderer.java @@ -57,7 +57,14 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer { renderer.setWrapAttributes(true); renderer.setWrapRoot(false); renderer.setWrapObjects(false); - renderer.walk(obj, SimpleXMLGenerator.ADAPTER_CONTEXT); + //renderer.walk(obj, SimpleXMLGenerator.ADAPTER_CONTEXT); + /* jensp 2011-01-03: + * I needed the option to use different traversal adapters for + * the object in the detail view and the list view. It is now + * possible to set the adapter context used from a JSP template, + * using DataCollectionRenderer#setSpecializeObjectsContext(String). + */ + renderer.walk(obj, getSpecializeObjectsContext()); } } } diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/SimpleObjectList.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/SimpleObjectList.java index 0fa5d8a8e..b15e3b006 100755 --- a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/SimpleObjectList.java +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/SimpleObjectList.java @@ -15,47 +15,39 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - - package com.arsdigita.london.navigation.ui.object; import com.arsdigita.london.navigation.Navigation; import com.arsdigita.london.navigation.ui.AbstractObjectList; - - - import com.arsdigita.xml.Element; - - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - /** * A object list */ public class SimpleObjectList extends AbstractObjectList { - + public static final String CUSTOM_NAME = "customName"; protected String m_customName = null; public void setCustomName(String name) { - m_customName = name; + m_customName = name; } public String getCustomName() { - return m_customName; + return m_customName; } - + public Element generateXML(HttpServletRequest request, HttpServletResponse response) { Element content = Navigation.newElement("simpleObjectList"); - if (m_customName != null) { - content.addAttribute(CUSTOM_NAME, m_customName); - } + if (m_customName != null) { + content.addAttribute(CUSTOM_NAME, m_customName); + } content.addContent(generateObjectListXML(request, response)); diff --git a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml index cba8177a7..95716f355 100644 --- a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml +++ b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml @@ -9,14 +9,25 @@ --> - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-zes-aplaws/web/packages/navigation/templates/SciProjectList.jsp b/ccm-zes-aplaws/web/packages/navigation/templates/SciProjectList.jsp index 8a673b77e..c7ce42fce 100644 --- a/ccm-zes-aplaws/web/packages/navigation/templates/SciProjectList.jsp +++ b/ccm-zes-aplaws/web/packages/navigation/templates/SciProjectList.jsp @@ -40,6 +40,7 @@ ((com.arsdigita.london.navigation.ui.object.SimpleObjectList) itemList).getRenderer().setPageSize(20); ((com.arsdigita.london.navigation.ui.object.SimpleObjectList) itemList).getRenderer().setSpecializeObjects(true); + ((com.arsdigita.london.navigation.ui.object.SimpleObjectList) itemList).getRenderer().setSpecializeObjectsContext("sciProjectList");