Alfresco uploader with Curl

Let see a simple shell script example to upload content to Alfresco repository using RESTful API.

Requires Curl package to be installed on your system. Just set ALFRESCO_SERVER, USERNAME and PASSWORD variables in script before start it…

#!/bin/bash
#
# Alfresco upload script with CURL by LouiSe@louise.hu
#
# Usage: alfresco_uploader.sh    
#
# ./alfresco_uploader.sh /tmp/some.pdf someSite documentLibrary someDir
#

ALFRESCO_SERVER=http://localhost:8080/alfresco
USERNAME="admin"
PASSWORD="admin"

#CURL_VERBOSE=-v
CURL_VERBOSE=-s
CURL_METHOD=POST
FILENAME=`basename $1`
MIMETYPE=`file --brief --mime-type $1`
CONTENTTYPE="cm:content"
UPLOAD_SERVICE_URL=${ALFRESCO_SERVER}/service/api/upload

echo "Uploading: ${FILENAME} ($MIMETYPE) to ${ALFRESCO_SERVER}"

curl ${CURL_VERBOSE} -k -X ${CURL_METHOD} \
    --user "${USERNAME}":"${PASSWORD}" \
    -F filedata=@$1 -F siteid="$2" -F containerid="$3" \
    -F uploaddirectory="$4" \ -F filename="${FILENAME}" \
    -F contenttype=${CONTENTTYPE} "${UPLOAD_SERVICE_URL}" \
    | grep 'description' | cut -d ':' -f 2 | tr -d '\"'

Example:

$./alfresco_uploader.sh ~/Desktop/advanced-workflow-article.pdf demo documentLibrary someDir
Uploading: advanced-workflow-article.pdf (application/pdf) to http://localhost:8080/alfresco
 File uploaded successfully
 

Alfresco 3.0 – magyar lokalizáció

Ékes nyelvünk immár az Alfresco WEB felületén is megjelenik, bár nem rajongok az efféle lokalizációért, de úgy gondoltam a vevőkért és a felhasználókért mindent…

Magyarországon dokumentumkezelő rendszert magyar nyelvű felület nélkül nem lehet bevezetni, lásd: http://broadbit.hu/dokumentumkezelo-rendszer-bevezetese/

alfresco-hungarian-login

alfresco-hungarian-browser

FreeMarker tutorial

I’ve found a very interesting post about an interface to learn FreeMarker templating engine: FreeMarker sketchbook

FreeMarker sketchbook is a Java WebStart application with following features:
– realtime output processing and view
– page and tag view
– variable editor
– help and examples included

FreeMarker is a template engine and language which we are using in the content management system of our new application. For next week I have been preparing training material for web-developers and something I was missing, was a simple way for them to learn and try out FreeMarker. The best way to learn is by playing and experiencing something yourself, so I created a simple java application with an editor and FreeMarker renderer.
At the same time this has been a good exercise for me as well, as this is my first Swing and Java™ Web Start application. After I received some feedback, added a few more features and cleaned-up the code, I will probably release it as open source project. I think this is a handy little application for those who want to create FreeMarker templates. If you want to try it out, just click on the button below. You should have Java 1.5 or higher installed.

You can find another solution on site www.freemarkertool.com which offers similar functionality:

These interfaces are useful to know Alfresco templating, and Web Script interface customization…

Link: FreeMarker Manual: Learning by example

ExtAlf – new features

I’ve done with brand new features in ExtAlf (ExtJS wrapper library for Alfresco ECM):

  • New login window with ticket validity timeout, and network error handling:
  • Task list for logged-in user, including attached resources (contents, files), upload/download and preview for contents and task close button:
  • Discussion forum, auto-discovered forum spaces in tree view and expandable threads/posts with quick reply button:
  • Folder tree with document preview, content download an upload buttons:
  • Search in selected folder:
  • Transform content to another document format:ExtAlf - Transform content
  • Alfresco Web Script egyszerűen

    A Web Script-ek, illetve a Web Script-ekkel megvalósított szolgáltatások az Alfresco rendszer erőforrásainak, elemeinek és tartalmainak egyszerű, HTTP protokoll fölötti publikációjára készültek. Ez a lehetőség a 2.1-es verziótól kezdve használható mind az Enterprise, mind a Community kiadásokban.

    Kapcsolódó linkek:

  • Web Script-ek használata
  • Web Script minták
  • FreeMarker az Alfresco-n belül
  • Freemarker template minták
  • Alfresco JavaScript API
  • Alfresco JavaScript API minták
  • Hogyan készítsünk Web Script-et?

    Alapvetően két kötelező elemre lesz szükségünk, az egyik egy XML file, mely leírja és regisztrálhatóvá teszi magát a Web Script-et az Alfresco rendszer számára, míg a másik egy, az outputot előállító FreeMarker (FTL) nyelven leírt űrlap. Összetettebb, programozást is igénylő funkciók esetén használható az Alfresco JavaScript API-ja is, melyet egy harmadik file-ban (JS) lehet elhelyezni.

    Mintánkban egy “mywebscript” lesz a megvalósítandó funkció neve, így az ehhez kapcsolódó, kötelező formátumú elnevezések:

    1. Leíró (XML): mywebscript.get.desc.xml
    2. Output (FTL): mywebscript.get.html.ftl
    3. Program (JS): mywebscript.get.js

    Magyarázatra szorulhat az használt név-konvenció; a szeparátor minden esetben a “.”, az első mező (”mywebscript”) tartalmazza a Web Script nevét, a második a használt HTTP protokollt (”get”, “post”, etc.). Itt érdemes megjegyezni, hogy egy szolgáltatásnak lehet többféle protokollja is, de minden esetben csak azo(ko)n lehet megszólítani, amely(ek)re regisztrálva lett – esetunkben “GET”, az URL-ben átadott paramétereket fogja értelmezni, “POST”-ra hibajelzés fog adni.

    A harmadik Web Script specifikus paraméter (mely csak az XML és az FTL file-oknál szükséges) az XML-nél kötelezően “desc” mint descriptor (leíró). Az FTL file-oknál viszont azt határozza meg, hogy milyen formátumú lesz a válasz. Ezt a formátumot a Web szerver mint content-type fogja közölni a klienssel, azaz “html” esetében más lesz mint “xml”, “atom”, vagy “json” esetében. Ha több válasz típus is létezik az adott szolgáltatáshoz, az XML-ben lehet default értéket adni (a “format” paraméterrel), illetve a kérésben is lehet specifikálni a várt formátumot: “GET /my/mywebscript.json

    Installáció

    A saját készítésű Web Script-eket az Alfresco-n belül a “/Data Dictionary/Web Scripts Extensions/” space alatt kell elhelyezni, célszerűen egy könyvtárba rendezve. Legyen ez esetünkben a “my” könyvtár melyet az Alfresco WEB-es felületén is létrehozhatunk, sőt akár ZIP file-ként ugyanott a teljes csomagot (my/*) importálhatjuk is.

    A Web Script-es fejlesztések egyik legnagyobb előnye, hogy nem igényel deploy-t (eltekintve az első installációtól és regisztrációtól), azaz az FTL vagy a JS file-okat módosítva azonnal érvényre jutnak a változtatások. Ezért érdemes a WebDav, vagy a CIFS felületen keresztül dolgozni, így az editorból közvetlenül szerkeszthető és menthető a kód. Ezáltal az installációt is célszerű így elvégezni, kedvenc Finder-ünk vagy file-kezelő programunk segítségével. A WebDav-os mount-hoz (ezt MacOSX-en a Finder-ben az ALMA+K gombkombináció megnyomása után lehet átadni) a következő URL-t lehet használni: http://localhost:8080/alfresco/webdav

    Installáció után az Alfresco-n belül (repository) a következő struktúrának kell előállnia:

    Könyvtár: /Data Dictionary/Web Scripts Extensions/my/
    File: mywebscript.get.desc.xml
    File: mywebscript.get.html.ftl
    File: mywebscript.get.js

    Hogy az új szolgáltatásunk elérhető is legyen, szükség van még egy Alfresco-n belüli Regisztrációra is.

    Regisztráció

    Ha az Installáción túl vagyunk, az Alfresco rendszer tudtára kell adni, hogy új szolgáltatása lett. Ehhez a beépített Web Script regisztrációt kell használni, mely a következő címen érhető el: http://localhost:8080/alfresco/service/

    A “Refresh List of Web Scripts” gomb által indított folyamat rekurzívan felolvassa a szkriptek tárolására szolgáló helyi és repository-n belüli könyvtárakat, majd az ott található XML-ek alapján frissíti az elérhető Web Script-ek listáját – illetve jelzi, ha valamelyik szkript definíciójával probléma adódott.

    Sikeres regisztráció után a saját szkriptünk is meg fog jelenni a listában, ehhez érdemes a “Browse by Web Script Package” link-en kiválasztani a “my” csomagot. Az itt megjelenő listában összefoglaló látható az adott csomagban található szkriptekről és azok szolgáltatásairól, paramétereiről. Az “Id” sorban megjelenő linkre kattintva megtekinthetők a szkript összetevői és azok forrása is.

    Az elkészített és regisztrált szkriptet a következő címen lehet elérni: http://localhost:8080/alfresco/service/my/mywebscript

    A mywebscript példa forrása

    A fent ismertetett alapismeretekkel a következő szkriptet állítottam össze:

    mywebscript.get.desc.xml

    
    Simple form filling test
    Just a simple form filling test example
    /my/mywebscript
    argument
    user
    required
    
    

    mywebscript.get.html.ftl

    Logged in user: ${person.properties.userName}
    
    Name: Country: ${countryList}

    mywebscript.get.js

    var countryList = '';
    // here is the code to generate country list:
    countryList += '' + '\n';
    countryList += '' + '\n';
    // pass value to FTL
    model.countryList = '";
    

    ExtAlf – Alfresco by ExtJS

    ExtAlf demo in Safari

    I’m working on a new ExtJS wrapper (ExtAlf) – inspired by Opsoro – for Alfresco document and workflow management functions (by webscripts), like foldertree, document properties, preview, etc. This is not an Opsoro or FlexSpaces alternative, rather than a developer toolkit or a simple SDK what supports embedding Alfresco backend functionality into Web2.0/AJAX portals and frontends.

    Link: Collaborative Editor

    ExtAlf in Aptana

    Planned features:

    • – folder tree panel with actions (show folder contents, create new folder, move folder)
    • – document grid panel with actions (preview, download, show properties, delete, rename, move to other folder, upload new document)
    • – property grid with editing fields
    • – content preview with document transformation
    • – task list and management (close, create, forward)
    • – user interface localization
    • – limit root nodeRef to browse (just like Customer Portal engines)
    • – simple search
    • – simple discussion forum
    • – different grids to show document in a folder with custom properties
    • – integrated document editor for plain text, html and form contents

    Search dialog and results with auto-preview:
    ExtAlf Search

    Login dialog:

    ExtAlf Login window

    Floating panels on UI:
    ExtAlf Demo2 - floating panels

    Continue reading ExtAlf – Alfresco by ExtJS

    Collaborative Editor for Alfresco

    I’m working on a new, unique collaborative editor for Alfresco (ExtJS interface), with following features:
       – task/workflow based editing trigger
       – individual chapter based editing
       – automatic chapter content creation
       – WYSWYG and form based editor
       – one click version change (back for previous version of chapter)
       – one click task close process update and forward to another user
       – preview support for all chapters and complete document
       – automatic versioning (checkin, checkout, cancel)
       – multi-user editing support
       – forum support for document changes and discussion

    This editor is part of TenderWorks (eProcurement, eTendering engine) development project.

    Customizing Alfresco as a repository for medical images

    A very good practice documentation (thesis) – including document management, DICOM VRS implementation, search, records management, reporting and more – about an Alfresco based image management system for medical images.

    Information technology played a big role in the way medical and scientific research have developed over the last couple of decades. The introduction of high-tech in laboratories has improved research methods drastically. Information technology is also essential to provide scientists the means to centralize knowledge. This way they can communicate, share information and comment on study results. Janssen Pharmaceutica is developing the ICE project (Image Collaboration Environment) to offer their scientists the ability to share and comment on medical images for research purposes. The open-source Content Management System (CMS) Alfresco is selected to perform this task. During our participation in this project, we set up a proof of concept to evaluate if Alfresco can be customized to perform the ICE user-requirements. This document includes a detailed description of the needs of the ICE project. Throughout this paper, we will explain how we can program and modify Alfresco to meet these requirements. Based on these findings we will determine whether or not Alfresco can be customized to function as a repository for medical images. Some of the key features of Alfresco are also explained in this document. Moreover, we will give a brief description of medical image formats we use in ICE. However, a basic knowledge of Java is required to understand the text completely.

    Download PDF version: thesis2007694.pdf