You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/08/15 19:36:40 UTC
svn commit: r431650 - in /cocoon/trunk/blocks/cocoon-portal:
cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/
cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/components/modules/input/
cocoon-portal-impl/src/main/java/org/apache/coco...
Author: cziegeler
Date: Tue Aug 15 10:36:39 2006
New Revision: 431650
URL: http://svn.apache.org/viewvc?rev=431650&view=rev
Log:
Skins are detected instead of configured
Added:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java (with props)
Removed:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/SkinDescription.java
Modified:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/Constants.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/WindowAspect.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/CopletTransformer.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/Constants.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/Constants.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/Constants.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/Constants.java Tue Aug 15 10:36:39 2006
@@ -27,4 +27,20 @@
*/
public static final String COPLET_ID_KEY = "cocoon-portal-copletId";
public static final String PORTAL_NAME_KEY = "cocoon-portal-portalName";
+
+ /** Configuration key for full screen enabled (default is true). */
+ public static final String CONFIGURATION_FULL_SCREEN_ENABLED = "enable-full-screen";
+ public static final boolean DEFAULT_CONFIGURATION_FULL_SCREEN_ENABLED = true;
+
+ /** Configuration key for maximized enabled (default is true). */
+ public static final String CONFIGURATION_MAXIMIZED_ENABLED = "enable-maximized";
+ public static final boolean DEFAULT_CONFIGURATION_MAXIMIZED_ENABLED = true;
+
+ /** Configuration key to use ajax (default is false). */
+ public static final String CONFIGURATION_USE_AJAX = "use-ajax";
+ public static final boolean DEFAULT_CONFIGURATION_USE_AJAX = false;
+
+ /** Configuration key to find all skins. */
+ public static final String CONFIGURATION_SKINS_PATH = "skins-path";
+ public static final String DEFAULT_CONFIGURATION_SKINS_PATH = "skins";
}
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java Tue Aug 15 10:36:39 2006
@@ -32,12 +32,6 @@
/** The role to lookup this component. */
String ROLE = PortalService.class.getName();
- /** Configuration key for full screen enabled (default is true). */
- String CONFIGURATION_FULL_SCREEN_ENABLED = "enable-full-screen";
-
- /** Configuration key for maximized enabled (default is true). */
- String CONFIGURATION_MAXIMIZED_ENABLED = "enable-maximized";
-
/**
* The name of the portal - as defined in the portal configuration.
*/
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java Tue Aug 15 10:36:39 2006
@@ -22,8 +22,8 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.cocoon.components.modules.input.InputModule;
-import org.apache.cocoon.portal.layout.SkinDescription;
import org.apache.cocoon.portal.om.Layout;
+import org.apache.cocoon.portal.om.SkinDescription;
/**
* This input module provides information about the current selected skin
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java Tue Aug 15 10:36:39 2006
@@ -15,11 +15,13 @@
*/
package org.apache.cocoon.portal.impl;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import javax.servlet.ServletContext;
@@ -43,8 +45,8 @@
import org.apache.cocoon.portal.PortalService;
import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
import org.apache.cocoon.portal.event.EventManager;
-import org.apache.cocoon.portal.layout.SkinDescription;
import org.apache.cocoon.portal.layout.renderer.Renderer;
+import org.apache.cocoon.portal.om.SkinDescription;
import org.apache.cocoon.portal.profile.ProfileManager;
import org.apache.cocoon.portal.services.CopletFactory;
import org.apache.cocoon.portal.services.LayoutFactory;
@@ -52,6 +54,7 @@
import org.apache.cocoon.processing.ProcessInfoProvider;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.source.TraversableSource;
/**
* Default implementation of a portal service using a session to store
@@ -68,6 +71,9 @@
Disposable,
Configurable {
+ /** Parameter map for the context protocol. */
+ protected static final Map CONTEXT_PARAMETERS = Collections.singletonMap("force-traversable", Boolean.TRUE);
+
/** The component context. */
protected Context context;
@@ -99,6 +105,7 @@
*/
public void service(ServiceManager serviceManager) throws ServiceException {
this.manager = serviceManager;
+ this.portalComponentManager = new DefaultPortalComponentManager(this.manager);
}
/**
@@ -257,38 +264,55 @@
this.portalName = portal.getAttribute("name");
this.defaultLayoutKey = portal.getAttribute("default-layout-key", "portal");
this.attributePrefix = this.getClass().getName() + '/' + this.portalName + '/';
+ this.configuration = portal.getChild("configuration");
+ this.configureSkins(this.getConfiguration(org.apache.cocoon.portal.Constants.CONFIGURATION_SKINS_PATH,
+ org.apache.cocoon.portal.Constants.DEFAULT_CONFIGURATION_SKINS_PATH));
+ }
+
+ protected void configureSkins(String directory)
+ throws ConfigurationException {
SourceResolver resolver = null;
+ Source dir = null;
try {
resolver = (SourceResolver)this.manager.lookup(SourceResolver.ROLE);
- this.portalComponentManager = new DefaultPortalComponentManager(this.manager);
-
- // scan for skins
- final Configuration[] skinConfs = portal.getChild("skins").getChildren("skin");
- if ( skinConfs != null ) {
- for(int s=0;s<skinConfs.length;s++) {
- final Configuration currentSkin = skinConfs[s];
- final String skinName = currentSkin.getAttribute("name");
- final SkinDescription desc = new SkinDescription();
- desc.setName(skinName);
- Source source = null;
+ dir = resolver.resolveURI(directory, null, CONTEXT_PARAMETERS);
+ if ( dir instanceof TraversableSource ) {
+ final Iterator children = ((TraversableSource)dir).getChildren().iterator();
+ while ( children.hasNext() ) {
+ final Source s = (Source)children.next();
try {
- source = resolver.resolveURI(currentSkin.getAttribute("base-path"));
- desc.setBasePath(source.getURI());
+ this.configureSkin(s);
} finally {
- resolver.release(source);
+ resolver.release(s);
}
- desc.setThumbnailPath(currentSkin.getChild("thumbnail-path").getValue(null));
- this.skinList.add(desc);
}
+ } else {
+ throw new ConfigurationException("Include.dir must point to a directory, '" + dir.getURI() + "' is not a directory.'");
}
- } catch (ConfigurationException ce) {
- throw ce;
- } catch (Exception e) {
- throw new ConfigurationException("Unable to setup new portal component manager for portal " + this.portalName, e);
+ } catch (IOException ioe) {
+ throw new ConfigurationException("Unable to read configurations from " + directory);
+ } catch (ServiceException e) {
+ throw new ConfigurationException("Unable to get source resolver.");
} finally {
- this.manager.release(resolver);
+ if ( resolver != null ) {
+ resolver.release(dir);
+ this.manager.release(resolver);
+ }
}
- this.configuration = portal.getChild("configuration");
+ }
+
+ protected void configureSkin(Source directory) {
+ String uri = directory.getURI();
+ if ( uri.endsWith("/") ) {
+ uri = uri.substring(0, uri.length()-1);
+ }
+ int pos = uri.lastIndexOf('/');
+ final String skinName = uri.substring(pos+1);
+ final SkinDescription desc = new SkinDescription();
+ desc.setName(skinName);
+ desc.setBasePath(directory.getURI());
+ desc.setThumbnailPath(directory.getURI() + '/' + "images/thumb.jpg");
+ this.skinList.add(desc);
}
/**
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/WindowAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/WindowAspect.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/WindowAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/WindowAspect.java Tue Aug 15 10:36:39 2006
@@ -19,6 +19,7 @@
import java.util.List;
import java.util.Properties;
+import org.apache.cocoon.portal.Constants;
import org.apache.cocoon.portal.LayoutException;
import org.apache.cocoon.portal.PortalException;
import org.apache.cocoon.portal.PortalService;
@@ -98,8 +99,8 @@
*/
public void initialize() throws Exception {
super.initialize();
- this.enableFullScreen = this.portalService.getConfigurationAsBoolean(PortalService.CONFIGURATION_FULL_SCREEN_ENABLED, true);
- this.enableMaximized = this.portalService.getConfigurationAsBoolean(PortalService.CONFIGURATION_MAXIMIZED_ENABLED, true);
+ this.enableFullScreen = this.portalService.getConfigurationAsBoolean(Constants.CONFIGURATION_FULL_SCREEN_ENABLED, Constants.DEFAULT_CONFIGURATION_FULL_SCREEN_ENABLED);
+ this.enableMaximized = this.portalService.getConfigurationAsBoolean(Constants.CONFIGURATION_MAXIMIZED_ENABLED, Constants.DEFAULT_CONFIGURATION_MAXIMIZED_ENABLED);
}
/**
Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java?rev=431650&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java Tue Aug 15 10:36:39 2006
@@ -0,0 +1,69 @@
+/*
+ * Copyright 1999-2002,2004-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.cocoon.portal.om;
+
+/**
+ *
+ * @version $Id$
+ */
+public class SkinDescription {
+
+ protected String name;
+ protected String basePath;
+ protected String thumbnailPath;
+
+ /**
+ * @return Returns the basePath.
+ */
+ public String getBasePath() {
+ return basePath;
+ }
+
+ /**
+ * @param basePath The basePath to set.
+ */
+ public void setBasePath(String basePath) {
+ this.basePath = basePath;
+ }
+
+ /**
+ * @return Returns the name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name The name to set.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return Returns the thumbnailPath.
+ */
+ public String getThumbnailPath() {
+ return thumbnailPath;
+ }
+
+ /**
+ * @param thumbnailPath The thumbnailPath to set.
+ */
+ public void setThumbnailPath(String thumbnailPath) {
+ this.thumbnailPath = thumbnailPath;
+ }
+}
\ No newline at end of file
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/SkinDescription.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/CopletTransformer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/CopletTransformer.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/CopletTransformer.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/CopletTransformer.java Tue Aug 15 10:36:39 2006
@@ -24,6 +24,7 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.wrapper.RequestParameters;
+import org.apache.cocoon.portal.Constants;
import org.apache.cocoon.portal.event.coplet.CopletJXPathEvent;
import org.apache.cocoon.portal.event.impl.JXPathEvent;
import org.apache.cocoon.portal.event.layout.LayoutJXPathEvent;
@@ -118,7 +119,7 @@
*/
public void configure(Configuration configuration) throws ConfigurationException {
super.configure(configuration);
- this.useAjax = this.portalService.getConfigurationAsBoolean("use-ajax", false);
+ this.useAjax = this.portalService.getConfigurationAsBoolean(Constants.CONFIGURATION_USE_AJAX, Constants.DEFAULT_CONFIGURATION_USE_AJAX);
}
/**
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java Tue Aug 15 10:36:39 2006
@@ -33,6 +33,7 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.http.HttpEnvironment;
+import org.apache.cocoon.portal.Constants;
import org.apache.cocoon.portal.PortalManagerAspect;
import org.apache.cocoon.portal.PortalManagerAspectPrepareContext;
import org.apache.cocoon.portal.PortalManagerAspectRenderContext;
@@ -252,8 +253,8 @@
*/
public void initialize() throws Exception {
super.initialize();
- this.enableFullScreen = this.portalService.getConfigurationAsBoolean(PortalService.CONFIGURATION_FULL_SCREEN_ENABLED, true);
- this.enableMaximized = this.portalService.getConfigurationAsBoolean(PortalService.CONFIGURATION_MAXIMIZED_ENABLED, true);
+ this.enableFullScreen = this.portalService.getConfigurationAsBoolean(Constants.CONFIGURATION_FULL_SCREEN_ENABLED, Constants.DEFAULT_CONFIGURATION_FULL_SCREEN_ENABLED);
+ this.enableMaximized = this.portalService.getConfigurationAsBoolean(Constants.CONFIGURATION_MAXIMIZED_ENABLED, Constants.DEFAULT_CONFIGURATION_MAXIMIZED_ENABLED);
this.initContainer();
}
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf?rev=431650&r1=431649&r2=431650&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf Tue Aug 15 10:36:39 2006
@@ -53,20 +53,11 @@
<portal-service>
<portal name="portal">
- <!-- These are the skins the user can choose from: -->
- <skins>
- <skin name="modern" base-path="skins/modern">
- <thumbnail-path>images/thumb.jpg</thumbnail-path>
- </skin>
- <skin name="basic" base-path="skins/basic">
- <thumbnail-path>images/thumb.jpg</thumbnail-path>
- </skin>
- <skin name="common" base-path="skins/common">
- <thumbnail-path>images/thumb.jpg</thumbnail-path>
- </skin>
- </skins>
<!-- Configuration: -->
<configuration>
+ <!-- The directory where all possible skins are stored. -->
+ <skins-path>skins</skins-path>
+ <!-- Whether the portal should use ajax or not -->
<use-ajax>true</use-ajax>
</configuration>
</portal>