Blog 6-2-08

Updated: 11/28/08

Screenshots for the latest Desktop theme updated for Liferay 5.2.x.

 

Desktop Theme - Liferay

 

Desktop Theme - Mac

 

You can download the theme here (change .zip to .war)


 

It'd be nice to have a theme that's different than a traditional theme which also has cool animation effects to help keep things fun and interesting.  These ideas resulted in the new Desktop Classic Theme.

There's a new Mac-style dock that has a nice rollover effect.  There's also subtle effects when you're minimizing, maximizing and closing portlets.  These eye-catching animation features make it a good theme to use if you're demoing Liferay to a friend for the first time.

 

Desktop Classic Theme

 

It leverages existing jQuery libraries in the Portal so there's relatively little code in the theme - which makes it a lot easier to maintain and keep up to date with any future upgrades of the Liferay Portal itself.

You can download the theme here (change .zip to .war) or from /lportal/plugins/trunk.

A big thanks to the original desktop theme developer Advany - for the images and ideas - as well as to Ed and Nate who helped me when I first started building Liferay themes.

* Or if you prefer a traditional Desktop look (Linux, Mac, Windows), you can try out the traditional Desktop Theme.

 

Desktop Traditional Theme

 

It captures the look of a tradtional desktop well, but it's more complex - which means it'll require more time to maintain with any future upgrades of the Liferay Portal.

You can download the traditional Desktop Theme war here (change .zip to .war) or from /lportal/plugins/trunk.
 

Blogs
Is this Theme comatibel with Liferay 4.4.2 ?
Thanks for catching this. I updated the Desktop Classic Theme to be backward compatible with 4.4.2. The zip file and /lportal/plugins/trunk have the latest code.

btw - if you don't see the Mac-style dock, try switching your layout to the Freeform layout.
I cant deploy the theme, neither on 4.4.2 nor 5.0.1

07:42:13,729 ERROR [IndexWriterFactory:207] Unable to create a new writer
org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/home/liferay/liferay/lucene/0/write.lock
at org.apache.lucene.store.Lock.obtain(Lock.java:70)
at org.apache.lucene.index.IndexWriter.init(IndexWriter.java:598)
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:410)
at com.liferay.portal.lucene.IndexWriterFactory.getWriter(IndexWriterFactory.java:188)
at com.liferay.portal.lucene.LuceneUtil.getWriter(LuceneUtil.java:338)
at com.liferay.portal.lucene.LuceneUtil.getWriter(LuceneUtil.java:332)
at com.liferay.portal.plugin.PluginPackageIndexer.addPluginPackage(PluginPackageIndexer.java:76)
at com.liferay.portal.plugin.PluginPackageIndexer.updatePluginPackage(PluginPackageIndexer.java:221)
at com.liferay.portal.plugin.PluginPackageUtil._indexPluginPackage(PluginPackageUtil.java:494)
at com.liferay.portal.plugin.PluginPackageUtil._registerInstalledPluginPackage(PluginPackageUtil.java:1177)
at com.liferay.portal.plugin.PluginPackageUtil.registerInstalledPluginPackage(PluginPackageUtil.java:228)
at com.liferay.portal.deploy.hot.PluginPackageHotDeployListener.invokeDeploy(PluginPackageHotDeployListener.java:186)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:89)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:42)
at com.liferay.portal.kernel.servlet.PortletContextListener.portalInit(PortletContextListener.java:53)
at com.liferay.portal.kernel.util.PortalInitableUtil.init(PortalInitableUtil.java:38)
at com.liferay.portal.kernel.servlet.PortletContextListener.contextInitialized(PortletContextListener.java:93)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1215)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Unknown Source)
07:42:13,731 ERROR [PluginPackageUtil:506] Error reindexing DesktopTheme442/DesktopTheme442/unknown/war
java.io.IOException: Unable to create a new writer
at com.liferay.portal.lucene.IndexWriterFactory.getWriter(IndexWriterFactory.java:209)
at com.liferay.portal.lucene.LuceneUtil.getWriter(LuceneUtil.java:338)
at com.liferay.portal.lucene.LuceneUtil.getWriter(LuceneUtil.java:332)
at com.liferay.portal.plugin.PluginPackageIndexer.addPluginPackage(PluginPackageIndexer.java:76)
at com.liferay.portal.plugin.PluginPackageIndexer.updatePluginPackage(PluginPackageIndexer.java:221)
at com.liferay.portal.plugin.PluginPackageUtil._indexPluginPackage(PluginPackageUtil.java:494)
at com.liferay.portal.plugin.PluginPackageUtil._registerInstalledPluginPackage(PluginPackageUtil.java:1177)
at com.liferay.portal.plugin.PluginPackageUtil.registerInstalledPluginPackage(PluginPackageUtil.java:228)
at com.liferay.portal.deploy.hot.PluginPackageHotDeployListener.invokeDeploy(PluginPackageHotDeployListener.java:186)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:89)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:42)
at com.liferay.portal.kernel.servlet.PortletContextListener.portalInit(PortletContextListener.java:53)
at com.liferay.portal.kernel.util.PortalInitableUtil.init(PortalInitableUtil.java:38)
at com.liferay.portal.kernel.servlet.PortletContextListener.contextInitialized(PortletContextListener.java:93)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1215)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Unknown Source)
Hi Marvin,

To fix this problem stop tomcat and delete the write.lock file inside liferay/lucene/0/. Restart tomcat and place the desktop-classic-theme war back inside the deploy folder. That should fix things for you.
Hy Peter,
Thanks for your answer - when i delete the write.lock i get this, when I want to deploy your theme:

22:32:23,030 ERROR [HotDeployUtil:60] com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for DesktopClassicThemeMac
com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for DesktopClassicThemeMac
at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:431)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:89)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:42)
at com.liferay.portal.kernel.servlet.PortletContextListener.portalInit(PortletContextListener.java:45)
at com.liferay.portal.kernel.util.PortalInitableUtil.init(PortalInitableUtil.java:39)
at com.liferay.portal.kernel.servlet.PortletContextListener.contextInitialized(PortletContextListener.java:52)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1215)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.liferay.portlet.WAIFriendlyURLMapper
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:196)
... 21 more
Hi Marvin,

Look inside your webapps folder and delete the folder DesktopClassicThemeMac. If you have a folder called desktop-classic-theme, delete that one too.

Before you place the theme war inside the deploy folder make sure its named "desktop-classic-theme-5.0.1.1.war". Changing the name of the war should fix this problem for you.
Hi,

I deployed this them ok, however i get problems in IE7 wehre all the porlets on the page overlap each other on page load and they cannot be moved. and the mac style dock at the bottom doesnt work and the menu at the top ceases to work.
In firefox the top menu works and the portlets can be moved around but the dock at the bottom still doesnt work (doesnt animate and clicking it doesnt do anything.

i am using liferay 5.1.2
Hi James,

I haven't had a chance to update the Desktop Classic theme for Liferay 5.1.x. The original Desktop theme has been updated though, so you may want to checkout that theme for now.
Hi Peter,

I installed the Desktop theme (at the plugin page) to Liferay 5.1.2. The theme is amazing and I really like it. However, I could not switch to Vista or Mac look and feel.

Is this for same reason you mentioned at earlier comment (no chance for update) or am I doing something wrong.

Vista and Mac look and feel for Liferay 5.1.x would be very desirable. This it absolutely the best theme ever developed for Liferay.

Thanks a lot!
Thanks, appreciate it.

I wanted to leave those color schemes in, but I eventually removed them because it made the underlying html/css overly complex.

If I think of a good way to do it, I'll try and readd those color schemes.
Hey Mikael,

The Mac color scheme is back in. There are a couple of other nice improvements as well. Here's the link to the 5.1.1 theme war (after you download it, change .zip to .war)

http://www.liferay.com/c/document_library/get_file?p_l_id=745648&folderId=915921&name=DLFE-1082.zip
Why don´t work in my LR? I´m Install the theme and asiggn this to a community, but when i´m go to this community, that show me an Empty Page, I´m look in the firebug and only see the <HTML> <HEAD>and <BODY> tags (the body is close in the same tag <body />), i mean, the page is not loaded, and this happends with all themes in my LR 5.2.

Any idea?
Hi Mauricio,

I'll need to see the logs with the exception messages to see what's causing this problem.

Can you post this question and relevant logs on the public forums. I'll follow up more there.

This way a lot more people can participate and it'll be easier for others to find if they encounter the same problem.
Peter Hi!

The problem has been fixed!! I´m change these lines of code

$theme.include($bottom_ext_include)
$theme.include($session_timeout_include)
$theme.include($sound_alerts_include)

in portal_normal.vm, for this line

$theme.include($bottom_include) and the theme deploy and work fine.

someone can say me, what is the reason of that error, what happens whit this lines?

Thanks a lot
Nice!

Calling those velocity variables just added some html/css/js code to the bottom of the theme. Those velocity variables were recently changed, so that's what caused your theme to break.

1. $sound_alerts_include - deprecated awhile back and does nothing (removed)
2. $bottom_ext_include - changed to $bottom_include
3. $session_timeout_include - some code to check if a user's session timed out (removed)
4. $bottom_include - some html/css code for portlets (updated to also include $session_timeout_include stuff)

So basically all you need now is $bottom_include. Its been updated to contain everything.