XML Output of Content Items contains now the URL to Content Center edit page of the item. Together with a recent Mandalay version (revision 369 or newer) is is possible to show a link to edit page in the detail view of an item, for a greeting item and for each item in an object list (if the list is specialized)
git-svn-id: https://svn.libreccm.org/ccm/trunk@2113 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
d7f85f04bf
commit
d90a13e60b
|
|
@ -158,6 +158,7 @@ public class SimpleXMLGenerator implements XMLGenerator {
|
|||
parent.addAttribute("canEdit", "true");
|
||||
final Element canEditElem = parent.newChildElement("canEdit");
|
||||
canEditElem.setText("true");
|
||||
|
||||
}
|
||||
final PermissionDescriptor publish = new PermissionDescriptor(
|
||||
PrivilegeDescriptor.get(SecurityManager.CMS_PUBLISH), item, currentParty);
|
||||
|
|
@ -271,6 +272,16 @@ public class SimpleXMLGenerator implements XMLGenerator {
|
|||
}
|
||||
}
|
||||
|
||||
if (PermissionService.checkPermission(edit)) {
|
||||
final ItemResolver resolver = item.getContentSection().getItemResolver();
|
||||
final Element editLinkElem = content.newChildElement("editLink");
|
||||
final ContentItem draftItem = item.getDraftVersion();
|
||||
editLinkElem.setText(resolver.generateItemURL(state,
|
||||
draftItem,
|
||||
item.getContentSection(),
|
||||
draftItem.getVersion()));
|
||||
}
|
||||
|
||||
parent.addContent(content);
|
||||
|
||||
//System.out.printf("Rendered item in %d ms\n\n", (System.nanoTime() - start) / 1000000);
|
||||
|
|
|
|||
|
|
@ -17,8 +17,11 @@
|
|||
*/
|
||||
package com.arsdigita.navigation;
|
||||
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.categorization.Categorization;
|
||||
import com.arsdigita.categorization.Category;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.dispatcher.ItemResolver;
|
||||
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
||||
import com.arsdigita.domain.DomainObjectFactory;
|
||||
import com.arsdigita.kernel.ACSObject;
|
||||
|
|
@ -247,10 +250,20 @@ public class DataCollectionRenderer extends LockableImpl {
|
|||
final PermissionDescriptor edit;
|
||||
if (!m_specializeObjects || object == null) {
|
||||
edit = new PermissionDescriptor(PrivilegeDescriptor.get(
|
||||
com.arsdigita.cms.SecurityManager.CMS_EDIT_ITEM), dobj.getOID(), currentParty.getOID());
|
||||
com.arsdigita.cms.SecurityManager.CMS_EDIT_ITEM), dobj.getOID(), currentParty.getOID());
|
||||
} else {
|
||||
edit = new PermissionDescriptor(PrivilegeDescriptor.get(
|
||||
com.arsdigita.cms.SecurityManager.CMS_EDIT_ITEM), object, currentParty);
|
||||
com.arsdigita.cms.SecurityManager.CMS_EDIT_ITEM), object, currentParty);
|
||||
if (PermissionService.checkPermission(edit) && (object instanceof ContentItem)) {
|
||||
final ContentItem contentItem = (ContentItem) object;
|
||||
final ItemResolver resolver = contentItem.getContentSection().getItemResolver();
|
||||
final Element editLinkElem = item.newChildElement("editLink");
|
||||
final ContentItem draftItem = contentItem.getDraftVersion();
|
||||
editLinkElem.setText(resolver.generateItemURL(PageState.getPageState(),
|
||||
draftItem,
|
||||
contentItem.getContentSection(),
|
||||
draftItem.getVersion()));
|
||||
}
|
||||
}
|
||||
if (PermissionService.checkPermission(edit)) {
|
||||
item.addAttribute("canEdit", "true");
|
||||
|
|
|
|||
|
|
@ -17,11 +17,18 @@
|
|||
*/
|
||||
package com.arsdigita.navigation.cms;
|
||||
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ContentItemXMLRenderer;
|
||||
import com.arsdigita.cms.ExtraXMLGenerator;
|
||||
import com.arsdigita.cms.dispatcher.ItemResolver;
|
||||
import com.arsdigita.domain.DomainObjectFactory;
|
||||
import com.arsdigita.kernel.ACSObject;
|
||||
import com.arsdigita.kernel.Kernel;
|
||||
import com.arsdigita.kernel.Party;
|
||||
import com.arsdigita.kernel.permissions.PermissionDescriptor;
|
||||
import com.arsdigita.kernel.permissions.PermissionService;
|
||||
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
|
||||
import com.arsdigita.navigation.DataCollectionRenderer;
|
||||
import com.arsdigita.navigation.Navigation;
|
||||
import com.arsdigita.persistence.DataObject;
|
||||
|
|
@ -29,9 +36,9 @@ import com.arsdigita.persistence.OID;
|
|||
import com.arsdigita.xml.Element;
|
||||
|
||||
public class CMSDataCollectionRenderer extends DataCollectionRenderer {
|
||||
|
||||
|
||||
private boolean useExtraXml = true;
|
||||
|
||||
|
||||
public CMSDataCollectionRenderer() {
|
||||
addAttribute("masterVersion.id");
|
||||
}
|
||||
|
|
@ -39,11 +46,11 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer {
|
|||
public boolean getUseExtraXml() {
|
||||
return useExtraXml;
|
||||
}
|
||||
|
||||
|
||||
public void setUseExtraXml(final boolean useExtraXml) {
|
||||
this.useExtraXml = useExtraXml;
|
||||
}
|
||||
|
||||
|
||||
protected String getStableURL(DataObject dobj,
|
||||
ACSObject obj) {
|
||||
if (obj == null) {
|
||||
|
|
@ -73,18 +80,34 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer {
|
|||
* 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());
|
||||
|
||||
|
||||
if ((obj instanceof ContentItem) && useExtraXml) {
|
||||
final ContentItem contentItem = (ContentItem) obj;
|
||||
|
||||
for(ExtraXMLGenerator generator : contentItem.getExtraListXMLGenerators()) {
|
||||
|
||||
for (ExtraXMLGenerator generator : contentItem.getExtraListXMLGenerators()) {
|
||||
generator.setListMode(true);
|
||||
generator.generateXML(contentItem, item, null);
|
||||
}
|
||||
|
||||
|
||||
Party currentParty = Kernel.getContext().getParty();
|
||||
if (currentParty == null) {
|
||||
currentParty = Kernel.getPublicUser();
|
||||
}
|
||||
final PermissionDescriptor edit = new PermissionDescriptor(PrivilegeDescriptor.get(
|
||||
com.arsdigita.cms.SecurityManager.CMS_EDIT_ITEM), contentItem, currentParty);
|
||||
if (PermissionService.checkPermission(edit)) {
|
||||
final ItemResolver resolver = contentItem.getContentSection().getItemResolver();
|
||||
final Element editLinkElem = item.newChildElement("editLink");
|
||||
final ContentItem draftItem = contentItem.getDraftVersion();
|
||||
editLinkElem.setText(resolver.generateItemURL(PageState.getPageState(),
|
||||
draftItem,
|
||||
contentItem.getContentSection(),
|
||||
draftItem.getVersion()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import com.arsdigita.cms.ContentItem;
|
|||
import com.arsdigita.cms.ContentItemXMLRenderer;
|
||||
import com.arsdigita.cms.ExtraXMLGenerator;
|
||||
import com.arsdigita.cms.SecurityManager;
|
||||
import com.arsdigita.cms.dispatcher.ItemResolver;
|
||||
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
||||
import com.arsdigita.globalization.GlobalizationHelper;
|
||||
import com.arsdigita.kernel.Kernel;
|
||||
|
|
@ -59,7 +60,7 @@ public class GreetingItem extends AbstractComponent {
|
|||
private static final Logger s_log = Logger.getLogger(GreetingItem.class);
|
||||
|
||||
public Element generateXML(HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
HttpServletResponse response) {
|
||||
ContentItem item = (ContentItem) getObject();
|
||||
if (null == item || !item.isLive()) {
|
||||
return null;
|
||||
|
|
@ -108,7 +109,7 @@ public class GreetingItem extends AbstractComponent {
|
|||
}
|
||||
|
||||
ContentBundle bundle = (ContentBundle) item;
|
||||
|
||||
|
||||
/* Fix by Jens Pelzetter, 2009-08-28
|
||||
* bundle.getPrimaryInstance() does not care about the preferred
|
||||
* languages
|
||||
|
|
@ -132,26 +133,36 @@ public class GreetingItem extends AbstractComponent {
|
|||
//Moved to seperate method generateGreetingItemXml to make to
|
||||
//XML generation extendable (use another renderer etc.)
|
||||
/*ContentItemXMLRenderer renderer =
|
||||
new ContentItemXMLRenderer(itemEl);
|
||||
new ContentItemXMLRenderer(itemEl);
|
||||
|
||||
renderer.setWrapAttributes(true);
|
||||
renderer.setWrapRoot(false);
|
||||
renderer.setWrapObjects(false);
|
||||
renderer.setWrapAttributes(true);
|
||||
renderer.setWrapRoot(false);
|
||||
renderer.setWrapObjects(false);
|
||||
|
||||
renderer.walk(baseItem, SimpleXMLGenerator.ADAPTER_CONTEXT);*/
|
||||
renderer.walk(baseItem, SimpleXMLGenerator.ADAPTER_CONTEXT);*/
|
||||
|
||||
generateGreetingItemXml(itemEl, baseItem);
|
||||
|
||||
for (ExtraXMLGenerator generator : baseItem.getExtraXMLGenerators()) {
|
||||
try {
|
||||
generator.generateXML(baseItem, itemEl, new PageState(null,
|
||||
request,
|
||||
response));
|
||||
request,
|
||||
response));
|
||||
} catch (ServletException ex) {
|
||||
s_log.error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
if (PermissionService.checkPermission(edit)) {
|
||||
final ItemResolver resolver = baseItem.getContentSection().getItemResolver();
|
||||
final Element editLinkElem = itemEl.newChildElement("editLink");
|
||||
final ContentItem draftItem = baseItem.getDraftVersion();
|
||||
editLinkElem.setText(resolver.generateItemURL(PageState.getPageState(),
|
||||
draftItem,
|
||||
baseItem.getContentSection(),
|
||||
draftItem.getVersion()));
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
|
|
@ -169,4 +180,5 @@ public class GreetingItem extends AbstractComponent {
|
|||
|
||||
renderer.walk(item, SimpleXMLGenerator.ADAPTER_CONTEXT);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue