diff --git a/ccm-cms-personalcontentcomponent/application.xml b/ccm-cms-personalcontentcomponent/application.xml new file mode 100644 index 000000000..8fc6f9efd --- /dev/null +++ b/ccm-cms-personalcontentcomponent/application.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + Allows it to use the PersonalPublications content generator as navigation item. + + + \ No newline at end of file diff --git a/ccm-cms-personalcontentcomponent/doc/readme.txt b/ccm-cms-personalcontentcomponent/doc/readme.txt new file mode 100644 index 000000000..5383f55b6 --- /dev/null +++ b/ccm-cms-personalcontentcomponent/doc/readme.txt @@ -0,0 +1,50 @@ +This module provides component which allows it to use an implementation of +the content generator interface provided by the PublicPersonalProfile module +on an Navigation page. + +Example usages are the components for publications and project lists in the +modules ccm-sci-personalpublications and ccm-sci-personalprojects. + +To use the component create new JSP template like to following: + + + + + + + + + + + + long age = Navigation.getConfig().getIndexPageCacheLifetime(); + if (age == 0) { + DispatcherHelper.cacheDisable(response); + } else { + DispatcherHelper.cacheForWorld(response, (int)age); + } + + + + + + + + + ((com.arsdigita.cms.publicpersonalprofile.ui.PersonalContentComponent) greetingItem).setGenerator(new PersonalPublications()); + + + + + + + diff --git a/ccm-cms-personalcontentcomponent/src/ccm-cms-personalcontentcomponent.config b/ccm-cms-personalcontentcomponent/src/ccm-cms-personalcontentcomponent.config new file mode 100644 index 000000000..f68f37732 --- /dev/null +++ b/ccm-cms-personalcontentcomponent/src/ccm-cms-personalcontentcomponent.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ccm-cms-personalcontentcomponent/src/ccm-cms-personalcontentcomponent.load b/ccm-cms-personalcontentcomponent/src/ccm-cms-personalcontentcomponent.load new file mode 100644 index 000000000..3d247ec96 --- /dev/null +++ b/ccm-cms-personalcontentcomponent/src/ccm-cms-personalcontentcomponent.load @@ -0,0 +1,11 @@ + + + +
+
+
+ + + + + \ No newline at end of file diff --git a/ccm-cms-personalcontentcomponent/src/com/arsdigita/cms/publicpersonalprofile/ui/PersonalContentComponent.java b/ccm-cms-personalcontentcomponent/src/com/arsdigita/cms/publicpersonalprofile/ui/PersonalContentComponent.java new file mode 100644 index 000000000..abe0cc1f9 --- /dev/null +++ b/ccm-cms-personalcontentcomponent/src/com/arsdigita/cms/publicpersonalprofile/ui/PersonalContentComponent.java @@ -0,0 +1,78 @@ +package com.arsdigita.cms.publicpersonalprofile.ui; + +import com.arsdigita.bebop.PageState; +import com.arsdigita.cms.ContentBundle; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.contenttypes.GenericPerson; +import com.arsdigita.cms.contenttypes.GenericPersonBundle; +import com.arsdigita.cms.publicpersonalprofile.ContentGenerator; +import com.arsdigita.globalization.GlobalizationHelper; +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.ui.AbstractComponent; +import com.arsdigita.web.LoginSignal; +import com.arsdigita.xml.Element; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class PersonalContentComponent extends AbstractComponent { + + private ContentGenerator generator; + + public ContentGenerator getGenerator() { + return generator; + } + + public void setGenerator(final ContentGenerator generator) { + this.generator = generator; + } + + public Element generateXML(final HttpServletRequest request, final HttpServletResponse response) { + ContentItem item = (ContentItem) getObject(); + + if (!(item instanceof GenericPersonBundle) || !(item.isLive())) { + return null; + } + + if (!ContentItem.LIVE.equals(item.getVersion())) { + item = item.getLiveVersion(); + } + + final Party currentParty; + if (Kernel.getContext().getParty() == null) { + currentParty = Kernel.getPublicUser(); + } else { + currentParty = Kernel.getContext().getParty(); + } + + final PermissionDescriptor read = new PermissionDescriptor( + PrivilegeDescriptor.get(com.arsdigita.cms.SecurityManager.CMS_READ_ITEM), + item, + currentParty); + if (!PermissionService.checkPermission(read)) { + throw new LoginSignal(request); + } + + final ContentBundle bundle = (ContentBundle) item; + GenericPerson baseItem = (GenericPerson) bundle.getInstance(GlobalizationHelper. + getNegotiatedLocale().getLanguage()); + if (baseItem == null) { + // get the primary instance instead (fallback) + baseItem = (GenericPerson) bundle.getPrimaryInstance(); + } + + final Element parent = new Element("ppp:profile", "http://www.arsdigita.com/PublicPersonalProfile/1.0"); + generator.generateContent(parent, baseItem, PageState.getPageState(), baseItem.getLanguage()); + + return parent; + } + +} diff --git a/ccm-cms-personalcontentcomponent/src/empty.pdl.mf b/ccm-cms-personalcontentcomponent/src/empty.pdl.mf new file mode 100644 index 000000000..e69de29bb diff --git a/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java b/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java index 7c63b3632..64ef87b55 100755 --- a/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java +++ b/ccm-navigation/src/com/arsdigita/navigation/ui/GreetingItem.java @@ -59,8 +59,7 @@ public class GreetingItem extends AbstractComponent { private static final Logger s_log = Logger.getLogger(GreetingItem.class); public Element generateXML(HttpServletRequest request, - HttpServletResponse response) { - long start = System.currentTimeMillis(); + HttpServletResponse response) { ContentItem item = (ContentItem) getObject(); if (null == item || !item.isLive()) { return null; @@ -70,7 +69,6 @@ public class GreetingItem extends AbstractComponent { item = item.getLiveVersion(); } - Element content = Navigation.newElement("greetingItem"); Party currentParty = Kernel.getContext().getParty(); if (currentParty == null) { diff --git a/ccm-navigation/src/com/arsdigita/navigation/ui/object/CustomizableObjectList.java b/ccm-navigation/src/com/arsdigita/navigation/ui/object/CustomizableObjectList.java index 9d17ea7db..d15710414 100644 --- a/ccm-navigation/src/com/arsdigita/navigation/ui/object/CustomizableObjectList.java +++ b/ccm-navigation/src/com/arsdigita/navigation/ui/object/CustomizableObjectList.java @@ -269,7 +269,7 @@ public class CustomizableObjectList extends ComplexObjectList { //- They have to be registered very early, so we can't add new parameters // from a JSP. //- The HttpRequest is available here. - //So we use the HTTP request directly, which allows use to use a + //So we use the HTTP request directly, which allows us to use a //dedicated parameter for each of the filters. /* * if (request.getCharacterEncoding() == null) {