Skip navigation
All Places > Alfresco Content Services (ECM) > Blog > 2011 > May
I was really pleased by the feedback I got when I first talked about Share Extras at Alfresco's Sales Kick-off in Orlando earlier this year, when I showed a few of the initial add-ons.

Since then, the list has grown significantly, but I was especially pleased when Peter joined the project and contributed his Google Site News Dashlet and CKEditor Form Control add-ons for Share. For me it marked the point where the project became more than the list of ideas that had been in my head.

Now as of last week two contributors have become four, with the addition of two great add-ons from Florian Maul and Romain Guinot. I'm really excited about these both.

Florian's JavaScript Console add-on is an essential tool for developers building extensions for Alfresco, and complements my port of Dave Caruana's original Node Browser. Like the Execute Script action, it also provides a useful tool for administrators who want to run one-off scripts against the Alfresco repository.

JavaScript Console Tool

Romain's Sample Audit Dashlet shows how different types of Audit information can be displayed in Share. This is a great addition since it shows how auditing can be used outside of the DOD Records Management module, to track specific events within the repository. Even custom audit applications are supported.

Not only do these new add-ons take the total number to almost 25, they also extend the number of languages supported in Share Extras, by providing examples in French and German, in addition to the English and Swedish examples added by myself and Peter.

Lastly, I've made a few significant improvements to the Site Poll Dashlet last week, which I couldn't have done without the help of several others. So thanks to Toni de la Fuente for helping me to debug and fix a couple of previously unreproducible (at least for me) issues with the repository web scripts, to Jeff Potts for his suggestion to update the site activity feed when someone votes, and to Ed Mannion for reporting an obvious issue with using on non-Mozilla browsers.

If you want to help contribute to Share Extras, you can do so in several ways. Of course new add-ons are always welcome but ideas, bug reports/fixes and translations are equally valid ways of helping out. More information is available on the Contribution Process page.

The Social Collaboration Hype

Wikipedia defines Social Collaboration as: '(it) refers to processes that help multiple people interact, share information to achieve any common goal. Such processes find their 'natural' environment on the Internet, where collaboration and social dissemination of information are made easier by current innovations.'

With the explosion of social networks and groups, companies started realizing that they needed the same kind of (almost) real-time collaboration around their projects and content. How fast can members collaborate around a document or project can determine the company's long term-success. Alfresco knows that an Enterprise Content Management System needs to provide means for users of the system to collaborate quickly and effectively. Our Share platform has integrated many useful functions such as Wikis, Blogs, etc., that facilitate communication and collaboration amongst team members.

Our upcoming Alfresco 4.0(Swift) version (4th Quarter 2011) will include several enhancements and new collaborative features that will make Social Collaboration easier. I will talk about Swift in detail on a future blog. Today we launched a new blog dedicated to social content collaboration: where you can read more Alfresco's Social Content and Collaboration.


Micro-blogging is also emerging rapidly as a collaborative strategy. It is blogging in small scale, and exchanging small pieces of info, files, links, videos, etc. Alfresco Share is an extensible platform that can be used for micro-blogging with the addition of plug-ins. One such plug-in is the Alfresco Share Status plug-in, developed by our new Chief Community Officer and Alfresco book author, Jeff Potts (Optaros, Metaversant), which clearly illustrates both the extensibility of the Alfresco platform and how plug-ins like this can be developed to leverage micro-blogging with Alfresco throughout the enterprise. You can check out the project at: You can also see a video of this micro-blogging plug-in in action here:

Real-time chat in Alfresco

I recently got asked by a prospect if Alfresco has (or can leverage) any chatting/instant messaging capabilities. I remembered that during The Orlando Alfresco Kickoff in March, someone had enabled a chat inside  of a dashlet in Share. I thought that for a demo, this could be an easy way to show chatting/IM inside of Alfresco. It turned out to be a very simple exercise. For this, I used Google Talk Gadget, since it can be framed/embedded in a Dashlet. This is very simple to configure, all you have to do is to add a Web View Dashlet to your site, then configure it to point to the Talk Gadget:

For the URL field use:

You would need to log-in with your Google (gmail) id, and start chatting with your collaborators!

Let me know if you find this tip useful.

Talk to y'all soon!

Back in January I posted a blog about how powerful the Aspect feature was in Alfresco. It included two videos – one showing how to apply an aspect and one showing how to search on an aspect. A number of people have asked about getting access to my configuration files so they could try it out themselves. So here are the instructions and sample files.


These customisations will add a number of new types and one new aspect:

ContractContract IDCustomer InfoCustomer Name
Standard Operating ProcedureSOP IDCustomer ID
ReportReport IDCustomer Contact
Case FileCase ID
Issue LogIssue ID
ProposalProposal ID
Meeting NotesMeeting ID


The demo configurations consist of 5 files. Copy these to the relevant location within the Alfresco install (note: if you already have some of these files, with local configurations, you will need to merge the changes).

Copy to


(note: you will need to create the messages folder)

Copy custom-slingshot-application-context.xml and share-config-custom.xml to


(note: you will most probably already have a share-config-custom.xml file. This one can replace the default one if you have not modified it)

Copy demo-context.xml and demoModel.xml to


Now restart the server. If everything goes right you should now be able to...

  1. Change the type

  2. Add an aspect

  3. Set the meta data

  4. Use the advanced search feature.

I've always been a big fan of using Ant to automate some of the more mundane tasks such as building packages, when developing Share add-ons like the 20 now available on Share Extras, and the Sample Dashlet project now hosted on there now provides a template for others to use in their own projects.

That project's build script provides a target to hot-copy files into a running Tomcat instance for local testing, but whenever I've updated web script components (either on the repo side or in Share) I've had to remember to hit the Refresh Web Scripts button on the scripts index page. This calls the Web Scripts Maintenance page, which is actually a web script itself.

Since I was doing a small bit of work this week to provide a couple of new custom document actions, I figured it was worth looking again for a more automated solution to this.

Ant comes complete with it's own Get Task which can make outgoing HTTP calls, but as the name implies it's limited to GETs only and not the POSTs required to hit the Web Scripts Maintenance page. So I started looking for alternatives.

Ant's Sandbox does provide a HTTP module which can apparently make other requests, but the lack of any updates since 2007 did not bode well, and the lack of any documentation was too much of a barrier anyway. Lastly I revisited the Ant-Contrib tasks which I'd experimented with a while back, but again there were no recent updates and the library still did not support the authentication necessary to call the Maintenance web script.

Finally via a thread on Stack Overflow, I came across this project by Alex Sherwin, which is actively being maintained and supports POST requests with authentication and request parameters. Exactly what I needed.

So I added the following definitions to my build script, which seem to work well on 3.4.

<!-- Tomcat properties to reload web scripts or the manager webapp -->

<property name='tomcat.url' value='http://localhost:8080' />

<property name='tomcat.repo.url' value='${tomcat.url}' />

<property name='tomcat.share.url' value='${tomcat.url}' />

<!-- Tomcat properties to reload web scripts -->

<property name='webapp.alfresco.path' value='/alfresco' />

<property name='webapp.share.path' value='/share' />

<property name='post.verbose' value='false' />

<property name='repo.admin.username' value='admin' />

<property name='repo.admin.password' value='admin' />

<property name='repo.scripts.index' value='${tomcat.repo.url}${webapp.alfresco.path}/service/index' />

<property name='share.scripts.index' value='${tomcat.share.url}${webapp.share.path}/page/index' />

<path id='ml-ant-http.classpath'>

    <fileset dir='lib'>

        <include name='ml-ant-http-1.1.1.jar' />



<taskdef name='http' classname='org.missinglink.ant.task.http.HttpClientTask'>


        <path refid='ml-ant-http.classpath' />




Web script reloading from Ant. These tasks use the HTTP task from


<target name='reload-webscripts-repo' depends='' description='Reload repository webscripts'>

    <http url='${repo.scripts.index}'








        <credentials username='${repo.admin.username}' password='${repo.admin.password}' />


            <parameter name='reset' value='on' />




<target name='reload-webscripts-share' depends='' description='Reload Share webscripts'>

    <http url='${share.scripts.index}'








        <credentials username='${repo.admin.username}' password='${repo.admin.password}' />


            <parameter name='reset' value='on' />




I've tried to structure the properties to cater for most peoples' development settings, for example if you have separate Tomcats running the repo and Share on different ports, then you can specify different values for -Dtomcat.repo.url and -Dtomcat.share.url when you call the script. You should see that the username and password used to authenticate to the web script can be easily overridden if you have changed the default values.

The scripts haven't yet been tested against v3.3, but I suspect that the share.scripts.index property will need overriding in this version in order to use the 'service' servlet name instead of 'page' used in 3.4, e.g. -Dshare.scripts.index=http://localhost:8080/share/service/index .

There's just a couple of negatives. I couldn't figure out how to make the http task a little less verbose with it's output, but I'm sure that will be addressed in time. Also it would be good if the Maintenance web script came with a plain text output template rather than just HTML, as although it would be useful to output the result from the script (which shows the number of web scripts currently/previously loaded, plus any problems), the HTML markup isn't really readable enough to echo to the terminal.

Since the changes seem pretty stable, I've added these to the Sample Project in Subversion. You can try it out yourself by grabbing a copy of the build.xml file as well as the JAR file ml-ant-http-1.1.1.jar from the lib directory. I'll put a new release of the project ZIP file out in the coming days.

Lastly, here's a screenshot of the Execute Script action that I was able to test using the new build script.

Execute Script action

Filter Blog

By date: By tag: