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-94f89814c4df
master
jensp 2013-04-05 15:50:34 +00:00
parent d7f85f04bf
commit d90a13e60b
4 changed files with 79 additions and 20 deletions

View File

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

View File

@ -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;
@ -251,6 +254,16 @@ public class DataCollectionRenderer extends LockableImpl {
} else {
edit = new PermissionDescriptor(PrivilegeDescriptor.get(
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");

View File

@ -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;
@ -84,7 +91,23 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer {
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()));
}
}
}
}
}

View File

@ -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;
@ -152,6 +153,16 @@ public class GreetingItem extends AbstractComponent {
}
}
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);
}
}