Foren

Adding portlet programmatically Issue

saumil nitin baxi, geändert vor 16 Jahren.

Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Hi,
Below is the code..

public void handleActionRequestInternal(ActionRequest request, ActionResponse response) throws Exception {

themeDisplay.getLayoutTypePortlet().addPortletId(themeDisplay.getUserId (),portletID);

}

I am getting Portlet ID by my own logic.
The issue here is these portlets gets added on the page and is seen there but when i refresh this page those portlets gets vanished..

Can any please tell me where i am going wrong OR any other method to add portlet from another portlet or action..

Thanks,
Saumil
saumil nitin baxi, geändert vor 16 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Guys please reply !!!!!!!
thumbnail
Arcko Duan, geändert vor 16 Jahren.

RE: Adding portlet programmatically Issue

Regular Member Beiträge: 234 Beitrittsdatum: 01.01.08 Neueste Beiträge
LayoutServiceUtil.updateLayout
saumil nitin baxi, geändert vor 16 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Thanks fot the reply..

Can you please elobrate a bit..


Beacuse i went through LayoutServiceUtil.updateLayout but could not make what to do next..


com.liferay.portal.model.Layout updateLayout(long groupId,
boolean privateLayout, long layoutId, long parentLayoutId,
java.util.Map localeNamesMap, java.util.Map localeTitlesMap,
java.lang.String description, java.lang.String type, boolean hidden,
java.lang.String friendlyURL)


Below code i have written to add a portlet..

ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(com.liferay.portal.kernel.util.WebKeys.THEME_DISPLAY);

themeDisplay.getLayoutTypePortlet().addPortletIds(themeDisplay.getUserId(),portletID,true);


So i am not able to figure it out the connection between the two..

Thanks,
Saumil
saumil nitin baxi, geändert vor 16 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Any Updates?????
saumil nitin baxi, geändert vor 16 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Guys please Help its urgent!!!!!!!!!!!!
thumbnail
Abhijit Y Gurav, geändert vor 16 Jahren.

RE: Adding portlet programmatically Issue

Regular Member Beiträge: 155 Beitrittsdatum: 09.08.06 Neueste Beiträge
Hi,

May be following code can help you.I done this way and working fine.



LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet)layout.getLayoutType();
		
		layoutTypePortlet.setLayoutTemplateId(longUserId,layoutTemplateId);

		
		for (int i = 0; i < 10; i++)
		{
			String columnId = "column-" + i;
			
			//String[] portletIdsArray = StringUtil.split(portletIds);

			layoutTypePortlet.addPortletIds(
					0, portletsArray, columnId, false);
		}

		LayoutLocalServiceUtil.updateLayout(
				layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
				layout.getTypeSettings());





Regards,
Abhijit Gurav
saumil nitin baxi, geändert vor 15 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Thanks a lot.. emoticon
saumil nitin baxi, geändert vor 15 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Guys got a way to add a portlet using javascript. Might help you


First get the ThemeDisplay Object and Layout object in your jsp

<% ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(com.liferay.portal.kernel.util.WebKeys.THEME_DISPLAY);
 Layout layout = themeDisplay.getLayout(); %>


Then Just add this lines in your javascript

var plid = <%= layout.getPlid() %> ;		
addPortlet(plid,portletId,"","");


Hope this will Help you emoticon

Thanks,
Saumil
Thommy M., geändert vor 15 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 34 Beitrittsdatum: 30.07.08 Neueste Beiträge
i´m interesting in this issue... can you give me a functional example?

i would like to add a portlet by clicking a link...

thx
saumil nitin baxi, geändert vor 15 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 31 Beitrittsdatum: 07.04.08 Neueste Beiträge
Thommy M.:
i´m interesting in this issue... can you give me a functional example?

i would like to add a portlet by clicking a link...

thx


Lets say you want to add analog portlet . Its portlet Id is 65 .

On click of your link just call this javascript function

 


function add(){
<% ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(com.liferay.portal.kernel.util.WebKeys.THEME_DISPLAY);
	 Layout layout = themeDisplay.getLayout();
%>

var plid = <%= layout.getPlid() %> ;
addPortlet(plid,"65","","");
}



addPortlet is the liferay provided javascript to all the portlet .
Jarnis Bertelsen, geändert vor 14 Jahren.

RE: Adding portlet programmatically Issue

New Member Beiträge: 4 Beitrittsdatum: 06.10.09 Neueste Beiträge
I'm trying to use your solution, but I get a javascript error saying "addPortlet is not defined" emoticon

The code is the exact same as the one posted above (copy-paste)

I'm using Liferay 5.2.2. Has anyone successfully used this solution with recent versions of Liferay?

Thanks in advance,
Jarnis
thumbnail
Amit Singh, geändert vor 13 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 71 Beitrittsdatum: 12.10.10 Neueste Beiträge
Hi nitin,

i tried your code but getting javascript error.
"addPortlet is not defined."
i am using liferay6.0.4. Let me know, if am doing anything wrong or i have to add some extra file also. please explain me.

Thanks.
thumbnail
Amit Singh, geändert vor 13 Jahren.

RE: Adding portlet programmatically Issue

Junior Member Beiträge: 71 Beitrittsdatum: 12.10.10 Neueste Beiträge
Hi Friends,

I got the solution to add portlet programmatically. Use below code.
<script>
function add(){

var plid = themeDisplay.getPlid();

var portletId = '70';

var onComplete = null;

var beforePortletLoaded = null;

var portletOptions = {

beforePortletLoaded: beforePortletLoaded,

onComplete: onComplete,

plid: plid,

portletId: portletId,

};

Liferay.Portlet.add(portletOptions);

}
</script>
<a href="#" onclick="add()">Add Library Portlet</a>
Mike Neurohr, geändert vor 14 Jahren.

RE: Adding portlet programmatically Issue

New Member Beiträge: 2 Beitrittsdatum: 28.10.09 Neueste Beiträge
Abhijit Y Gurav:
Hi,

May be following code can help you.I done this way and working fine.



LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet)layout.getLayoutType();
		
		layoutTypePortlet.setLayoutTemplateId(longUserId,layoutTemplateId);

		
		for (int i = 0; i &lt; 10; i++)
		{
			String columnId = "column-" + i;
			
			//String[] portletIdsArray = StringUtil.split(portletIds);

			layoutTypePortlet.addPortletIds(
					0, portletsArray, columnId, false);
		}

		LayoutLocalServiceUtil.updateLayout(
				layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
				layout.getTypeSettings());





Regards,
Abhijit Gurav


What is "layout" in your code and where did you get it?