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) {