Showing posts with label template. Show all posts
Showing posts with label template. Show all posts

Wednesday, December 3, 2014

Create site programmatically in Liferay


Create site programmatically in Liferay



This code does creates a site and adds site template to it...

1. It will reaad site name from portal-ext.properties file
2. It will get the site template already created from browser and then add this template to our newly created site.
3. It will get logo from the class path -WEB-INF/mylogo.png
4. It will place logo to our site..


@Override
public void doView(RenderRequest renderRequest,
RenderResponse renderResponse) throws IOException, PortletException {
System.out.println("view calling");

String customSiteName = PropsUtil.get("custom.site.name");
System.out.println("site name == "+customSiteName);

int publicLayoutSetPrototypeId = 0;
int privateLayoutSetPrototypeId =0;

try {
ServiceContext serviceContext =  ServiceContextFactory.getInstance(Group.class.getName(), renderRequest);

Group grp = null;
try {
grp = GroupServiceUtil.getGroup(serviceContext.getThemeDisplay().getCompanyId(), customSiteName);
} catch (Exception e) {

}

if(grp == null){

System.out.println("group created");
grp = GroupServiceUtil.addGroup(GroupConstants.DEFAULT_PARENT_GROUP_ID, GroupConstants.DEFAULT_LIVE_GROUP_ID, customSiteName, customSiteName+"description", GroupConstants.TYPE_SITE_OPEN,
true, GroupConstants.DEFAULT_MEMBERSHIP_RESTRICTION,
"/"+customSiteName, true, true, serviceContext);
}

System.out.println("site created.."+grp.getName());



List<LayoutSetPrototype> layoutSetPrototypes=LayoutSetPrototypeServiceUtil.search(serviceContext.getThemeDisplay().getCompanyId(),Boolean.TRUE, null);

for(LayoutSetPrototype layoutSetPrototype : layoutSetPrototypes){

if(layoutSetPrototype.getName("").equals("mysitetemplate")){

publicLayoutSetPrototypeId = (int) layoutSetPrototype.getLayoutSetPrototypeId();
System.out.println("public pages template id :"+publicLayoutSetPrototypeId);
}
if(layoutSetPrototype.getName("").equals("mysitetemplate2")){

privateLayoutSetPrototypeId = (int) layoutSetPrototype.getLayoutSetPrototypeId();
System.out.println("private pages template ID : "+privateLayoutSetPrototypeId);
}
}



MethodKey methodKey  = new MethodKey(SitesUtil.class, "updateLayoutSetPrototypesLinks",Group.class,long.class, long.class,boolean.class,boolean.class);
PortalClassInvoker.invoke(true, methodKey, grp, publicLayoutSetPrototypeId, privateLayoutSetPrototypeId,true,true);

LayoutSet layoutSet = LayoutSetLocalServiceUtil.getLayoutSet(grp.getGroupId(), true);

MethodKey _mergeLayoutSetPrototypeLayoutsMethodKey  = new MethodKey(SitesUtil.class,"mergeLayoutSetPrototypeLayouts",Group.class,LayoutSet.class);

PortalClassInvoker.invoke(true,_mergeLayoutSetPrototypeLayoutsMethodKey,grp, layoutSet);

System.out.println("suuccess");

java.io.File file = new java.io.File(getPortletContext().getRealPath("/WEB-INF/mylogo.png"));

LayoutSetServiceUtil.updateLogo(grp.getGroupId(), false, true, file);




} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}


super.doView(renderRequest, renderResponse);
}

Adding tags programatically after blog entry added in Blogs portlet

Adding tags programatically after blog entry added in Blogs portlet


1. create a hook and add portal properties.
2. In portal properties write the portall property as given below:
value.object.listener.com.liferay.portlet.blogs.model.BlogsEntry=com.test.liferay.portlet.blogs.NewBlogEntryListener
    we are doing for  blog content , so we need to create listener for BlogsEntry model.

3. create the above class -NewBlogEntryListener in the package as mentioned above:
4. Write the code below:


NewBlogEntryListener.java
-------------------------------------- (The below code is for creating tags  and also for sending mail when a blog entry created)

package com.test.liferay.portlet.blogs;

import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.PrefsPropsUtil;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.model.ModelListener;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.util.SubscriptionSender;
import com.liferay.portlet.asset.service.AssetTagLocalServiceUtil;
import com.liferay.portlet.blogs.model.BlogsEntry;
import com.liferay.portlet.blogs.service.BlogsEntryLocalServiceUtil;
import com.liferay.util.PwdGenerator;

public class NewBlogEntryListener implements ModelListener<BlogsEntry> {

@Override
public void onAfterAddAssociation(Object arg0, String arg1, Object arg2)
throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onAfterCreate(BlogsEntry entry) throws ModelListenerException {
System.out.println("after create method calling");

String fromName = null;
String fromAddress = null;
String toName = null;
String toAddress = null;
String subject = null;
try {
fromName = PrefsPropsUtil.getString(
entry.getCompanyId(), PropsKeys.ADMIN_EMAIL_FROM_NAME);
fromAddress = PrefsPropsUtil.getString(
entry.getCompanyId(), PropsKeys.ADMIN_EMAIL_FROM_ADDRESS);

toName = entry.getUserName();
//toAddress = PortalUtil.getUserEmailAddress(entry.getUserId());
toAddress ="nagadevi.nimmagadda@igate.com";

subject = PrefsPropsUtil.getContent(
entry.getCompanyId(), PropsKeys.ADMIN_EMAIL_USER_ADDED_SUBJECT);
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String body = "sample mail code";

System.out.println("fromName"+fromName);
System.out.println("fromAddress"+fromAddress);
System.out.println("toName"+toName);
System.out.println("toAddress"+toAddress);
System.out.println("subject"+subject);
SubscriptionSender subscriptionSender = new SubscriptionSender();

subscriptionSender.setBody(body);
subscriptionSender.setCompanyId(entry.getCompanyId());
subscriptionSender.setContextAttributes(
"[$USER_ID$]", entry.getUserId(), 
"[$USER_SCREENNAME$]",entry.getUserName());
subscriptionSender.setFrom(fromAddress, fromName);
subscriptionSender.setHtmlFormat(true);
subscriptionSender.setMailId(
"user", entry.getUserId(), System.currentTimeMillis(),
PwdGenerator.getPassword());
//subscriptionSender.setServiceContext(PortalUtil.getuser);
subscriptionSender.setSubject(subject);
subscriptionSender.setUserId(entry.getUserId());

//subscriptionSender.addRuntimeSubscribers(toAddress, toName);

//subscriptionSender.flushNotificationsAsync();
System.out.println("mail sent successfully");
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(entry.getCompanyId());
try {
AssetTagLocalServiceUtil.addTag(entry.getUserId(), "tag1", null, serviceContext);
AssetTagLocalServiceUtil.addTag(entry.getUserId(), "tag2", null, serviceContext);
String[] assetTagNames = new String[]{"tag1","tag2"};
System.out.println("tag names are :"+assetTagNames.toString());
long[] assetLinkEntryIds = AssetTagLocalServiceUtil.getTagIds(entry.getGroupId(), assetTagNames);
System.out.println("asset link entry ids :"+assetLinkEntryIds.toString());
BlogsEntryLocalServiceUtil.updateAsset(entry.getUserId(), entry, null, assetTagNames, assetLinkEntryIds);
System.out.println("tag added successfully");
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
public void onAfterRemove(BlogsEntry arg0) throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onAfterRemoveAssociation(Object arg0, String arg1, Object arg2)
throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onAfterUpdate(BlogsEntry arg0) throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onBeforeAddAssociation(Object arg0, String arg1, Object arg2)
throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onBeforeCreate(BlogsEntry arg0) throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onBeforeRemove(BlogsEntry arg0) throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onBeforeRemoveAssociation(Object arg0, String arg1, Object arg2)
throws ModelListenerException {
// TODO Auto-generated method stub
}

@Override
public void onBeforeUpdate(BlogsEntry arg0) throws ModelListenerException {
// TODO Auto-generated method stub
}

}