taylor      01/12/05 22:26:54

  Modified:    src/java/org/apache/jetspeed/modules/actions/controllers
                        RowColumnControllerAction.java
               src/java/org/apache/jetspeed/modules/actions/controls
                        Customize.java
               src/java/org/apache/jetspeed/modules/actions/portlets
                        CustomizeSetAction.java
               src/java/org/apache/jetspeed/services/profiler
                        JetspeedProfilerService.java
               src/java/org/apache/jetspeed/services/rundata
                        DefaultJetspeedRunData.java
  Added:       src/java/org/apache/jetspeed/util AutoProfile.java
  Log:
  From Andreas:
  
  New class AutoProfile.java:
  (org.apache.jetspeed.util)
  
  - Load a wml or html profile depending on:
    - forced call
    - already set customization mediatype in the user session
    - if used mediatype is different than the customization mediatype
  
  - Create a list of all used portlets inside a pane
  
  Changes for DefaultJetspeedRundata.java:
  (org.apache.jetspeed.services.rundata)
  
  - Store the name of the currently edited pane in the session object
  
  - Store only new Portlets on the stack (different to last entry)
  
  Changes for JetspeedProfilerService.java:
  (org.apache.jetspeed.services.profiler)
  
  - New createProfile methode : creates a wml and html profile from a 'parentAccount' 
(using turbine if null)
  
  NOTE: Ensure that your parentAccount contains a wml/index.psml file!
        (Also every existing account!)
  
  Changes for CustomizeSetAction.java:
  (org.apache.jetspeed.modules.actions.portlets)
  
  - Reload mediatype profile if necessary (see AutoProfile.java)
  
  - Mediatype for current profile available for velocity (mtype)
  
  - List of used portlets available for velocity (runs)
  
  - Name of the currently edited pane available for velocity (panename)
  
  - Create Controller list depends on mediatype
  
  - Create Portlet list depends on mediatype
  
  - For wml profiles : add ClearPortletControl to each entry
  
  - Add only Portlets if they are not already used in a pane : else we would have 
problems (removing)
  
  - Save changes on wml profile immediately
  
  Changes for RowColumnControllerAction.java:
  (org.apache.jetspeed.modules.actions.controllers)
  
  - A list of already used portlets is available for velocity templates thru the runs 
variable
  
  - Reload mediatype profile if necessary (see AutoProfile.java)
  
  - Add a control to each entry in a wml psml file
  
  - Save modified wml profiles immediately
  
  Changes for Customize.java:
  (org.apache.jetspeed.modules.actions.controler)
  
  - Fixed the stack error while a click on customization created a new stack entry : 
this is done by adding there parameter 'reset' to the url which deletes all stack 
objects so customization starts with the first portlet
  
  - For the customization link I added the 'mtype' parameter : the desired mediatype 
profile is loaded (if not already used) by the autoprofile class (see autoprofile.java)
  
  - If mediatype is wml we always start with the first portlet because the zero 
portlet is the container : I changed the wml/index.psml format (had problems with 
WMLCardPortlet)
  
  Revision  Changes    Path
  1.6       +89 -11    
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/controllers/RowColumnControllerAction.java
  
  Index: RowColumnControllerAction.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/controllers/RowColumnControllerAction.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RowColumnControllerAction.java    2001/07/29 13:21:42     1.5
  +++ RowColumnControllerAction.java    2001/12/06 06:26:54     1.6
  @@ -55,6 +55,7 @@
   package org.apache.jetspeed.modules.actions.controllers;
   
   import org.apache.jetspeed.portal.PortletSet;
  +import org.apache.jetspeed.portal.Portlet;
   import org.apache.jetspeed.portal.PortletController;
   import org.apache.jetspeed.portal.PortletControllerConfig;
   import org.apache.jetspeed.portal.PanedPortletController;
  @@ -67,6 +68,8 @@
   import org.apache.jetspeed.xml.api.portletmarkup.Metainfo;
   import org.apache.jetspeed.xml.api.portletmarkup.Layout;
   
  +import org.apache.jetspeed.util.AutoProfile;
  +
   // Turbine stuff
   import org.apache.turbine.util.Log;
   import org.apache.turbine.util.RunData;
  @@ -258,14 +261,26 @@
               }
           }
           
  +
           context.put("portlets",plist);
           context.put("titles",titles);
  +
  +        /** 
  +         * Make a list of all used portlets available thru the 'runs' reference
  +         * 
--------------------------------------------------------------------------
  +         * last modified: 10/31/01
  +         * Andreas Kempf, Siemens ICM S CP PE, Munich
  +         * mailto: [EMAIL PROTECTED]
  +         */
  +        context.put("runs", AutoProfile.getPortletList(rundata));
  +        // 
--------------------------------------------------------------------------
       }
   
       public void doCancel(RunData data, Context context)
       {
           ((JetspeedRunData)data).setCustomized(null);
  -        if (((JetspeedRunData)data).getCustomized()==null)
  +        
  +        if (((JetspeedRunData)data).getCustomized() ==null)
           {
               data.setScreenTemplate("Home");
           }
  @@ -296,12 +311,26 @@
        * - paneid: the id a the pane to modify within the current profile
        * - position: the position of the component to delete
        */
  -    public void doDelete(RunData data, Context context)
  +    public void doDelete(RunData data, Context context) throws Exception
       {
  -        JetspeedRunData jdata = (JetspeedRunData)data;
  -        PortletSet customizedSet = (PortletSet)jdata.getCustomized();
  -        int position = data.getParameters().getInt("position",-1);
  -        Profile profile = jdata.getProfile();
  +      /**
  +       * Reload profile for customization (if necessary)
  +       * --------------------------------------------------------------------------
  +       * last modified: 10/31/01
  +       * Andreas Kempf, Siemens ICM S CP PE, Munich
  +       * mailto: [EMAIL PROTECTED]
  +       */
  +      AutoProfile.doIt (data, true);
  +      // --------------------------------------------------------------------------
  +      
  +      JetspeedRunData jdata = (JetspeedRunData)data;
  +      PortletSet customizedSet = (PortletSet)jdata.getCustomized();
  +      int position = data.getParameters().getInt("position",-1);
  +      Profile profile = jdata.getProfile();
  +
  +      // ADDED for WML
  +      boolean isWML = (profile.getMediaType().equalsIgnoreCase("wml"));
  +    
   
           if (customizedSet == null) return;
   
  @@ -316,12 +345,25 @@
                   {
                       Portlets p = set.getPortlets(i);
                       Layout layout = p.getLayout();
  -                    if (layout!=null)
  +//                    
  +//                    if (layout == null)
  +//                    {
  +//                      Layout nl = new Layout ();
  +//                      nl.setPosition (String.valueOf(i));
  +//                      
  +//                    }
  +                    if ((layout!=null) && (layout.getPosition() != null))
                       {
  +      
                           int lpos = Integer.parseInt(layout.getPosition());
                           if (lpos==position)
                           {
                               set.removePortlets(i);
  +        
  +                            // MODIFIED: Save changes for wml profiles
  +                            if (isWML)
  +                              doSave(data, null);
  +                            
                               return;
                           }
                       }
  @@ -332,13 +374,18 @@
                   {
                       Entry p = set.getEntry(i);
                       Layout layout = p.getLayout();
  -                    if (layout!=null)
  +
  +                    if ((layout!=null) && (layout.getPosition() != null))
                       {
                           int lpos = Integer.parseInt(layout.getPosition());
   
                           if (lpos==position)
                           {
                               set.removeEntry(i);
  +
  +                            // MODIFIED: Save changes for wml profiles
  +                            if (isWML)
  +                              doSave(data, null);
                               return;
                           }
                       }
  @@ -348,16 +395,26 @@
                   if (position < set.getPortletsCount())
                   {
                       set.removePortlets(position);
  +
  +                    // MODIFIED: Save changes for wml profiles
  +                    if (isWML)
  +                      doSave(data, null);
                       return;
                   }
   
                   if (position < set.getEntryCount())
                   {
                       set.removeEntry(position);
  +
  +                    // MODIFIED: Save changes for wml profiles
  +                    if (isWML)
  +                      doSave(data, null);
                       return;
                   }
               }
           }
  +             
  +
       }
       
       /** Move a component up within the pane
  @@ -365,7 +422,7 @@
        * - paneid: the id a the pane to modify within the current profile
        * - position: move the component which occupies this position
        */
  -    public void doUp(RunData data, Context context)
  +    public void doUp(RunData data, Context context) throws Exception
       {
           doMove(data,context,true);
       }
  @@ -375,7 +432,7 @@
        * - paneid: the id a the pane to modify within the current profile
        * - position: move the component which occupies this position
        */
  -    public void doDown(RunData data, Context context)
  +    public void doDown(RunData data, Context context) throws Exception
       {
           doMove(data,context,false);
       }
  @@ -386,13 +443,29 @@
        * - position: move the component which occupies this position
        * The moveUp boolean determines the direction of the move
        */
  -    public void doMove(RunData data, Context context, boolean moveUp)
  +    public void doMove(RunData data, Context context, boolean moveUp) throws 
Exception
       {
  +      /**
  +       * Reload profile for customization (if necessary)
  +       * --------------------------------------------------------------------------
  +       * last modified: 10/31/01
  +       * Andreas Kempf, Siemens ICM S CP PE, Munich
  +       * mailto: [EMAIL PROTECTED]
  +       */
  +
  +      AutoProfile.doIt (data, true);
  +      // --------------------------------------------------------------------------
  +    
  +
           JetspeedRunData jdata = (JetspeedRunData)data;
           PortletSet customizedSet = (PortletSet)jdata.getCustomized();
           int position = data.getParameters().getInt("position",-1);
           Profile profile = jdata.getProfile();
           
  +        // ADDED for WML
  +        boolean isWML = (profile.getMediaType().equalsIgnoreCase("wml"));
  +
  +
           if (customizedSet == null) return;
           
           if (position > -1)
  @@ -520,5 +593,10 @@
                   targetLayout.setPosition(String.valueOf(position));                 
              
               }
           }
  +
  +
  +    // MODIFIED: Save changes for wml profiles
  +    if (isWML)
  +      doSave(data, null);
       }
   }
  
  
  
  1.6       +49 -1     
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/controls/Customize.java
  
  Index: Customize.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/controls/Customize.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Customize.java    2001/10/08 16:06:17     1.5
  +++ Customize.java    2001/12/06 06:26:54     1.6
  @@ -65,8 +65,11 @@
   import org.apache.jetspeed.portal.PortletControl;
   import org.apache.jetspeed.services.rundata.JetspeedRunData;
   
  +import org.apache.jetspeed.util.AutoProfile;
  +
   import java.util.Enumeration;
   import java.util.Stack;
  +import javax.servlet.http.*;
   
   /**
    * Handle Customization requests for the current portlet
  @@ -75,6 +78,9 @@
    */
   public class Customize extends Action
   {
  +
  +
  +
       public void doPerform( RunData rundata ) throws Exception
       {
           JetspeedRunData jdata = (JetspeedRunData)rundata;
  @@ -84,13 +90,55 @@
               return;
           }
   
  +        
  +        // Load the profile for customization (if not already loaded!)
  +        // Andreas Kempf, Siemens ICM S CP PE, Munich
  +        // ---------------------------------------------------------------------
  +
  +        String editMediaType = rundata.getParameters().getString ("mtype");
  +        String resetStack = rundata.getParameters().getString ("reset");
  +        
  +        // RESET (remove) all Stackentries - used on first customization!!!
  +        if ((resetStack != null) && ((resetStack.equalsIgnoreCase("on")) || 
(resetStack.equalsIgnoreCase("1"))))
  +        {
  +          Portlet p = jdata.getCustomized();
  +          while (p != null)
  +          {
  +            jdata.setCustomized(null);
  +            p = jdata.getCustomized();
  +          }
  +        }
  +        
   
  +        if (editMediaType != null)
  +        {
  +          AutoProfile.loadProfile (rundata, editMediaType);
  +        }
  +        else
  +        {
  +          rundata.getSession().putValue ("customizeType", 
((JetspeedRunData)rundata).getProfile().getMediaType ());
  +        }
  +        // ---------------------------------------------------------------------
  +        
  +        
           String name = jdata.getPortlet();
           if ( name == null )
           {
               //if no portlet specified, customized the default pane
               //of the profile
  -            name="0";
  +
  +            // set Portlet #1 for wml
  +            // Andreas Kempf, ICM S CP PE, Munich
  +            // ---------------------------------------------------------------------
  +            if ((editMediaType != null) && (editMediaType.equalsIgnoreCase("wml")))
  +            {
  +              name="1";
  +            }
  +            else  
  +              name="0";
  +            // ---------------------------------------------------------------------
  +
  +      
               jdata.setPortlet(name);
           }
   
  
  
  
  1.10      +180 -47   
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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- CustomizeSetAction.java   2001/09/05 05:53:19     1.9
  +++ CustomizeSetAction.java   2001/12/06 06:26:54     1.10
  @@ -75,7 +75,11 @@
   import org.apache.jetspeed.xml.api.portletmarkup.Controller;
   import org.apache.jetspeed.xml.api.portletmarkup.Control;
   import org.apache.jetspeed.services.JetspeedSecurity;
  +import org.apache.jetspeed.xml.api.portletmarkup.Layout;
   
  +import org.apache.jetspeed.util.AutoProfile;
  +
  +
   // Turbine stuff
   import org.apache.turbine.util.Log;
   import org.apache.turbine.util.RunData;
  @@ -90,7 +94,9 @@
   import java.util.Iterator;
   import java.util.Collections;
   import java.util.Comparator;
  +import java.util.Enumeration;
   
  +
   /**
    * This action implements the default portletset behavior customizer 
    * 
  @@ -101,16 +107,41 @@
    */
   public class CustomizeSetAction extends VelocityPortletAction
   {
  +
  +
       /** 
        * Subclasses must override this method to provide default behavior 
        * for the portlet action
        */
       protected void buildNormalContext( VelocityPortlet portlet, 
                                          Context context,
  -                                       RunData rundata )
  +                                       RunData rundata ) throws Exception
       {
  +    
  +       /**
  +        * Reload profile for customization (if necessary)
  +        * --------------------------------------------------------------------------
  +        * last modified: 10/31/01
  +        * Andreas Kempf, Siemens ICM S CP PE, Munich
  +        * mailto: [EMAIL PROTECTED]
  +        */
  +        AutoProfile.doIt (rundata, true);
  +        
  +        JetspeedRunData jdata = (JetspeedRunData)rundata;
  +        Profile profile = jdata.getProfile();
  +        String mediaType = jdata.getProfile().getMediaType ();
  +
  +        // set velocity variable of mediatype (displayed in the customizer menu)
  +        context.put("mtype", profile.getMediaType());
  +
  +
  +        // make the list of already used panes/portlets available through the 
'runs' reference
  +        context.put("runs", AutoProfile.getPortletList(rundata));
  +        // ---------------------------------------------------------------------
  +        
  +        
           // we should first retrieve the portlet to customize
  -        PortletSet set = (PortletSet)((JetspeedRunData)rundata).getCustomized();
  +        PortletSet set = (PortletSet)(jdata).getCustomized();
   
           //identify the portlet submode and build the appropriate subt-template path
           String mode = rundata.getParameters().getString("mode");
  @@ -142,27 +173,57 @@
       
           if (set==null) return;
   
  +
  +       
           // generic context stuff
  +        context.put("panename", (String) jdata.getSession().getAttribute 
("customizedPaneName"));
           context.put("skin", set.getPortletConfig().getPortletSkin());
           context.put("set", set);
           context.put("action","portlets.CustomizeSetAction");        
  -        context.put("controllers", buildInfoList(rundata, 
Registry.PORTLET_CONTROLLER));
  +        context.put("controllers", buildInfoList(rundata, 
Registry.PORTLET_CONTROLLER, mediaType));
           context.put("skins", buildList(rundata, Registry.SKIN));
  -        context.put("currentController", set.getController().getConfig().getName());
  -        context.put("currentSkin", 
set.getPortletConfig().getPortletSkin().getName());
  +    
  +        String CtrlName = set.getController().getConfig().getName();
  +        context.put("currentController", CtrlName);
  +
   
  -        if (set.getController() instanceof PortletSetController)
  +       /** 
  +        * Special handling for wml profiles
  +        * no skins, no properties menuentry, no panes 
  +        * --------------------------------------------------------------------------
  +        * last modified: 10/31/01
  +        * Andreas Kempf, Siemens ICM S CP PE, Munich
  +        * mailto: [EMAIL PROTECTED]
  +        */
  +
  +        if (mediaType.equalsIgnoreCase("wml"))
           {
  +          context.put("currentSkin","Not for wml!");
  +          context.put("allowproperties", "false");
  +        }
  +        else
  +        {
  +          context.put("currentSkin", 
set.getPortletConfig().getPortletSkin().getName());
  +          context.put("allowproperties", "true");
  +        }
  +
  +
  +        // do not allow panes for wml profiles
  +        if ((!mediaType.equalsIgnoreCase("wml")) && (set.getController() instanceof 
PortletSetController))
  +        {
               context.put("allowpane","true");
           }
           else
           {
               context.put("allowportlet", "true");
           }
  +        // 
--------------------------------------------------------------------------
               
  +
  +
           if ("add".equals(mode)) // build context for add mode
           {
  -            List portlets  = buildPortletList(rundata,set);
  +            List portlets  = buildPortletList(rundata,set,mediaType);
               int start = rundata.getParameters().getInt("start",0);                
               int size = 15;
                   
  @@ -258,28 +319,88 @@
       }
       
       /** Add new portlets in the customized set */
  -    public void doAdd(RunData rundata, Context context)
  +    public void doAdd(RunData rundata, Context context) throws Exception
       {
  +        /** 
  +         * Special handling for wml profiles
  +         * no skins, no properties menuentry, no panes 
  +         * 
--------------------------------------------------------------------------
  +         * last modified: 10/31/01
  +         * Andreas Kempf, Siemens ICM S CP PE, Munich
  +         * mailto: [EMAIL PROTECTED]
  +         */
  +        boolean isWML = AutoProfile.doIt (rundata, 
true).getMediaType().equalsIgnoreCase("wml");
  +
           PortletSet set = (PortletSet)((JetspeedRunData)rundata).getCustomized();
           String[] pnames = rundata.getParameters().getStrings("pname");
  +
  +        // Create a ClearPortletControl
  +        Control ctrl = new Control();
  +        ctrl.setName ("ClearPortletControl");
  +
           
           if ( (pnames!=null) && (set!=null) )
           {
               Portlets portlets = ((JetspeedRunData)rundata).getProfile()
                                               .getDocument()
                                               .getPortlets(set.getName());
  +
  +            List usedPortlets = AutoProfile.getPortletList(rundata);
  +            boolean addIt;
  +            int cc;
  +            Entry usedEntry;
  +                                          
               for(int i=0;i < pnames.length; i++)
               {
                   PortletEntry entry = 
(PortletEntry)Registry.getEntry(Registry.PORTLET, pnames[i]);
  +
  +                // add only new portlets!
                   if ((entry!=null) && (portlets != null))
                   {
  -                    Entry p = new Entry();
  -                    p.setParent(pnames[i]);
  -                    portlets.addEntry(p);
  +                
  +                    addIt = true;
  +                    for (cc=0; cc<usedPortlets.size(); cc++)
  +                    {
  +                      usedEntry = (Entry) usedPortlets.get(cc);
  +                      if (entry.getName().equals(usedEntry.getParent()))
  +                      {
  +                        addIt = false;
  +                        break;
  +                      }
  +                      
  +                    }
  +                
  +                    if (addIt)
  +                    {
  +                      Entry p = new Entry();
  +                      // add the ClearPortletControl to wml entries      
  +                      if (isWML)
  +                        p.setControl (ctrl);
  +                    
  +                      p.setParent(pnames[i]);
  +                      portlets.addEntry(p);
  +                    }
                   }
               }
           }
  +        // 
--------------------------------------------------------------------------
  +
  +
           rundata.getUser().setTemp("mode","layout");
  +
  +        /** 
  +         * Save changed wml profile
  +         * 
--------------------------------------------------------------------------
  +         * last modified: 10/31/01
  +         * Andreas Kempf, Siemens ICM S CP PE, Munich
  +         * mailto: [EMAIL PROTECTED]
  +         */
  +        if (isWML)
  +        {
  +          ((JetspeedRunData)rundata).getProfile().store();
  +          //rundata.save();
  +        }
  +        
       }
       
       /** Sets the metainfo for this entry */
  @@ -401,7 +522,9 @@
           }        
       }
       
  -    public static List buildPortletList(RunData data, PortletSet set)
  +
  +    // Create a list of all available portlets
  +    public static List buildPortletList(RunData data, PortletSet set, String 
mediaType)
       {
           List list = new ArrayList();
           
  @@ -410,22 +533,21 @@
                                                .toString();
                                                
           Iterator m = Registry.get(Registry.MEDIA_TYPE).listEntryNames();
  -        String mediaName = "html";
  -        
  -        while(m.hasNext())
  -        {
  -            MediaTypeEntry me = (MediaTypeEntry)
  -                Registry.getEntry(Registry.MEDIA_TYPE,(String)m.next());
  -            
  -            if (me!=null)
  -            {
  -                if (mime.equals(me.getMimeType()))
  -                {
  -                    mediaName = me.getName();
  -                    break;
  -                }
  -            }
  -        }
  +//        
  +//        while(m.hasNext())
  +//        {
  +//            MediaTypeEntry me = (MediaTypeEntry)
  +//                Registry.getEntry(Registry.MEDIA_TYPE,(String)m.next());
  +//            
  +//            if (me!=null)
  +//            {
  +//                if (mime.equals(me.getMimeType()))
  +//                {
  +//                    mediaName = me.getName();
  +//                    break;
  +//                }
  +//            }
  +//        }
                       
           Iterator i = Registry.get(Registry.PORTLET).listEntryNames();
           
  @@ -434,11 +556,21 @@
               PortletEntry entry = (PortletEntry)Registry.getEntry(Registry.PORTLET,
                                                                    (String)i.next());
               
  +            Iterator medias;
  +            
  +            // MODIFIED: Selection now takes care of the specified mediatype!
               if (JetspeedSecurity.checkPermission(data, 
JetspeedSecurity.PERMISSION_CUSTOMIZE, entry) &&
                  ((!entry.isHidden()) 
                   && (!entry.getType().equals(PortletEntry.TYPE_ABSTRACT))
  -                && entry.hasMediaType(mediaName)))
  +                && entry.hasMediaType(mediaType)))
               {
  +                medias = entry.listMediaTypes();
  +//                Logme.now ("MediaTypes for entry: "+entry.getName()+"  type = 
"+entry.getType());
  +//                while (medias.hasNext())
  +//                {
  +//                  Logme.now ((String)medias.next());
  +//                }
  +//
                   list.add(entry);
               }
           }
  @@ -461,7 +593,7 @@
           return list;
       }
       
  -    public static List buildInfoList(RunData data, String regName)
  +    public static List buildInfoList(RunData data, String regName, String mediaType)
       {
           List list = new ArrayList();
           
  @@ -470,22 +602,22 @@
                                                .toString();
                                                
           Iterator m = Registry.get(Registry.MEDIA_TYPE).listEntryNames();
  -        String mediaName = "html";
  -        
  -        while(m.hasNext())
  -        {
  -            MediaTypeEntry me = (MediaTypeEntry)
  -                Registry.getEntry(Registry.MEDIA_TYPE,(String)m.next());
  -            
  -            if (me!=null)
  -            {
  -                if (mime.equals(me.getMimeType()))
  -                {
  -                    mediaName = me.getName();
  -                    break;
  -                }
  -            }
  -        }
  +//        String mediaName = "html";
  +//        
  +//        while(m.hasNext())
  +//        {
  +//            MediaTypeEntry me = (MediaTypeEntry)
  +//                Registry.getEntry(Registry.MEDIA_TYPE,(String)m.next());
  +//            
  +//            if (me!=null)
  +//            {
  +//                if (mime.equals(me.getMimeType()))
  +//                {
  +//                    mediaName = me.getName();
  +//                    break;
  +//                }
  +//            }
  +//        }
                       
           Iterator i = Registry.get(regName).listEntryNames();
           
  @@ -494,9 +626,10 @@
               PortletInfoEntry entry = (PortletInfoEntry)Registry.getEntry(regName,
                                                                    (String)i.next());
               
  +            // MODIFIED: Selection now takes care of the specified mediatype!
               if (JetspeedSecurity.checkPermission(data, 
JetspeedSecurity.PERMISSION_CUSTOMIZE, entry) &&
                  ((!entry.isHidden())
  -                && entry.hasMediaType(mediaName)))
  +                && entry.hasMediaType(mediaType)))
               {
                   list.add(entry);
               }
  
  
  
  1.17      +54 -6     
jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java
  
  Index: JetspeedProfilerService.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- JetspeedProfilerService.java      2001/12/03 05:22:30     1.16
  +++ JetspeedProfilerService.java      2001/12/06 06:26:54     1.17
  @@ -131,7 +131,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>David Sean Taylor</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Santiago Gala</a>
  - * @version $Id: JetspeedProfilerService.java,v 1.16 2001/12/03 05:22:30 taylor Exp 
$
  + * @version $Id: JetspeedProfilerService.java,v 1.17 2001/12/06 06:26:54 taylor Exp 
$
    */
   
   public class JetspeedProfilerService  extends TurbineBaseService
  @@ -161,6 +161,9 @@
       String resourceDefault;        // the default name for a resource
       String resourceExt;            // the default extension for a resource
   
  +    // MODIFIED: A. Kempf
  +    String parentAccount = null;   // the parent account which is used to create 
profiles
  +
       boolean useSecurity = false;   // use security features
       boolean useLanguage = true;    // use extended language mapping features
   
  @@ -168,6 +171,31 @@
       private Map mediaMap = null;
   
       /**
  +     * This methode creates a wml profile and a html profile
  +     * for a new user 
  +     * --------------------------------------------------------------------------
  +     * last modified: 10/31/01
  +     * Andreas Kempf, Siemens ICM S CP PE, Munich
  +     * mailto: [EMAIL PROTECTED]
  +     */
  +    public Profile createProfile(RunData data, Profile profile)
  +            throws ProfileException
  +    {
  +      Profile dummy = null;
  +      
  +
  +      if (parentAccount == null)
  +        parentAccount = new String ("turbine");
  +        
  +      createProfile (data, profile, "wml", parentAccount);
  +      dummy = createProfile (data, profile, "html", parentAccount);
  +
  +      
  +      return dummy;
  +    }
  +    // --------------------------------------------------------------------------
  +
  +    /**
        * This is the early initialization method called by the 
        * Turbine <code>Service</code> framework
        * @param conf The <code>ServletConfig</code>
  @@ -628,16 +656,28 @@
       }
   
       /**
  -     * Create a new profile. The profile parameter's document will be cloned.
  +     * Create a new profile. 
  +     * The profile parameter's document will be cloned.
        *
        * @param rundata The rundata object for the current request.
        * @param profile The description of the new profile to be created.
  +     * @param contentType create a profile for the specific contentType
  +     * @param from create a profile by cloning the profile from the specific user 
(if null - turbine is used)
        * @return The newly created profile.
  +     * -----------------------------------------------------------
  +     * Andreas Kempf, Siemens ICM S CP PE, Munich
        */
  -    public Profile createProfile( RunData data, Profile profile )
  +    public Profile createProfile( RunData data, Profile profile, String 
contentType, String from )
               throws ProfileException
       {
  -        if (null == profile.getDocument())
  +      if ((contentType == null) || (contentType.length() < 2))
  +        contentType = "html";
  +
  +      if ((from == null) || (from.length() < 2))
  +        from = "turbine";
  +      
  +
  +        if ((null == profile.getDocument()) || 
(!profile.getMediaType().equalsIgnoreCase (contentType)))
           {
               // locate the default resource
   
  @@ -646,23 +686,31 @@
               try
               {
                   ProfileLocator locator = new BaseProfileLocator();
  -                locator.setUser( JetspeedSecurity.getUser("turbine") );
  -                locator.setMediaType("html");
  +                locator.setUser( JetspeedSecurity.getUser(from) );
  +
  +                locator.setMediaType(contentType);
                   PSMLDocument doc = fallback(locator, data);
  +
                   if (doc != null)
                       profile.setDocument(doc);
  +
                   profile.setName( resourceDefault + resourceExt );
  +
               }
               catch (Exception e)
               {
                   throw new ProfileException(e.toString());
               }
           }
  +        
           try
           {
  +            profile.setMediaType(contentType);
  +            
               PSMLDocument doc = PsmlManager.createDocument(profile);
               Profile newProfile = (Profile)profile.clone();
               newProfile.setDocument(doc);
  +
               return newProfile;
           }
           catch (CloneNotSupportedException e)
  
  
  
  1.5       +38 -1     
jakarta-jetspeed/src/java/org/apache/jetspeed/services/rundata/DefaultJetspeedRunData.java
  
  Index: DefaultJetspeedRunData.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/rundata/DefaultJetspeedRunData.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultJetspeedRunData.java       2001/09/04 12:09:30     1.4
  +++ DefaultJetspeedRunData.java       2001/12/06 06:26:54     1.5
  @@ -73,7 +73,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Raphaël Luta</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Santiago Gala</a>
  - * @version $Id: DefaultJetspeedRunData.java,v 1.4 2001/09/04 12:09:30 sgala Exp $
  + * @version $Id: DefaultJetspeedRunData.java,v 1.5 2001/12/06 06:26:54 taylor Exp $
    */
   public class DefaultJetspeedRunData extends DefaultTurbineRunData
       implements JetspeedRunData
  @@ -120,6 +120,17 @@
               p = (Portlet)stack.peek();
           }
           
  +        /** 
  +         * Save the title of this currently selected portlet
  +         * 
--------------------------------------------------------------------------
  +         * last modified: 11/06/01
  +         * Andreas Kempf, Siemens ICM S CP PE, Munich
  +         */
  +        if ((p != null) && (stack.size() > 1))
  +          getSession().setAttribute ("customizedPaneName", (String)p.getTitle());
  +        else  
  +          getSession().setAttribute ("customizedPaneName", "*");
  +
           return (Portlet)p;
       }
   
  @@ -135,15 +146,41 @@
           {
               stack = new Stack();
               getSession().setAttribute("customize",stack);
  +
           }
           
           if (p==null)
           {
               if (!stack.empty()) stack.pop();
  +
  +            getSession().setAttribute ("customizedPaneName", "*");
           }
           else
           {
  +          if (stack.size () > 0)
  +          {
  +            Portlet last = (Portlet)stack.peek();
  +          
  +            
  +            if ((last!=null) && (p.getName().equals(last.getName())) && 
(p.getTitle().equals(last.getTitle())))
  +            {
  +            System.out.println ("Portlet already used!!!");
  +            }
  +            else
  +              stack.push(p);
  +          }
  +          else
               stack.push(p);
  +            
  +
  +          /** 
  +           * Save the title of this currently selected portlet
  +           * 
--------------------------------------------------------------------------
  +           * last modified: 11/06/01
  +           * Andreas Kempf, Siemens ICM S CP PE, Munich
  +           */
  +            
  +           getSession().setAttribute ("customizedPaneName", (String)p.getTitle());
           }
       }
   
  
  
  
  1.1                  
jakarta-jetspeed/src/java/org/apache/jetspeed/util/AutoProfile.java
  
  Index: AutoProfile.java
  ===================================================================
  package org.apache.jetspeed.util;
  
  import org.apache.jetspeed.xml.api.portletmarkup.Portlets;
  import org.apache.jetspeed.xml.api.portletmarkup.Entry;
  import org.apache.jetspeed.om.profile.Profile;
  import org.apache.jetspeed.services.Profiler;
  import org.apache.jetspeed.util.MimeType;
  import org.apache.jetspeed.services.rundata.JetspeedRunData;
  import org.apache.jetspeed.portal.PortletSet;
  
  import org.apache.turbine.util.RunData;
  
  import javax.servlet.http.*;
  import java.util.*;
  
  /**
   * This class is used to handle different mediatype profile
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Andreas Kempf</a>
   * @version $Id: AutoProfile.java,v1.0 2001/10/31
   */
  public class AutoProfile
  {
      /** 
       * Load a mediaType specific profile
       * --------------------------------------------------------------------------
       * last modified: 10/31/01
       * Andreas Kempf, Siemens ICM S CP PE, Munich
       */
      public static Profile loadProfile (RunData rundata, String mediaType) throws 
Exception
      {
        Profiler myProfiler = new Profiler ();
  
        if ((mediaType != null) && (mediaType.equalsIgnoreCase("wml")))
        {
          
          ((JetspeedRunData)rundata).getProfile().store();
          Profile myPro = myProfiler.getProfile (rundata, MimeType.WML);
          ((JetspeedRunData)rundata).setProfile (myPro);
  
          // It is essential that a session object exists!
          rundata.getSession().setAttribute ("customizeType", "wml");
        }
        else
        {
  
          ((JetspeedRunData)rundata).getProfile().store();
          Profile myPro = myProfiler.getProfile (rundata, MimeType.HTML);
          ((JetspeedRunData)rundata).setProfile (myPro);
  
          // It is essential that a session object exists!
          rundata.getSession().setAttribute ("customizeType", "html");
        }
  
  
        
            
        return ((JetspeedRunData)rundata).getProfile();
      }
  
  
      /** 
       * Load a profile - the mediatype is depending on rundata settings
       * The profile will load if the rundata.profile.mediatype differs from 
customtype (Session Param)
       * if the param notForce is false, the profile will be loaded wether is already 
used or not
       * --------------------------------------------------------------------------
       * last modified: 10/31/01
       * Andreas Kempf, Siemens ICM S CP PE, Munich
       */
      public static Profile doIt (RunData rundata, boolean notForce) throws Exception
      {
  
        // retrieve current customization mediatype (stored in the user session object)
        HttpSession ses = rundata.getSession ();
  
        String mediaType = (String) ses.getAttribute ("customizeType");
        
        
        if ((mediaType != null) && (mediaType.equalsIgnoreCase ("wml")))
        {
          // WML Profil nicht laden, wenn bereits vorhanden!
          if (notForce)                
          {
            if (!((JetspeedRunData)rundata).getProfile().getMediaType 
().equalsIgnoreCase("wml"))
            {
              return loadProfile (rundata, "wml");
            }
          }
          // WML auf jeden Fall neu laden!
          else
              return loadProfile (rundata, "wml");
        }
        else
        if ((mediaType != null) && (mediaType.equalsIgnoreCase ("html")))
        {
          // HTML Profil nicht laden, wenn bereits vorhanden!
          if (notForce)                
          {
            if (!((JetspeedRunData)rundata).getProfile().getMediaType 
().equalsIgnoreCase("html"))
            {
              return loadProfile (rundata, "html");
            }
          }
          // HTML auf jeden Fall neu laden!
          else
              return loadProfile (rundata, "html");
        }
        
        return ((JetspeedRunData)rundata).getProfile();
      }
      
      
      // Create a list of all used portlets!
      // last modified: 10/31/01
      // Andreas Kempf, Siemens ICM S CP PE, Munich
      // ---------------------------------------------------------------------
      public static List getPortletList (RunData rundata)
      {
        Profile profile = ((JetspeedRunData)rundata).getProfile();
        Portlets allPortlets = 
profile.getDocument().getPortlets(((PortletSet)((JetspeedRunData)rundata).getCustomized()).getName());
  
        
        List installed = new ArrayList ();
        Entry iPortlet;
  
  
        if (allPortlets != null)
        {
          for (int ii = 0; ii < allPortlets.getEntryCount(); ii++) 
          {
            iPortlet = (Entry) allPortlets.getEntry (ii);
            installed.add (iPortlet);
          }
        }
        
        return installed;
      }
    
  }  
  
  

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

Reply via email to