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 sm...@apache.org on 2007/12/08 10:30:56 UTC
svn commit: r602365 -
/portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java
Author: smilek
Date: Sat Dec 8 01:30:55 2007
New Revision: 602365
URL: http://svn.apache.org/viewvc?rev=602365&view=rev
Log:
The following revision comments are from branches/JETSPEED-2.1.3 revisions which were not individually checked-in to trunk
=== ---------------------------------------------------------------- ===
[ from branches/JETSPEED-2.1.3 r595431 ] | smilek | 2007-11-15 13:21:24 -0700 (Thu, 15 Nov 2007) | 1 line
major improvements to desktop page editor (UI, config options, flow, no action layouts); support for create-new-page-on-edit
=== ---------------------------------------------------------------- ===
Modified:
portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java
Modified: portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java?rev=602365&r1=602364&r2=602365&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java (original)
+++ portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java Sat Dec 8 01:30:55 2007
@@ -26,11 +26,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.PortalReservedParameters;
import org.apache.jetspeed.ajax.AJAXException;
import org.apache.jetspeed.ajax.AjaxAction;
import org.apache.jetspeed.ajax.AjaxBuilder;
import org.apache.jetspeed.container.state.MutableNavigationalState;
import org.apache.jetspeed.container.window.PortletWindowAccessor;
+import org.apache.jetspeed.decoration.PageActionAccess;
import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
import org.apache.jetspeed.om.page.ContentFragment;
import org.apache.jetspeed.om.page.ContentPage;
@@ -127,86 +129,153 @@
{
resultMap.put(ACTION, action);
// Get the necessary parameters off of the request
- String portletId = getActionParameter(requestContext, PORTLETID);
- if (portletId == null)
+ String fragmentId = getActionParameter(requestContext, FRAGMENTID);
+ if (fragmentId == null)
{
- throw new Exception("portlet id not provided");
- }
- resultMap.put(PORTLETID, portletId);
-
- String windowState = getActionParameter(requestContext, WINDOW_STATE);
- String portletMode = getActionParameter(requestContext, PORTLET_MODE);
- if (windowState == null && portletMode == null)
- {
- throw new Exception("portlet window state or mode not provided");
- }
- if (windowState != null && !isValidWindowState(windowState))
- {
- throw new Exception("portlet window state " + windowState + " is not supported");
- }
- if (portletMode != null && !isValidPortletMode(portletMode))
- {
- throw new Exception("portlet mode " + portletMode + " is not supported");
+ throw new Exception("fragment id not provided");
}
-
- ContentPage page = requestContext.getPage();
- ContentFragment fragment = page.getContentFragmentById(portletId);
-
- String oldState = fragment.getState();
- String oldMode = fragment.getMode();
+ resultMap.put(FRAGMENTID, fragmentId);
- // Now Change the transient navigational state
- MutableNavigationalState navState = (MutableNavigationalState)requestContext.getPortalURL().getNavigationalState();
- PortletWindow portletWindow = windowAccessor.getPortletWindow(fragment);
- if (portletWindow != null)
- {
- oldState = navState.getState(portletWindow).toString();
- oldMode = navState.getMode(portletWindow).toString();
- if (windowState != null)
- {
- navState.setState(portletWindow, new WindowState(windowState));
- }
- if (portletMode != null)
- {
- navState.setMode(portletWindow, new PortletMode(portletMode));
- }
- navState.sync(requestContext);
- }
-
-
- if (checkAccess(requestContext, JetspeedActions.EDIT))
- {
- if (windowState != null)
- fragment.setState(windowState);
- if (portletMode != null)
- fragment.setMode(portletMode);
-
- if (pageManager != null && !batch)
- {
- pageManager.updatePage(page);
- }
- }
-
- //requestContext.getPortalURL().getNavigationalState().
- resultMap.put(STATUS, status);
+ ContentPage page = requestContext.getPage();
+ ContentFragment fragment = page.getContentFragmentById(fragmentId);
- if (windowState != null)
+ if ( fragment == null )
{
- resultMap.put(OLD_WINDOW_STATE, oldState);
- resultMap.put(WINDOW_STATE, windowState);
+ throw new Exception( "fragment specified by id cannot be found" );
}
-
- if (portletMode != null)
- {
- resultMap.put(OLD_PORTLET_MODE, oldMode);
- resultMap.put(PORTLET_MODE, portletMode);
+ String requestedState = getActionParameter(requestContext, WINDOW_STATE);
+ String requestedMode = getActionParameter(requestContext, PORTLET_MODE);
+ if ( "layout".equals( fragment.getType() ) )
+ {
+ if ( ! fragment.getId().equals( page.getRootFragment().getId() ) )
+ {
+ throw new Exception( "for layout fragments, change action applies to only to the root layout fragment (i.e. it does not apply to nested layout fragments)" );
+ }
+ PageActionAccess pageActionAccess = (PageActionAccess)requestContext.getAttribute( PortalReservedParameters.PAGE_EDIT_ACCESS_ATTRIBUTE );
+ if ( pageActionAccess == null )
+ {
+ throw new Exception( "cannot change action for root layout fragment due to null PageActionAccess object" );
+ }
+ //pageActionAccess.
+ PortletWindow window = windowAccessor.getPortletWindow(fragment);
+ PortletMode currentMode = requestContext.getPortalURL().getNavigationalState().getMode( window );
+ WindowState currentState = requestContext.getPortalURL().getNavigationalState().getState( window );
+
+ boolean requestedModeAlreadySet = false;
+ if ( requestedMode == null )
+ requestedModeAlreadySet = true;
+ else
+ {
+ if ( requestedMode.equals( PortletMode.EDIT.toString() ) )
+ {
+ if( pageActionAccess.isEditing() )
+ requestedModeAlreadySet = true;
+ else
+ {
+ if ( pageActionAccess.isEditAllowed())
+ {
+ pageActionAccess.setEditing( true );
+ resultMap.put(STATUS, status);
+ resultMap.put(OLD_PORTLET_MODE, currentMode.toString());
+ resultMap.put(PORTLET_MODE, requestedMode);
+ }
+ else
+ {
+ throw new Exception( "permissions do no allow page edit" );
+ }
+ }
+ }
+ else if ( requestedMode.equals( PortletMode.VIEW.toString() ) )
+ {
+ pageActionAccess.setEditing( false );
+ //if ( currentMode.equals( PortletMode.HELP ) )
+ resultMap.put(STATUS, status);
+ resultMap.put(OLD_PORTLET_MODE, currentMode.toString());
+ resultMap.put(PORTLET_MODE, requestedMode);
+ }
+ else
+ {
+ requestedModeAlreadySet = true;
+ }
+ }
+ if ( requestedModeAlreadySet )
+ {
+ resultMap.put(STATUS, status);
+ resultMap.put(OLD_PORTLET_MODE, currentMode.toString());
+ resultMap.put(PORTLET_MODE, currentMode.toString());
+ }
+ }
+ else
+ {
+ if (requestedState == null && requestedMode == null)
+ {
+ throw new Exception("portlet window state or mode not provided");
+ }
+ if (requestedState != null && !isValidWindowState(requestedState))
+ {
+ throw new Exception("portlet window state " + requestedState + " is not supported");
+ }
+ if (requestedMode != null && !isValidPortletMode(requestedMode))
+ {
+ throw new Exception("portlet mode " + requestedMode + " is not supported");
+ }
+
+
+ String oldState = fragment.getState();
+ String oldMode = fragment.getMode();
+
+ // Now Change the transient navigational state
+ MutableNavigationalState navState = (MutableNavigationalState)requestContext.getPortalURL().getNavigationalState();
+ PortletWindow portletWindow = windowAccessor.getPortletWindow(fragment);
+ if (portletWindow != null)
+ {
+ oldState = navState.getState(portletWindow).toString();
+ oldMode = navState.getMode(portletWindow).toString();
+ if (requestedState != null)
+ {
+ navState.setState(portletWindow, new WindowState(requestedState));
+ }
+ if (requestedMode != null)
+ {
+ navState.setMode(portletWindow, new PortletMode(requestedMode));
+ }
+ navState.sync(requestContext);
+ }
+
+
+ if (checkAccess(requestContext, JetspeedActions.EDIT))
+ {
+ if (requestedState != null)
+ fragment.setState(requestedState);
+ if (requestedMode != null)
+ fragment.setMode(requestedMode);
+
+ if (pageManager != null && !batch)
+ {
+ pageManager.updatePage(page);
+ }
+ }
+
+ //requestContext.getPortalURL().getNavigationalState().
+ resultMap.put(STATUS, status);
+
+ if (requestedState != null)
+ {
+ resultMap.put(OLD_WINDOW_STATE, oldState);
+ resultMap.put(WINDOW_STATE, requestedState);
+ }
+
+ if (requestedMode != null)
+ {
+ resultMap.put(OLD_PORTLET_MODE, oldMode);
+ resultMap.put(PORTLET_MODE, requestedMode);
+ }
}
-
}
catch (Exception e)
{
// Log the exception
- log.error("exception while moving a portlet", e);
+ log.error("exception while changing portlet/page action", e);
resultMap.put(REASON, e.toString());
// Return a failure indicator
success = false;
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org