Introduction:
Liferay Important code snippets is some use full
code which we use in liferay development regularly this will help to the Liferay developers to use in development.
I just collected these code snippets from forums and
some snippets which I already developed one.
Get
Back URL of portlet
Write code in JSP page
| 
<%=themeDisplay.getPortletDisplay().getURLBack()%> | 
Download
file
Write code in portlet action class
| 
HttpServletResponse
  httpResponse = PortalUtil.getHttpServletResponse(resourceResponse); 
HttpServletRequest
  httpRequest = PortalUtil.getHttpServletRequest(resourceRequest); 
ServletResponseUtil.sendFile(httpRequest,httpResponse
  ,fileName, is,contentType); | 
Navigate JSP page from action URL
| 
Write
  code in JSP page 
<portlet:actionURL
  var="doBusinessLogicActionURL" windowState="normal"> 
<portlet:param
  name="<%=ActionRequest.ACTION_NAME%>"
  value="doBusinessLogic"/> 
</portlet:actionURL> 
or 
<portlet:actionURL
  name="doBusinessLogic" var="doBusinessLogicActionURL"
  windowState="normal"> 
<portlet:param
  name="<%=ActionRequest.ACTION_NAME%>"
  value="doBusinessLogic"/> 
</portlet:actionURL> 
<aui:a
  href="<%=doBusinessLogicActionURL%>">Previous</aui:a> 
Write
  following code in Portlet Action Class 
public
  class PortletAction extends MVCPortlet { 
            public void doBusinessLogic( 
                                    ActionRequest
  actionRequest, ActionResponse actionResponse) 
                        throws IOException,
  PortletException { 
                        //Write you all
  business Logic here  
                        System.out.println("====doBusinessLogic==="); 
                        actionResponse.setRenderParameter("mvcPath",
  "/html/hello.jsp"); 
               
  //actionResponse.setRenderParameter("jspPage",
  "/html/hello.jsp"); 
            } 
} | 
Get
selected values from select box using AUI Script
| 
<aui:select
  name="testSelect" id="testSelect" label ="Test
  Select"> 
            <aui:option
  selected="true" value="ALL">All</aui:option> 
            <aui:option 
  value="YES">Yes</aui:option> 
            <aui:option 
  value="NO">No</aui:option> 
</aui:select>      
<aui:script> 
AUI().use('aui-base',
  function(A){ 
A.one("#<portlet:namespace/>testSelect").on('change',function(){ 
var
  selectedValue = A.one('#<portlet:namespace/>testSelect').get('value'); 
 alert(selectedValue); 
}); 
}); 
</aui:script> | 
AUI
Click Function
| 
<aui:button
  name="clickMe" id="clickMe" value="Click
  Me"></aui:button>      
<aui:script> 
AUI().use('aui-base',
  function(A){ 
A.one("#<portlet:namespace/>testSelect").on('clcik',function(){ 
 alert("This click Event from
  AUI"); 
}); 
}); 
</aui:script> | 
Get
My Account and Control panel URL for User
| 
themeDisplay.getURLControlPanel(); 
themeDisplay.getURLMyAccount(); | 
Open
window
| 
function
  <portlet:namespace />openFileEntryTypeSelector() { 
Liferay.Util.openWindow( 
                                    { 
                                 dialog: { 
                                    width: 680 
                                                }, 
            id: '<portlet:namespace
  />fileEntryTypeSeclector', 
            title: '<%=
  UnicodeLanguageUtil.get(pageContext, "document-types") %>', 
            uri: '<portlet:renderURL
  windowState="<%= LiferayWindowState.POP_UP.toString()
  %>"><portlet:param name="struts_action"  
value="/document_library/select_file_entry_type"
  /><portlet:param name="groupId" value="<%=
  String.valueOf(scopeGroupId) %>" /><portlet:param  
name="includeBasicFileEntryType"
  value="1" /></portlet:renderURL>' 
}); 
} | 
Create
AUI reference
| 
var
  A = AUI(); | 
Load
AUI script Using Script Tag
| 
<aui:script
  use="aui-dialog,aui-swf"> 
</aui:script> | 
AUI
Video Player
| 
<aui:script
  use="aui-base,aui-video"> 
            new A.Video( 
            { 
            contentBox:
  '#<portlet:namespace />previewFileContent', 
            fixedAttributes: { 
            allowfullscreen: 'true', 
            bgColor: '#000000', 
            wmode: 'opaque' 
            }, 
<c:if
  test="<%= Validator.isNotNull(ogvPreviewFileURL) %>"> 
ogvUrl:
  '<%= ogvPreviewFileURL %>', 
</c:if> 
poster:
  '<%= videoThumbnailURL %>' 
<c:if
  test="<%= Validator.isNotNull(mp4PreviewFileURL) %>"> 
,
  url: '<%= mp4PreviewFileURL %>' 
</c:if> 
}).render(); 
</aui:script> | 
AUI
Audio Player
| 
<aui:script
  use="aui-audio,swfdetect"> 
var
  audio = new A.Audio( 
{ 
contentBox:
  '#<portlet:namespace />previewFileContent', 
fixedAttributes:
  { 
allowfullscreen:
  'true', 
wmode:
  'opaque' 
} 
<c:if
  test="<%= Validator.isNotNull(mp3PreviewFileURL) %>"> 
,
  url: '<%= mp3PreviewFileURL %>' 
</c:if> 
}); 
<c:if
  test="<%= Validator.isNotNull(oggPreviewFileURL) %>"> 
if
  (!A.UA.gecko || !A.SWFDetect.isFlashVersionAtLeast(9)) { 
audio.set('oggUrl',
  '<%= oggPreviewFileURL %>'); 
} 
</c:if>audio.render(); 
</aui:script> | 
Liferay
Provide function  declaration 
| 
<%String
  taglibUrl = "javascript:" + renderResponse.getNamespace() + "sortEntries('"
  + folderId + "', 'title','" + reverseOrderByType + "')"; 
            %> 
<liferay-ui:icon
  message="title" url="<%= taglibUrl %>"/> 
<aui:script> 
            Liferay.provide( 
                        window, 
                        '<portlet:namespace
  />sortEntries', 
                        function(folderId,
  orderByCol, reverseOrderByType) { 
                                    //script
  here 
                        }, 
                        ['aui-base'] 
            ); 
</aui:script> | 
Add
file entry
| 
File
  file=uploadPortletRequest.getFile("file") 
ThemeDisplay
  themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); 
ServiceContext
  serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), actionRequest); 
String
  contentType = uploadPortletRequest.getContentType("file"); 
String
  changeLog = ParamUtil.getString(actionRequest, "changeLog"); 
fileEntry
  = DLAppLocalServiceUtil.addFileEntry(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(),0,"myfileNem",contentType,"myFileTitle","my file description",changeLog,file, serviceContext); | 
Download
file Link
| 
FileEntry
  fileEntry=DLAPPLocalServiceUtil.getfileEntryId(fileEntryId); 
<div> 
<liferay-ui:icon 
image="download" 
label="<%=
  true %>" 
message='<%=
  LanguageUtil.get(pageContext, "download") + " (" +
  TextFormatter.formatKB(fileEntry.getFileVersion().getSize(), locale) +
  "k)" %>' 
url="<%=
  DLUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(),  
themeDisplay,
  StringPool.BLANK) %>" 
/> 
</div> | 
Display Article through AUI Script
| 
<a
  href="#" onclick="Liferay.Journal.display(this,
  '13310');return false;" >WebContentB</a> 
AUI().use('event',
  'node', function(A) { 
     (function() { 
         Liferay.Journal = { 
             getPortlet : function(elt) { 
                 var nodeObject = A.one(elt); 
                 return
  nodeObject.ancestor('.portlet-boundary'); 
             }, 
           display : function(elt, articleId)
  { 
                var portletNode =
  Liferay.Journal.getPortlet(elt); 
                var portletId =
  portletNode.portletId; 
                var renderURL =
  Liferay.PortletURL.createRenderURL(); 
              
  renderURL.setParameter("articleId", articleId); 
               
  renderURL.setPortletId(portletId); 
               
  renderURL.setPortletMode("view"); 
                renderURL.setWindowState("normal"); 
               
  //alert(renderURL.toString()); 
                window.location =
  renderURL.toString(); 
            } 
        }; 
    })(); 
}); 
Ref:
   | 
AUI
Auto Complete list
| 
JSP PAGE 
<portlet:resourceURL
  var="getPlaces"> 
            <portlet:param
  name="<%=Constants.CMD%>" value="get_places" /> 
</portlet:resourceURL> 
<aui:input
  id="myInputNode" name="myInputNode"
  label="Place" 
            helpMessage="Type Some text
  in Input" /> 
<aui:script> 
AUI().use('autocomplete-list','aui-base','aui-io-request','autocomplete-filters','autocomplete-highlighters',function
  (A) { 
A.io.request('<%=getPlaces%>',{ 
dataType:
  'json', 
method:
  'GET', 
on:
  { 
success:
  function() { 
new
  A.AutoCompleteList( 
{ 
allowBrowserAutocomplete:
  'true', 
activateFirstItem:
  'true', 
inputNode:
  '#<portlet:namespace />myInputNode', 
resultTextLocator:
  'name', 
render:
  'true', 
resultHighlighter:
  'phraseMatch', 
resultFilters:['phraseMatch'], 
source:this.get('responseData'), 
}) 
}} 
}); 
}); 
</aui:script> 
===========
  portlet class====== 
@Override 
             public void serveResource(ResourceRequest
  resourceRequest, ResourceResponse resourceResponse) throws IOException,
  PortletException { 
              
  String cmd = ParamUtil.getString(resourceRequest, Constants.CMD); 
             
  System.out.println("Constants.CMD: " + cmd); 
             
  if (cmd.equals("get_places")) { 
               
  getPlaceJson(resourceRequest, resourceResponse); 
             
  }if (cmd.equals("get_users")) { 
                            getUsers(resourceRequest,
  resourceResponse); 
                          } 
            } 
            private void
  getPlaceJson(ResourceRequest resourceRequest, ResourceResponse
  resourceResponse) throws IOException, PortletException { 
             
  JSONArray jsonResults = JSONFactoryUtil.createJSONArray(); 
             
  try { 
               
  String keyword = ParamUtil.getString(resourceRequest,
  "keywords"); 
               
  String searchPattern = keyword.replace("*", "%"); 
               
  System.out.println("Keywords: " + searchPattern); 
               
  JSONObject jsonCells = JSONFactoryUtil.createJSONObject(); 
               
  jsonCells.put("key", "1"); 
               
  jsonCells.put("name", "New York, USA"); 
               
  jsonResults.put(jsonCells); 
               
  jsonCells = JSONFactoryUtil.createJSONObject(); 
               
  jsonCells.put("key", "2"); 
               
  jsonCells.put("name", "Delhi, India"); 
               
  jsonResults.put(jsonCells); 
               
  jsonCells = JSONFactoryUtil.createJSONObject(); 
               
  jsonCells.put("key", "3"); 
               
  jsonCells.put("name", "Hyderabad, India"); 
               
  jsonResults.put(jsonCells); 
             
  } catch (Exception e) {         
             
  } 
             
  PrintWriter out=resourceResponse.getWriter(); 
           out.println(jsonResults.toString()); 
            } | 
Load
other portlet Class and Other portlet Resource in Current Portlet
| 
String
  portletId="autocompletelistaction_WAR_AUIAutoCompleteListportlet"; 
<%=PortletClassLoaderUtil.getClassLoader(portletId).getResource ("log4j.properties").toString()%> | 
Load
specific portlet class loader using Portlet Bean Locator
| 
ClassLoader
  classLoader = (ClassLoader)
  PortletBeanLocatorUtil.locate(ClpSerializer.getServletContextName(),
  "portletClassLoader"); 
DynamicQuery
  dynamicQuery = DynamicQueryFactoryUtil.forClass(CSLStudyVersion.class,
  classLoader); | 
Portlet
class loader
| 
DynamicQuery
  dynamicQuery = DynamicQueryFactoryUtil.forClass(CSLStudyVersion.class, PortletClassLoaderUtil.getClassLoader()); | 
Portal
Class Loader
| 
DynamicQuery
  dynamicQuery = DynamicQueryFactoryUtil.forClass(User.class,
  PortalClassLoaderUtil.getClassLoader()); | 
Set
Content to Ckeditor 
| 
<% 
String
  articleId=ParamUtil.getString(renderRequest,"articleId"); 
String
  artcileContent=""; 
JournalArticle
  article=null; 
if(articleId!=null&&!articleId.isEmpty()){ 
 article =
  JournalArticleLocalServiceUtil.getArticle(groupId, articleId);        
 JournalArticleDisplay articleDisplay =  JournalContentUtil.getDisplay
  (article.getGroupId(),
  article.getArticleId(),"",defaultLanguageId,themeDisplay); 
 artcileContent =
  articleDisplay.getContent(); 
}%> 
<aui:input
  name="artcileContent" id="artcileContent"
  type="hidden" value="<%=artcileContent%>" /> 
<liferay-ui:input-editor
  ></liferay-ui:input-editor> 
<aui:script> 
var
  A = AUI(); 
  function <portlet:namespace
  />initEditor() { 
  var content=A.one('#<portlet:namespace
  />artcileContent').get("value"); 
        return content; 
    } 
} 
</aui:script> | 
Get
request parameters in velocity in liferay
| 
Example
  URL: 
http://localhost:8080/web/guest?isLoginPanelOpen=yes 
Write
  following code in velocity files/templates 
#set
  ($serviceContext = $portal.getClass().forName ("com.liferay.portal.service.ServiceContextThreadLocal").getServiceContext()) 
#set
  ($httpServletRequest = $serviceContext.getRequest()) 
#set($isLoginPanelOpen=$paramUtil.getString($httpServletRequest, 'isLoginPanelOpen')) | 
Load
Potlet in Div
| 
<div
  id="loginBoxDiv" ></div> 
<aui:script> 
AUI().use('aui-base','aui-node','aui-io-request','aui-io','liferay-portlet-url',
  function(A) { 
var
  url =Liferay.PortletURL.createRenderURL();   
   
url.setPortletId('signinaction_WAR_WatsonSiginInportlet');   
url.setWindowState('pop_up');
   
var
  myAjaxRequest=A.io.request(url.toString(), { 
   dataType: 'html', 
   autoLoad: false, 
    on: { 
    success: function() { 
  
  document.getElementById("login-portlet-content").innerHTML=this.get('responseData'); 
  
  //A.one('#loginBoxDiv').set('innerHTML',this.get('responseData')); 
     }} 
 }); 
    //myAjaxRequest.set('cache', false); 
      myAjaxRequest.start();              
}); 
</aui:script> | 
AUI Animation Example
| 
<div
  class="righ-header-search" id="righ-header-search"> 
<div
  class="searchBtn"> 
<a
  href="#"><img
  src="$images_folder/watson/common/btn-search.png"></a> 
</div> 
<div
  class="searchinput" id="searchinput" style="width:
  1px;"><input type="text" value=""
  placeholder="enter keywords"></div> 
</div> 
//anim 
AUI().use('aui-base','aui-node','aui-io',
  'aui-event','anim', function (A) { 
            //search box animataion 
                        var a = new A.Anim( 
                                                              { 
                                                                node: '#searchinput', 
                                                                duration: 0.1, 
                                                                easing: A.Easing.bounceOut 
                                                              }); 
                        //alert(a);                    
                        A.one('#righ-header-search').on('mouseenter',
  function(event){ 
                                    //A.one('.searchinput1').width(1); 
                                     var toArrat={width:300,opacity: 0.5}; 
                                     a.set("to",toArrat); 
                                     a.run(); 
                                    //
  b.stop(); 
                        });                                            
            A.one('#righ-header-search').on('mouseleave',
  function(event){ 
                                    var
  toArrat1={width:1,opacity: 0.5}; 
                                     a.set("to",toArrat1); 
                                    a.run(); 
                                    //
  b.destroy(); 
                        });        
            A.one('#searchBtn').on('click',
  function(event){ 
                        document.themeSearchForm.submit(); 
                        });                    
  }); | 
Dynamic
Query In operator
| 
String[]
  centerTypesArray = { "Leaderboard", "LearningCentre",
  "CSRCentre", "SocialCentre",
  "CommunicationCentre" , "PolicyCentre" , "Idea
  Centre" ,  
"AppreciationCentre"
  ,"Public Page"}; 
Dynamic
  Query
  activityQuery=DynamicQueryFactoryUtil.forClass(ActivityData.class,(ClassLoader)PortletBeanLocatorUtil.locate(ClpSerializer.getServletContextName(), "portletClassLoader")) 
.add(RestrictionsFactoryUtil.between("publicationliveDate",
  actdate,curdate)) 
.add(PropertyFactoryUtil.forName("centretype").in(centerTypesArray)) 
.addOrder(OrderFactoryUtil.desc("publicationliveDate")); | 
Reset
Encryption Key for company
| 
You
  can reset the company key by 
removing
  it from DB and restarting portal 
 or executing following Groovy script from  
Go
  to control panel click on server administration and click on script tab there
  you can find Groovy Console 
import
  com.liferay.portal.kernel.util.Base64; 
import
  com.liferay.portal.service.CompanyLocalServiceUtil; 
import
  com.liferay.portal.util.PortalUtil; 
import
  com.liferay.util.Encryptor; 
company
  = CompanyLocalServiceUtil.getCompanyById(PortalUtil.getDefaultCompanyId()); 
company.setKey(Base64.objectToString(Encryptor.generateKey())); 
CompanyLocalServiceUtil.updateCompany(company); | 
Wrap
action request with dynamic action request
| 
public
  void processAction(StrutsPortletAction originalStrutsPortletAction, 
             PortletConfig portletConfig,
  ActionRequest actionRequest, 
          ActionResponse actionResponse)
  throws Exception { 
        String login =
  ParamUtil.getString(actionRequest, "login"); 
      DynamicActionRequest actionRequestNew =
  new DynamicActionRequest(actionRequest); 
       
  actionRequestNew.setParameter("login", login +
  "++"); 
      
  originalStrutsPortletAction.processAction(originalStrutsPortletAction, 
                portletConfig,
  actionRequestNew, actionResponse); 
    } | 
Embed
portlet in theme using velocity code
Write following code in velocity files
| 
<div
  class="righ-header-weather"> 
#set
  ($locPortletId = "weatheraction_WAR_StockCurrencyWeatherNewsportlet") 
#set
  ($portletPreferencesFactoryUtil =
  $portal.getClass().forName("com.liferay.portlet.PortletPreferencesFactoryUtil")) 
#set
  ($portletSetup =
  $portletPreferencesFactoryUtil.getLayoutPortletSetup($layout, $locPortletId)) 
#if
  ($portletSetup.getValue("portletSetupShowBorders", "") !=
  "false") 
#set
  ($temp = $portletSetup.setValue("portletSetupShowBorders",
  "false")) 
#set
  ($temp = $portletSetup.store()) 
#end 
#set
  ($embeddedPortletURL = $portletURLFactory.create($request, $locPortletId,
  $layout.plid, "RENDER_PHASE")) 
#set
  ($VOID = $embeddedPortletURL.setWindowState("pop_up")) 
#set
  ($VOID = $embeddedPortletURL.setPortletMode("view")) 
<iframe
  frameborder="0" id="${locPortletId}custom_frame"
  src="${embeddedPortletURL.toString()}" scrolling="no"
  width="120px" height="43px"></iframe> 
</div> | 
OR
| 
#set
  ($locPortletId = "82") 
## 
##
  Portlet Setup  
##
   
##
  This is for look and feel only. In case of instanceable portlets this  
##
  is the same as the PortletPreferences. 
## 
##
  If you want the PortletPreferences for a non-instancable portlet,  
##
  you'll have to make a different call. 
## 
#set
  ($portletPreferencesFactoryUtil =
  $portal.getClass().forName("com.liferay.portlet.PortletPreferencesFactoryUtil")) 
#set
  ($portletSetup = $portletPreferencesFactoryUtil.getLayoutPortletSetup($layout,
  $locPortletId)) 
#if
  ($portletSetup.getValue("portletSetupShowBorders", "") !=
  "false") 
            #set ($temp =
  $portletSetup.setValue("portletSetupShowBorders",
  "false")) 
            #set ($temp = $portletSetup.store()) 
#end 
## 
##
  Create the portletURL 
##
   
#set
  ($embeddedPortletURL = $portletURLFactory.create($request, $locPortletId,
  $layout.plid, "RENDER_PHASE")) 
##
  Make sure it's in popup mode, otherwise it doesn't embed nicely. 
#set
  ($VOID = $embeddedPortletURL.setWindowState("pop_up")) 
#set
  ($VOID = $embeddedPortletURL.setPortletMode("view")) 
##
  You can set parameters if you like 
##set
  ($VOID = $embeddedPortletURL.setParameter("some_parameter",
  "some_value")) 
##
  The iframe. You'll have to set the width of the iframe. 
<iframe
  frameborder="0" id="${locPortletId}custom_frame"
  src="${embeddedPortletURL.toString()}" scrolling="no"
  width="50%"></iframe> 
##
  This is the nifty plugin that will proportion the iframe automatically with
  the height of the content. 
##
  This only works if the portlet is in the same domain as the portal of course. 
<script
  type="text/javascript"> 
            AUI().use('aui-resize-iframe',
  function(A) { 
                        A.one('#${locPortletId}custom_frame').plug(A.Plugin.ResizeIframe); 
            }); 
</script> | 
Embed
portlet in HTML div 
| 
var
  url =Liferay.PortletURL.createRenderURL();   
   
            url.setPortletId('signinaction_WAR_WatsonSiginInportlet');   
    url.setWindowState('pop_up');  
    var
  myAjaxRequest=A.io.request(url.toString(), { 
              dataType: 'html', 
              autoLoad: false, 
              on: { 
               success: function() { 
                //
  A.one('#testestDiv').set('innerHTML',"meera"); 
                 document.getElementById("login-portlet-content").innerHTML=this.get('responseData'); 
                 //A.one('#loginBoxDiv').set('innerHTML',this.get('responseData')); 
               } }}); 
myAjaxRequest.start(); | 
Embed
portlet in Journal Article
| 
<div
  id="embedded-welcome-portlet"> 
  <runtime-portlet name="47"
  instance="4433" queryString=""/> 
</div> 
Ref: | 
Author
 
 
 
 Posts
Posts
 
 
