taylor      2002/09/23 11:56:22

  Modified:    src/java/org/apache/jetspeed/modules/actions/portlets
                        CustomizeSetAction.java
  Log:
  Fixed bug to handle category filtering. Removed the code to reuse the portlet list 
and the allportlets list from the session.
  The portlet list is still stored in the session, however it is used only by 
maintainUserSelections() method. The userSelectionMap is updated on filtering, or when 
previous/next are clicked. On clicking apply all the entries in the userSelectionMap 
are committed.Added start parameter to the url after doFilterCategory is called as 
otherwise the session variables are cleared.
  
  Revision  Changes    Path
  1.30      +38 -12    
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/CustomizeSetAction.java
  
  Index: CustomizeSetAction.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/CustomizeSetAction.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- CustomizeSetAction.java   17 Sep 2002 00:23:22 -0000      1.29
  +++ CustomizeSetAction.java   23 Sep 2002 18:56:22 -0000      1.30
  @@ -134,6 +134,7 @@
       private static final String USER_SELECTIONS = 
"session.portlets.user.selections";
       private static final String UI_PORTLETS_SELECTED = "portletsSelected";
       private static final String PORTLET_LIST = "session.portlets.list";
  +    private static final String ALL_PORTLET_LIST = "session.all.portlets.list";
       private static final String PORTLET_LIST_PAGE_SIZE = 
"session.portlets.page.size";
   
       /** 
  @@ -282,6 +283,7 @@
               int start = rundata.getParameters().getInt("start", -1);
               if (start < 0)
               {
  +                //System.out.println("Clearing session variables");
                   start = 0;
                   PortletSessionState.clearAttribute(rundata,USER_SELECTIONS);
                   PortletSessionState.clearAttribute(rundata,PORTLET_LIST);
  @@ -558,6 +560,8 @@
          {
              int end = Math.min(start + size, portlets.size());
              int pnames_index = 0;
  +           //Go through all the portlets on this page and figure out which ones 
have been 
  +           //checked and which ones unchecked and accordingly update the 
userSelectionMap
              for (int portlet_index = start; portlet_index < end; portlet_index++)
              {
                  PortletEntry entry = (PortletEntry)portlets.get(portlet_index);
  @@ -565,7 +569,7 @@
                      pnames_index < pnames.length && 
                      pnames[pnames_index].equals(entry.getName()))
                  {
  -                    userSelections.put(entry.getName(), 
String.valueOf(portlet_index));
  +                    userSelections.put(entry.getName(), entry);
                       pnames_index++;
                  }
                  else
  @@ -574,9 +578,8 @@
                  }
              }
              PortletSessionState.setAttribute(rundata,USER_SELECTIONS,userSelections);
  -
  -           Iterator it = userSelections.keySet().iterator();
              /*
  +           Iterator it = userSelections.keySet().iterator();           
              System.out.print("User Selections: ");
              while (it.hasNext())
              {
  @@ -584,7 +587,6 @@
              }
              System.out.println("\n");
              */
  -
          }
          else
          {
  @@ -887,13 +889,19 @@
       // Create a list of all available portlets
       public static List buildPortletList(RunData data, PortletSet set, String 
mediaType, List allPortlets)
       {
  +        /* Can not use this as filtering of category requires us to rebuild the 
portlet
  +           list and the allPortlets list each time.
           List list = (List)PortletSessionState.getAttribute(data,PORTLET_LIST,null);
           if (list != null)
  -        {
  -            return list;
  +        {   
  +            allPortlets = 
(List)PortletSessionState.getAttribute(data,ALL_PORTLET_LIST,null);
  +            if (allPortlets != null)
  +            {
  +                return list;
  +            }
           }
  -            
  -        list = new ArrayList();
  +        */    
  +        List list = new ArrayList();
           
           String mime = ((JetspeedRunData) data).getCapability()
                                                 .getPreferredType()
  @@ -964,7 +972,8 @@
                           return t1.compareTo(t2);
                       }
                   });
  -        
  +        //this is used only by maintainUserSelection - which does not need the 
  +        //portlet list to be regenrated       
           PortletSessionState.setAttribute(data,PORTLET_LIST,list);
           return list;
       }
  @@ -1108,10 +1117,27 @@
       /**
        * Adds a filter over the available portlets list based on category
        */
  -    public void doFiltercategory(RunData rundata, Context context)
  +    public void doFiltercategory(RunData rundata, Context context) throws Exception
       {
           String filterCat = rundata.getParameters().getString("filter_category", 
"All Portlets");
  -        rundata.getUser().setTemp("filter_category", filterCat);
  +        PortletSessionState.setAttribute(rundata, "filter_category", filterCat);
  +        maintainUserSelections(rundata);
  +        
  +        String mtype = rundata.getParameters().getString("mtype", null);
  +        JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
  +        DynamicURI duri = null;
  +        if (mtype == null)
  +        {
  +            duri = link.setTemplate("Customize").addQueryData("start", "0");
  +        }
  +        else
  +        {
  +            duri = link.setTemplate("Customize").addQueryData("start", 
"0").addQueryData("mtype",mtype);
  +        }
  +        JetspeedLinkFactory.putInstance(link);
  +        rundata.setRedirectURI(duri.toString());
  +        return;
  +        
           
       }
           
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to