CMIS Spaces source code checked in, CMIS / AtomPub ActionScript API notes

The source code for CMIS Spaces (both Flex+AIR and Flex+Browser) is now checked into

(2191 files, including 6 language translations, although some of the files for FlexSpaces parts (workflow, wcm) are not used in CMIS Spaces)

Previous blog post covers what is working at this point and some setup info

There are 4 Flex Builder projects:
1. CMISSpaces (for CMIS Spaces Flex+Browser)
2. CMISSpacesAir (for CMIS Spaces Flex+AIR)
3. FlexSpaces (some modifications to FlexSpaces base code for CMIS, don’t need to build, dir is just used by CMISSpaces, CMISSpacesAir)
4. FlexSpacesAir (some modifications to FlexSpaces AIR base code for CMIS, don’t need to build, dir is just used by CMISSpacesAir)

Notes on the CMIS “client api” (client side service/data api) used in the code:
1. main part is in CMISSpaces/src/org/integratedsemantics/cmisspaces/cmis/atom
This consists of CMISAtomClient, extended cmis entry and feed classes, port of Alfresco’s Abdera extension classes CMISObject, CMISProperty, etc. to ActionScript
2. CMISAtomClient extends AtompubClient from as3atompub. The modified code from as3atompub is in CMISSpaces/src/org/coderepos (modified to work with newer version of as3httpclientlib
/sockets HttpClient (in org/httpclient) and to work without sockets using HttpClient2 in org/integratedsemantics/util)
3. CMIS Spaces also has Cairngorm events/commands/delegates api in org/integratedsemantics/cmisspaces/control that uses CMISAtomClient / AtompubClient

Also there are two other Atom related ActionScript libs out there
1. as3syndicationlib
2. NoteTag Kiwi AtomProtocol Library

Also a CMIS Atom Flex library project has started

Drupal + CMIS, Alfresco, CMIS Spaces Flex+AIR

Drupal CMIS Alfresco CMIS Spaces Flex+AIR CMIS Spaces Create HTML Content Dialog

Just for fun I tried out this chain of software working together for Drupal in a RIA client:

  1. Drupal 6.10 (used Acquia Drupal 1.2.3)
  2. CMIS and CMIS Alfresco Drupal modules (joint effort Optaros, Acquia, and Alfresco)
  3. Alfresco Labs 3
  4. CMIS Spaces Flex+AIR client early preview

Got it working by
1. Installing and enabling the Drupal modules
2. Configuring the CMIS, CMIS Alfresco, and CMIS Sync module settings in Drupal

(Although now only stories, pages created in Drupal get created in the Alfresco folder setup in the CMIS sync config in Drupal. I thought I had seen files created in the Alfresco folder get synced back)
Update: 2 way sync on creation
“Yes, currently Alfresco -> Drupal sync works via cron, so you’ll need to have cron running at reasonable intervals (or run it manually). This will likely be improved in future versions.”


Twitter Page

CMIS Spaces Flex+AIR early preview download available

CMIS Spaces screenshot

A early first build/AIR installer  of CMIS Spaces Flex+Air is now available on Google Code:
Consider it like a prototype (some stuff works).  Update: source code is in Google Code,  a non AIR CMIS Spaces Flex+Browser is available in the source too, and a preview build 5 of Flex+AIR  is available.

Working Features (pretty much FlexSpaces minus WorkFlow, minus WCM)
(Tested with a download of Alfresco Labs 3 final with a draft CMIS implementation.)
1. Uses CMIS REST Atom binding API (or CMIS Web Services binding API) instead of Alfresco web scripts
2. Doclib with Tree, Folder view (both icon and grid views), breadcrumb nav
3. One box basic search and advanced search dialog (advanced just does basic now)
4. Version List Panel (show with View / Version History)
5. Checkout, Checkin, Cancel Checkout (may be issues with repeated use on same file)
6. Checked Out Files List View (checkin, cancel checkout from here)
7. Create Folder (File/Create Space menu)
8. Upload Files dialog (works on Flex+AIR, Flex+Browser needs multipart form post in cmis)
9. Download File dialog (works, will get auth prompt first time)
10. Viewing files on files in doc lib and checked out list views (not in search results since cmis didn’t return content stream urls)
11. Multi select Delete with confirm dialog
12. Play video file (“Play Video” menu on files in the repo)
13. AIR: Drag in from desktop into repo (multiple select) with progress bars (need to add drag out)
14. AIR: native clipboard copy / paste from desktop into repo
15. AIR:Local files pane (View / Local Files Browser menu) with drag into repo
16. AIR: Create Content dialogs (HTML, text, xml) (xml has problems)
17. Language translations for FlexSpaces will work with it (currently: English, Spanish, German, French, Japanese, Greek)
18. Application UI component library using presentation model pattern, Cairngorm based “non UI” api (also will have an extension of as3atompub lib for CMIS)

1. CMIS Spaces Flex+AIR needs AIR 1.5 or greater installed before double clicking on the CMISSpacesAir.air file to install it.
2. In CMISSpacesConfig.xml (Spring ActionScript file) in Program Files/CMISSpacesAir
a. Set CMIS service URL for your vendor / host in the cmisUrl property
b. useSockets property set whether non sockets mode (URLLoader,HTTPServer) or sockets/as3httpclientlib mode
(some CMIS rest things that will work in AIR won’t work in non-AIR without using sockets) (also as3httpclientlib supports HTTPS using AS3Crypto TLS , in addition to HTTP,   headers, all http methods)
(delete and cancel checkout delay a long time in socket mode, update fixed this 3/3/09 on my side)
c. the crossDomainFileUrl property can be used to specify a location of a cross domain file URL to check
A sample crossdomain.xml file is included with wild cards that should be changed (use of http headers in CMIS, use of sockets mode may require this (more so with Flex+Browser than with Flex+AIR)
3. Note: patched  C:\Alfresco\install\labs\3final\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\templates\webscripts\org\alfresco\repository\store changed pwc.get.atomentry.ftl to have syntax like pwc.put.atomentry.ftl to avoid server syntax error with checked out / private working copies
changed [ node ns=[@nsLib.entryNS/]/]
to [#assign namespace][@nsLib.entryNS/][/#assign]
[ node=node ns=namespace/]
4. Update 3/12/09: For Web Services mode instead of CMIS Atom REST, set useWebServices value to “true” and set url in cmisWebServicesUrl in config file.


Twitter Page