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>