Package org.apache.jetspeed.om.page

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


            BaseFragmentElement foundFragment = pageOrTemplate.getFragmentById(contentFragmentImpl.getFragment().getId());
            if (!(foundFragment instanceof Fragment))
            {
                throw new IllegalArgumentException("Fragment and page not consistent");               
            }
            Fragment fragment = (Fragment)foundFragment;

            // check for edit permission
            fragment.checkAccess(JetspeedActions.EDIT);           

            // update fragment name and page in page manager
            boolean update = false;
            if (!name.equals(fragment.getName()))
            {
                fragment.setName(name);
                update = true;
            }
            if (update)
            {
                updatePage(pageOrTemplate);
View Full Code Here


        ContentFragmentImpl contentFragmentImpl = null;
        String contentFragmentId = null;
        if (fragment instanceof Fragment)
        {
            // construct content fragment to reflect fragment hierarchy
            Fragment fragmentFragment = (Fragment)fragment;
            contentFragmentId = ((parentId != null) ? parentId+CONTENT_FRAGMENT_ID_SEPARATOR+fragmentFragment.getId() : fragmentFragment.getId());
            contentFragmentImpl = newContentFragment(contentFragmentId, pageOrTemplate, fragmentDefinitions, definition, fragmentFragment, null, null, template, template);
            // set content fragment attributes
            mergeContentFragmentAttributes(contentFragmentImpl, fragmentFragment);
            // set content fragment security constraints
            setContentFragmentSecurityConstraints(contentFragmentImpl, fragmentFragment);
        }
        else if (fragment instanceof PageFragment)
        {
            PageFragment pageFragmentFragment = (PageFragment)fragment;
            contentFragmentId = ((parentId != null) ? parentId+CONTENT_FRAGMENT_ID_SEPARATOR+pageFragmentFragment.getId() : pageFragmentFragment.getId());
            // check if page fragment definition in page template
            // or if in primary page or template
            if ((definition != pageOrTemplate) || template)
            {
                // consume page fragment and build fragment hierarchy from page
                BaseFragmentElement pageRootFragment = pageOrTemplate.getRootFragment();
                if (pageRootFragment instanceof FragmentReference)
                {
                    // consume top level page fragment reference and build fragment
                    // hierarchy from referenced fragment
                    FragmentReference fragmentReferenceFragment = (FragmentReference)pageRootFragment;
                    contentFragmentId += CONTENT_FRAGMENT_ID_SEPARATOR+fragmentReferenceFragment.getId();
                    Fragment [] fragmentFragment = new Fragment[]{null};
                    contentFragmentImpl = newContentFragment(contentFragmentId, pageOrTemplate, fragmentDefinitions, pageOrTemplate, fragmentReferenceFragment, template, fragmentFragment);
                    // inherit page fragment attributes
                    mergeContentFragmentAttributes(contentFragmentImpl, pageFragmentFragment);
                    // inherit fragment reference attributes
                    mergeContentFragmentAttributes(contentFragmentImpl, fragmentReferenceFragment);
                    // set content fragment security constraints
                    setContentFragmentSecurityConstraints(contentFragmentImpl, fragmentReferenceFragment);
                    // test resolved reference id
                    if (fragmentFragment[0] != null)
                    {
                        // merge content fragment attributes
                        mergeContentFragmentAttributes(contentFragmentImpl, fragmentFragment[0]);
                    }
                    else
                    {
                        // constructed content fragment for fragment reference
                        // since reference id was not resolved
                        contentFragmentImpl.setType(ContentFragment.REFERENCE);                       
                    }
                }
                else if (pageRootFragment instanceof Fragment)
                {
                    // construct content fragment to reflect page fragment hierarchy
                    Fragment fragmentFragment = (Fragment)pageRootFragment;
                    contentFragmentId += CONTENT_FRAGMENT_ID_SEPARATOR+fragmentFragment.getId();
                    contentFragmentImpl = newContentFragment(contentFragmentId, pageOrTemplate, fragmentDefinitions, pageOrTemplate, fragmentFragment, null, null, false, false);
                    // inherit page fragment attributes
                    mergeContentFragmentAttributes(contentFragmentImpl, pageFragmentFragment);
                    // merge content fragment attributes
                    mergeContentFragmentAttributes(contentFragmentImpl, fragmentFragment);
View Full Code Here

            assertEquals("50%,50%", check.getRootFragment().getLayoutSizes());
            assertNotNull(check.getRootFragment().getProperties());
            assertEquals("custom-prop-value1", check.getRootFragment().getProperty("custom-prop1"));
            assertNotNull(check.getRootFragment().getFragments());
            assertEquals(2, check.getRootFragment().getFragments().size());
            Fragment check0 = (Fragment)check.getRootFragment().getFragments().get(0);
            assertEquals("security::LoginPortlet", check0.getName());
            assertEquals("Portlet", check0.getShortTitle());
            assertEquals("Portlet Fragment", check0.getTitle());
            assertEquals("Normal", check0.getState());
            assertEquals(88, check0.getLayoutRow());
            assertEquals(88, check0.getIntProperty(Fragment.ROW_PROPERTY_NAME));
            assertEquals(99, check0.getLayoutColumn());
            assertNotNull(check0.getProperty(Fragment.X_PROPERTY_NAME));
            assertTrue(check0.getProperty(Fragment.X_PROPERTY_NAME).startsWith("12.3"));
            assertTrue((check0.getLayoutX() > 12.0F) && (check0.getLayoutX() < 13.0F));
            assertTrue((check0.getFloatProperty(Fragment.X_PROPERTY_NAME) > 12.0F) &&
                       (check0.getFloatProperty(Fragment.X_PROPERTY_NAME) < 13.0F));
            assertTrue((check0.getLayoutY() > 23.0F) && (check0.getLayoutY() < 24.0F));
            assertTrue((check0.getLayoutZ() > 34.0F) && (check0.getLayoutZ() < 35.0F));
            assertTrue((check0.getLayoutWidth() > 45.0F) && (check0.getLayoutWidth() < 46.0F));
            assertTrue((check0.getLayoutHeight() > 56.0F) && (check0.getLayoutWidth() < 57.0F));
            assertNotNull(check0.getPreferences());
            assertEquals(2, check0.getPreferences().size());
            assertEquals("pref0", ((FragmentPreference)check0.getPreferences().get(0)).getName());
            assertTrue(((FragmentPreference)check0.getPreferences().get(0)).isReadOnly());
            assertNotNull(((FragmentPreference)check0.getPreferences().get(0)).getValueList());
            assertEquals(2, ((FragmentPreference)check0.getPreferences().get(0)).getValueList().size());
            assertEquals("pref0-value0", (String)((FragmentPreference)check0.getPreferences().get(0)).getValueList().get(0));
            assertEquals("pref0-value1", (String)((FragmentPreference)check0.getPreferences().get(0)).getValueList().get(1));
            assertEquals("pref1", ((FragmentPreference)check0.getPreferences().get(1)).getName());
            assertFalse(((FragmentPreference)check0.getPreferences().get(1)).isReadOnly());
            assertNotNull(((FragmentPreference)check0.getPreferences().get(1)).getValueList());
            assertEquals(1, ((FragmentPreference)check0.getPreferences().get(1)).getValueList().size());
            assertEquals("pref1-value", (String)((FragmentPreference)check0.getPreferences().get(1)).getValueList().get(0));
            Fragment check1 = (Fragment)check.getRootFragment().getFragments().get(1);
            assertEquals("some-app::SomePortlet", check1.getName());
            assertEquals("Some Portlet", check1.getShortTitle());
            assertEquals("Some Portlet Fragment", check1.getTitle());
            assertEquals("Normal", check1.getState());
            assertEquals(22, check1.getLayoutRow());
            assertEquals(11, check1.getLayoutColumn());
            assertTrue((check1.getLayoutX() > 11.0F) && (check1.getLayoutX() < 12.0F));
            assertTrue((check1.getLayoutY() > 22.0F) && (check1.getLayoutY() < 23.0F));
            assertTrue((check1.getLayoutZ() > 33.0F) && (check1.getLayoutZ() < 34.0F));
            assertTrue((check1.getLayoutWidth() > 44.0F) && (check1.getLayoutWidth() < 45.0F));
            assertTrue((check1.getLayoutHeight() > 55.0F) && (check1.getLayoutWidth() < 56.0F));
            assertNotNull(check1.getSecurityConstraints());
            assertEquals("user", check1.getSecurityConstraints().getOwner());
            assertNotNull(check.getFragmentById(check0.getId()));
            assertNotNull(check.getFragmentsByName("some-app::SomePortlet"));
            assertEquals(1, check.getFragmentsByName("some-app::SomePortlet").size());
            assertNotNull(check.getParent());
        }
View Full Code Here

        if (fragments != null)
        {
            Iterator fragmentsIter = fragments.iterator();
            while (fragmentsIter.hasNext())
            {
                Fragment matchedFragment = ((FragmentImpl)fragmentsIter.next()).getFragmentById(id);
                if (matchedFragment != null)
                {
                    return matchedFragment;
                }
            }
View Full Code Here

            while (fragmentsIter.hasNext())
            {
                FragmentImpl fragment = (FragmentImpl)fragmentsIter.next();
                if (!fragment.getId().equals(id))
                {
                    Fragment removed = fragment.removeFragmentById(id);
                    if (removed != null)
                    {
                        return removed;
                    }
                }
View Full Code Here

            // check permissions and constraints, filter fragments as required
            List filteredFragments = null;
            Iterator checkAccessIter = fragments.iterator();
            while (checkAccessIter.hasNext())
            {
                Fragment fragment = (Fragment)checkAccessIter.next();
                try
                {
                    // check access
                    fragment.checkAccess(JetspeedActions.VIEW);

                    // add to filteredFragments fragments if copying
                    if (filteredFragments != null)
                    {
                        // permitted, add to filteredFragments fragments
                        filteredFragments.add(fragment);
                    }
                }
                catch (SecurityException se)
                {
                    // create filteredFragments fragments if not already copying
                    if (filteredFragments == null)
                    {
                        // not permitted, copy previously permitted fragments
                        // to new filteredFragments node set with same comparator
                        filteredFragments = DatabasePageManagerUtils.createList();
                        Iterator copyIter = fragments.iterator();
                        while (copyIter.hasNext())
                        {
                            Fragment copyFragment = (Fragment)copyIter.next();
                            if (copyFragment != fragment)
                            {
                                filteredFragments.add(copyFragment);
                            }
                            else
View Full Code Here

                            constraints.setSecurityConstraints(inlineConstraints);
                            constraintsRefs = new ArrayList(1);
                            constraintsRefs.add("public-view");
                            constraints.setSecurityConstraintsRefs(constraintsRefs);
                            page.setSecurityConstraints(constraints);                       
                            Fragment root = page.getRootFragment();
                            root.setName("jetspeed-layouts::VelocityTwoColumns");
                            Fragment portlet = pageManager.newPortletFragment();
                            portlet.setName("security::LoginPortlet");
                            root.getFragments().add(portlet);
                            portlet = pageManager.newPortletFragment();
                            portlet.setName("some-app::SomePortlet");
                            SecurityConstraints fragmentConstraints = pageManager.newSecurityConstraints();
                            fragmentConstraints.setOwner("user");
                            portlet.setSecurityConstraints(fragmentConstraints);
                            root.getFragments().add(portlet);
                            pageManager.updatePage(page);
                            TestCase.assertNotNull(page.getRootFragment());
                            TestCase.assertNotNull(page.getRootFragment().getFragments());
                            TestCase.assertEquals(2, page.getRootFragment().getFragments().size());
View Full Code Here

            super.doView(request, response);
            return;
        }
       
        // get fragment column sizes
        Fragment f = getFragment(request, false);
        String fragmentColumnSizes = columnSizes;
        String fragmentColumnSizesProperty = f.getProperty(Fragment.SIZES_PROPERTY_NAME);
        if (fragmentColumnSizesProperty != null)
        {
            fragmentColumnSizes = fragmentColumnSizesProperty;
        }
        String [] fragmentColumnSizesArray = fragmentColumnSizes.split("\\,");
        List fragmentColumnSizesList = new ArrayList(fragmentColumnSizesArray.length);
        for (int i = 0; (i < fragmentColumnSizesArray.length); i++)
        {
            fragmentColumnSizesList.add(fragmentColumnSizesArray[i]);
        }

        // construct layout object
        ColumnLayout layout;
        try
        {
            layout = new ColumnLayout(numColumns, layoutType, f.getFragments(), fragmentColumnSizesArray);
            layout.addLayoutEventListener(new PageManagerLayoutEventListener(pageManager, context.getPage(), layoutType));
        }
        catch (LayoutEventException e1)
        {
            throw new PortletException("Failed to build ColumnLayout "+e1.getMessage(), e1);
        }

        // invoke the JSP associated with this portlet
        request.setAttribute("columnLayout", layout);
        request.setAttribute("numberOfColumns", new Integer(numColumns));
        request.setAttribute("decorationFactory", this.decorators);
        request.setAttribute("columnSizes", fragmentColumnSizesList);
        request.setAttribute("editing",editing);
        request.setAttribute("fragmentNestingLevel",new Integer(getFragmentNestingLevel(requestPage,f.getId())));
        super.doView(request, response);
        request.removeAttribute("decorationFactory");
        request.removeAttribute("columnLayout");
        request.removeAttribute("numberOfColumns");
        request.removeAttribute("columnSizes");
View Full Code Here

                   
                    if ( addLayout )
                    {
                        try
                        {
                            Fragment fragment = pageManager.newFragment();
                            fragment.setType(Fragment.LAYOUT);
                            fragment.setName(layout);                           
                            targetFragment.getFragments().add(fragment);
                            pageManager.updatePage(requestPage);
                            clearLayoutAttributes(request);                           
                        }
                        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());
                            clearLayoutAttributes(request);
                            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");
                String jsPageTitle = request.getParameter("jsPageTitle");
                String jsPageShortTitle = request.getParameter("jsPageShortTitle");
                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 + getEscapedName(jsPageName);
                            }
                            else
                            {
                                path = path + Folder.PATH_SEPARATOR
                                        + getEscapedName(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(jsPageTitle != null && !jsPageTitle.equals("") ? jsPageTitle : jsPageName);
                            page.setShortTitle(jsPageShortTitle != null
                                            && !jsPageShortTitle.equals("") ? jsPageShortTitle
                                            : jsPageName);
                            pageManager.updatePage(page);
                            clearLayoutAttributes(request);                           
                            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("jsChangePageName") != null)
            {
                String jsPageTitle = request.getParameter("jsPageTitle");
                String jsPageShortTitle = request
                        .getParameter("jsPageShortTitle");
                try
                {
                    if (jsPageTitle != null && !jsPageTitle.equals(""))
                    {
                        requestPage.setTitle(jsPageTitle);
                    }
                    if (jsPageShortTitle != null
                            && !jsPageShortTitle.equals(""))
                    {
                        requestPage.setShortTitle(jsPageShortTitle);
                    }
                    pageManager.updatePage(requestPage);
                }
                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;
            }           

            if (request.getParameter("jsSubmitFolder") != null)
            {
                String jsFolderName = request.getParameter("jsFolderName");
                String jsFolderTitle = request.getParameter("jsFolderTitle");
                String jsFolderShortTitle = request.getParameter("jsFolderShortTitle");
                if (jsFolderName != null && jsFolderName.length() > 0
                        && jsFolderName.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 + getEscapedName(jsFolderName);
                            }
                            else
                            {
                                path = path + Folder.PATH_SEPARATOR
                                        + getEscapedName(jsFolderName);
                            }
                            Folder folder = pageManager.newFolder(path);
                            if (layout == null || layout.length() == 0)
                            {
                                layout = requestPage.getRootFragment()
                                        .getName();
                            }
                            folder.setDefaultDecorator(requestPage
                                    .getDefaultDecorator(Fragment.LAYOUT),
                                    Fragment.LAYOUT);
                            folder.setDefaultDecorator(requestPage
                                    .getDefaultDecorator(Fragment.PORTLET),
                                    Fragment.PORTLET);
                            folder
                                    .setTitle(jsFolderTitle != null
                                            && !jsFolderTitle.equals("") ? jsFolderTitle
                                            : jsFolderName);
                            folder
                                    .setShortTitle(jsFolderShortTitle != null
                                            && !jsFolderShortTitle.equals("") ? jsFolderShortTitle
                                            : jsFolderName);
                            pageManager.updateFolder(folder);

                            List orderList = parent.getDocumentOrder();
                            if (orderList != null)
                            {
                                String name = folder.getName();
                                if (orderList.indexOf(name) < 0)
                                {
                                    orderList.add(name);
                                    parent.setDocumentOrder(orderList);
                                    pageManager.updateFolder(parent);
                                }
                            }

                            // add default page
                            path = folder.getPath();
                            if (path.endsWith(Folder.PATH_SEPARATOR))
                            {
                                path = path + getEscapedName("default-page");
                            }
                            else
                            {
                                path = path + Folder.PATH_SEPARATOR
                                        + getEscapedName("default-page");
                            }
                            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(jsFolderName);
                            pageManager.updatePage(page);

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

            if (request.getParameter("jsChangeFolderName") != null)
            {
                String jsFolderTitle = request.getParameter("jsFolderTitle");
                String jsFolderShortTitle = request
                        .getParameter("jsFolderShortTitle");
                try
                {
                    Folder parent = (Folder) requestPage.getParent();
                    if (parent != null)
                    {
                        if (jsFolderTitle != null && !jsFolderTitle.equals(""))
                        {
                            parent.setTitle(jsFolderTitle);
                        }
                        if (jsFolderShortTitle != null
                                && !jsFolderShortTitle.equals(""))
                        {
                            parent.setShortTitle(jsFolderShortTitle);
                        }
                        pageManager.updateFolder(parent);
                    }

                }
                catch (Exception e)
                {
                    throw new PortletException(
                            "Unable to access folder for editing: "
                                    + e.getMessage(), e);
                }
                return;
            }
           
            if (request.getParameter("jsDeleteFolder") != null)
            {
                try
                {
                    Folder targetFolder = (Folder) requestPage.getParent();
                    Folder parent = (Folder) targetFolder.getParent();
                    if (parent != null)
                    {
                        List orderList = parent.getDocumentOrder();
                        if (orderList != null)
                        {
                            String name = targetFolder.getName();
                            if (orderList.indexOf(name) > -1)
                            {
                                orderList.remove(name);
                                parent.setDocumentOrder(orderList);
                                pageManager.updateFolder(parent);
                            }
                        }

                        // do not remove if the folder is root.
                        pageManager.removeFolder(targetFolder);
                    }
                }
                catch (Exception e)
                {
                    throw new PortletException(
                            "Unable to access folder for removing: "
                                    + e.getMessage(), e);
                }
                return;
            }

            if (request.getParameter("jsMoveFolderLeft") != null)
            {
                try
                {
                    Folder targetFolder = (Folder) requestPage.getParent();
                    Folder parent = (Folder) targetFolder.getParent();
                    if (parent != null)
                    {
                        List orderList = parent.getDocumentOrder();
                        String name = targetFolder.getName();
                        if (orderList != null)
                        {
                            int index = orderList.indexOf(name);
                            if (index > -1)
                            {
                                int i = index - 1;
                                while (i >= 0)
                                {
                                    String value = (String) orderList.get(i);
                                    if (!value.endsWith(".psml")
                                            && !value.endsWith(".link"))
                                    {
                                        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 folder for changing the document order: "
                                    + e.getMessage(), e);
                }
                return;
            }

            if (request.getParameter("jsMoveFolderRight") != null)
            {
                try
                {
                    Folder targetFolder = (Folder) requestPage.getParent();
                    Folder parent = (Folder) targetFolder.getParent();
                    if (parent != null)
                    {
                        List orderList = parent.getDocumentOrder();
                        String name = targetFolder.getName();
                        if (orderList != null)
                        {
                            int index = orderList.indexOf(name);
                            if (index > -1)
                            {
                                int i = index + 1;
                                while (i < orderList.size())
                                {
                                    String value = (String) orderList.get(i);
                                    if (!value.endsWith(".psml")
                                            && !value.endsWith(".link"))
                                    {
                                        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 folder 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;
                }
            }
            // change style for all pages in user folder
            String jsChangeUserPagesTheme = request.getParameter("jsChangeUserPagesTheme");
            if ( jsChangeUserPagesTheme != null )
            {
               String user_pages_theme = request.getParameter("user_pages_theme");
               try
                {
                   Folder f = pageManager.getUserFolder(request.getRemoteUser());
                   applyStyle(f,user_pages_theme,Fragment.LAYOUT);
                }
                catch (Exception e)
                {
                   throw new PortletException("Unable to update folder for defUserLayoutDeco decorator: "+e.getMessage(), e);
                }
                return;
            }               
            String jsChangeUserPortletsDeco = request.getParameter("jsChangeUserPortletsDeco");
            if ( jsChangeUserPortletsDeco != null )
            {                 
               String user_portlets_deco = request.getParameter("user_portlets_deco");
               try
                {
                   Folder f = pageManager.getUserFolder(request.getRemoteUser());
                   applyStyle(f,user_portlets_deco,Fragment.PORTLET);
                }
               catch (Exception e)
                {
                    throw new PortletException("Unable to update folder for defUserPortletDeco decorator: "+e.getMessage(), e);
                }
               return;
            }                               
           
            String jsChangeThemeAll = request.getParameter("jsChangeThemeAll");
            if (jsChangeThemeAll != null)
            {
                String decorators = request.getParameter("decorators");               
                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;
            }               
           
            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

        request.getPortletSession().removeAttribute(PortalReservedParameters.PAGE_LAYOUT_HELP);
    }

    protected int getFragmentNestingLevel(Page page, String fragmentId)
    {
        Fragment root = page.getRootFragment();
        if ( root.getId().equals(fragmentId) )
        {
            return 0;
        }
        else
        {
View Full Code Here

TOP

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

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.