| |
| | nice break down ray.. very helpful! Posted on 10/7/08 10:37 AM. |
| |
| |
| | nice... thanks for the writeup! Posted on 10/7/08 10:50 AM. |
| |
| |
| | With this new hooks I can drop all customization done through the ext environment except some spring (extensions in ext-spring.xml) and some customizations in the PortalImpl class.
Really looking forward to migrate the current customizations to hooks. Posted on 10/7/08 12:02 PM. |
| |
| |
| | Very nice! That really makes customization easier. One question a colleague of mine asked today about this very thing is: Can you defined your custom AuthenticatorS with hooks or is that still something you need to deploy to the core portal? Posted on 10/7/08 2:14 PM. |
| |
| |
| | Very nice! Looking forward to using it .... Posted on 10/8/08 5:30 AM. |
| |
| |
| | ok, so suppose you want to only update the login.jsp page, what do you do exactly? Posted on 10/8/08 7:33 PM. |
| |
| |
| | Very helpful. A while ago I added new tables using EXT env. where the hibernate mapping files, java codes are generated using built-service task. Can I achieve this using Hook? If so how? Is it also possible to override Struts mapping file?
Thank you so much. Posted on 10/9/08 12:21 AM in reply to Eric Soucy. |
| |
| |
| | Simply place the jsp file for the login page in 'custom-jsp-dir'. Make sure it's the identical path from the top of the context. |
| |
| |
| | You can use ServiceBuilder from the plugins SDK, you don't need hooks, although you can combine that and hooks to achieve different types of integrations. See the example portlets in the SVN repository, plugins repository portlets, or wiki for how to use ServiceBuilder in plugins SDK.
Overridding struts mapping files is not currently something you can do using Hooks. |
| |
| |
| | Thank you Ray for a very helpful note. Anyway, is there anyway to access request object within ModelListener? Posted on 10/11/08 8:52 AM. |
| |
| |
| | Sorry, no. What exactly do you need from the request? There might be other ways of getting it. Posted on 10/11/08 12:38 PM in reply to Van Hoai. |
| |
| |
| | This is great! Some reflections/questions:
I tried the following: add a portal.properties with auth.pipeline.pre=my.Autenticator,com.liferay.portal.security.auth.LDAPAuth and added the my.Authenticator to my portlet. I get a ClassNotFoundException thogh. I guess its because LR use another class loader than my portlet.
Is it possible to add an own Autenticator through liferay-hook.xml?
Another thing, when I added login.events.pre/login.events.post and redeployed the portlet using hot-deploy (copy into $user/liferay/deploy). The previous registred actions still fires (now un deployed) still fired as well as the new one.... Posted on 10/17/08 6:54 AM. |
| |
| |
| | Q1 - Sorry, no Authenticators as of right now, but definitely a top candidate for inclusion.
Q2 - Yup, this is a known bug, fixed in trunk. Will be in a the next 5.1.x release. Posted on 10/17/08 7:15 AM in reply to Erik M. |
| |
| |
| | I have to create a custom autologin mechanism and was wondering if it was possible to develop it as a hook. Posted on 10/22/08 10:34 AM in reply to Ray Augé. |
| |
| |
| | Where do I put the hook config file? This is not clear to me from this description Posted on 10/23/08 2:23 AM. |
| |
| |
| | Not as of yet, but it shouldn't be too hard to implement the hook-autologin feature. It's essentially the same pattern as with Events.
Would you be willing to take a crack at it? We're really strapped for dev cycles right now. |
| |
| |
| | Put it in the WEB-INF folder along with the other descriptors. |
| |
| |
| | I guess your confusion is like mine, originally... I looked at https://lportal.svn.sourceforge.net/svnroot/lportal/plugins/trunk/hooks/ to figure it out...
There is no create.sh in the hooks folder like other plugins.
Seems to me that:
1- you create a folder in hooks, with an arbitrary name 2- your hooks config goes in yourFolder/docroot/WEB-INF/liferay-hook.xml 3- your overrides go in /docroot/WEB-INF/src and need to be referenced by your hook config 4- you should have a yourFolder/docroot/WEB-INF/liferay-plugin-package.properties 5- you probably want to add a yourFolder/build.xml for ant |
| |
| |
| | You can actually place your hook descriptor and any dependencies inside any other plugin WAR you already have.
So, unless you specifically want to separation (not a bad idea in some cases) it's not explicitly required. |
| |
| |
| | It is really a great move!
I am trying to understand the functionality how hook is working, I want to modify the view.jsp of sms portlet can any body instruct me how to go about this. Posted on 11/6/08 6:26 AM in reply to Ray Augé. |
| |
| |
| | Hi, From my LoginPostAction defined in liferay-hook.xml I'm trying to use the session attribute "com.liferay.portal.servlet.SharedSessionAttributeCache" with no success.
I can get the object, using session.getAttribute("com.liferay.portal.servlet.SharedSessionAttributeCache"); but when I try to cast it to a 'usable' type, com.liferay.portal.servlet.SharedSessionAttributeCache, I either get an class not found exception, or a class cast exception (com.liferay.portal.servlet.SharedSessionAttributeCache cannot be cast to com.liferay.portal.servlet.SharedSessionAttributeCache)
The problem (I guess) is that my hook is lodad in the webbapps classloader and my webbapps classloder dont have access to the SharedSessionAttrributeCache class from portal-impl.jar (loaded by ROOT-webbapp). To use the same classloader using <Context> <Loader loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"/> </Context> is not an option (different versions of some libraries in webbapp than in LR). I have tried including the portal-impl.jar file as well as just putting a version of class file in web-inf/classes/ with no success. How can I form my LoginPostAction access the sharedSessionAttributesCache which is pressent in the httpSession i can get from the request parameter. Is this a "bug" or am I missing something?
Best regards Erik Posted on 11/13/08 12:33 AM. |
| |
| |
| | Ray, This is great! Is there a complete working sample implementation of each of the hook handlers? Posted on 11/20/08 3:05 PM. |
| |
| |
| | Great, I am looking for sample implementation for message board ( add new message and new category ) like BlogEntry class , Do we have MessageBoardEntry or CategoryEntry etc. Posted on 2/24/09 12:48 PM in reply to Jim Klo. |
| |
| |
| | Erik M, have you managed to solve this problem in the meantime? Posted on 3/2/09 6:49 AM in reply to Erik M. |
| |
| |
| | I'm not sure I understand the question here. Can you elaborate?
Edit: Nevermind I get it. I'd have to test that scenario! |
| |
| |
| | Ray Auge,
I am trying to implement hook for blogs. Trying to create custom Action class and invoke custom Java classes. Is there a sample or a pointer on how we achieve this. ?
I tried just having the code under web-inf/src but the hook is not picking it ip. Any help is appreciated.
Thanks LR09 Posted on 3/12/09 12:32 PM in reply to Ray Augé. |
| |
| |
| | Ray,
I'm having troubles in fully understand how Event Handlers work. Could you provide a brief but intuitive example of a possible application for Event Handlers and show some sample code of how you would roughly implement a custom Action class in that case?
Your help is much appreciated! Posted on 4/1/09 1:41 AM. |
| |
| |
| | My clients have asked me to keep a counter for every portlet that represents the number of Views for that portlet. I will need to create another portlet that displays a summary. I think hooks can be helpful. Please help me. How can I do this? Somehow I need my class member to get executed every time a portlet is displayed and increase counter for that portlet. Posted on 4/6/09 12:43 AM. |
| |
| |
| | We need <b>locales</b> (not mentioned in http://svn.liferay.com/browse/portal/trunk/definitions/liferay-hook_5_2_0.dtd?r=trunk) to override in hook portal.properties<br />how can we achieve it Posted on 4/14/09 11:36 PM. |
| |
| |
| | Quote: "Hooks can be built, packaged, and deployed, like other plugins, using the Liferay plugins SDK."
But how? Portlets only need a create.sh/create.bat or similar, and a lot of easy and well documented step by steps instruction.
I tried to make a language hook to overwrite some language files without any success. Tried making it by hand and couldn't even build the hook, and tried to deploy it as a new portlet making the war, deploying it but seeing no results at all.
A fool-proof example and an easy to run shell script would be a great addition. Posted on 7/8/09 3:41 PM. |
| |
| |
| | Hi Ray
Thanks for the write up on hooks. I need some clarifiaction on this
Im relatively new to Liferay and have been assigned this huge task of trying to integrate it with and ecommerce product to implement some concepts of social shopping. We have identified some areas like Tagging, groups, forums etc that we are looking to extend. For Eg. we arelooking at a functionality where a user on an ecommerce site would be able to tag products. What we are trying to figure out is how to go about extending Tagging in liferay. Do we have to use EXT for this? or is there a way to achieve this using hooks?
I would really appreciate it if you could give me some pointers on this.
Thanks in anticipation Posted on 7/30/09 6:34 AM. |
| |
| |
| | What happened to the events in the 5.2 DTD? |
| |
| |
| | Have created a very simple jsp-hook portlet, that does not seem to override the jsp. Can anybody please look at the war file and tell me what I am doing wrong? TIA Posted on 8/6/09 11:52 AM. |
| |
| |
| | Ray for a layman like me can you explain if hooks would be a good suggestion in this case?
I need to modify the iframe portlet with hard coded url and username data for say 20 sites, and also maintain the original iframe portlet.
Is it possible to just copy the iframe portlet code, modify it and then deploy it as a portlet or should a hook be used? I really dont get the hook concept.
thanks Posted on 8/9/09 8:02 PM. |
| |
| |
| | What activities actually trigger login.events.pre and login.events.post events?
I have created some very simple handlers for these events. I see my handlers get called when I login with a valid username/password. I assumed that a login.events.pre event would be fired during an attempted (but unsuccessful) login -- eg. bad password, but this is not happening. Posted on 8/19/09 11:24 AM. |
| |
| |
| | So, it seems that in 5.2 at least the hook configuration in liferay-hook.xml was changed completely. No events anymore, just <portal-properties>, if I got it right from reading the DTD. Is there any updated hook tutorial available for 5.2? |
| |
| |
| | Please clarify. For a service event handler in which file should I put the xml for the hook? What name should I use for any request (I want to work with all requests). To put my class I need to know exactly where is <sdk_root>.
Thanks for your help,
Alejandro Barrero Posted on 9/16/09 10:01 AM. |
| |
| |
| | One thing that I struggle with is that I write a hook plugin I almost always need access to Liferay classes that are in the portal-impl.jar.
This JAR is part of the ROOT.WAR and therefore you cannot access it from a Hook plugin. This means that I must add my custom code in the ROOT.WAR which defeats the whole purpose of Hook plugins.
Even for a very simple custom landing page action this is the case because you need access to the LastPath class. The same goes for the WebKeys class.
Any thoughts on this? I would very much like to see these classes be available to Hook plugins. Posted on 9/26/09 5:51 AM. |
| |
| |
| | You're absolutely right! And your help would be much appreciated in helping us to track use cases we've overlooked. Please open a ticket for each case and we'll try to take care of those as soon as possible.
I personally think the LastPath feature should be improved. It seems to be a constant barrier to developers.
Note: Please never include the portal-impl.jar in your plugins. The problems that can arise are countless and undefined. It would be better to write a small reflection wrapper around the returned object than to include this jar in your plugin, at least until we solve the class access issue. |
| |
| |
| | <sdk_root> is the root of where you have extract the plugins SDK that you downloaded. It contains several pre-existing folders to help structure and build your various plugins. |
| |
| |
| | Ray, Maybe I'm mis-reading the blog but I was hoping to create a liferay-hook.xml file in WEB-INF pointing to a custom jsp directory under WEB-INF. I was expecting liferay to use the alternate path to find the relevant jsp page and if that jsp doesn't exist in the alternate path, to then look under the default path. However in reading these posts, I'm now wondering if the only way to utilize jsp hooks is to use the SDK and ant scripts (which will simply replace the jsps in the default path with my custom jsps). Posted on 10/12/09 1:45 PM in reply to Ray Augé. |
| |
| |
| | Hi Erik, hi Ray,
i've run into the same issue i guess. Currently i'm using Plugins SDK 5.23 and tried to write a hook plugin for the event auth.pipeline.pre. The hook is hot-deployed without errors but when trying to sign in got class not found exception:
07:45:55,943 ERROR [InstancePool:107] Unable to load com.ext.portal.security.auth.PanelAuth with the portal class loader or the current context class loader java.lang.ClassNotFoundException: com.ext.portal.security.auth.PanelAuth at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
I've tried with and without setting the portal class loader by /META-INF/context.xml but got the same error.
Have you guys got some idea how to workaround this issue, maybe i have to keep using EXT for implement this event handler instead Plugins SDK?
Thanks Laszlo Posted on 10/16/09 12:54 AM in reply to Erik M. |
| |
| |
| | Thank you for your reply, but I still need some direction. I created a servelet service pre hook with NetBeans; it works fine. Now I want to create a model listener event but NetBeans doesn´t have that option. The question is how do I create a model listener event hook? What files do I have to modify as related to the servlet service event and how should they get modified? Posted on 10/30/09 8:27 AM in reply to Ray Augé. |
| |
| |
| | Portal Pack has support for Model listener , Please check following blog page which has details about how to add hook for operation model.
check section : Model Listener Hook
http://www.liferay.com/web/chetan/blog/-/blogs/2580490 |
| |
| |
| | What about adding context.xml with <Context> <Loader loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader" /> </Context>
It works fine with Struts portlet used in Plugins SDK to access core classes. will it not work with Hooks.
Also curious to know , is it recommended solution or do you see issue with it? Posted on 11/6/09 10:34 AM in reply to Ray Augé. |
| |
| |
| | I also need the request. In the method onAfterCreate, i create an user in Alfresco with web services. But if it happens something wrong in that creation, i need to post an error (with SessionErrors, i suppose) to the create_account.jsp.
Thanks a lot for your help Posted on 11/13/09 4:59 AM in reply to Ray Augé. |
| |
| |
| | I have the same problem.
Any solution/answer to this yet? I need to be able to make a check against another database before the user is authenticated against the liferay db. With the pre auth pipeline I get the classnotfoundexception and with the pre login the user is already authenticated before the action happens (I don't understand the point of the pre login if it's like this).
Thankful for answers. |
| |
| |
| | Where are <model-listener> and <event> tags in 5_2_0 dtd ?
A new <service> appeared ... but can we hook models and events with this ? How ? :-) Posted on 11/23/09 9:19 AM. |
| |
| |
| | Found the answer by myself : need to use the portal.properties hook and define value.object.listener.<model> property (for models) and login.events.*/application.startup.events for events
But this doesn't explain to me what the <service> tag is aimed at =) Posted on 11/24/09 5:22 AM in reply to Atma -. |
| |
| |
| | Hi Ray,
Just a little question. Is it possible to use custom classes in a customized JPS? Posted on 11/27/09 7:04 AM. |
| |
| |
| | I made issue and contribution because of this.
http://issues.liferay.com/browse/LPS-6491 |
| |
| |
| | Ray when using JSPs in eclipse is there something that can be done so when you extend files that have jsp includes pointing back to the originals so they don't show errors on those pointers? the ext environment seems to have something but I can't see what it is... Posted on 12/23/09 12:34 PM. |