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
Open alf_data/solr/workspace-SpacesStore/conf/schema.xml & add a new filter org.apache.solr.analysis.SynonymFilterFactory:
Delete your Solr workspaceSpacesStore data dir: alf_data/solr/workspace
Start your tomcat
login to Alfresco Share a create a new txt file containing “television” and “GB”
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)
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 🙂
A customer of my company (www.fme.de) asked me to develop some extensions for Alfresco Share datalist:
automatic generation of an ID for each item. These IDs are generated using a separate ID sequence on each datalist.
Double clicking an item display a view-mode form via FormService.
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.
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.
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.
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.
I made another screencast that demonstrates most of the features in common:
I guess some of them are useful for every Alfresco Share installations. Thus me, fme and our client are willing to contribute these extensions.
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 😉
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:
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.:
var refresh = actions.create("refresh-tagscope");
for each(item in folder.children)
Steps to use this script:
Upload js to data dictionary / Scripts
navigate in JSF client to site or site container where you want to refresh your tagScopeCache
open details page of folder
Run Action -> Execute Script & choose the uploaded script.
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.
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: