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 jf...@apache.org on 2004/09/16 23:24:33 UTC

cvs commit: jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/site SiteBrowserPortlet.java SiteDetailPortlet.java

jford       2004/09/16 14:24:33

  Added:       applications/pam/src/java/org/apache/jetspeed/portlets/site
                        SiteBrowserPortlet.java SiteDetailPortlet.java
  Log:
  New portlets for site browser/details
  
  Revision  Changes    Path
  1.1                  jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/site/SiteBrowserPortlet.java
  
  Index: SiteBrowserPortlet.java
  ===================================================================
  /*
   * Copyright 2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.site;
  
  import java.io.IOException;
  import java.util.Iterator;
  import java.util.Locale;
  
  import javax.portlet.ActionRequest;
  import javax.portlet.ActionResponse;
  import javax.portlet.PortletConfig;
  import javax.portlet.PortletContext;
  import javax.portlet.PortletException;
  import javax.portlet.PortletSession;
  import javax.portlet.RenderRequest;
  import javax.portlet.RenderResponse;
  
  import org.apache.jetspeed.om.folder.Folder;
  import org.apache.jetspeed.om.folder.FolderNotFoundException;
  import org.apache.jetspeed.om.folder.InvalidFolderException;
  import org.apache.jetspeed.om.page.Page;
  import org.apache.jetspeed.page.PageManager;
  import org.apache.jetspeed.page.PageNotFoundException;
  import org.apache.jetspeed.page.document.DocumentException;
  import org.apache.jetspeed.page.document.NodeException;
  import org.apache.jetspeed.page.document.NodeSet;
  import org.apache.jetspeed.portlet.ServletPortlet;
  import org.apache.jetspeed.portlets.pam.PortletApplicationResources;
  import org.apache.webapp.admin.TreeControl;
  import org.apache.webapp.admin.TreeControlNode;
  
  /**
   * 
   * 
   * @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
   *
   */
  public class SiteBrowserPortlet extends ServletPortlet
  {
      private PortletContext context;
      private PageManager pageManager;
      
      private static final String PORTLET_URL = "portlet_url";
  
      public void init(PortletConfig config)
      throws PortletException 
      {
          super.init(config);
          context = getPortletContext();                
          pageManager = (PageManager)context.getAttribute(PortletApplicationResources.CPS_PAGE_MANAGER_COMPONENT);
          if (null == pageManager)
          {
              throw new PortletException("Failed to find the Page Manager on portlet initialization");
          }
      }
  
      public void doView(RenderRequest request, RenderResponse response)
      throws PortletException, IOException
      {
          response.setContentType("text/html");
          
          TreeControl control = (TreeControl) request.getPortletSession().getAttribute("j2_tree");
          if(control == null)
          {
              Folder root = null;
              try
              {
                  root = pageManager.getFolder("/");
              } catch (FolderNotFoundException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (InvalidFolderException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (NodeException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              
              if(root != null)
              {
  	            control = buildTree(root, request.getLocale());
  	        	request.getPortletSession().setAttribute("j2_tree", control);
              }
          }
          request.setAttribute("j2_tree", control);
          
          super.doView(request, response);
          
      }
      
      public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException, IOException
  	{
  		TreeControl control = (TreeControl) actionRequest.getPortletSession().getAttribute("j2_tree");
  		//assert control != null
  		if(control != null)
  		{
  			String node = actionRequest.getParameter("node");
  			if(node != null)
  			{
  			    TreeControlNode controlNode = control.findNode(node);
  			    if(controlNode != null)
  			    {
  			        controlNode.setExpanded(!controlNode.isExpanded());
  			    }
  			}
  			
  			
  			String selectedNode = actionRequest.getParameter(PortletApplicationResources.REQUEST_SELECT_NODE);
  			if(selectedNode != null)
  			{
  			    control.selectNode(selectedNode);
  			    TreeControlNode child = control.findNode(selectedNode);
  			    if(child != null)
  			    {
  			        String domain = child.getDomain();
  			        String name = child.getName();
  			        
  			        actionRequest.getPortletSession().removeAttribute(PortletApplicationResources.CURRENT_FOLDER, PortletSession.APPLICATION_SCOPE);
  			        actionRequest.getPortletSession().removeAttribute(PortletApplicationResources.CURRENT_PAGE, PortletSession.APPLICATION_SCOPE);
  			        
  			        String attrName = PortletApplicationResources.CURRENT_FOLDER;
  			        if(domain.equals("PAGE_DOMAIN"))
  			        {
  			            attrName = PortletApplicationResources.CURRENT_PAGE;
  			        }
  			        
  			        
  			        actionRequest.getPortletSession().setAttribute(attrName, name, PortletSession.APPLICATION_SCOPE);
  			        /*
  			        if(domain.equals("FOLDER_DOMAIN"))
  			        {
  			            try
                          {
                              Folder folder = pageManager.getFolder(name);
                              actionRequest.getPortletSession().setAttribute(PortletApplicationResources.CURRENT_FOLDER, folder, PortletSession.APPLICATION_SCOPE);
                          } catch (FolderNotFoundException e)
                          {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          } catch (InvalidFolderException e)
                          {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          } catch (NodeException e)
                          {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
  			        }
  			        else if(domain.equals("PAGE_DOMAIN"))
  			        {
                          try
                          {
                              Page page = pageManager.getPage(name);
                              actionRequest.getPortletSession().setAttribute(PortletApplicationResources.CURRENT_PAGE, page, PortletSession.APPLICATION_SCOPE);
                          } catch (PageNotFoundException e)
                          {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          } catch (NodeException e)
                          {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
  			        }
  			        */
  			    }
  			}
  		}
  	}
      
      private TreeControl buildTree(Folder folder, Locale locale) {
  	    
  		TreeControlNode root =
              new TreeControlNode(folder.getName(),
                                  null, folder.getTitle(locale),
                                  PORTLET_URL,
                                  null, true, "FOLDER_DOMAIN");
  		
  		TreeControl control = new TreeControl(root);
  		
  		buildFolderNodes(folder, root, locale);		
  		
  		return control;
  	}
      
      private void buildFolderNodes(Folder folder, TreeControlNode parent, Locale locale)
      {
          NodeSet childFolders = null;
          try
          {
              childFolders = folder.getFolders();
          } catch (FolderNotFoundException e)
          {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (DocumentException e)
          {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          
          if(childFolders != null)
          {
              Iterator folderIter = childFolders.iterator();
              while (folderIter.hasNext())
              {
                  Folder childFolder = (Folder) folderIter.next();
                  TreeControlNode childNode = new TreeControlNode(childFolder.getName(), null, childFolder.getTitle(locale), PORTLET_URL, null, false, "FOLDER_DOMAIN"  );
                  parent.addChild(childNode);
                  buildFolderNodes(childFolder, childNode, locale);
              }
              
              buildPageNodes(folder, parent, locale);
          }
      }
      
      private void buildPageNodes(Folder folder, TreeControlNode node, Locale locale)
      {
          NodeSet pages = null;
          try
          {
              pages = folder.getPages();
          } catch (NodeException e)
          {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          
          if(pages != null)
          {
  	        Iterator pageIter = pages.iterator();
  			
  	        while (pageIter.hasNext())
  	        {
  	            Page page = (Page)pageIter.next();
  	            TreeControlNode child = new TreeControlNode(page.getPath(), null, page.getTitle(locale), PORTLET_URL, null, false, "PAGE_DOMAIN"  );
  	            node.addChild(child);
  	        }
          }
      }
  }
  
  
  
  1.1                  jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/site/SiteDetailPortlet.java
  
  Index: SiteDetailPortlet.java
  ===================================================================
  /*
   * Copyright 2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.site;
  
  import java.io.IOException;
  
  import javax.portlet.PortletConfig;
  import javax.portlet.PortletContext;
  import javax.portlet.PortletException;
  import javax.portlet.PortletSession;
  import javax.portlet.RenderRequest;
  import javax.portlet.RenderResponse;
  
  import org.apache.jetspeed.om.folder.Folder;
  import org.apache.jetspeed.om.folder.FolderNotFoundException;
  import org.apache.jetspeed.om.folder.InvalidFolderException;
  import org.apache.jetspeed.om.page.Page;
  import org.apache.jetspeed.page.PageManager;
  import org.apache.jetspeed.page.PageNotFoundException;
  import org.apache.jetspeed.page.document.NodeException;
  import org.apache.jetspeed.portlet.ServletPortlet;
  import org.apache.jetspeed.portlets.pam.PortletApplicationResources;
  
  /**
   * @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
   *
   */
  public class SiteDetailPortlet extends ServletPortlet
  {
  
      private PortletContext context;
      private PageManager pageManager;
  
      public void init(PortletConfig config)
      throws PortletException 
      {
          super.init(config);
          context = getPortletContext();                
          pageManager = (PageManager)context.getAttribute(PortletApplicationResources.CPS_PAGE_MANAGER_COMPONENT);
          if (null == pageManager)
          {
              throw new PortletException("Failed to find the Page Manager on portlet initialization");
          }
      }
  
      public void doView(RenderRequest request, RenderResponse response)
      throws PortletException, IOException
      {
          response.setContentType("text/html");
          
          String currentFolder = (String)request.getPortletSession().getAttribute(PortletApplicationResources.CURRENT_FOLDER, PortletSession.APPLICATION_SCOPE);
          String currentPage = (String)request.getPortletSession().getAttribute(PortletApplicationResources.CURRENT_PAGE, PortletSession.APPLICATION_SCOPE);
          
          if(currentFolder != null)
          {
              try
              {
                  Folder folder = pageManager.getFolder(currentFolder);
                  request.setAttribute("folder", folder);
              } catch (FolderNotFoundException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (InvalidFolderException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (NodeException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }
          
          else if(currentPage != null)
          {
              try
              {
                  Page page = pageManager.getPage(currentPage);
                  request.setAttribute("page", page);
              } catch (PageNotFoundException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (NodeException e)
              {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              
          }
          
          super.doView(request, response);
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org