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 pa...@apache.org on 2002/06/30 20:55:38 UTC

cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets CustomizeAction.java

paulsp      2002/06/30 11:55:38

  Modified:    webapp/WEB-INF/templates/vm/portlets/html
                        customizer-portlet.vm
               src/java/org/apache/jetspeed/services/portletfactory
                        JetspeedPortletFactoryService.java
               src/java/org/apache/jetspeed/modules/actions/portlets
                        CustomizeAction.java
  Log:
  The customizer can now be used to set the Skin and Security Ref on a PSML entry
  
  Revision  Changes    Path
  1.6       +35 -0     jakarta-jetspeed/webapp/WEB-INF/templates/vm/portlets/html/customizer-portlet.vm
  
  Index: customizer-portlet.vm
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/templates/vm/portlets/html/customizer-portlet.vm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- customizer-portlet.vm	7 May 2002 14:17:06 -0000	1.5
  +++ customizer-portlet.vm	30 Jun 2002 18:55:38 -0000	1.6
  @@ -11,6 +11,41 @@
     <br>
   #end
     <table width="100%" cellpadding="1" cellspacing="0">
  +    <tr>
  +      <td><b>$l10n.CUSTOMIZER_SKIN</b></td>
  +      <td>
  +        <select name="_skin">
  +          <option value="">-- Default--
  +        #foreach ($temp_skin in $skins)
  +          <option value="$temp_skin.Name" #if ($temp_skin.Name == $!current_skin) SELECTED #end>
  +           #if ($temp_skin.Title) $temp_skin.Title #else $temp_skin.Name #end
  +        #end
  +        </select>
  +      </td>
  +    </tr>
  +    <tr>
  +      <td colspan="2">
  +        <hr/>
  +      </td>
  +    </tr>
  +    <tr>
  +      <td><b>$l10n.CUSTOMIZER_SECURITY_REF</b></td>
  +      <td>
  +        <select name="_security_ref">
  +          <option value="">-- Default--
  +        #foreach ($security in $securitys)
  +          <option value="$security.Name" #if ($security.Name == $!security_ref) SELECTED #end>
  +           #if ($security.Title) $security.Title #else $security.Name #end
  +        #end
  +        </select>
  +      </td>
  +    </tr>
  +    <tr>
  +      <td colspan="2">
  +        <hr/>
  +      </td>
  +    </tr>
  +
     #foreach ( $param in $parameters )
       <tr>
         <td align="left" nowrap><b>#if ($param.Title) $param.Title #else $param.Name #end</b></td>
  
  
  
  1.14      +18 -17    jakarta-jetspeed/src/java/org/apache/jetspeed/services/portletfactory/JetspeedPortletFactoryService.java
  
  Index: JetspeedPortletFactoryService.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/portletfactory/JetspeedPortletFactoryService.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- JetspeedPortletFactoryService.java	30 Jun 2002 05:23:19 -0000	1.13
  +++ JetspeedPortletFactoryService.java	30 Jun 2002 18:55:38 -0000	1.14
  @@ -148,11 +148,12 @@
           }
               
           PortletConfig pc = getPortletConfig(regEntry, entry.getId());
  -        
  +
  +        // Set portlet config with values from PSML Entry
           pc.getInitParameters().putAll(getParameters(entry));
  -        
           pc.setPortletSkin( PortalToolkit.getSkin( entry.getSkin() ) );
  -     
  +        pc.setSecurityRef( entry.getSecurityRef());
  +
           return getPortlet( regEntry.getClassname(), pc, entry.getId() );
       }
   
  @@ -372,24 +373,24 @@
       }
   
       /**
  -    Given a PSML Entry, get the value of what its PortletConfig would be.
  -    
  -    @param entry the PSML Entry containing the config
  -    @param portletId the PSML entry's portlet id
  -    @return the newly created PortletConfig object
  -    */
  -    protected PortletConfig getPortletConfig( PortletEntry entry, String id)
  +     * Given a Registry Entry, get the value of what its PortletConfig would be.
  +     *
  +     * @param entry the PSML Entry containing the config
  +     * @param portletId the PSML entry's portlet id
  +     * @return the newly created PortletConfig object
  +     */
  +    protected PortletConfig getPortletConfig( PortletEntry portletEntry, String id)
       {
           Map map = new HashMap();
  -        map.putAll(entry.getParameterMap());
  +        map.putAll(portletEntry.getParameterMap());
           
           PortletConfig pc = new BasePortletConfig();
  -        pc.setName( entry.getName() );        
  +        pc.setName( portletEntry.getName() );        
           pc.setInitParameters( map );
  -        pc.setMetainfo( getMetaData( entry ) );
  -        pc.setURL( entry.getURL() );
  -        pc.setCachedOnURL( entry.isCachedOnURL() );
  -        pc.setSecurityRef( entry.getSecurityRef());
  +        pc.setMetainfo( getMetaData( portletEntry ) );
  +        pc.setURL( portletEntry.getURL() );
  +        pc.setCachedOnURL( portletEntry.isCachedOnURL() );
  +        pc.setSecurityRef( portletEntry.getSecurityRef());
   
           if (runDataService != null)
           {
  
  
  
  1.8       +125 -4    jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/CustomizeAction.java
  
  Index: CustomizeAction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/CustomizeAction.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- CustomizeAction.java	28 Jun 2002 05:37:28 -0000	1.7
  +++ CustomizeAction.java	30 Jun 2002 18:55:38 -0000	1.8
  @@ -54,18 +54,29 @@
    
   package org.apache.jetspeed.modules.actions.portlets;
   
  +// Jetspeed Stuff
  +import org.apache.jetspeed.modules.actions.portlets.CustomizeSetAction;
   import org.apache.jetspeed.portal.Portlet;
  +import org.apache.jetspeed.portal.PortletConfig;
   import org.apache.jetspeed.portal.PortletException;
  +import org.apache.jetspeed.portal.PortletSkin;
   import org.apache.jetspeed.portal.portlets.VelocityPortlet;
   import org.apache.jetspeed.portal.service.PersistenceService;
   import org.apache.jetspeed.portal.service.ServiceFactory;
   import org.apache.jetspeed.portal.service.ServiceException;
   import org.apache.jetspeed.services.Registry;
   import org.apache.jetspeed.services.rundata.JetspeedRunData;
  +import org.apache.jetspeed.om.BaseSecurityReference;
  +import org.apache.jetspeed.om.profile.Entry;
  +import org.apache.jetspeed.om.profile.Profile;
  +import org.apache.jetspeed.om.profile.Skin;
  +import org.apache.jetspeed.om.profile.psml.PsmlSkin;
  +import org.apache.jetspeed.om.SecurityReference;
   import org.apache.jetspeed.om.registry.PortletEntry;
   import org.apache.jetspeed.om.registry.Parameter;
   import org.apache.jetspeed.om.security.JetspeedUser;
   import org.apache.jetspeed.services.JetspeedSecurity;
  +import org.apache.jetspeed.services.PortalToolkit;
   import org.apache.jetspeed.services.security.PortalResource;
   
   // Turbine stuff
  @@ -99,6 +110,11 @@
                                          Context context,
                                          RunData rundata )
       {
  +
  +        // generic context stuff
  +        context.put("skins", CustomizeSetAction.buildList(rundata, Registry.SKIN));
  +        context.put("securitys", CustomizeSetAction.buildList(rundata, Registry.SECURITY));
  +
           // we should first retrieve the portlet to customize
           Portlet p = ((JetspeedRunData)rundata).getCustomized();
           
  @@ -132,6 +148,11 @@
           // populate the customizer context
           context.put("parameters", params);
           context.put("portlet", p);
  +        
  +        if (p.getPortletConfig().getSecurityRef() != null)
  +          context.put("security_ref", p.getPortletConfig().getSecurityRef().getParent());
  +        if (p.getPortletConfig().getSkin() != null)
  +            context.put("current_skin", p.getPortletConfig().getPortletSkin().getName());
       }
   
       /** Clean up the customization state */
  @@ -152,13 +173,99 @@
           // definition
           Portlet p = ((JetspeedRunData)rundata).getCustomized();
           List params = (List)rundata.getSession().getAttribute("parameters");
  +        String newSecurityParent = rundata.getParameters().getString("_security_ref");
  +        String newSkinName = (String) rundata.getParameters().getString("_skin");
   
  -        if ((p==null)||(params==null))
  +        boolean changeRequested = ( (params == null) || (newSkinName == null) || (newSecurityParent == null));
  +        boolean madePsChange = false;
  +        boolean madePcChange = false;
  +
  +        if ((p==null) || (changeRequested = false ))
           {
               doCancel(rundata, context);
               return;
           }
  -        
  +        PortletConfig pc = p.getPortletConfig();
  +        Profile profile = ((JetspeedRunData)rundata).getProfile();
  +        Entry entry = profile.getDocument().getEntryById(p.getID());
  +
  +        // Only update the security ref if the parent changed
  +        if ((newSecurityParent != null))
  +        {
  +            boolean securityChanged = false;
  +            SecurityReference currentSecurityRef = pc.getSecurityRef();
  +            if (currentSecurityRef != null)
  +            {
  +                securityChanged = (newSecurityParent.equals(currentSecurityRef.getParent()) == false);
  +            }
  +            else
  +            {
  +                securityChanged = (newSecurityParent.trim().length() > 0);
  +            }
  +            if (securityChanged == true)
  +            {
  +                SecurityReference securityRef = null;
  +                if ((newSecurityParent.trim().length() > 0))
  +                {
  +                    securityRef = new BaseSecurityReference();
  +                    securityRef.setParent( newSecurityParent);
  +                }
  +                pc.setSecurityRef(securityRef);
  +                entry.setSecurityRef(securityRef);
  +                madePcChange = true;
  +            }
  +        }
  +
  +        // Only update the skin if the name changed
  +        if (newSkinName != null)
  +        {
  +            boolean skinChanged = false;
  +            String currentSkinName = null;
  +            
  +            if  (pc.getSkin() != null)
  +                currentSkinName = pc.getPortletSkin().getName();
  +
  +            if (currentSkinName != null)
  +            {
  +                skinChanged = (newSkinName.equals(currentSkinName) == false);
  +            }
  +            else
  +            {
  +                skinChanged = (newSkinName.trim().length() > 0);
  +            }
  +
  +            if (skinChanged == true)
  +            {
  +                PortletSkin skin = null;
  +                if ((newSkinName.trim().length() > 0))
  +                {
  +                    skin = PortalToolkit.getSkin(newSkinName);
  +                    if (skin != null)
  +                    {
  +                        pc.setPortletSkin(skin);
  +                        
  +                        Skin psmlSkin = entry.getSkin();
  +                        if (psmlSkin == null)
  +                        {
  +                            entry.setSkin(new PsmlSkin());
  +                        }
  +                        entry.getSkin().setName(newSkinName);
  +                    }
  +                    else
  +                    {
  +                        Log.warn( "Unable to update skin for portlet entry " + entry.getId() + " because skin " + skin + " does not exist.");
  +                    }
  +                }
  +                else
  +                {
  +                    pc.setPortletSkin( null);
  +                    entry.setSkin(null);
  +                }
  +                madePcChange = true;
  +            }
  +        }
  +
  +        // Update paramaters
           try
           {
               Object[] obj = { p };
  @@ -189,14 +296,28 @@
                       if (!newValue.equals(p.getPortletConfig().getInitParameter(name)))
                       {
                           page.setAttribute(name,newValue);
  -                        p.getPortletConfig().setInitParameter(name,newValue);
  +                        pc.setInitParameter(name,newValue);
  +                        madePsChange = true;
                       }
                   }
               }
   
               // save all the changes
  -            ps.store();
  +            if (madePsChange == true)
  +                ps.store();
               
  +            if (madePcChange == true)
  +            {
  +                try
  +                {
  +                    profile.store();
  +                }
  +                catch (Exception e)
  +                {
  +                    Log.error("Exception occured while saving PSML",e);
  +                }
  +            }
  +
               //FIXME: this hack is due to the corrupted lifecycle of the portlet in the
               //current API when caching is activated
               try
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>