Sei sulla pagina 1di 7

Building jQuery based plugins in Liferay 6 - Blog - Liferay.

com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Idioma

Registrar

Entrar

Recent Bloggers
Jonas Yuan 50 Mensagens 31 de Dezembro de 2011

Building jQuery based plugins in Liferay 6


7 de Julho de 2010 Por Jonas Yuan

Voltar

jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. Refer to http://jquery.com/ Liferay portal 6 uses Alloy UI instead of jQuery, which means YUI3 (http://developer.yahoo.com/yui/3/) is included as core part, and

Igor Beslic 1 Mensagens

jQuery is not included as core part anymore. Ideally you can use whatever version of jQuery you need for your custom developments, refering to the blog post Can I have different jQuery versions in Liferay? and ticket LPS-10872. This article will introduce how to build jQuery based plugins in Liferay 6. Hope that this article would be helpful to upgrade custom

30 de Dezembro de 2011

portlets from 5.1.x or 5.2.x to 6.x.

Ronald Sarayudej 136 Mensagens 28 de Dezembro de 2011

Build jQuery based plugins


Here I use Liferay 6.0.3 GA (revision 57559) and plugins SDK. Build a project called sample-jquery-portlet with folder docroot and build.xml Add CSS under the folder /docroot/css Add images under the folder /docroot/css Add jquery under the folder /docroot/js Add liferay-display.xml, liferay-plugin-package.properties, liferay-portlet.xml, portlet.xml under the folder /docroot/WEB-INF Especially, add following lines, for example, in the file liferay-portlet.xml. <portlet> <portlet-name>1</portlet-name> <icon>/images/world.png</icon> <header-portlet-css>/css/style.css</header-portlet-css> <header-portlet-javascript>/js/jquery.js</header-portlet-javascript> <footer-portlet-javascript>/js/jquery-ui-custom.js</footer-portlet-javascript> <css-class-wrapper>sample-jquery-portlet</css-class-wrapper> </portlet>

Zhao Jin 1 Mensagens 23 de Dezembro de 2011

Aaron Delani 9 Mensagens 22 de Dezembro de 2011

James Falkner 37 Mensagens 21 de Dezembro de 2011

Note that the property header-portal-javascript sets the path of JavaScript that will be referenced in the page's header relative to the portal's context path; and the property footer-portal-javascript sets the path of JavaScript that will be referenced in the page's footer relative to the portal's context path. Add JSP files under the folder /docroot/jsp.

Alice Cheng 187 Mensagens 20 de Dezembro de 2011

Note that you may include addition JavaScript at JSP file like <script type='text/javascript' src='js/jquery_1.4.2.js'></script>

Sample Screenshots
Testing environment: Liferay portal 6.0.2.and 6.0 GA (6.0.3 - revision 57559)

Olaf Kock A few jQuery examples: 26 Mensagens Fade in 17 de Dezembro de 2011

Gregory Amerson 13 Mensagens 14 de Dezembro de 2011

Miguel Pastor Olivar 3 Mensagens 13 de Dezembro de 2011

Animate

1 de 7

04-01-2012 10:34

Building jQuery based plugins in Liferay 6 - Blog - Liferay.com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Fade out

Do it yourself
You can download the WAR with source code at: sample-jquery-portlet-6.0.2.1.war and drop it to $PORTAL_HOME/deploy or use UI "Plugins Installation" under Control Panel. For more details, you may refer to the book Liferay Portal 6 Enterprise Intranets. If you want to use different jQuery version other than 1.4.2, you can go to the folder ${sample.jquery.portlet.war}/js and update jquery.js with expected version.

Migration
Supposed that you have custom portlets heavily using jQuery in 5.1 or 5.2, now you are planning to migrate to 6.x. You can simply add different version of jQuery jquery.js in portlet specification liferay-portlet.xml as follows. <header-portlet-css>/css/style.css</header-portlet-css> <header-portlet-javascript>/js/jquery.js</header-portlet-javascript> <footer-portlet-javascript>/js/jquery-ui-custom.js</footer-portlet-javascript> That's it. It is simple, isn't it? your comments? URL de trackback: http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/trackback/building-jquery-based
Tweet 0 Curtir 0

submit

BlinkList

del.icio.us

Newsvine

Technorati

18377 Visualizaes, 37 Comentrios

Showing 37 Comments

Frank Yu
06/07/10 16:50 Great post, Jonas. jQuery is not only the default JavaScript framework in Liferay Portal 5.x, it is also widely used in out-of-box portlets from Liferay and custom portlets developed in Liferay community and enterprises. One of the most asked questions from my enterprise clients is how to handle the migration of jQuery-based portlets to Liferay Portal 6. With the solution explained in this blog, the migration shall be straight-forward. You can include your jQuery library in your own portlets running on Liferay Portal 6 and don't have to rewrite your portlets to use YUI3. Isn't it good to have both jQuery and YUI3 coexisted in your portal environment?

Xinsheng Chen
07/07/10 13:39 Hi, Jonas, This is really nice. The pictures are also good. Thanks!

2 de 7

04-01-2012 10:34

Building jQuery based plugins in Liferay 6 - Blog - Liferay.com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Denis Signoretto
08/07/10 00:14 Hi Jonas, it I want include jQuery in all *.war (many portlets in different war) what's the best way? Can I add jQuery as global include? Thanks, Denis.

Jonas Yuan
08/07/10 06:59 Hi Denis, thanks. You may manage many portlets with hook in a single plugin and add following in init_js.jsp (included in init.jsp): <script type='text/javascript' src='js/jquery_1.4.2.js'></script> Hope that it helps, your comments?

Nate Cavanaugh
20/07/10 09:28 Hi Denis, The best way to do that would be to simply include the jQuery javascript file from your theme. That will guarantee that it's global for all portlets. You can also view my recent blog post for more info: http://www.liferay.com/web/nathan.cavanaugh/blog/-/blogs/using-jqueryor-any-javascript-library-in-liferay-6-0

Mohamed Rizan
09/08/10 05:05 Hi All, I am new to liferay and portlet developement, i created my own portlet and it works fine in single column layout, but the problem is when i use it in 3 column layout in the center column, and if i refresh teh page , the page layout was changed to two column layout, i tried with this sample jquery portlet also, and i am getting the same problem, Can any one pls suggest me am i missing anything.. Thanks in advance

Jonas Yuan
23/08/10 11:36 Hi Mohamed, you can share your code here. Thus anybody can give you comments.

Path Finder LifeRay


13/09/10 04:18 hey thanks for a fine discussion... Mohamed please give ur comments here as jonas said we can join discussion here itself...

Nguyn Quang Thng


04/10/10 21:36 Sorry All! Please help me! I have problem with my ajax in liferay ( errors: "Liferay.fire is not a function" and "Liferay.Dockbar is not undefined") I have I process2.js and declare process2.js in my jsp: <script type="text/javascript" src="<%=HOST_URL%>/scripts/process.js"></script> <script type="text/javascript" src="<%=HOST_URL%>/scripts/process2.js"></script> (process2.js include AjaxGet2) when i call AjaxGet2: "AjaxGet2('<%=AddthongtinController%>','','add','divchild1','',"AjaxGet2('<%=ShowListAddController%>','','show','divchild2','','' );" ) my portlet is run ok. But Liferay.fire and Liferay.Dockbar not work. what's happen with my ajax and liferay???? [IMG]http://ca5.upanh.com/14.248.18474492.ngg0/untitled1.jpg[/IMG] Thank alot.

Jonas Yuan
05/10/10 09:58 Hi, Nguyn, Thanks. Simply, you may use the sample code: jQuery and AJAX as entry point. There are a lot of examples talking about jQuery and AJAX. Refer to jQuery UI: http://jqueryui.com/ Hope that it helps.

Nguyn Quang Thng


05/10/10 19:40 Thank so much Jonas X Yuan! But i wonder what happen with my ajax, it run ok, but seem have some scramble or conflict with Liferay.Dockbar and Liferay.fire .

3 de 7

04-01-2012 10:34

Building jQuery based plugins in Liferay 6 - Blog - Liferay.com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Can you read it, please: process2.js: --------------function AjaxGet2(address,param,containerid,divchild,revattribute,func){ //showloading(); $.ajaxSetup ({ // Disable caching of AJAX responses */ cache: false }); $('#'+divchild).html("<div class='ajaxLoading'> &#272;ang t&#7843;i d&#7919; li&#7879;u... </div>"); $.ajax( { url:address, type:"GET", cache: false, datatype:"html", data:param, success:function(text){ showResponseText2(text,containerid,divchild,revattribute,func); //closeloading(); } } ); } ----------------You can see clearly my process.js in link: --https://docs.google.com/leaf?id=0B_fgXf97eQg1ZjhiYWQ4NWUtN2I1ZS00NDQ2LThiOWEtNzYwNDhiMDNjZjZk&hl=en --And if my process2 unusable, you can help me for some code demo in jqueryui, please.(i looked for http://jqueryui.com/ but i don't see ...). So sorry! But i'm newbie. Sorry for my disturbing. --------Thank for you're help!!!

Nguyn Quang Thng


07/10/10 02:02 Oh, Jonas X. Yuan! I fixed this errors. I think when my ajax return the object "text" which include something and have declares the Liferay.Dockbar and Liferay.Fire. So have conflict and duplicate. For fix this error, i remove any code before <body></body> in object "text" return in my ajax. I use javascript code: ---------------------------------------AjaxGet2(address,param,containerid,divchild,revattribute,func){ ... ... ... $.ajax( { url:address, type:"GET", cache: false, datatype:"html", data:param, success:function(text){ var str = text; var indexBegin = str.indexOf('<body'); var indexEnd= str.indexOf('</body>'); var str1 = str.substring(indexBegin ,indexEnd+6); showResponseText2(str1,containerid,divchild,revattribute,func); //closeloading(); } } ); } ---------------------------------------And now the liferay.Dockbar and another not die. But i wonder have anyway?

Jonas Yuan
07/10/10 14:13 Hi Nguyn, cool! Thanks for updates. You can move forward ...

Raja Nagendra Kumar


04/12/10 18:30 does header-portlet-xxx mean this xxx gets included during the header time of the page building and is available to body (i.e all the portlets that page can use this xxx) and footer jsp too. Also, could you pl. explain what is this tag css-class-wrapper and where it is used.

4 de 7

04-01-2012 10:34

Building jQuery based plugins in Liferay 6 - Blog - Liferay.com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Regards, Raja Nagendra Kumar, C.T.O www.tejasoft.com

Jonas Yuan
05/12/10 07:40 Hi Raja, Thanks. You can find info at Applying jQuery and its custom UI in Liferay 6 plugins http://www.liferay.com/web/jonas.yuan/blog/-/blogs/applying-jquery-and-its-custom-ui-in-liferay-6-plugins. like: Note that the property header-portal-javascript sets the path of JavaScript that will be referenced in the page's header relative to the portal's context path; and the property footer-portal-javascript sets the path of JavaScript that will be referenced in the page's footer relative to the portal's context path. Similarly, the property header-portlet-css sets the path of CSS that will be referenced in the page's header relative to the portlet's context path; while the property footer-portlet-css sets the path of CSS that will be referenced in the page's footer relative to the portlet's context path. Hope that it helps, Thanks, Jonas

Mayur Patel
12/02/11 10:06 Hi Jonas, I have implemented this sample-jquery-portlet in LF6, Its looking very excellent and having many functionalities but I have to implement same thing in LF5.2.3 Which kind of changes I will have to make to run that same portlet in LF5.2.3 ?????...help me in that.... Thanks in Advance

Jonas Yuan
14/02/11 09:14 Hi Mayur, Thanks. For Liferay 5.2.5, you may refer to the post: Using jQuery (or any Javascript library) in Liferay 6.0 (by Nate) at http://www.liferay.com /web/nathan.cavanaugh/blog/-/blogs/using-jquery-or-any-javascript-library-in-liferay-6-0. Hope that it helps.

alex wom
28/02/11 23:18 If I need jquery widgets and scrolling 1.8.2 do I need to assemble them in a jquery-ui-custom.js? Another question: does your books available in ebook format? I live in Italy and I would like to download quickly.

Raja Nagendra Kumar


01/03/11 00:24 Thank you Jonas, your detailed explain is too good.

Jonas Yuan
01/03/11 12:29 Hi Alex, thanks. By default, jquery widgets and scrolling should be included in UI 1.8.2. If possible, use UI latest version like 1.8.9 and jQuery 1.5. Yes, ebook is available at https://www.packtpub.com/authors/profiles/jonas-x-yuan. Hope that it helps.

Raghavendra V
07/03/11 00:00 hi, Is there any way to completely avoid Alloy Ui/YUI being loaded on liferay portlets and use only jQuery

Jonas Yuan
07/03/11 10:28 Hi Raghavendra, the portal core uses Alloy Ui/YUI as default settings. But in your portlets, you can avoid using Alloy Ui/YUI. Of course, you can just use jQuery as you expected. This is the beauty of Liferay portal.

5 de 7

04-01-2012 10:34

Building jQuery based plugins in Liferay 6 - Blog - Liferay.com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Nate Cavanaugh
07/03/11 18:17 Hi guys, To remove AlloyUI altogether would break any of the bundled portlets that rely on it. To ask a different question, what could AlloyUI do better to help you not wish to remove it? We're always looking for great feedback, so if there's an area of AlloyUI that you guys would like to see improved or feel it's falling short of your needs, don't hesitate to ask

Raghavendra V
07/03/11 20:22 Thanks much Jonas,

Raghavendra V
07/03/11 20:40 Hi Nate, the reason behind to stick to jQuery is we have already developed few components based on jQuery framework and loading multiple frameworks is not good idea in page performance point of view.

Marc Piparo
17/03/11 15:30 Please help. I added entries into ad-portlet/WEB-INF/liferay-portlet.xml as follows: <portlet> <portlet-name>admanager</portlet-name> <icon>/images/icon.png</icon> <header-portlet-css>css/style.css</header-portlet-css> <header-portlet-javascript>javascripts/jquery.js</header-portlet-javascript> <layout-cacheable>true</layout-cacheable> <add-default-resource>true</add-default-resource> </portlet>

but now the ad manager portlet errors loading up: org.springframework.be ans.factory.BeanDefinitionStoreException: IOException parsing XML document from PortletContext res ource [/WEB-INF/context/admanager-portlet.xml]; nested exception is java.io.FileNotFoundException: Could not open Portle tContext resource [/WEB-INF/context/admanager-portlet.xml]

any ideas what I'm doing wrong?

Jonas Yuan
19/03/11 08:31 Hi Marc, you got FileNotFoundException: Could not open Portle tContext resource [/WEB-INF/context/admanager-portlet.xml]. Could you please double check /WEB-INF/context/admanager-portlet.xml? Thanks,

Mani kandan
08/07/11 00:22 Hi jonas I have the problem over loading the javascript file in my custom portlet. In my liferay-portlet.xml file <portlet> <portlet-name>165</portlet-name> <instanceable>true</instanceable> <header-portlet-javascript>/html/portlet/book/main.js</header-portlet-javascript> </portlet> When I make some changes in my main.js file, the js file not being loaded that is after refresh the page i couldn't get the modified values. It forced me to restart the tomcat server. I cleared cookies of my browser but still having problem. Note: I am using LR 6.0.6 and i m not using Plugin i m creating portlet in LR tomcat itself.

Jonas Yuan
11/07/11 07:27 Hi Mani, Just tested jQuery 1.6.2 and UI 1.8.14 in Liferay 6.1, the approach mentioned in this post was working properly. By the way, what's the /html/portlet/book/main.js? Do you refresh the page? Thanks

6 de 7

04-01-2012 10:34

Building jQuery based plugins in Liferay 6 - Blog - Liferay.com

http://www.liferay.com/pt/web/jonas.yuan/blog/-/blogs/building-jquery...

Jonas 15/07/11 14:14

[...] Hi, I am facing a peculiar issue with <portlet:namespace/> when used with jQuery, i followed the blog by Jonas, but quiet strangely my jQuery Javascript method is not picked up <aui:button... [...] Read More

Mani kandan
20/07/11 01:35 Hi Jonas, Yes i am refreshing the page after make some changes in my main.js file but I couldn't get the modified values. Once I restart the server then only it is affecting the values. /html/portlet/book/main.js - is my js file path /html/portlet/book/view.jsp - is my jsp file path 21/08/11 22:36

[...] I think Ajax tool kit Ajax no longer to be used for Liferay's new version. Yes better to choose DWR DWR Link Or jQuery Link Mark as an Answer [...] Read More

Serdar Ayalp
02/09/11 02:14 thxs 05/09/11 04:30

[...] I think Ajax tool kit no longer to be used for Liferay's new version. Yes better to choose DWR DWR Link Or jQuery Link Mark as an Answer [...] Read More 15/11/11 03:07

[...] You can create as portlet as plugin portlet or create portlet in liferay-portal-6.0.6\tomcat-6.0.29\webapps\ROOT\html\portlet. Refer this blog blog and this link Flag Please sign in to flag this as... [...] Read More 15/11/11 21:47

[...] You can create as portlet as plugin portlet or create portlet in liferay-portal-6.0.6\tomcat-6.0.29\webapps\ROOT\html\portlet. Refer this blog blog and this link Flag Please sign in to flag this as... [...] Read More

Mani kandan
02/01/12 03:26 good article thanks

NEWS

BLOGS

TWITTER

FACEBOOK

Powered by Liferay Portal

PRIVACY POLICY

SITEMAP

CONTACT US

ABOUT US

2012 LIFERAY INC. ALL RIGHTS RESERVED

7 de 7

04-01-2012 10:34

Potrebbero piacerti anche