diff --git a/ccm-cms/src/com/arsdigita/cms/dispatcher/ContentPanel.java b/ccm-cms/src/com/arsdigita/cms/dispatcher/ContentPanel.java index 054ac9bca..5f87d36b7 100755 --- a/ccm-cms/src/com/arsdigita/cms/dispatcher/ContentPanel.java +++ b/ccm-cms/src/com/arsdigita/cms/dispatcher/ContentPanel.java @@ -21,11 +21,13 @@ package com.arsdigita.cms.dispatcher; import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.SimpleComponent; import com.arsdigita.cms.CMS; +import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentSection; +import com.arsdigita.cms.ContentSectionServlet; +import com.arsdigita.dispatcher.DispatcherHelper; import com.arsdigita.util.Assert; import com.arsdigita.xml.Element; - /** *

This ContentPanel component fetches * the {@link com.arsdigita.cms.dispatcher.XMLGenerator} for the content @@ -36,7 +38,7 @@ import com.arsdigita.xml.Element; */ public class ContentPanel extends SimpleComponent { - public static final String versionId = "$Id: ContentPanel.java 287 2005-02-22 00:29:02Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/17 23:15:09 $"; + public static final String versionId = "$Id: ContentPanel.java 1848 2009-03-10 03:17:42Z terry $ by $Author: terry $, $DateTime: 2004/08/17 23:15:09 $"; public ContentPanel() { super(); @@ -52,7 +54,7 @@ public class ContentPanel extends SimpleComponent { */ protected XMLGenerator getXMLGenerator(PageState state) { ContentSection section = CMS.getContext().getContentSection(); - Assert.assertNotNull(section); + Assert.exists(section); return section.getXMLGenerator(); } @@ -64,15 +66,44 @@ public class ContentPanel extends SimpleComponent { * @see com.arsdigita.cms.dispatcher.XMLGenerator */ public void generateXML(PageState state, Element parent) { - if ( isVisible(state) ) { + if (isVisible(state)) { Element content = parent.newChildElement("cms:contentPanel", CMS.CMS_XML_NS); exportAttributes(content); + // Generate path information about the content item + generatePathInfoXML(state, content); + // Take advantage of caching in the CMS Dispatcher. XMLGenerator xmlGenerator = getXMLGenerator(state); xmlGenerator.generateXML(state, content, null); } } + + /** + * Generate information about the path to this content item. + * + * @param state the page state + * @param parent the element that will contain the path info + */ + protected void generatePathInfoXML(PageState state, Element parent) { + Element pathInfo = parent.newChildElement("cms:pathInfo", CMS.CMS_XML_NS); + + if (CMS.getContext().hasContentSection()) { + pathInfo.newChildElement("cms:sectionPath", CMS.CMS_XML_NS).setText( + CMS.getContext().getContentSection().getPath()); + } + String url = DispatcherHelper.getRequestContext().getRemainingURLPart(); + if (url.startsWith(CMSDispatcher.PREVIEW)) { + pathInfo.newChildElement("cms:previewPath", CMS.CMS_XML_NS).setText(ContentSectionServlet.PREVIEW); + } + pathInfo.newChildElement("cms:templatePrefix", CMS.CMS_XML_NS).setText( + "/" + AbstractItemResolver.TEMPLATE_CONTEXT_PREFIX); + if (CMS.getContext().hasContentItem()) { + ContentItem item = CMS.getContext().getContentItem(); + ContentItem bundle = (ContentItem) item.getDraftVersion().getParent(); + pathInfo.newChildElement("cms:itemPath", CMS.CMS_XML_NS).setText("/" + bundle.getPath()); + } + } }