In the WCM Team, we have finished a very cool feature for Liferay 7! It is already merged in master and will be available in the next millestone.

Before 7.0, when you wanted to share a structure or template between different sites you had to put this common content in the Global scope.

After 7.0, you can share these types of content with your child sites. As the administrator of a child site, you will be able to use all the structures, templates, categories, application display templates... etc from any of your parent sites that allows for it (this can be disabled in Site Settings).

Did you know it is possible to create a plugin to extend an existing plugin?

This is a great feature of Liferay plugins that I usually tend to forget but it has been available since 4.3. If you find a plugin that you like but you would like to modify something, you can create another plugin which extends the original one keeping your changes isolated from the original one.

I have started playing with device detection when coding Liferay apps and I have found very useful the Device API in Liferay 6.1.

This API allows you to detect the capabilities of the device which is accessing the portal (the size, operating system, if it has touch screen, camera, compass... etc) and then you make your apps behave different depending on the device. For example, you can add some behaviour only for iphones, or androids, only for small screens...

Many people ask us frequently, is liferay accessible? Does it validate level AA of [FILL_WITH_YOUR_ACCESSIBILITY_STANDARD_HERE]? (It could be WCAG1.0, WCAG2.0, Section 508, RGAA...) And it is not easy to answer, because Liferay usually is just the tool for building your websites, and even though Liferay will help you to achieve any accessibility certification, the final responsibility will be yours. The theme you use or the content you are creating will be the main responsible for the accessibility of your website. We have started a wiki page with some accessibility guidelines to help you with this responsibility. This page will grow with time, feel free to contribute your ideas or lessons learnt when building portals with Liferay.

We keep improving the accessibility of the portal itself (I will make a post with all the improvements coming for 6.1 soon) and we are trying to fix any accessibility issue that any user may find. If you have found accessibility issues, please let us know in the accessibility forums and we will fix them as soon as possible. (We are open to contributions too).

So, in order to prove that it is possible (and even easy!) to create accessible websites using Liferay, we have started a wiki page to display a list of Accessible Websites built with Liferay that have an accessibility certification. Feel free to add your website to the list if you have an accessibility certification or let us know and we will add it for you. There are websites validating WCAG1.0, WCAG2.0 or RGAA...

In Octobre, the Open Source World Conference will be held in Malaga (Spain). The OSWC is one of the most important conferences in Europe about Open Source. In Liferay we are very interested in the conference since there may be many interesting talks and also because we may present our own talks. From the Spanish office, we have submitted the following proposals, if you find them interesting you can vote for them in the OSWC site, so that we are more likely to finally talk in the conference.:

Yes, you can! We have seen lately many people asking about this in the forums and several projects.

Liferay 5.2 uses uses jQuery 1.2.6. and many people wonder if they can use a different version for their plugins or themes. The answer is yes :)

If you are using Liferay 6, the portal uses Alloy UI instead of jQuery, which means that you can use whatever version of jQuery you need for your custom developments.

If you are using Liferay 5.2.x, you may have noticed that Liferay uses jQuery 1.2.6. Upgrading liferay to use a new library may be hard. New versions of jQuery are not backwards compatible and several features (such as drag and drop) may break.

However, a nice solution is to keep liferay using jQuery 1.2.6 and make your custom portlets or themes use a newer version if needed. This can be easily done using the method jQuery.noConflict(); .

it's been more than a month since episode 1 about accessibility improvements. It's not because we didn't have anything to tell, it's just because we didn't have time to do it... but there have been a lot more of accessibility improvements and most of them are already available in the Liferay 6 RC.

"Skip to content" link. This link appears now at the top of all our pages in the classic theme and the control panel. This link allows the users to skip the navigation and go directly to the content of the page.

Keyboard navigation and ARIA support for liferay menus. All the button menus in liferay are built using the <liferay-ui:menu> taglib. Right now we have followed the ARIA standard, so that you can open the menu pressing enter and then navigate through the items using the up/down arrows. To close the menu you can either press scape or press tab. We have tested this improvements with JAWS and the result was really satisfactory, using ARIA roles allows JAWS to tell the user: "This is a menu button, press enter to open the menu and use up/down arrows to navigate through the items" and once it is open it says "Item 1 out of 7 Edit, Item 2 out of 7 Permissions, Item 3 out of 7 RSS.. " and so on.

Icons taglib in liferay. Most of the icons in liferay which are followed by some text are built using the <liferay-ui:icon> taglib and this taglib generated two links: one for the image and one for the text, which could be very confusing for people using screenreaders as they would listen to every link twice. We have fixed it so that there is only one link and the alternative text for the image is "" when there is complementary text (as it is only decorative).

Providing more information in links. Asset publisher and other portlets have been improved to provide more information in all of their links. For example, originally, all the text was "edit", "print" or "pdf" (as the rest of the infomation pointing to the resource is visual) and some users may have problems with these links. Now, the html text includes the name of the resource, althought is is not visible using a normal browser. The text is something like "Edit article one" or "print report on schools".

Language information. Screenreaders need to know the language of the content they are reading. We have added the language in the W3C standard at the top of every page.

Accessible ratings. Ratings in liferay (stars and thumbs) are built using the taglib. This component is very difficult to use for some users as all the information there is visual, it is based in the color of the stars. This component has been modified, so that users with screenreaders to use this component easily as the html for the stars is as follows.

Opens in a new window link. Links that open a new window of the browser now notify the user about it. The text can be changed for an image using css, as it is all wrapped by a span with the class "opens-new-window-accessible".

As always, more info in this wiki page... And there are even more but this blog entry is starting to become too long, so I will keep them for the next episode, keep tuned! see you soon!

Alloy UI Forms. Alloy UI is an amazing framework for building web applications. Alloy Forms are a set of taglibs that generate secure, accessible and consistent forms. They are also integrated with localization, service builder and many other cool features. Today we can say that around 90% of Liferay forms are now converted to Alloy Forms. Some of the accessibility improvements provided by them are:

Warning the user if the context changes when changing the value of a field

Correct Html markup (not tables anymore :)

...

Html validation. Yes! we did it! Liferay 6 validates by default HTML 5 and it also validates XHTML 1.0 if you change the doctype of your pages and add the xmlns attribute.

CKEditor. This is a great improvement! this editor is the latest version of fckEditor which brings a lot of accessibility improvements (keyboard navigation, tested in the screenreader JAWS...)

ReCaptcha. (Contributed by Boubker TAGNAOUTI) Captchas are those images with some distorted text inside in which you have to find out the text to demonstrate you are not a machine but a person. The problem is that they are usually based on an image that you can see, so these mechanisms are not valid for blind users. Recaptcha adds an audible alternative for all those users who can't see the image or find it difficult to understand.

And this is just the beginning... keep tuned for the next episode in our way to WCAG 2.0!

In liferay we have always been concerned about accessibility. Giving everyone the same opportunities despite of her visual, auditory, physical or cognitive disability is one of our main objectives and desires.

When people asked us if Liferay was accessible, it was not an easy question to answer, because usually Liferay is just the framework to build amazing portals and most of the responsibility to make the final portal accessible lies on the theme designers and portlet developers of each project. As a result, there are some portals built with Liferay which are not accessible and some other ones which really are, for example toulouse.fr.

However, we have also realized that we could make it easier for developers to create an accessible site, so these are some of the main steps we are taking in order to achieve this:

Improve Liferay Portal to be as accessible as possible by default. We have started to work hard on this, as you may see in our Project Manager: LPS-5891. We will comment in this blog most of these improvements.

With previous versions of Liferay, it was possible to conform level AA for WCAG 1.0 for you static public website. However, WCAG 1.0 didn't allow to use javascript, so it was very difficult to provide some web 2.0 accessible features in your site. WCAG 2.0 does not only allow javascript, but it says that your site's accessibility can be improved when using javascript properly. We have seen this as an opportunity to go further and make most parts of Liferay Portal accessible following WCAG 2.0 guidelines.

so, what is WCAG 2.0? WCAG 2.0 are the Web Content Accessibility Guidelines recommended by W3C which address most of the disabilities (visual, auditory, physical, cognitive/learning, neurological, language). An important fact is that WCAG 2.0 are language-agnostic (HTML, XHTML, RIA, Flash, PDF, etc.) and technology- and device-independent. They are based in 4 principles (perceivable, operable, understandable and robust), 12 guidelines (not directly testable), 61 success criteria (testable with 3 conformance levels) and 264 techniques (which can be sufficient or advisory).

All the success criteria can be conformed in three different levels: AAA (the best), AA and A. You need to conform all the criteria to achieve a level compliance, which means that if in one criterion you only achieve level A, then your portal is level A compliant (even though all the rest of the criteria are AAA).

AAA is extremely difficult to achieve and meeting some AAA success criteria is not yet possible until the technology is mature enough, so our goal for the next Liferay release is going to be achieve level AA compliance.

We have already found a lot of support by community members, but let us know if you would like to help somehow in the forums. Maybe telling us the problems you found, or contributing with your code (as always, any contribution will be more than welcome).

This entry will be the first one in a series that will show the most important improvements regarding accessibility in Liferay Portal, so... see you soon!

I thought it might be interesting to share some info about the last development I've been involved on these last days. This development has been sponsored by a client and consists on a new functionality in the portal which will allow users to flag content as inappropiate.

There will be a red flag icon near to several contents (blogs and message boards by now, and more to come) which will enable a user to flag some content as inappropriate for a reason and warn the administrator about it.

After a user flags some content as inappropriate, the administrators of the community/organization in which this content is located will receive an email explaining the content reported, the url where it can be seen, the author of the content, the reporter of the abuse... etc

We've made this feature configurable through several properties (although we are thinking of creating a user interface accessible through the control panel for them). These properties allow you to specify:

Whether guest users are allowed or not to flag content

The reasons for the inappropriate content

The content of the email that is sent to the administrator as a result of the content being flagged

Besides adding this feature to several of the core portlets we've also created a new taglib called <liferay-ui:flags> which allows a developer to add it to their own portlets.

As you may have already seen, the user/organization administration in Liferay 5.2 has been completely redesigned.

The new interface is, in my opinion, clearer, nicer and much more usable, and this has been possible because of the people in the community (thank you guys for all the suggestions, complaints and feedback) and people working for Liferay, especially Jorge Ferrer, Ray Augé and Nate Cavanaugh.

In this post, I just wanted to higlight some of the new features/improvements and explain the reasons for all these changes.

The design. It's soooo nice, isn't it? This is an artwork by Nate (this guy is a genius).

Modify everywhere, save in one place. As you can see, there can be a lot of sections in the user administration. You can move from one to another making changes in any of them and when you click on the Save Button everything will be saved.

Know what you are changing. Evertime you modify a section, you will see it has been modified in the menu.

All together with a unified UI. You will find a section for everything related to organizations, other for communities, other for user groups... and one for roles (regular roles, community roles and organization roles) yes, all together, so that you can see everything at first glance.

Better error management. If you save all your changes and you get an error, no one of your changes will have been saved in the server, however, you will still have all your changes in your sections (you can see they keep the modified sign). In addition, the sections with errors will show an error icon in the menu and an error message just over the field which was wrong.

Adding more fields dinamycally. You can add as many phone, emails... without loading the page. (This is algo a great work by Nate)

The toolbar. This small toolbar really makes you work faster... you'll see...

Custtom attributes. As you may have read in Ray's blog (Ray is an amazing guy too), you can define custom attributes without writing a line of code which will be shown in the custom attributes section. (more information in this wiki article: Custom attributes)

Extension and configuration easier than ever. 2 groups of properties in portal.properties define all the sections you will see when creating users and when adding users... completely customizable, easy, right? and you can even add your own sections here! All you have to do to display your new section is add its name to the appropiate property and place a jsp file with the same name (changing hyphons for underscores) in the folder enterprise_admin/user/ In this folder you will find a jsp file for every section, so it can't be easier to modify, so, you can even place custom attributes (using the taglib) in the section you prefere. (more information about this can be found in this wiki article: User Administration)

All the things said before are the same for organizations. You will aso find 2 groups of porperties and you will be able to add your jsp files for new sections in enterprise_admin/organization folder. (more information in this wiki article: Organization administration). From the organization administration you can even change the logo which will be displayed in all the pages of your organization.

I hope you enjoy all these new features, and please, feel free to tell us what you think, we are completely open to new ideas, feedback and suggestions!

Today I just wanted to highlight one of the many possibilities that Liferay portlets can offer.

As mobile devices with internet access are becoming more popular, lots of useful web application are being adapted to these smaller screens. Web applications adapted to the iPhone look amazing and they are very easy to use.

The good news is they can be directly used within Liferay as portlets!

The process is really simple:

Add an iframe portlet to your page in Liferay

Go to Configuration of this portlet and set the Source URL to the iPhone web application URL (listed below)

That's all! Some nice iphone web applications which can be used as Liferay Portlets are the following:

I started working for Liferay as a Core developper around two months ago and wanted to use this first post also to say hello to all the people I still don't know from the community, welcome everybody and thank Jorge, Alberto, Brian and Nate for all their support.

From version 5.2 we'll have a new functionality in the portal! It is called "Reminder Queries" and it will be used as a second security mechanism when a user forgets his password. (You may have seen this functionality somewhere else before in portals like Google or Yahoo...)

When this functionlity is enabled:

the user will have to provide an answer to a question he had chosen before in order to receive a new password. (What is your frequent fly number? what is your library card number? ... )

Question and answer can be modified through Control panel --> my account

Users have to choose a question the first time they log into the portal

Questions are configured by a property in portal.properties for the portal and every organization can define its own questions in different languages in a new section in control panel.