Hello David: After took your suggestion, it allowed me to show/hide portlets OK. However, the problem is that I am unable to change any portlet to its edit mode or min/max state. The problem I think is that we are actually seeing the content of the clone page, which does not actually exist in the file system or database.
Please advise on this. Thank you, ---Yang >-----Original Message----- >From: David Sean Taylor [mailto:[EMAIL PROTECTED] >Sent: Monday, April 23, 2007 10:05 AM >To: Jetspeed Developers List >Subject: Re: Show or Hide portlets on a page dynamically > > > >On Apr 22, 2007, at 9:40 PM, Sie, Yang wrote: > >> Hello all: >> >> Please advise on what I am trying to achieve... >> >> On my psml, I have 5 portlets, one of them is the master one >> (portlet0), >> which contains two image buttons. Depends on which button I am >> clicking, >> I want to hide or show the first 2 portlets (i.e. Click button_1, I >> want >> portletA and portletB to show, portletC and portletD are hidden >> from the >> user. Click button_2, portletC and portletD are showing and >> portletA and >> portletB disappear). The master portlet portlet0 is always on the >> page. >> >> What came to my mind was to customize the aggregator to selectively >> render the portlets that I need. However, I hit some problems when >> doing >> so: > >The first thing that came to my mind is to use Javascript to hide the >portlets >You can get the DIV for each portlet from its window id: > ><div id="dp-7" class="portlet tigris"> > > >> From JetspeedRequestContext, I can get the current page, >then I try to >> 'remove' the unwanted portlets from the ContentFragment List >> depends on >> which button I click. Then the all the portlets remained on the >> page go >> to the render engine. > >Sounds like this could work too.... > >> >> What I wanted was that all five portlets should be available for >> evaluation each time a request is sent to server. This is not the >> case. >> The problem was that for those portlets been "removed", they were no >> longer available for next time evaluation. They are wiped >out from the >> cache or persistent store (i.e. I clicked the second button, >which was >> supposed to evaluate all five portlets again to see which ones to >> keep, >> but it did not happen (only portlets left from the first time click >> were >> available in the ContentPage object)). Close and re-start browser >> didn't >> make them come back. I am sure that no portlet was deleted from the >> psml >> (when I started Tomcat again, all five portlets were available again) >> and PSML page wasn't updated. >> >> The problem is that I was unable to find a way to refresh the page >> object to make it contain all five portlets each time I send a new >> request to server (i.e. after I navigate from the other page or click >> the second button). I tried to use pageManager to get the >page (psml) >> again and re-assign the page to JetspeedRequestContext. Did not work. >> The page that I got thru pageManager still didn't have all the >> portlets >> on it. >> >> What is the best suggestion to this issue. Please help... >> >> > >I would consider cloning the page in a new valve that you add in >after the profiler valve >This valve would do two things: > >1. clone the page by calling pageManager.copyPage(source, "/temp/ >temp.psml"); >2. wrapper the Page with a ContentPage contentPage >3. replace that page in the request Context by calling >requestContext.setPage(contentPage) > > > > > > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
