FlexSpaces, CMIS Spaces, and Portlets updates

 FlexSpaces 04 05 2011

FlexSpaces (Flex+AIR, Flex+Browser, portlets) RIA clients for Alfresco ECM

In March, FlexSpaces (Google Code, Alfresco Forge) was finally ported from Flex 3 to Flex 4. A first pass of moving from halo controls to spark controls was made, and it has a new look with the spark theme. In April the “04 05 2011” version of FlexSpaces added the optional capability to use Alfresco Share form xml configurations to configure view/edit mode Flex forms in a new tabbed properties dialog, thus supporting custom types, aspects, etc. See the readme-form-config.txt in the distributions for how to enable and use this configuration capability.  This version also changed to have the advanced search and properties dialogs resizable using skins from flexdevtips.    

In May, the portlets to run FlexSpaces in portals were updated. To keep them from getting outdated as quickly, they are now wrappers that reference a separate install of the “in-browser” non AIR version of FlexSpaces (that can be updated separately). The older FlexSpaces Liferay portlet supported Liferay 5.x, the new one supports Liferay 6.x.  This is available in the Liferay community plugins catalog. The FlexSpaces portlet and gadget for the GateIn portal were both updated. The FlexSpaces portlet for the original JBoss portal was also updated.

CMIS Spaces (Flex+AIR, Flex+Browser, portlet) RIA clients for content servers supporting the CMIS standard (Alfresco, IBM, EMC, Nuxeo, Microsoft SharePoint, Adobe Day CRX, etc.)

In April, CMIS Spaces, based on FlexSpaces, was ported from Flex 3 to Flex 4. CMIS Spaces has both atompub rest binding support (default, with more features hooked up in the UI) and web services SOAP binding support (optional, with only navigation and search features can be used through the UI, although the full featured data access backend code is present). Note that the ActionScript code for all the CMIS SOAP binding APIs was re-generated with FlashBuilder 4 / Flex 4.1 SDK / fiber (and this improved things to not have repeated code for types across the multiple CMIS SOAP web services).

In May, a Liferay 6.x wrapper portlet for using CMIS Spaces in a Liferay portal was introduced. This portlet references a separate install of the “in-browser” version of CMIS Spaces. Having these two parts allows CMIS Spaces, like Flex Spaces, to be updated separately and avoids the portlet getting out of date. The CMIS Spaces portlet is also in the Liferay catalog.

Both a FlexSpaces/Alfresco Gadget and Portlet for the GateIn Portal

FlexSpaces Gadget on GateIn gadget dashboard

I recently added both a FlexSpaces/Alfresco Gadget (Google) and a Portlet for the new GateIn (eXo+JBoss) Portal. See Alfresco Forge for downloads, Google Code  for source.  See previous posts on other portlets ( Liferay Portal portletJBoss Portal portlet).

The gadget and the portlet  work on both app server versions (Tomcat, JBoss AS) of the GateIn beta1. (I had to add a tld file to get the portlet to work on JBoss).

The gadget can be used on dashboard layouts. The portlet can be used in other layouts. In the screenshot, the FlexSpaces gadget is maximized, so it doesn’t look like the usual gadget layout. The beta1 seemed to not allow saving an edit to change from a 3 column to a 1 or 2 column. (FlexSpaces can made to take up less space by setting the show header area preference to false, and hiding the tree with the show / tree menu). Also the beta1 didn’t display default values for the FlexSpaces gadget when the edit UI mode is used, so editng the gadget xml is easier (This is only on gadgets, regular portet preferences UI edit mode was fine).

See the readmes in the flexspaces-gadget.zip file and the flexspacesGateInPortlet.zip file for setup instructions.

JBoss Portal Portlet for FlexSpaces/Alfresco

 FlexSpaces JBoss Portal portlet

In addition to a Liferay portlet, I recently added a JBoss Portal portlet for FlexSpaces (Alfresco Forge, Google Code).  See previous post about the Liferay portlet since some of the same things apply (setting up two app servers, pointers to SSO info, etc.).

How to setup:
1. Install Alfresco community or enterprise (I used Alfresco 3.2 community bundled with Tomcat)
2. Start alfresco user admin pw admin, install flexspaces 0.91+ webscripts, see readmeWebScripts.txt
3. shutdown Alfresco
4. Install a JBoss Portal community or enterprise (I used 2.7.2 community bundled with a 4.2.3 JBoss app server)
5. Change port 8080 to 9080 and port 8009 to 9009 in jboss-portal-2.7.2/server/default/deploy/jboss-web.deployer/server.xml
to not conflict with ports in alfresco running in a separate app server
6. Copy flexspaces-jboss-portlet.war to jboss-portal-2.7.2/server/default/deploy/
7. start jboss portal with jboss-portal-2.7.2\bin\run.bat
8. run http://localhost:9080/portal and log in with admin/admin (so portlet edit UI will be enabled)
9. startup alfresco
10. in jboss portal switch to FlexSpaces tab, click on “Edit” on the flexspaces portlet and setup alfresco url  if needed and other options and click update.
11. log into FlexSpaces portlet (admin/admin or other user/pw)

JBoss+eXo GateIn Portal (See GateIn website)
I tried the FlexSpaces JBoss portlet with the beta1 of GateIn and it didn’t work. I am looking into creating a FlexSpaces portlet and a gadget for this new portal)


Liferay portlet for FlexSpaces

FlexSpaces Liferay portletFlexSpaces Liferay portlet config

FlexSpaces 0.93 was recent released (Alfresco Forge, Google Code).  This now includes a Liferay portlet (runs FlexSpaces inside a portlet), fixes progress bar color in new styling/skinning from 0.92, adds short-term state save for portlet resize / browser refresh (config only enabled in portlet pkg), adds additional parms/flashvars to support config in portlet preferences dialogs, adds parms to enable adding sso.  A JBoss Portal portlet will be available later. Also will have portlets for CMIS Spaces.

The Liferay portlet is also available from the Liferay website community plugins download area and also from within Liferay itself: Add Application / Install More Applications (use refresh button at bottom to refresh plugin list)  (Note: installing the integratedsemantics.zip web scripts in Alfresco is still required, see readmeWebScripts.txt)

The FlexSpaces Liferay portlet configuration UI allows setting what views to show (doclib, search, tasks, wcm) and the Alfresco web script URL.

This portlet was developed/tested with Liferay 5.2.3 and Alfresco 3.2 running in separate Tomcats. Running Liferay and Alfresco in separate Tomcats is recommended (easier, can switch to new versions independently, and is more scalable). To adapt the FlexSpaces portlet to Liferay 5.1.x, etc. look at the source inside the Liferay Flash portlet war for your version of Liferay and adapt the jsps (different dtds) and  maybe the java file of the FlexSpaces portlet.

How to setup:
1. Install Alfresco enterprise or community
2. Start alfresco user admin pw admin, install flexspaces 0.91+ webscripts, see readmeWebScripts.txt
3. Install a separate Liferay 5.2.x tomcat bundle from liferay.com
4. I changed all the ports in <liferay>/<tomcat>/conf/server.xml to start with 9 instead of 8 (8005->9005, 8080->9080 twice, 8009->9009) to not conflict with tomcat running alfresco
5. Start liferay tomcat and login bruno@7cogs.com (password: bruno)
6. Within Liferay install the FlexSpaces portlet: Add Application / Install More Applications (use refresh button at bottom to refresh plugin list) and click add on FlexSpaces item from the Alfresco or Flex category
7. Configure the portlet in its configuration UI to have the views wanted and for your Alfresco web script URL (may need different host,port), and save.
8. Login to the FlexSpaces portlet (user: admin, pw: admin)
9. The FlexSpaces portlet also works with LiveCycle Content Services ES:
a. in the portlet configuration UI set the Alfresco webscript URL in to http://localhost:8080/contentspace/service and set show tasks to false
b. in FlexSpacesConfig.xml set is LiveCycleContentServices to true, serverVersion to 2.1 for LC 8.2.1, and set useSessionData to false (need to do some more work to get the short term state save to work with LC CS, and avoid the re-login on portlet resize)

Haven’t tried using SSO approaches yet:
1. Rivet Logic STAr (Secure Token Authentication rivet amp for Alfresco) used with AWPr
2. Jonas Yuan / Cignex LDAP ADS and SSO CAS  and also blog post on a combined install
3. Sourcesense Alfresco OpenSSO integration
Other references
1. Luis Sala’s portlet dev wiki page and blog
2. Jeff Pott’s blog


Liferay + FlexSpaces + Alfresco

HOW TO: FlexSpaces in Liferay IFrame portlet

liferay iframe flexspaces

screencam video demo

I just tried a quick test of running FlexSpaces+Browser in a Liferay IFrame portlet. It worked! All features of flexspaces worked:

  • Doc library, search, tasks, wcm views
  • Drag/drop of files between dual panes, internal cut/copy/paste between spaces
  • File upload, file download, file viewing, preview, play video
  • Checkin, checkout, edit, cancel checkout, update, make versionable, version history panel
  • Icon, thumbnail, grid list, cover flow view modes
  • Search, advanced search, tag cloud, category navigation
  • Create space, properties edit, tags/categories edit
  • Make pdf, make flash, start workflow
  • Coming flexspaces 0.8 features with Calais integraion (auto-tag, manual semantic tag properties edit, multiple semantic tag clouds)

Issues noticed: works best when portlet maximized, when not, doesn’t use full portlet area, when switching portlet between regular and max size looses login, liferay dialog not always on top of iframe/flash. Things might work better with the Liferay Flash portlet.

(Update 8/16/09: Added short term state save/restore in SharedObject of ticket/doclibPath/tabIndex in FlexSpaces. Now works much better (don’t loose login, view state when resize portlet. Used Liferay Flash portlet instead of IFrame portlet. Also Liferay dialogs z order was fine. Also would work with flexspaces webapp installed in either Liferay tomcat or in Alfresco tomcat (just different Flash portlet swf url config) )

Didn’t try more integrated approaches yet:
Webscripts as Liferay portlets on ecmarchitect.com
Full Integration of Liferay 5.1.2, Alfresco 3.0 E, SSO, LDAP
Use Liferay Flash portlet instead of iframe portlet

Config used: Alfresco enterprise 3.0 in one tomcat, Liferay 5.1.2 in another tomcat, windows vista

How to:
0. Install Alfresco enterprise or labs
1. Normal install of flexspaces+browser flexspaces dir in alfresco tomcat webapps area, flexspaces+browser 0.7
2. Flexspaces webscripts installed in alfresco, flexspaces 0.7 webscripts
3. Install separate liferay + tomcat bundle from liferay.com
4. I changed all the ports in liferay tomcat conf/server.xml to start with 9 instead of 8 (9080, etc.) to not conflict with tomcat running alfresco
4. Start alfresco tomcat
5. Start liferay tomcat and login test@liferay.com (password: test)
6. With liferay “Add application” add a IFrame portlet from the Sample category
7. Configure the portlet to have the source url: http://localhost:8080/flexspaces/FlexSpaces.html
8. Title of portlet can be changed to “FlexSpaces” by clicking on “IFrame” text in the title and editing
9. If portlets of the FlexSpaces individual views instead of all 4 views in one portlet, (or 2 views only in one portal, etc.) the srcUrl args doclib=true&search=true&tasks=false&wcm=false to FlexSpaces.swf can be used like in the flexspaces 0.7 page site components for share (See FlexSpaces Share integration blog post with screenshots)