Alfresco Share 4.x feature wishlist

Linton Baddeley (UX Designer at Alfresco) asked (tweet)

What features would you like to see in the next version of #Alfresco Share

here is my wishlist:

  • Enhanced Wiki component: TOC generation, embed document previews, add documents as attachment
  • Enhanced datalist component (http://blog.alfrescian.com/?p=95): versioning, comments as thread, upload&attach, XLS/PDF-Export/Import
  • datalist items assigned to a user or group should be shown in my task
  • Doclib: Link to Action, Export folder as zip, export selected documents as zip
  • doclib: optional grid view (configurable per site if standard or gridview should be used in doclib)
  • bidirectional Share calendar & MS Exchange integration ūüėČ
  • also copy & link as drag&drop operations
  • Yammer integration: publish document to yammer (link/attachment)
  • configurable documentlist dashlet: documents per tag, category, +Aspect, +Type…or simply a cmis/fts query
  • search: support solr highlighting, synonyms & facets OTB (configurable via *config.xml)

Adding a synonym list to SOLR in Alfresco 4.0

If you missed it: Alfresco Community 4.0.a is out: 
http://wiki.alfresco.com/wiki/Alfresco_Community_4.0.a
(and my category manager is part of the new feature list ;-))

One of my¬†favorite¬†new features is the new Apache Solr based Search Service. I’ve done an Alfresco-Solr integration project two years ago. I was very impressed by the power of Solr & mainly by the combination of Alfresco & Solr. Thus my first deeper look into Alfresco 4.0 was about to understand the new Solr based search service & how the “whole stuff” is working.

After some hours browsing the current svn HEAD & researching Alfresco’s tracking, model & query addons to solr I tried to tweak Alfresco’s schema.xml:

Task: Add basic support of synonyms

Steps-to-do:

  1. Open alf_data/solr/workspace-SpacesStore/conf/schema.xml & add a new filter org.apache.solr.analysis.SynonymFilterFactory:
  2. Stop your
  3. Delete your Solr workspaceSpacesStore data dir: alf_data/solr/workspace
  4. Start your tomcat
  5. login to Alfresco Share a create a new txt file containing “television” and “GB”
  6. wait a few seconds (solr indexing is done async!) & execute search for “TV” –> you doc should be in the result set, because “TV” is a synonym for television (alf_data/solr/workspace-SpacesStore/conf/synonyms.txt)
  7. execute search for “gigabyte” –> you doc should be in the result set, because “gigabyte” is a synonym for “GB”

welcome to the new shiny Alfresco-SOLR world ūüėČ

Ok…it’s quick hack because the synonyms will be used for every property/field, but it is a good starting point ūüôā

Alfresco Share datalist extensions

A customer of my company (www.fme.de) asked me to develop some extensions for Alfresco Share datalist:

ID generation:

automatic generation of an ID for each item. These IDs are generated using a separate ID sequence on each datalist.

Read-only/view dialog

Double clicking an item display a view-mode form via FormService.

 

Auto versioning

Aspect cm:versionable with auto-version on property changes is applied to each item. A custom policy triggers versioning if an association was modified  Рe.g. dl:assignee.

To display version history a new FormService control was implemented. Via show version link the selected version will be display in another view-mode dialog.

Comments (fm:discussable)

Alfresco only supports a simple comment field, but you often like to have  a discussion thread as you have in doclib. Hence I added support of fm:discussable aspect to datalist items.

Ellipsis for long text

Per default the whole text of a property is displayed in the datagrid. If you’ve longer text – e.g. in cm:description – your datagrid layout will be suboptimal.

So, I added an ellipsis feature for text longer than 40 chars. The whole text will be displayed as tooltip on mouse over.

 

Upload & Attach

To allow attaching a file to a datalist item that isn’t already stored in the repo an upload&attach action was added to cm:attachment-control.

After you’ve choosen the upload destination directory (reused global-folder.js here) you’ll get the normal upload dialog.

Unable to display content. Adobe Flash is required.

XLS-Export

Nick Burch had already developed a basic XLS-export WebScript. I resused that one & added support for fm:discussable comment threads.

XLS-Export button is displayed in the datalist toolbar.

Unable to display content. Adobe Flash is required.

 

Form-based filters

my last step was to provide form based filters for each datalist. Hence I configured a filter-form for each datalist-type & extended the filter logic of datagrid.js via JS/YUI augment/extend mechanism.

These form based filters support browser history & URL addressability and are collapsable via Alfresco.util.Twister.


Unable to display content. Adobe Flash is required.

 

I made another screencast that demonstrates most of the features in common:

Unable to display content. Adobe Flash is required.

 

I guess some of them are useful for every Alfresco Share installations. Thus me, fme and our client are willing to contribute these extensions.

a worldwide project swift launch codeCamp

I had a short chat with Jeff Potts & Bernard Werner (both Alfresco) regarding the Alfresco community a few days ago.

Besides some discussion especially regarding Alfresco’s community in D A CH, ¬†I made the following proposal that I’d like to propagate here:

Currently Alfresco is developing the next “big” Alfresco version with code name swift – I bet it will be Alfresco 4.0. What I proposed to Jeff is to organize a worldwide – but local – Alfresco CodeCamp when 4.0 is launched. I mean a worldwide series of local Alfresco CodeCamps regarding new stuff in 4.0 (Solr, Social enhancements etc.) (nearly)¬†simultaneous.

I guess that will be a big distributed event… & yes, of course John Newton should make an online Key Note ūüėČ

What do you think?

Alfresco Share Category Manager – Finished

I’ve started to develop a Category Manager as Alfresco Share admin console plugin as few days ago:¬†http://blog.alfrescian.com/?p=65

It’s now complete – edit, add & delete are implemented:

Unable to display content. Adobe Flash is required.

I’ve still to clean up the code & do some testing with Alfresco 3.4 & 3.3. I’m expecting to backport some¬†Alfresco.widget.InsituEditor…

I’ll contribute the Category Manager once this “additional work” is done.

Alfresco Share Category Manager

I took a look into current Alfresco HEAD a few days ago and recognized that a lot of new stuff is coming.

One thing I was still missing is a Category Management tool. Thus, I started to implement such a Category Manager a few hours ago.

That’s the current result:

  • I take the category tree component of the repo doclib
  • created a new admin console component
  • connected the new InsituEditor widget (Alfresco.util) with my category tree
  • wrote a new Repository-Webscript to save the changed category name (had a little fight with ALF-1788)

So, change a category name is working, next step is to implement add/delete Category.

 

Here is a screencast of the current result:

Unable to display content. Adobe Flash is required.

Alfresco temporary aspect

my “Alfresco-hack-of-the-day”:

Aspect cm:temporary is sometimes very useful. If you want to delete a node immediately without moving the node to paper bin (archive store) adding cm:temporary aspect before deletion solves your prob. Nodes with cm:temporary attached will deleted without detour via paper bin:

Java:

nodeService.addAspect(nodeRef, ContentModel.ASPECT_TEMPORARY, null);
nodeService.deleteNode(nodeRef);

JS:

mynode.addAspect(“sys:temporary”);
mynode.remove();

Have Fun!

Alfresco Share – refresh tagscope cache

Alfresco uses a concept called tagscope caching to support performant tagging services in Alfresco Share. Each folder representing a site or a site container (doclib, wiki…)¬† has a d:content property cm:tagScopeCache thats acts as a tag cache. More detailed this property is a txt-file that contains a list of tags & their quantity, e.g.:

test|2
test2|1

Sometimes these tagScopeCache are out-of-sync (at least in Alfresco 3.1), so I wrote a simple Javascript snippet to refresh this caches:

function refreshTagScope(folder){
var refresh = actions.create("refresh-tagscope");
refresh.execute(folder);
for each(item in folder.children)
{
if (item.isContainer)
{
refreshTagScope(item);
}
}
}
refreshTagScope(space);

Steps to use this script:

  1. Upload js to data dictionary / Scripts
  2. navigate in JSF client to site or site container where you want to refresh your tagScopeCache
  3. open details page of folder
  4. Run Action -> Execute Script & choose the uploaded script.

Alfrescian World Tour

Puh, long time without updating my blog…Why? I’m currently doing a nice Alfresco Share customization project. I’ll post about this when we’re finished.

Topic of this post is a little bit different. My idea raised a year ago, but I realized that I won’t do it myself…idea?

here it is:

There are plenty of Alfresco partners worldwide & also a lot of interesting projects are going on. My motto was (& still is) learning by doing, hands on. So why not doing something I’m calling “Alfrescian World Tour”:
One year participating in Alfresco projects around the world, at least one in each continent! Joining for 1 or 2 month a project, learn a lot of new topics & then go to the next project. Thanks to twitter, blogs etc. it will be no problem to find interesting projects and perhaps Nancy Garrity (Alfresco Community Manager) is able to support this Tour somehow. After finishing the tour I wanted to write a book about it…

I think this will be a nice travel for a graduate taht wants to gain a lot of knowledge in Alfresco and ECM. I haven’t discussed this with my boss, but I think i can offer a 1-2 month project at westernacher in Germany.

So, Alfrescians: Is there anybody out there?

internal twitter-like system in Alfresco Share?

I’m an active twitter user since march & and I’m currently working on a Share customization project (intranet knowledge portal).

Now, I’m wondering if it is a nice idea to add sth. like a internal twitter system to Share. Alfresco’s Activity Feed is a nice approach to track each activity, but in a system with more than hundred members of a site this feed gets very chattering. So, my basic idea:

  • reuse twitter syntax (@, DM, RT & #)
  • # –> automatically tag the message
  • twitter user-dashlet (like BeTwittered Google Gadget)
  • site-dashlet: last messages of site members
  • action link in DocLib, wiki etc. “recommed via twitter”:
    – opens dialog to write twitter message
    – autocompletion for user names typing @ or DM
    – automatically add shortened link to content
  • decide if each member follows all other site members or reuse twitter-like follow mechanism
  • tbc

So…what do you think about this?