Author: cziegeler Date: Mon Jan 17 00:32:27 2005 New Revision: 125402 URL: http://svn.apache.org/viewcvs?view=rev&rev=125402 Log: Fix copying of profile Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java Mon Jan 17 00:32:27 2005 @@ -25,10 +25,11 @@ import org.apache.avalon.framework.service.ServiceSelector; import org.apache.cocoon.components.modules.input.InputModule; import org.apache.cocoon.portal.PortalService; +import org.apache.cocoon.portal.layout.Layout; import org.apache.cocoon.portal.layout.SkinDescription; /** - * FIXME We can use the module chaining! + * This input module provides information about the current selected skin * * @version CVS $Id: SkinModule.java,v 1.4 2005/01/07 10:21:46 cziegeler Exp $ */ @@ -77,11 +78,21 @@ portalService = (PortalService)this.manager.lookup(PortalService.ROLE); + String skinName = null; // get the current skin - // TODO - String skinName = (String)this.globalModule.getAttribute("skin", modeConf, objectModel); + // the skin is stored as a parameter on the root layout + // if not, the global module is used + // fallback is: common + final Layout rootLayout = portalService.getComponentManager().getProfileManager().getPortalLayout(null, null); + if ( rootLayout != null ) { + skinName = (String)rootLayout.getParameters().get("skin"); + } + // use the global module if ( skinName == null ) { - skinName = "basic"; + skinName = (String)this.globalModule.getAttribute("skin", modeConf, objectModel); + if ( skinName == null ) { + skinName = "common"; + } } // find the correct skin @@ -100,6 +111,14 @@ return desc.getBasePath(); } else if ( "skin.thumbnailpath".equals(name) ) { return desc.getThumbnailPath(); + } else if ( name.startsWith("skin.thumbnailuri.") ) { + String selectedSkinName = name.substring(name.lastIndexOf(".")+ 1, name.length()); + for(Iterator it = portalService.getSkinDescriptions().iterator(); it.hasNext();) { + SkinDescription selected = (SkinDescription) it.next(); + if(selected.getName().equals(selectedSkinName)) { + return selected.getBasePath() + "/" + selected.getThumbnailPath(); + } + } } } return null; Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java Mon Jan 17 00:32:27 2005 @@ -122,6 +122,7 @@ * @see org.apache.cocoon.portal.event.EventConverter#finish() */ public void finish() { + // nothing to do } /* (non-Javadoc) @@ -131,4 +132,4 @@ return this.labelManager.isMarshallEvents(); } -} \ No newline at end of file +} Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java Mon Jan 17 00:32:27 2005 @@ -141,8 +141,7 @@ if (!comparableEvent || !current.equalsEvent((ComparableEvent) event)) { if (hasParams) { buffer.append('&'); - } - else { + } else { buffer.append('?'); } buffer.append((String) objects[1]).append('=').append(SourceUtil.encode((String) objects[2])); @@ -208,8 +207,7 @@ if (!found) { if (hasParams) { buffer.append('&'); - } - else { + } else { buffer.append('?'); } buffer.append((String) objects[1]).append('=').append(SourceUtil.encode((String) objects[2])); @@ -223,12 +221,10 @@ final Object current = iter.next(); if (current instanceof Event) { hasParams = this.addEvent(buffer, (Event) current, hasParams); - } - else if (current instanceof ParameterDescription) { + } else if ( current instanceof ParameterDescription ) { if (hasParams) { buffer.append('&'); - } - else { + } else { buffer.append('?'); hasParams = true; } @@ -388,4 +384,4 @@ } return parameterName; } -} \ No newline at end of file +} Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java Mon Jan 17 00:32:27 2005 @@ -42,13 +42,6 @@ protected Map parameters = new LinkedMap(); - /* - * Default constructor - */ - public AbstractLayout() { - - } - /* (non-Javadoc) * @see org.apache.cocoon.portal.layout.Parameters#getParameters() */ Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java Mon Jan 17 00:32:27 2005 @@ -43,7 +43,9 @@ */ public final void setLayout(Layout layout) { this.layout = layout; + if(layout != null) { layout.setParent(this); + } } public final CompositeLayout getParent() { @@ -71,6 +73,7 @@ Item clone = (Item)this.clone(); if ( this.layout != null ) { clone.layout = this.layout.copy(); + clone.layout.setParent(clone); } clone.parentLayout = parent; return clone; Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java Mon Jan 17 00:32:27 2005 @@ -40,7 +40,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a> * - * @version CVS $Id: AbstractCompositeAspect.java,v 1.7 2004/04/25 20:09:34 haul Exp $ + * @version CVS $Id$ */ public abstract class AbstractCompositeAspect extends AbstractAspect { @@ -81,9 +81,11 @@ * renderer for a layout to render it. */ protected void processLayout(Layout layout, PortalService service, ContentHandler handler) throws SAXException { - final String rendererName = layout.getRendererName(); - final Renderer renderer = service.getComponentManager().getRenderer(rendererName); - renderer.toSAX(layout, service, handler); + if ( layout != null ) { + final String rendererName = layout.getRendererName(); + final Renderer renderer = service.getComponentManager().getRenderer(rendererName); + renderer.toSAX(layout, service, handler); + } } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java Mon Jan 17 00:32:27 2005 @@ -117,14 +117,6 @@ Collection getCopletDatas(); /** - * Copy the current (default) layout and store it under - * the provided key. - * The copy includes copying of layout objects (with attached - * items) and coplet instance datas. - */ - Layout copyProfile(String layoutKey); - - /** * Store the provided profile under the layoutKey. * This method can be used to overwrite a profile with another * one. Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Mon Jan 17 00:32:27 2005 @@ -108,17 +108,4 @@ // overwrite in subclass } - /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#copyProfile(java.lang.String) - */ - public Layout copyProfile(String layoutKey) { - throw new RuntimeException("Copy profile is not implemented."); - } - - /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) - */ - public void storeProfile(Layout rootLayout, String layoutKey) { - throw new RuntimeException("Store profile is not implemented."); - } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java Mon Jan 17 00:32:27 2005 @@ -411,4 +411,25 @@ } } + /* (non-Javadoc) + * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) + */ + public void storeProfile(Layout rootLayout, String layoutKey) { + PortalService service = null; + + try { + service = (PortalService) this.manager.lookup(PortalService.ROLE); + if ( null == layoutKey ) { + layoutKey = service.getDefaultLayoutKey(); + } + + final String layoutAttributeKey = "Layout:" + layoutKey; + + service.setAttribute(layoutAttributeKey, rootLayout); + } catch (Exception ce) { + throw new CascadingRuntimeException("Exception during loading of profile.", ce); + } finally { + this.manager.release(service); + } + } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Mon Jan 17 00:32:27 2005 @@ -591,4 +591,31 @@ return key; } + + /* (non-Javadoc) + * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) + */ + public void storeProfile(Layout rootLayout, String layoutKey) { + PortalService service = null; + + try { + UserProfile oldProfile = this.getUserProfile(null); + service = (PortalService) this.manager.lookup(PortalService.ROLE); + if ( null == layoutKey ) { + layoutKey = service.getDefaultLayoutKey(); + } + // FIXME for now we just copy the root profile, except the root layout + UserProfile newProfile = new UserProfile(); + newProfile.setCopletBaseDatas(oldProfile.getCopletBaseDatas()); + newProfile.setCopletDatas(oldProfile.getCopletDatas()); + newProfile.setCopletInstanceDatas(oldProfile.getCopletInstanceDatas()); + newProfile.setRootLayout(rootLayout); + + this.storeUserProfile(layoutKey, service, newProfile); + } catch (Exception ce) { + throw new CascadingRuntimeException("Exception during loading of profile.", ce); + } finally { + this.manager.release(service); + } + } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java&r2=125402 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Mon Jan 17 00:32:27 2005 @@ -364,4 +364,12 @@ this.manager.release(service); } } + + + /* (non-Javadoc) + * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) + */ + public void storeProfile(Layout rootLayout, String layoutKey) { + throw new RuntimeException("The static profile manager does not support the storeProfile() method."); + } }