Blogging Portlet

I just committed Blog Portlet to the Portlet Repository java.net project. Blog portlet allows portal users to manage their weblog from a portal page. It depends on the weblog implementing (and turning on) an Atom Publishing Protocol endpoint.

 

The intent is not to replace the native weblog user interface, but rather to provide a simplified one that allows users to perform the most common management operations from their portal page: post, edit, delete.

In addition, the portlet has a simplified interface for creating weblogs and weblog users. This feature depends on the AAPP admin interface in Roller - meaning, you have to point the portlet at a Roller weblog server.

There are a couple of caveats at this point ...

  1. The portlet is really a JSF application, and therefore depends on JSF Portlet Bridge. While this is called out in the portlet's pom.xml, the dependency is not available from any repository. Therefore, to build Blog Portlet, you need to get and build the JSF Portlet Bridge and populate the dependency into your local repository. Hopefully this will change in the near future.
  2. While the portlet is setup to use FCKEditor to create and edit weblogs, FCKEditor is also not available as a dependency. So, by default, FCKEditor won't be there, and you'll get a standard ugly text area. To make the portlet is FCKEditor, get the "fckeditor" directory into the web application. You could do this after you deploy the web app by just dropping the files into the right place, or you could do it in the build environment by copying ther directory into src/main/webapp. Or, alternatively, it should be easy to plug in whatever Javascript editor you like by making some small changes to the portlet.
  3. The portlet is only tested with Roller's APP implementation. APP is new and somewhat unstable, so I hope folks can help out and get this tested / working on other APP implementations.
  4. Documentation is slim. I hope to either upload some documentation, or point to the Sun Portal Server 7.x documentation for the portlet that should apply 98% to the open source version. This documentation is not yet posted to docs.sun.com however. In the meantime, if you have questions, please post comments, or better yet, post to the Portlet Repository user mailing list and I will be glad to help you out.

Have fun!

 

Comments:

How can I resolve this error? Thx. Al 2007-03-25 06:22:33 ApplicationDispatcher[/blogportlet] Servlet.service() for servlet BlogPortlet threw exception java.lang.NoSuchMethodError: javax.faces.component.UIViewRoot.encodeAll(Ljavax/faces/context/FacesContext;)V at com.sun.faces.portlet.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:385) at com.sun.faces.portlet.ViewHandlerImpl.renderView(ViewHandlerImpl.java:261) at com.sun.faces.portlet.LifecycleImpl$RenderResponsePhase.execute(LifecycleImpl.java:680) at com.sun.faces.portlet.LifecycleImpl.phase(LifecycleImpl.java:339) at com.sun.faces.portlet.LifecycleImpl.render(LifecycleImpl.java:259) at com.sun.faces.portlet.FacesPortlet.render(FacesPortlet.java:309) at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:205) at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:145) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.pluto.core.PortletServlet.service(PortletServlet.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:510) at org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:120) at org.apache.pluto.invoker.impl.PortletInvokerImpl.render(PortletInvokerImpl.java:73) at org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:105) at org.jasig.portal.channels.portlet.CPortletAdapter.getMarkup(CPortletAdapter.java:555) at org.jasig.portal.channels.portlet.CPortletAdapter.renderCharacters(CPortletAdapter.java:482) at org.jasig.portal.MultithreadedCharacterChannelAdapter.renderCharacters(MultithreadedCharacterChannelAdapter.java:71) at org.jasig.portal.ChannelRenderer$Worker.run(ChannelRenderer.java:483) at org.jasig.portal.utils.threading.Worker.run(Worker.java:88)

Posted by blog on March 24, 2007 at 08:25 PM PDT #

looks like a problem in the JSF version. blog portlet bundles faces 1.1. if your platform includes some other faces version that could be the problem. you could try removing the JSF jars from the portlet web application.

Posted by Jeffrey Blattman on March 26, 2007 at 03:57 AM PDT #

hi jeff, i get the following: Could not get weblog entries for URL: http://localhost:8080/roller/roller-services/app/junkyard/entries and user: jtb have enabled AAPP. help! i really want it to work. THx.

Posted by jkl on May 16, 2007 at 11:23 PM PDT #

if you hover over the error message, you should see some more details. probably at least the http error code. first take a look at the logs on the roller server ... roller.log. second, did you verify that the endpoints are enabled? can you hit the app and aapp URLs in your browser? you should get prompted for http basic auth, and then get am XML document.

Posted by Jeffrey Blattman on May 17, 2007 at 02:46 AM PDT #

Jeff, Thx. for your prompt response!

You've done excellent work here but in the absence of docs. it's turning into an uphill task (not that you said it's free ride).

I'd love to add to docs. once I've it running.... Please. let me know if you need more info. I'd love to see it working as you've.

portlet gives error:
Could not get weblog entries for URL: http://localhost:8080/roller/roller-services/app/junkyard/entries and user: jtb
Http status 401

Browsing:
http://localhost:8080/roller/roller-services/aapp
<?xml version="1.0" encoding="UTF-8" ?> - <service xmlns="http://purl.org/apache/roller/aapp#"> - <workspace title="Workspace: Collections for administration"> - <collection title="Collection: Weblog administration entries" href="http://localhost:8080/roller/roller-services/aapp/weblogs"> <member-type>weblog</member-type> </collection> - <collection title="Collection: User administration entries" href="http://localhost:8080/roller/roller-services/aapp/users"> <member-type>user</member-type> </collection> - <collection title="Collection: Member administration entries" href="http://localhost:8080/roller/roller-services/aapp/members"> <member-type>member</member-type> </collection> </workspace> </service>

http://localhost:8080/roller/roller-services/aapp:
gives a file open/save dialog with the following content:

<?xml version="1.0" encoding="UTF-8"?> <app:service xmlns:app="http://purl.org/atom/app#"> <app:workspace> <atom:title xmlns:atom="http://www.w3.org/2005/atom">Test</atom:title> <app:collection href="http://localhost:8080/roller/roller-services/app/test/entries"> <atom:title xmlns:atom="http://www.w3.org/2005/atom">Weblog Entries</atom:title> <app:categories app:fixed="yes" app:scheme="http://localhost:8080/roller/test/"> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Politics" atom:label="Politics" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Music" atom:label="Music" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Java" atom:label="Java" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Status" atom:label="Status" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/General" atom:label="General" /> </app:categories> <app:accept>entry</app:accept> </app:collection> <app:collection href="http://localhost:8080/roller/roller-services/app/test/resources"> <atom:title xmlns:atom="http://www.w3.org/2005/atom">Media Files</atom:title> <app:accept /> </app:collection> </app:workspace> <app:workspace> <atom:title xmlns:atom="http://www.w3.org/2005/atom">test2</atom:title> <app:collection href="http://localhost:8080/roller/roller-services/app/jtb/entries"> <atom:title xmlns:atom="http://www.w3.org/2005/atom">Weblog Entries</atom:title> <app:categories app:fixed="yes" app:scheme="http://localhost:8080/roller/jtb/"> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Politics" atom:label="Politics" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Music" atom:label="Music" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Java" atom:label="Java" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/Status" atom:label="Status" /> <atom:category xmlns:atom="http://www.w3.org/2005/atom" atom:term="/General" atom:label="General" /> </app:categories> <app:accept>entry</app:accept> </app:collection> <app:collection href="http://localhost:8080/roller/roller-services/app/jtb/resources"> <atom:title xmlns:atom="http://www.w3.org/2005/atom">Media Files</atom:title> <app:accept /> </app:collection> </app:workspace> </app:service>

roller.log:
ERROR 2007-05-17 13:25:58,480 AtomAdminServlet:doGet - org.apache.roller.webservices.adminapi.UnauthorizedException: ERROR: Authorization header was not set ERROR 2007-05-17 13:27:03,353 AtomAdminServlet:doGet - org.apache.roller.webservices.adminapi.UnauthorizedException: ERROR: Authorization header was not set

My config.
1. Tomcat 5.5/pluto container
2. roller web application.
3. roller-custom.properrties
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
webservices.adminprotocol.enabled=true
webservices.atomprotocol.enabled=true

Posted by jkl on May 17, 2007 at 04:16 AM PDT #

hi, for docs, here is the draft version of the documentation for the blog portlet that will ship w/ the portal server 7.1u1 release, which is essentially the same as the version in the portlet repo. https://portlet-repository.dev.java.net/files/documents/5129/57963/blog-portlet-technote-7.1u1-draft.pdf i've never tried the portlet on pluto+tomcat. i have used glassfish+OSSPC successfully. for OSPC, see: https://portlet-container.dev.java.net i have had a ton of trouble w/ pluto in the past ... mostly w/ regard to the fact that when there's an error, pluto eats it up and reports some generic error message. so it was impossible to do development.

Posted by Jeffrey Blattman on May 17, 2007 at 06:10 AM PDT #

hi,

i have downloaded blogportlet from open portal portlet repository.
i have developed some JSR 168 portlets and deployed in IBM Websphere portal 6.0.
i need this blog portlet urgent and so i downloaded.
Can anyone help me in how to deploy this portlet in websphere portal.
When i deployed the WAR, i get deployment exception and many others.

Thanks in advance,
Arun.

Posted by arun on October 02, 2007 at 05:01 PM PDT #

Hola Mundo!

Posted by guest on November 15, 2007 at 03:43 AM PST #

can this portlet works in jboss portal server.I have been searching for blog portlet and i couldn't get code or war file which is suitable for jboss portal server.I am using jboss protal 2.6.3 version.Please help me in this regard.
Thanks in advance,

Posted by phanikiran on April 01, 2008 at 06:58 PM PDT #

Identical to the previous question....I had some failures while deploying it in JBoss Portal. Can someone confirm?

Posted by Narsi on October 16, 2008 at 06:52 AM PDT #

The select items have object values. http://www.watchgy.com/ All is good. When I submit the form, I see "Validation Error: Value is not valid". My first reaction was that I didn't have any validation on the page, so how could a value be not valid? http://www.watchgy.com/tag-heuer-c-24.html
http://www.watchgy.com/rolex-submariner-c-8.html

Posted by rolex replica on December 29, 2009 at 12:07 AM PST #

Can i use the same portlet for weblogic portal 10.3? Can anyone also knows any out of the box portlet for threaded discussion also ?

Posted by mihir on January 15, 2010 at 06:04 PM PST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

jtb

Search

Categories
Archives
« July 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
Today