From c7f8494b908c0f3a4040cf5f4cf6f50720e390be Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 14 Dec 2016 10:33:23 +0000 Subject: [PATCH] The XML of ContentPanel and GreetingItem now includes the languages in which an content item is available git-svn-id: https://svn.libreccm.org/ccm/trunk@4474 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/dispatcher/SimpleXMLGenerator.java | 31 +++++++++++++++---- .../arsdigita/navigation/ui/GreetingItem.java | 19 ++++++++---- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java b/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java index 29e87838c..a581d1f4b 100755 --- a/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java +++ b/ccm-cms/src/com/arsdigita/cms/dispatcher/SimpleXMLGenerator.java @@ -18,9 +18,11 @@ */ package com.arsdigita.cms.dispatcher; + import com.arsdigita.bebop.PageState; import com.arsdigita.cms.CMS; import com.arsdigita.cms.CMSConfig; +import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItemXMLRenderer; import com.arsdigita.cms.ExtraXMLGenerator; @@ -32,6 +34,7 @@ import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectTraversal; import com.arsdigita.domain.SimpleDomainObjectTraversalAdapter; +import com.arsdigita.kernel.ACSObject; import com.arsdigita.kernel.Kernel; import com.arsdigita.kernel.Party; import com.arsdigita.kernel.permissions.PermissionDescriptor; @@ -43,6 +46,7 @@ import com.arsdigita.persistence.metadata.Property; import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.xml.Element; import org.apache.log4j.Logger; +import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; @@ -59,10 +63,10 @@ public class SimpleXMLGenerator implements XMLGenerator { private static final Logger s_log = Logger.getLogger(SimpleXMLGenerator.class); public static final String ADAPTER_CONTEXT = SimpleXMLGenerator.class.getName(); /** - * jensp 2011-10-23: Sometimes the extra XML is not needed, for example + * jensp 2011-10-23: Sometimes the extra XML is not needed, for example * when embedding the XML of a content item into the XML output of another * content item. The default value {@code true}. To change the value - * call {@link #setUseExtraXml(booelan)} after creating an instance of + * call {@link #setUseExtraXml(booelan)} after creating an instance of * your generator. */ private boolean useExtraXml = true; @@ -79,7 +83,7 @@ public class SimpleXMLGenerator implements XMLGenerator { private final Map itemAttributes = new LinkedHashMap(); /** * Allows to overwrite the name and the namespace of the XML element - * used to wrap the rendered item. + * used to wrap the rendered item. */ private String itemElemName = "cms:item"; private String itemElemNs = CMS.CMS_XML_NS; @@ -173,6 +177,21 @@ public class SimpleXMLGenerator implements XMLGenerator { } } + final ACSObject parentObj = item.getParent(); + if (parentObj instanceof ContentBundle) { + final ContentBundle bundle = (ContentBundle) parentObj; + final Collection languages = bundle.getLanguages(); + + final Element availableLangsElem = parent.newChildElement("availableLanguages"); + + for(String language : languages) { + final Element langElem = availableLangsElem.newChildElement("language"); + langElem.setText(language); + } + + } + + // Implementing XMLGenerator directly is now deprecated if (item instanceof XMLGenerator) { s_log.info("Item implements XMLGenerator interface"); @@ -224,8 +243,8 @@ public class SimpleXMLGenerator implements XMLGenerator { /* * 2011-08-27 jensp: Introduced to remove the annoying special templates * for MultiPartArticle, SiteProxy and others. The method called - * here was already definied but not used. - * + * here was already definied but not used. + * * 2011-10-23 jensp: It is now possible to disable the use of * extra XML. */ @@ -318,7 +337,7 @@ public class SimpleXMLGenerator implements XMLGenerator { private Element startElement(final String useContext, final Element parent) { //Element element = new Element("cms:item", CMS.CMS_XML_NS); - //final Element element = new Element(itemElemName, itemElemNs); + //final Element element = new Element(itemElemName, itemElemNs); final Element element = parent.newChildElement(itemElemName, itemElemNs); if (useContext != null) { element.addAttribute("useContext", useContext); diff --git a/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java b/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java index 7207886f6..ff454a1a8 100755 --- a/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java +++ b/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java @@ -18,6 +18,7 @@ package com.arsdigita.navigation.ui; import com.arsdigita.bebop.PageState; +import java.util.Collection; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -128,8 +129,14 @@ public class GreetingItem extends AbstractComponent { // get the primary instance instead (fallback) baseItem = bundle.getPrimaryInstance(); } - - + + final Collection languages = bundle.getLanguages(); + final Element availableLangsElem = content.newChildElement("availableLanguages"); + for(String language : languages) { + final Element langElem = availableLangsElem.newChildElement("language"); + langElem.setText(language); + } + if (baseItem instanceof XMLGenerator) { final XMLGenerator generator = (XMLGenerator) baseItem; generator.generateXML(PageState.getPageState(), content, ""); @@ -141,15 +148,15 @@ public class GreetingItem extends AbstractComponent { //XML generation extendable (use another renderer etc.) /*ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(itemEl); - + renderer.setWrapAttributes(true); renderer.setWrapRoot(false); renderer.setWrapObjects(false); - + renderer.walk(baseItem, SimpleXMLGenerator.ADAPTER_CONTEXT);*/ generateGreetingItemXml(itemEl, baseItem); - + for (ExtraXMLGenerator generator : baseItem.getExtraXMLGenerators()) { try { @@ -160,7 +167,7 @@ public class GreetingItem extends AbstractComponent { s_log.error(ex); } } - + if (PermissionService.checkPermission(edit)) { final ItemResolver resolver = baseItem.getContentSection().getItemResolver();