« Back

Building social-media-rich newsroom on top of Liferay portal

General Blogs June 21, 2011 By Jonas Yuan

Loosely speaking, a newsroom is the place where journalists—reporters, editors, and producers, along with other staffers—work to gather news to be published in a newspaper or magazine or broadcast on television, cable or radio.  As you have known already, Liferay Portal is an enterprise web platform for building business solutions that deliver immediate results and long-term value. This article will use The Network as an example to show:

  • Which kind of portal core features leveraged to build social-media-rich newsroom on top of Liferay.
  • Which kind of new features added to build social-media-rich newsroom on top of Liferay.

The Network is trying to tell stories and share information on the topics that are the most important, namely: Video, Collaboration, Core Networks, Mobility, Security, Data Center, Culture … and, more parochially to Social Media. The Network requires an environment where the editorials team could prepare releases in the staging and remotely publish releases to the Production. Technically, it mainly manages five content types.

  • Feature
  • Press release
  • Video
  •   Podcast
  • Bookmark

Main features overview

  • LDAP users and user group import – speed up the LDAP import processes and Liferay authentication

There is a big user base in over 50K+ user groups in LDAP. When logged in as a user from LDAP, it took 20-30 seconds by default. After applying the new feature fix patch, it takes less than 1 second. Refer to LPS-14322.

  • Secure the user LDAP password – do not import LDAP user’s password

When importing users from LDAP, user’s info and password got imported. Of course, all passwords stored in Liferay are secure. Especially, the LDAP password mapping field is optional. In some use cases, the fact Liferay stores users’ password is against some companies’ security policy rules. With the new feature fix patch, Liferay would not import user's password from LDAP. Refer to LPS-13933.

  • Remote staging and publishing mode

All editorial team work in the clustered staging environment; but open the clustered production to the public only. 

  • Cache Clustering

Both staging and production are clustered.

  • Secure the LDAP user info in the staging

By default, there is a dummy user in both the staging and the product. All editorial users exist in the staging only. Their daily work is to create / update press release, and schedule to publish to the product. This feature got fixed, referring to LPS-17251.

  • Keep UUID same in the remote publishing process

Export and imports all assets and their associations: tags, categories, custom fields, etc.

  • Federated indexing and search mechanism

Index five content types (more content types) in one place; and index tags, categories, custom fields, views, shared number, etc. Provide services’ URL to search latest views, most viewed, etc.

  • Configurable RSS feeds services

Make RSS feeds configurable. Search RSS results from the index – the performance is very good.

  • Home URL and friendly URL

Making home URL and web content SEO friendly URL highly configurable in multiple web sites

  • Category cloud

Search categories from the index, instead of the database. – The performance is very good.

  • Track Social media sharing and most shared

Provide a model to present social media sharing; provide services’ URL to update social media shared info;   provide services’ URL to search social media most shared. This is native Liferay tracking system – details will be addressed in another post.

  • Integrate Facebook activity, twitter feeds, and so on.

Implementation examples

Latest news, most viewed and most shared – an overview

Searching by FROM date and TO date, filtering by content types, and categories, and pagination – an overview

  • Remote staging and publishing mode

Both staging and production have following settings

tunnel.servlet.hosts.allowed=127.0.0.1,SERVER_IP

tunnel.servlet.https.required=false

  • Cache Clustering

Both staging and production have following clustering settings

net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml

ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml

image.hook.file.system.root.dir=/share/liferay/data/images

dl.hook.file.system.root.dir=/share/liferay/data/document_library

cluster.link.enabled=true

lucene.replicate.write=true

  • Federated indexing and search mechanism

Latest news
?cmd=latest&limit=10&contentType=feature:press-release&categoryId=14788

Parameters:
categoryId=id
limit=number

Most viewed

?cmd=viewed&limit=10&contentType=feature

All News

?cmd=all-news&start=0&end=20&contentType=feature:press-release&displayDateLT=20110101&&displayDateGT=20100101&categoryIds=14788:22287

Parameters:
contenType= all[:feature:press-release:video:podcast:bookmark]
displayDateLT=YYYYMMDD
displayDateGT=YYYYMMDD
categoryIds=id[:id]

  • Configurable RSS feeds services

Both feature and press-release – as you can see, no future content got displayed. Is it nice feature?

?cmd=rss&limit=10&contentType=feature|press-release

Feature

?cmd=rss&limit=10&contentType=feature

Press release

?cmd=rss&limit=10&contentType=press-release

  • Category cloud

?cmd=categorycloud&limit=10&contentType=feature:press-release

Parameters: contentType=feature[:press-release]

  • Track social media sharing and most shared

?cmd=shared&limit=10&contentType=feature&categoryId=14788

Expected features

Of course, there are still a set of features which are expected in newsroom systems. The following are some of them.

  • Asset-level scheduling and remote publishing capability, refer to LPS-17235
  • Asset-version-based scheduling and remote publishing capability, refer to LPS-17395
  • Page-version-based scheduling and remote publishing capability, refer to LPS-6431
  • Scheduling and remote publishing dashboard, refer to LPS-17400
  • Ability to show indexing progress in Control Panel, refer to LPS-18269

What is your wish-list? Your comments or suggestions?

Threaded Replies Author Date
Nice story, Jonas: thanks for sharing! By the... Juan Fernández June 21, 2011 11:54 PM
Congrats on getting that site out, it looks... Jelmer Kuperus June 25, 2011 4:31 AM
Hi Juan, thanks. Yes, I am trying to... Jonas Yuan June 27, 2011 10:33 AM
Hi Jelmer, Thanks. full-story-portlet,... Jonas Yuan June 27, 2011 10:36 AM
very good article...congrats!!! Paulo Grell June 28, 2011 10:30 AM
Congratulations, Jonas, for another good blog... Xinsheng Robert Chen June 30, 2011 7:11 PM
Thank you Dear I hope that You... Naveen Pandey July 5, 2011 12:41 AM
@paulo @robert @naveen Thanks, you are... Jonas Yuan July 6, 2011 7:34 AM

Nice story, Jonas: thanks for sharing!
By the way, are you planning to contribute the features you opened a ticket for? That'd be AWESOME! emoticon
Regards!
Juan
Posted on 6/21/11 11:54 PM.
Congrats on getting that site out, it looks pretty good

I am looking at some of the implementation and I am seeing full-story-portlet, Latest-Press-Release-portlet, cisco-main-portlet etc

I was wondering did you use liferay's structures and templates for the content types and do these portlets query that data. Or did you implement something yourself
Posted on 6/25/11 4:31 AM.
Hi Juan, thanks.

Yes, I am trying to contribute the features I opened a ticket for. As you know that there are a lot. Do need helps. :-)

Jonas
Posted on 6/27/11 10:33 AM in reply to jelmer kuperus.
Hi Jelmer, Thanks.

full-story-portlet, Latest-Press-Release-portlet, cisco-main-portlet have UI part only. All content are provide by search queries. As you can see, there are a few search queries URLs.

Of course, we did use liferay's structures and templates for the content types - features, press-release, bio, etc.
Posted on 6/27/11 10:36 AM in reply to Jonas Yuan.
very good article...congrats!!!
Posted on 6/28/11 10:30 AM.
Congratulations, Jonas, for another good blog article!
Posted on 6/30/11 7:11 PM.
Thank you Dear
I hope that You will continue to guide the liferay developers
Posted on 7/5/11 12:41 AM in reply to Xinsheng Robert Chen.
@paulo @robert @naveen

Thanks, you are welcome! :-)
Posted on 7/6/11 7:34 AM in reply to naveen pandey.