Package org.apache.jetspeed.om.page

Examples of org.apache.jetspeed.om.page.ContentPage


    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException
    {
        RequestContext requestContext = (RequestContext)request.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
       
        ContentPage requestPage = requestContext.getPage();      
        PageEditAccess pageEditAccess = (PageEditAccess)requestContext.getAttribute(PortalReservedParameters.PAGE_EDIT_ACCESS_ATTRIBUTE);
        if ( requestPage == null || pageEditAccess == null )
        {
            // Targetting this portlet with an ActionRequest REQUIRES that the ProfilerValve has been invoked!
            throw new PortletException("Current request page or PageEditAccess not available.");
        }
       
        String pageMode = request.getParameter("pageMode");
        if ( pageMode != null )
        {
            if ( "view".equals(pageMode) )
            {
                pageEditAccess.setEditing(false);
            }
            else if ( "edit".equals(pageMode) && pageEditAccess.isEditAllowed() )
            {
                if ( this.editorType != null && this.editorType.equals( "desktop" ) )
                {
                    String redirectUrl = this.desktop.getPortalUrl( requestContext, requestContext.getPath() );
                    redirectUrl += "?editPage=true&portal=true";
                    response.sendRedirect( redirectUrl );
                }
                else
                {
                    pageEditAccess.setEditing(true);
                }
            }
            return;
        }
       
        if ( pageEditAccess.isEditAllowed() && request.isPortletModeAllowed(PortletMode.EDIT) )
        {
            String layout = null;
           
            boolean addLayout = request.getParameter("jsAddLayout") != null;
            if ( addLayout || request.getParameter("jsChangeLayout") != null )
            {
                layout = request.getParameter("layout");
                if ( layout != null && layout.length() > 0 )
                {
                    PortletWindow window = requestContext.getActionWindow();
                    ContentFragment targetFragment = requestPage.getContentFragmentById(window.getId().toString());
                   
                    if ( targetFragment == null )
                    {
                        // ignore no longer consistent page definition
                        return;
                    }
                   
                    if ( addLayout )
                    {
                        try
                        {
                            Fragment fragment = pageManager.newFragment();
                            fragment.setType(Fragment.LAYOUT);
                            fragment.setName(layout);
                           
                            targetFragment.getFragments().add(fragment);
                            pageManager.updatePage(requestPage);           
                        }
                        catch (Exception e)
                        {
                            throw new PortletException("failed to add portlet " + layout + " to page: " + requestPage+": "+e.getMessage(), e);
                        }
                    }
                    else if ( !layout.equals(targetFragment.getName()) )
                    {
                        try
                        {
                            // layout portlet change
                            targetFragment.setName(layout);
                            pageManager.updatePage(requestPage);
                            entityAccess.updatePortletEntity(window.getPortletEntity(), targetFragment);
                            entityAccess.storePortletEntity(window.getPortletEntity());

                            windowAccess.createPortletWindow(window.getPortletEntity(), targetFragment.getId());
                            return;
                        }
                        catch (Exception e)
                        {
                            throw new PortletException("Unable to update page: "+e.getMessage(), e);
                        }
                    }
                }
                return;
            }

            if ( request.getParameter("jsSubmitPage" ) != null )
            {
                String jsPageName = request.getParameter("jsPageName");
                if ( jsPageName != null && jsPageName.length() > 0 && jsPageName.indexOf(Folder.PATH_SEPARATOR) == -1 )
                {
                    try
                    {               
                        Folder parent = (Folder)requestPage.getParent();
                        if (parent != null)
                        {
                            String path = parent.getPath();
                            if (path.endsWith(Folder.PATH_SEPARATOR))
                            {
                                path = path + getEscapedPageName(jsPageName);
                            }
                            else
                            {
                                path = path + Folder.PATH_SEPARATOR
                                        + getEscapedPageName(jsPageName);
                            }
                            Page page = pageManager.newPage(path);
                            if ( layout == null || layout.length() == 0 )
                            {
                                layout = requestPage.getRootFragment().getName();
                            }
                            page.getRootFragment().setName(layout);
                            page.setDefaultDecorator(requestPage.getDefaultDecorator(Fragment.LAYOUT), Fragment.LAYOUT);
                            page.setDefaultDecorator(requestPage.getDefaultDecorator(Fragment.PORTLET), Fragment.PORTLET);
                            page.setTitle(jsPageName);
                            pageManager.updatePage(page);

                            List orderList = parent.getDocumentOrder();
                            if (orderList != null)
                            {
                                String name = page.getName();
                                if (orderList.indexOf(name) < 0)
                                {
                                    orderList.add(name);
                                    parent.setDocumentOrder(orderList);
                                    pageManager.updateFolder(parent);
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        throw new PortletException("Unable to access page for editing: "+e.getMessage(), e);
                    }                       
                }
                return;
            }

            if ( request.getParameter("jsDeletePage" ) != null )
            {
                try
                {
                    Folder parent = (Folder)requestPage.getParent();
                    if (parent != null)
                    {
                        List orderList = parent.getDocumentOrder();
                        if (orderList != null)
                        {
                            String name = requestPage.getName();
                            if (orderList.indexOf(name) > -1)
                            {
                                orderList.remove(name);
                                parent.setDocumentOrder(orderList);
                                pageManager.updateFolder(parent);
                            }
                        }
                    }

                    pageManager.removePage(requestPage);
                }
                catch (Exception e)
                {
                    throw new PortletException("Unable to access page for removing: "+e.getMessage(), e);
                }
                return;
            }

            if (request.getParameter("jsMovePageLeft") != null)
            {
                try
                {
                    Folder parent = (Folder) requestPage.getParent();
                    if (parent != null)
                    {
                        List orderList = parent.getDocumentOrder();
                        String name = requestPage.getName();
                        if (orderList != null)
                        {
                            int index = orderList.indexOf(name);
                            if (index > -1)
                            {
                                String type = requestPage.getType();
                                int i = index - 1;
                                while (i >= 0)
                                {
                                    String value = (String) orderList.get(i);
                                    if (value.endsWith(type))
                                    {
                                        orderList.remove(index);
                                        orderList.add(i, name);
                                        parent.setDocumentOrder(orderList);
                                        pageManager.updateFolder(parent);
                                        break;
                                    }
                                    i--;
                                }
                            }
                            else
                            {
                                orderList.add(name);
                                parent.setDocumentOrder(orderList);
                                pageManager.updateFolder(parent);
                            }
                        }
                        else
                        {
                            orderList = new ArrayList(4);
                            orderList.add(name);
                            parent.setDocumentOrder(orderList);
                            pageManager.updateFolder(parent);
                        }
                    }
                }
                catch (Exception e)
                {
                    throw new PortletException(
                            "Unable to access page for changing the document order: "
                                    + e.getMessage(), e);
                }
                return;
            }

            if (request.getParameter("jsMovePageRight") != null)
            {
                try
                {
                    Folder parent = (Folder) requestPage.getParent();
                    if (parent != null)
                    {
                        List orderList = parent.getDocumentOrder();
                        String name = requestPage.getName();
                        if (orderList != null)
                        {
                            int index = orderList.indexOf(name);
                            if (index > -1)
                            {
                                String type = requestPage.getType();
                                int i = index + 1;
                                while (i < orderList.size())
                                {
                                    String value = (String) orderList.get(i);
                                    if (value.endsWith(type))
                                    {
                                        orderList.remove(index);
                                        orderList.add(i, name);
                                        parent.setDocumentOrder(orderList);
                                        pageManager.updateFolder(parent);
                                        break;
                                    }
                                    i++;
                                }
                            }
                            else
                            {
                                orderList.add(name);
                                parent.setDocumentOrder(orderList);
                                pageManager.updateFolder(parent);
                            }
                        }
                        else
                        {
                            orderList = new ArrayList(4);
                            orderList.add(name);
                            parent.setDocumentOrder(orderList);
                            pageManager.updateFolder(parent);
                        }
                    }
                }
                catch (Exception e)
                {
                    throw new PortletException(
                            "Unable to access page for changing the document order: "
                                    + e.getMessage(), e);
                }
                return;
            }           
           
            String theme = request.getParameter("theme");
            if ( theme != null && theme.length() > 0 && !theme.equals(requestPage.getDefaultDecorator(Fragment.LAYOUT)) )
            {
                requestPage.setDefaultDecorator(theme, Fragment.LAYOUT);
                try
                {
                    pageManager.updatePage(requestPage);
                }
                catch (Exception e)
                {
                    throw new PortletException("Unable to update page: "+e.getMessage(), e);
                }
                return;
            }
           
            String fragmentId = request.getParameter("fragment");
            if ( fragmentId != null && fragmentId.length() > 0 )
            {
                String move = request.getParameter("move");
                if ( move != null && move.length() > 0 )
                {
                    int moveCode = Integer.parseInt(move);                   
                    PortletWindow window = requestContext.getActionWindow();
                    Fragment currentFragment = requestPage.getFragmentById(window.getId().toString());
                    Fragment fragmentToMove = requestPage.getFragmentById(fragmentId);
                   
                    if ( currentFragment == null || fragmentToMove == null )
                    {
                        // ignore no longer consistent page definition
                        return;
                    }
                   
                    ColumnLayout columnLayout;
                    try
                    {
                        columnLayout = new ColumnLayout(numColumns, layoutType, currentFragment.getFragments(), null);
                        columnLayout.addLayoutEventListener(new PageManagerLayoutEventListener(pageManager, requestPage, layoutType));
                    }
                    catch (LayoutEventException e1)
                    {
                        throw new PortletException("Failed to build ColumnLayout "+e1.getMessage(), e1);
                    }

                    try
                    {               
                        switch (moveCode)
                        {
                        case LayoutEvent.MOVED_UP:
                            columnLayout.moveUp(fragmentToMove);
                            break;
                        case LayoutEvent.MOVED_DOWN:
                            columnLayout.moveDown(fragmentToMove);
                            break;
                        case LayoutEvent.MOVED_RIGHT:
                            columnLayout.moveRight(fragmentToMove);
                            break;
                        case LayoutEvent.MOVED_LEFT:
                            columnLayout.moveLeft(fragmentToMove);
                            break;
                        default:
                            throw new PortletException("Invalid movement code " + moveCode);
                        }
                      
                    }
                    catch (SecurityException se)
                    {
                        // ignore page security constraint violations, only
                        // permitted users can edit managed pages; page
                        // update will remain transient
                        log.info("Unable to update page " + requestPage.getId() + " layout due to security permission/constraint.", se);
                    }
                    catch (Exception e)
                    {
                        if (e instanceof PortletException)
                        {
                            throw (PortletException)e;
                        }
                        else
                        {
                            throw new PortletException("Unable to process layout for page " + requestPage.getId() + " layout: " + e.toString(), e);
                        }
                    }
                    return;
                }
               
                String remove = request.getParameter("remove");
                if ( remove != null && remove.length() > 0 )
                {
                    Page page = null;
                    try
                    {
                        // TODO: for now retrieve the real Page instead of ContentPage
                        //       because removing fragments isn't working through the ContentFragment wrapping
                        page = pageManager.getPage(requestPage.getPath());
                    }
                    catch (Exception e)
                    {
                        throw new PortletException("Unable to retrieve page "+requestPage.getId(),e);
                    }

                    PortletWindow window = requestContext.getActionWindow();
                    Fragment currentFragment = page.getFragmentById(window.getId().toString());

                    if ( currentFragment == null )
                    {
                        // ignore no longer consistent page definition
                        return;
                    }
                   
                    removeFragment(page, currentFragment, fragmentId);
                    return;
                }
               
                String decorator = request.getParameter("decorator");
                if ( decorator != null )
                {
                    Fragment fragment = requestPage.getFragmentById(fragmentId);

                    if ( fragment == null )
                    {
                        // ignore no longer consistent page definition
                        return;
                    }
                   
                    if (decorator.trim().length() == 0)
                        fragment.setDecorator(null);
                    else
                        fragment.setDecorator(decorator);
                    try
                    {
                        pageManager.updatePage(requestPage);
                    }
                    catch (Exception e)
                    {
                        throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage(), e);
                    }
                    return;
                }
                // evlach
                String decorators = request.getParameter("decorators");
                if ( decorators != null )
                {
                    Iterator fragmentsIter = requestPage.getRootFragment().getFragments().iterator();
                    while(fragmentsIter.hasNext())
                    {
                      Fragment fragment = (Fragment) fragmentsIter.next();
                      if ( fragment == null )
                        {
                            // ignore no longer consistent page definition
                            return;
                        }
                       
                        if (decorators.trim().length() == 0)
                            fragment.setDecorator(null);
                        else
                            fragment.setDecorator(decorators);
                    }
                    try
                    {
                        pageManager.updatePage(requestPage);
                    }
                    catch (Exception e)
                    {
                        throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage(), e);
                    }
                    return;
                }               
                //end evlach
            }
           
            String portlets = request.getParameter("portlets");
            if ( portlets != null && portlets.length() > 0 )
            {
                PortletWindow window = requestContext.getActionWindow();
                Fragment targetFragment = requestPage.getFragmentById(window.getId().toString());

                if ( targetFragment == null )
                {
                    // ignore no longer consistent page definition
                    return;
View Full Code Here


        if (isAjaxRequest)
        {
            requestContext.setAttribute(IS_AJAX_DECORATION_REQUEST, new Boolean(true));
        }

        ContentPage page = requestContext.getPage();

        // Globaly override all psml themes if override session attribute has been set
        if (requestContext
                .getSessionAttribute(PortalReservedParameters.PAGE_THEME_OVERRIDE_ATTRIBUTE) != null)
        {
            String decoratorName = (String) requestContext
                    .getSessionAttribute(PortalReservedParameters.PAGE_THEME_OVERRIDE_ATTRIBUTE);
            page.setDefaultDecorator(decoratorName, Fragment.LAYOUT);
        }

        Theme theme = decorationFactory.getTheme(page, requestContext);

        requestContext.setAttribute(PortalReservedParameters.PAGE_THEME_ATTRIBUTE, theme);

        PageActionAccess pageActionAccess = (PageActionAccess)requestContext.getAttribute(PortalReservedParameters.PAGE_EDIT_ACCESS_ATTRIBUTE);
       
        if ( fragments == null || fragments.size() == 0 )
        {
            ContentFragment rootFragment = page.getRootContentFragment();
            initDepthFragments(requestContext, theme, rootFragment, pageActionAccess, isAjaxRequest, fragments);
        }
        else
        {
            Iterator fragmentsIter = fragments.iterator();
View Full Code Here

    {
        try
        {
            String pathSave = this.getPath();          
            this.setPath(nonProfiledPath);
            ContentPage realPage = this.getPage();
            this.setPage(null);               
            Map locators = null;
            ProfileLocator locator = profiler.getProfile(this, ProfileLocator.PAGE_LOCATOR);
            if ( locator != null )
            {
                locators = new HashMap();
                locators.put(ProfileLocator.PAGE_LOCATOR, locator);
            }              
            PortalSiteSessionContext sessionContext = (PortalSiteSessionContext)getSessionAttribute(ProfilerValveImpl.PORTAL_SITE_SESSION_CONTEXT_ATTR_KEY);
            PortalSiteRequestContext requestContext = sessionContext.newRequestContext(locators, true, true);
            ContentPage cpage = new ContentPageImpl(requestContext.getManagedPage());
            //System.out.println("page is " + cpage.getPath());
            this.setPage(realPage);           
            this.setPath(pathSave);
            return cpage;
        }
View Full Code Here

            record.setUserName(userName);
            if (req.getRemoteAddr() != null)
            {
                record.setIpAddress(req.getRemoteAddr());
            }
            ContentPage cp = request.getPage();
            if (cp != null)
            {
                if (cp.getPath() != null)
                {
                    record.setPagePath(cp.getPath());
                }
            }
            record.setStatus(Integer.parseInt(statusCode));
            record.setTimeStamp(timestamp);
            record.setMsElapsedTime(msElapsedTime);
View Full Code Here

            Timestamp timestamp = new Timestamp(System.currentTimeMillis());
            PageLogRecord record = new PageLogRecord();

            record.setUserName(userName);
            record.setIpAddress(req.getRemoteAddr());
            ContentPage cp = request.getPage();
            if (cp != null)
            {
                if (cp.getPath() != null)
                {
                    record.setPagePath(cp.getPath());
                }
            }
            record.setStatus(Integer.parseInt(statusCode));
            record.setTimeStamp(timestamp);
            record.setMsElapsedTime(msElapsedTime);
View Full Code Here

    }

    protected void clearPortletCacheForPage(RequestContext request, PortletWindow actionWindow)
    throws JetspeedException
    {
        ContentPage page = request.getPage();
        if (null == page)
        {
            throw new JetspeedException("Failed to find PSML Pin ContentPageAggregator.build");
        }
        ContentFragment root = page.getRootContentFragment();
        if (root == null)
        {
            throw new JetspeedException("No root ContentFragment found in ContentPage");
        }
        if (!isNonStandardAction(actionWindow))
        {
            notifyFragments(root, request, page);
        }
        else
        {
            ContentFragment fragment = page.getContentFragmentById(actionWindow.getId().toString());
            clearTargetCache(fragment, request);
        }
    }
View Full Code Here

        String status = "success";
        try
        {
            resultMap.put( ACTION, action );
           
            ContentPage page = requestContext.getPage();
           
            // Get the necessary parameters off of the request
            ArrayList getActionsForFragments = new ArrayList();
            String[] portletIds = requestContext.getRequest().getParameterValues( PORTLETID );
            if ( portletIds != null && portletIds.length > 0 )
            {
                for ( int i = 0 ; i < portletIds.length ; i++ )
                {
                    String portletId = portletIds[ i ];
                    ContentFragment fragment = (ContentFragment)page.getFragmentById( portletId );
                    if ( fragment == null )
                    {
                        throw new Exception("fragment not found for specified portlet id: " + portletId);
                    }
                    getActionsForFragments.add( fragment );
                }
                getActionsForFragments.add( page.getRootContentFragment() );
            }

            // Run the Decoration valve to get actions
            decorationValve.initFragments( requestContext, true, getActionsForFragments );
           
View Full Code Here

        a_oLocalLayout.addFragment(a_oFrag4);
        a_oLocalLayout.addFragment(a_oFrag5);

        Page a_oPage = new PageImpl();
        a_oPage.setRootFragment(a_oLayout);
        ContentPage a_oContentPage = new ContentPageImpl(a_oPage);
        a_oRC.setPage(a_oContentPage);

        return a_oRC;
    }
View Full Code Here

        RequestContext a_oRC = new JetspeedRequestContext(request, response,
                config, null);

        Page a_oPage = setupPage();
        ContentPage a_oContentPage = new ContentPageImpl(a_oPage);

        a_oRC.setPage(a_oContentPage);

        return a_oRC;
    }
View Full Code Here

     *
     * @return Unique Portlet Entity ID
     */
    public void build( RequestContext context ) throws JetspeedException, IOException
    {
        ContentPage page = context.getPage();
        if ( null == page )
        {
            throw new JetspeedException( "Failed to find PSML Pin ContentPageAggregator.build" );
        }

        ContentFragment root = page.getRootContentFragment();

        if ( root == null )
        {
            throw new JetspeedException( "No root ContentFragment found in ContentPage" );
        }

        // add named-resources and named-resources-added maps as request attributes
        Map dynamicConfigDefault = getHeaderDynamicConfigurationDefault();
        Map namedResourcesDefault = getHeaderNamedResourcesDefault();
        Map namedResourcesAddedFragmentsDefault = getHeaderNamedResourcesAddedFragmentsDefault();
       
        /*if ( log.isDebugEnabled() && namedResourcesDefault != null )
        {
            Iterator namedResourcesDefaultIter = namedResourcesDefault.entrySet().iterator();
            while ( namedResourcesDefaultIter.hasNext() )
            {
                Map.Entry rsrcEntry = (Map.Entry)namedResourcesDefaultIter.next();
                Object rsrcVal = rsrcEntry.getValue();
                log.debug( rsrcEntry.getKey().toString() + ": " + EOL + ( rsrcVal != null ? rsrcVal.toString() : "null" ) );
            }
        }*/
       
        if ( dynamicConfigDefault != null || namedResourcesDefault != null || namedResourcesAddedFragmentsDefault != null )
        {
            Map existingNamedResources = (Map)context.getAttribute( PortalReservedParameters.HEADER_NAMED_RESOURCE_ATTRIBUTE );
            if ( existingNamedResources == null )
            {
                if ( dynamicConfigDefault == null )
                {
                    context.setAttribute( PortalReservedParameters.HEADER_CONFIGURATION_ATTRIBUTE, new HashMap() );
                }
                else
                {
                    HashMap dynamicConfig = new HashMap();
                    Iterator hConfigEntryIter = dynamicConfigDefault.entrySet().iterator();
                    while ( hConfigEntryIter.hasNext() )
                    {
                        Map.Entry hConfigEntry = (Map.Entry)hConfigEntryIter.next();
                        Object hConfigKey = hConfigEntry.getKey();
                        Object hConfigVal = hConfigEntry.getValue();
                        if ( hConfigVal instanceof Map )
                        {
                            dynamicConfig.put( hConfigKey, new HashMap( (Map)hConfigVal ) );
                        }
                        else if ( hConfigVal instanceof List )
                        {
                            dynamicConfig.put( hConfigKey, new ArrayList( (List)hConfigVal ) );
                        }
                        else
                        {
                            dynamicConfig.put( hConfigKey, hConfigVal );
                        }
                    }
                    context.setAttribute( PortalReservedParameters.HEADER_CONFIGURATION_ATTRIBUTE, dynamicConfig );
                }
               
                if ( namedResourcesDefault != null )
                {
                    context.setAttribute( PortalReservedParameters.HEADER_NAMED_RESOURCE_ATTRIBUTE, new HashMap( namedResourcesDefault ) );
                }
                if ( namedResourcesAddedFragmentsDefault != null )
                {
                    context.setAttribute( PortalReservedParameters.HEADER_NAMED_RESOURCE_ADDED_FRAGMENTS_ATTRIBUTE, new HashMap( namedResourcesAddedFragmentsDefault ) );
                }
            }
        }
        if ( getHeaderResourceRegistry() != null )
        {
            context.setAttribute( PortalReservedParameters.HEADER_NAMED_RESOURCE_REGISTRY_ATTRIBUTE, getHeaderResourceRegistry() );
        }
       
        // handle maximized state
        boolean atLeastOneHasHeaderPhase = false;
        NavigationalState nav = context.getPortalURL().getNavigationalState();
        PortletWindow window = nav.getMaximizedWindow();
        if ( null != window )
        {
            ContentFragment maxedContentFragment = page.getContentFragmentById( window.getId().toString() );
            if ( maxedContentFragment != null )
            {
                atLeastOneHasHeaderPhase = renderHeaderFragment( context, maxedContentFragment );
            }
        }
View Full Code Here

TOP

Related Classes of org.apache.jetspeed.om.page.ContentPage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.