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
0 comments :
Post a Comment