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
master
jensp 2016-12-14 10:33:23 +00:00
parent 31376f323d
commit c7f8494b90
2 changed files with 38 additions and 12 deletions

View File

@ -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<String, String> itemAttributes = new LinkedHashMap<String, String>();
/**
* 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<String> 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);

View File

@ -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<String> 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();