Personal tools

release

Jun 29, 2011

cciaa.modulistica: da PloneGov Italia al mondo

Filed Under:

Vale la pena di rinnovare gli investimenti su un prodotto di pubblico dominio? Ecco perché noi di RedTurtle e i nostri Clienti pensiamo di si.

Il prodotto

 

Le classifiche possono piacere o meno, ma non si discute: esistono prodotti più utili di altri

Utilità: etimologicamente, attitudine ad essere usato. Come dimostra l'esempio di redturtle.smartlink (che si avvicina ai 7000 download), l'utilità di un oggetto è tanto maggiore, quanto più diffuso è il bisogno che esso soddisfa, ma non solo: perché l'oggetto sia davvero utile, quindi usato spesso e volentieri, deve essere innanzitutto facile da usare. Da tutti questi punti di vista, il prodotto cciaa.modulistica, di cui è stata appena rilasciata al pubblico la versione 2.0.0, è certamente tra le cose più utili che RedTurtle, assieme ai suoi Clienti, abbia sviluppato fino ad oggi. 

cciaa.modulistica base

Una lunga storia

La versione 1 di cciaa.modulistica, sviluppata originariamente per Plone 2.1, ha poi rincorso Plone nelle versioni 2.5 e poi 3.3. In questa sua lunga prima fase di vita il prodotto (cogestito anche dal Comune di Modena che ne aveva reso disponibile una prima versione italiana, nell'ambito di PloneGov Italia) non  era disponibile in versione scaricabile ed installabile. La versione 2, che si è giovata della fusione con il progetto cciaa.c3p.folder nato in ambito Plone 3, nasce per Plone 4.1 ed è la prima ad essere rilasciata al pubblico su Pypi e su Plone.org, previa traduzione completa in inglese.

A cosa serve

cciaa.modulistica dota le normali cartelle Plone di una serie di attributi aggiuntivi: una vista tabellare, in formato descrizione / collegamento al file scaricabile, sui contenuti di una cartella Plone, e un campo tramite il quale si può liberamente impostare l'intestazione delle colonne della tabella. La vista è automaticamente limitata agli oggetti di tipo file, ed ai collegamenti,  contenuti nel folder. Il campo che, per ogni file caricato in Plone, memorizza gli elementi ad esso correlati, viene utilizzato per rilevare l'esistenza di versioni dello stesso file in altri formati, il che provoca l'automatica comparsa di ulteriori colonne nella vista tabellare.

Numerosi esempi pratici sono disponibili nella sezione "Modulistica" del portale della Camera di Commercio di Ferrara.
La sezione "corpo" di eventuali contenuti di tipo "pagina" presenti nella cartella, è intercalata a tutta larghezza nella vista tabellare sopra descritta, consentendo di fornire preziose indicazioni sulla modulistica ed il suo utilizzo. L'ordine delle pagine nella cartella determina la loro collocazione all'interno della vista, consentendo di posizionare il relativo testo nel modo più idoneo.

cciaa.modulistica albi ruoli

Un curriculum esemplare

L'Ente che ha lanciato PloneGov in Italia non ha tradito il suo stile di innovatore e propugnatore della collaborazione, rivendicando orgogliosamente il suo posto nei "credits" del prodotto.

Questa storia non si è solo snodata in un lungo arco di tempo, ma ha coinvolto in modo decisivo almeno due dei nostri Clienti storici, il Comune di Modena ma soprattutto la Camera di Commercio di Ferrara, la cui fedeltà a Plone ed alla sua evoluzione nel tempo è stato il motivo fondamentale del suo costante aggiornamento ai successivi rilasci del CMS libero. L'unico motivo dell'attesa del rilascio pubblico è che si è preferito attendere lo sviluppo di una versione per Plone 4.

Tanto arrosto, poco fumo

Nulla di strano, insomma: niente fuochi d'artificio e una grande concretezza. Spesso, è proprio questo a servire: cciaa.modulistica è stato scaricato una quarantina di volte nei primi tre giorni dal lancio, e a questo ritmo in pochi mesi potrà diventare uno dei maggiori successi tra la cinquantina di prodotti rilasciati fino ad oggi da RedTurtle.

Jul 21, 2010

Migliorare l'usabilità dei link interni in TinyMCE

Analisi di collective.tinymceplugins.advfilelinks, un'alternativa al plugin di TinyMCE per i link interni a Plone che permette di gestire in modo differente i link a file del sito.

La Regione Emilia Romagna sta lavorando alacremente al miglioramento dell'accessibilità e dell'usabilità di Plone.

Dato che il futuro dell'editor WYSIWYG in Plone non è più Kupu (difficilmente personalizzabile e non troppo supportato) ma TinyMCE, già da tempo la scelta è stata di passare a TinyMCE anche nella versione 3 di Plone, usata in vari siti regionali.

Migliorare TinyMCE è più semplice che Kupu e lo dimostra come è stato possibile da parte nostra aumentarne le funzionalità per venire incontro ad alcune delle richieste della Legge Stanca (modifiche di cui si è discusso in un altro post, e ora integrate nella release ufficiale già dalla versione 1.1rc9); Altro particolare: trovo importante che questo editor esista anche come progetto indipendente.

Altre novità: la gestione dei link

Una richiesta recente per aumentare l'usabilità dei documenti è stata la seguente:

Modificare Plone in modo che i link interni, se fatti a contenuto di tipo File, mostrino l'icona del tipo di contenuto e la dimensione del file stesso

Una simile modifica aumenta l'usabilità generale della pagina, nonché impatta col Requisito 19 della Legge Stanca.
Dopo una prima analisi è risultato chiaro come fosse necessario scrivere un nuovo plugin per TinyMCE.

Come funziona collective.tinymceplugins.advfilelinks?

Il prodotto rilasciato fornisce il minimo delle modifiche possibili a TinyMCE (ma non minime quanto avrei voluto... ne parliamo dopo). Si tratta di un un plugin aggiuntivo (e per fortuna la presenza di plugin è prevista non solo dall'editor ma anche dalla sua configurazione di Plone) che sostituisce quello predefinito di Plone per i link interni (dal nome autoesplicativo plonelink).

Dopo un'analisi attenta di come poter ottenere le funzionalità richieste e della flessibilità delle API di TinyMCE, su indicazione della Regione stessa abbiamo preso la seguente strada, forse un po' limitata ma di minimo impatto sullo sviluppo e con una resa eccezionale se il browser è aggiornato:

  • I link a file acquisiscono un nuovo attributo type (previsto dallo standard HTML anche se poco conosciuto) ed viene fornito un CSS aggiuntivo contenente varie regole per fornire l'icona.
    Esempio:
    a[type='application/pdf'] {
        background: url(pdf.png) no-repeat 0 50%;
        padding-left: 20px;
    }
    Questo tipo di regola CSS ha un buon supporto (da Internet Explorer 7 in poi).
  • La dimensione del file è prima di tutto inserita nel title del link (che normalmente il plugin originale non fornisce) ma un buon effetto è ottenuto associando una ulteriore regola CSS:
    a.internal-link-tofile:after {
    	content: " ("attr(title)")";
    }
    Questa magica regola CSS (fa parte dello standard CSS 2, per quanto Internet Explorer la supporti solo dalla versione 8 in poi) inserisce del testo aggiuntivo dopo i link con classe internal-link-tofile.
    Il contenuto di questo testo è preso dall'attributo title, ma vi vengono aggiunte delle parentesi. Ovviamente questa classe CSS aggiuntiva è inserita dal nostro plugin in aggiunta alla già nota internal-link.

L'ultima funzionalità è forse la più interessante e per quanto il metodo usato sia davvero poco invasivo e l'effetto finale a dir poco bello, il limite ad avere Internet Explorer 8 è ancora grande.
E' comunque sopportabile? Sì, dato che l'attributo title rimane comunque disponibile agli utenti (e agli Screen Reader) in tutti i casi.

Preview degli effetti del Plugin

Note tecniche di estendibilità

TinyMCE per Plone sfrutta chiamate AJAX per richiedere al server informazioni sui contenuti. Come sempre le modifiche lato server sono minime e perfettamente integrate con quanto Plone già fornisce.

E' bastato fornire un nuovo adapter.

  <adapter
        for="Products.ATContentTypes.interface.IATFile"
        provides="Products.TinyMCE.adapters.interfaces.JSONDetails.IJSONDetails"
        factory=".adapters.JSONDetails"
        />

Grazie alla ZCA, questo adapter aggiuntivo interviene solo per i contenuti di tipo File o sottotipi (a volte ho l'impressione che senza adapter i plonisti non vivrebbero più!).

I problemi maggiori sono lato client... L'idea sarebbe come sempre estendere e non sovrascrivere. In un mondo perfetto questo plugin si sarebbe dovuto integrare con quello preesistente, sfruttandone tutto il codice presente.

Non mi è ancora chiaro se questo non è stato possibile per limiti miei, del plugin stesso, o di TinyMCE, ma il risultato per quanto funzionante è anche una copia di molti dei file originali (una forma di branch del plugin)... probabilmente non dormirò di notte per aver dovuto copiare i file di lingua... ma dopo tutto è una versione alpha!

Il limite maggiore di TinyMCE attualmente è che non usa jQuery (per quanto ci sia un progetto che integra jQuery e TinyMCE) e soprattutto che non c'è uso di eventi Javascript.

Selezione link interni in TinyMCESarebbe stato bello (ma che dico bello! Utile) se al click del mouse sul pulsante radio che seleziona un file piuttosto che un qualunque altro documento a cui associare il link, venisse lanciato un evento Javascript... evento al quale un buon plugin per jQuery avrebbe potuto reagire per eseguire azioni...

Per ora questo non pare possibile, ma sarebbe un buon passo avanti per TinyMCE.

Nota sul namespace

Sono rimasto colpito nel vedere come sulla collective ci siano così pochi plugin the TinyMCE (l'unica eccezione pare essere collective.tinymcetiles). Ci sono state sanguinose discussioni in passato sull'uso di namespace a 2 o 3 livelli (ne ricordo una completa e interessante). In questo caso l'uso dei 3 livelli mi è parso opportuno.

Spero che in futuro altri contribuiscano al gruppo di plugin collective.tinymceplugins e figli!

Riferimenti

Jul 14, 2010

New collective.navigationtoggle release: integration with any theme (I hope)

The new release only fixed a small bug, but also add some better integration with Plone themes. What if fun: a bug inside Sunburst theme was the demonstration that the approach is good!

I already talked about the features of collective.navigationtoggle in previous post, but the new release helped me to be sure of one thing: the unobtrusive approach chosen was good.

The new version also add some refactoring and support for other themes than the classic Plone one. Plone 4 is coming... we must live with this and luckily the products migration has begun.

What is more difficult, after years the default theme is changed (for what I remember, the default theme you all know is with us from Plone 2.0... maybe some changes was done to it at Plone 2.1, but the core never changed). All products that act on Plone UI must check also the new Sunburst theme.

Going back to navigationtoggle, I choosed an approach that was "use existing Plone navigation element to know how to render new ones".

For the new release I only empowered some existings feature, like also generate CSS classes for new element on the navigation.

Why? In Plone 3 navigation main node is like this:

<li class="navTreeItem visualNoMarker">
      <div>
        <a title="..." class="state-... navTreeFolderish" href="...">
            <img width="16" height="16" alt="..." src="...">
            <span>Foo</span>
        </a>
    </div>
   ...
</li>

And Sunburst is like this:

<li class="navTreeItem visualNoMarker">
        <a title="" class="state-... navTreeFolderish contenttype-..." href="...">
            <img height="16" width="16" alt="Folder" src="...">
            <span>Foo</span>
        </a>
   ...
</li>

Apart some node difference (no more containing DIV) the new theme also rely on a contenttype-xxx class.

What is funny (and what make me say "thanks navigationtoggle") is an unwanted behavior of the current Sunburst theme. A bug that double the content type icon: one given from the IMG tag and another ones from CSS, thanks to the new class.

I'm not interested in this bug (Irene says that probably it has been already fixed), but using navigationtoggle with this bugged version of Sunburst... also make the bug applyed to elements navigation nodes generated by our script!

This (uncommonly) is good as respect the original idea: the original theme use doubled icons?! Is not a problem of navigationtoggle, so do it!

May 17, 2010

collective.amberjack 1.0 released

This is the first plone 4 compliant release

we have a support team!

Starting from 1.0 release, RedTurtle decided to support the project providing a 4 person team.

Activities won't be no more based on a voluntary participation and in the spare time. They are going to be supported and scheduled in a more stable way.

It doesn't mean that collective.amberjack is going to be company branded - quite the contrary - it means that we have a stable team that is going to enhance and mantain the tool.

Except me, the team contains: Mirco Angelini, Federica D'Elia, Luca Fabbri e Andrew Mleczko. During the last Ferrara' sprint, we were glad to have Jacopo Deyla's contribution and the Giacomo Spettoli's return (former contributor) both of them from Regione Emilia Romagna.

You are even more then welcome to participate in the development, in supporting the initiative or just in using and testing the tool. Your contribution will be more useful since, from now, there will be someone that will take care of it.

WHAT'S NEW? 

This 1.0 release supports Plone 4:

  • the 12 tours has been completely revised
  • the TinyMCE support has been added
  • we have a battle plan

WHAT NEXT?

I talked about a roadmap. It assumes that during next Sorrento sprint we'll complete the tasks that will refactore the code and improved 1.1 release.

In the meanwhile we're going to schedule a set of steps that move collective.amberjack in a more solid, usable and mostly, extensible tool.

We are also confident to introduce Windmill as the TTW tool for creating tutorials. Andrea Benetti from University of Ferrara is starting to extend it. Then we'll integrate it into a collective.amberjack.windmill package.

how could you get involved inTO the project?

If you are interested in contribution, the places where we meet are these:

  • launchpad, for the project management (blueprints, bugs, etc.)
  • coactivate, extremely useful for documentation through its wiki and for the mailing lists
  • the code is obviously release on collective.

Otherwise, if you just want to use the system, pypi is your friend:

rilasciato collective.amberjack 1.0

Questa è la prima versione per Plone 4

abbiamo un team di supporto!

Dalla 1.0x RedTurtle ha deciso di supportare il progetto. 

Le attività non saranno più semplicemente volontaristiche e nel tempo libero, ma schedulate nel tempo, supportate e seguite in modo professionale.

Questo non significa che collective.amberjack sta diventando un progetto aziendale, ma semplicemente che avremo un team che ne porterà avanti lo sviluppo.

Il team, oltre a me, è composto da Mirco Angelini, Federica D'Elia, Andrew Mleczko e Luca Fabbri. All'ultimo sprint a Ferrara abbiamo avuto il supporto di Jacopo Deyla e il ritorno di Giacomo Spettoli (tra i primi contributori) entrambi della Regione Emilia Romagna.

Ora, sei ancora di più il benvenuto se vorrai partecipare allo sviluppo, supportare l'iniziativa o semplicemente utilizzare il sistema. Il tuo contributo sarà ancora più utile ora che qualcuno lo porterà avanti sistematicamente.

what's new? 

Questa prima release 1.0x supporta completamente Plone 4:

  • i 12 tour sono stati completamente rivisti
  • è stato introdotto il supporto per TinyMCE
  • abbiamo un piano di battaglia

what next?

Dicevo di un piano di battaglia. Il piano prevede che al prossimo sprint a Sorrento si concludano le operazioni che ci porteranno ad una versione 1.1 rifattorizzate e ulteriormente migliorata. 

Nel frattempo predisporremo una serie di step che ci porteranno ad avere un sistema più solido, usabile e soprattutto estensibile.

Contiamo di introdurre Windmill come tool di creazione di tour via web. I primi tentativi sono molto promettenti. Andrea Benetti sta portando avanti la parte di studio che verrà integrata successivamente in collective.amberjack.

Dove puoi seguire il progetto?

Se sei interessato a partecipare, i posti dove ci incontriamo sono questi:

  • launchpad, per la gestione del progetto (blueprint, bug, ecc.)
  • coactivate, ci è utile per documentare il tutto attraverso il suo wiki e per gestire la mailing list
  • il codice è tutto rilasciato su collective.

Se, viceversa, vuoi utilizzare il sistema, pypi è il tuo amico: