You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2007/07/11 18:23:58 UTC
svn commit: r555324 - in /portals/jetspeed-2/trunk:
components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java
src/webapp/WEB-INF/assembly/pipelines.xml
Author: ate
Date: Wed Jul 11 09:23:56 2007
New Revision: 555324
URL: http://svn.apache.org/viewvc?view=rev&rev=555324
Log:
New feature JS2-747: A valve creating template pages when a user logs on first
See: https://issues.apache.org/jira/browse/JS2-747
Feature provided by just voted in new Portals committer Woonsan Ko!
Thanks again Woonsan, next change you should be able to do yourself :)
Added:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java (with props)
Modified:
portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/pipelines.xml
Added: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java?view=auto&rev=555324
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java (added)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java Wed Jul 11 09:23:56 2007
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.profiler.impl;
+
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.folder.FolderNotFoundException;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.pipeline.PipelineException;
+import org.apache.jetspeed.pipeline.valve.ValveContext;
+import org.apache.jetspeed.portalsite.PortalSite;
+import org.apache.jetspeed.profiler.Profiler;
+import org.apache.jetspeed.profiler.impl.ProfilerValveImpl;
+import org.apache.jetspeed.request.RequestContext;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * CreateUserTemplatePagesValveImpl
+ *
+ * Create User Pages from template folder on first login feature
+ * The CreateUserTemplatePagesValveImpl creates a new user's home page from the user template folder.
+ *
+ * @author Woonsan Ko
+ * @version $Id$
+ */
+public class CreateUserTemplatePagesValveImpl extends ProfilerValveImpl
+{
+ private static final Log log = LogFactory.getLog(CreateUserTemplatePagesValveImpl.class);
+
+ public static final String USER_TEMPLATE_FOLDER_REQUEST_ATTR_KEY = "org.apache.jetspeed.profiler.UserTemplateFolder";
+
+ protected PageManager pageManager;
+ protected String defaultTemplateFolder = "/_user/template/";
+
+ /**
+ * CreateUserTemplatePagesValveImpl - constructor
+ *
+ * @param profiler profiler component reference
+ * @param portalSite portal site component reference
+ * @param requestFallback flag to enable root folder fallback
+ * @param useHistory flag to enable selection of last visited folder page
+ * @param pageManager pageManagerComponent reference
+ */
+ public CreateUserTemplatePagesValveImpl(Profiler profiler, PortalSite portalSite, boolean requestFallback, boolean useHistoryPageManager, PageManager pageManager)
+ {
+ super(profiler, portalSite, requestFallback, useHistoryPageManager);
+ this.pageManager = pageManager;
+ }
+
+ /**
+ * CreateUserTemplatePagesValveImpl - constructor
+ *
+ * @param profiler profiler component reference
+ * @param portalSite portal site component reference
+ * @param requestFallback flag to enable root folder fallback
+ * @param pageManager pageManagerComponent reference
+ */
+ public CreateUserTemplatePagesValveImpl(Profiler profiler, PortalSite portalSite,
+ boolean requestFallback, PageManager pageManager)
+ {
+ super(profiler, portalSite, requestFallback);
+ this.pageManager = pageManager;
+ }
+
+ /**
+ * CreateUserTemplatePagesValveImpl - constructor
+ *
+ * @param profiler profiler component reference
+ * @param portalSite portal site component reference
+ * @param pageManager pageManagerComponent reference
+ */
+ public CreateUserTemplatePagesValveImpl(Profiler profiler, PortalSite portalSite, PageManager pageManager)
+ {
+ super(profiler, portalSite);
+ this.pageManager = pageManager;
+ }
+
+ public void setDefaultTemplateFolder(String defaultTemplateFolder)
+ {
+ this.defaultTemplateFolder = defaultTemplateFolder;
+ }
+
+ /**
+ * @see org.apache.jetspeed.pipeline.valve.Valve#invoke(org.apache.jetspeed.request.RequestContext, org.apache.jetspeed.pipeline.valve.ValveContext)
+ */
+ public void invoke(RequestContext request, ValveContext context) throws PipelineException
+ {
+ boolean created = false;
+
+ try
+ {
+ created = createUserFolderPages(request);
+ }
+ catch (Exception e)
+ {
+ log.error("Exception occurred during creating user folder.", e);
+ }
+ finally
+ {
+ if (created)
+ {
+ super.invoke(request, context);
+ }
+ else
+ {
+ context.invokeNext(request);
+ }
+ }
+ }
+
+ private boolean createUserFolderPages(RequestContext request) throws Exception
+ {
+ boolean created = false;
+
+ String userName = request.getUserPrincipal().getName();
+ String userFolder = Folder.USER_FOLDER + userName;
+
+ boolean found = true;
+
+ try
+ {
+ this.pageManager.getFolder(userFolder);
+ }
+ catch (FolderNotFoundException e)
+ {
+ found = false;
+ }
+
+ if (!found)
+ {
+ try
+ {
+ String templateFolder = (String) request.getAttribute(USER_TEMPLATE_FOLDER_REQUEST_ATTR_KEY);
+
+ if (templateFolder == null)
+ {
+ templateFolder = this.defaultTemplateFolder;
+ }
+
+ Folder source = this.pageManager.getFolder(templateFolder);
+
+ // copy the entire dir tree from the template folder
+ this.pageManager.deepCopyFolder(source, userFolder, userName);
+ created = true;
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+ }
+
+ return created;
+ }
+}
Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/profiler/impl/CreateUserTemplatePagesValveImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/pipelines.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/pipelines.xml?view=diff&rev=555324&r1=555323&r2=555324
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/pipelines.xml (original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/pipelines.xml Wed Jul 11 09:23:56 2007
@@ -114,6 +114,38 @@
<ref bean="PortletActionSecurityBehavior" />
</constructor-arg>
</bean>
+
+ <!--
+ To create new pages when a user first logs in from user template pages,
+ add this valve after each profilerValve entry in the pipeline configs
+ below
+ -->
+ <bean id="createUserTemplatePagesValve"
+ class="org.apache.jetspeed.profiler.impl.CreateUserTemplatePagesValveImpl"
+ >
+ <constructor-arg index="0">
+ <ref bean="org.apache.jetspeed.profiler.Profiler" />
+ </constructor-arg>
+ <constructor-arg index="1">
+ <ref bean="org.apache.jetspeed.portalsite.PortalSite" />
+ </constructor-arg>
+ <!--
+ request fallback to root folder/page enabled by default;
+ if set to false, requests generate HTTP 403/404 errors
+ for access errors or missing pages
+ -->
+ <constructor-arg index="2"><value>true</value></constructor-arg>
+ <!--
+ use last visited page histories to select default page
+ for folder navigational urls; if set to false, the
+ default page specified in PSML, (or the first page in
+ the folder), is always selected
+ -->
+ <constructor-arg index="3"><value>true</value></constructor-arg>
+ <constructor-arg index="4">
+ <ref bean="org.apache.jetspeed.page.PageManager" />
+ </constructor-arg>
+ </bean>
<bean id="containerValve"
class="org.apache.jetspeed.container.ContainerValve"
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org