italiano
Dec 18, 2009
"./bin/buildout" senza "-N" su Plone 3.1? Ahi!
Vediamo di spiegare quello che succede a tantissimi quando provano ad aggiornare il loro vecchio Plone 3.1
Prima di tutto: "-N" è vostro amico!
I problemi li vediamo sotto, ma ricordate che l'opzione -N su un vecchio Plone come può essere la versione 3.1 è un parametro vivamente consigliato!
Volete installare un nuovo prodotto?
Ricordate che "-N" sta per non-updating, quindi solo gli egg già scaricati non vengono aggiornati, ma se la vostra modifica all'istallazione richiede la presenza di un nuovo modulo, questo viene normalmente prelevato (...e speriamo che la versione scaricata sia compatibile... in caso contrario, cercatene una che lo sia! vedere sotto...).
Di chi è la colpa?
I problemi sono iniziati con qualche prodotto rilasciato nell'era Plone 3.3, ma la cosa è diventata particolarmente sensibile (e fastidiosa) col rilascio delle prime versioni egghizzate di Plone 4.
Plone 3.1 non aveva le versioni degli egg fissate dai file versions (e.g: http://dist.plone.org/release/3.3.1/versions.cfg per Plone 3.3.1).
Per di piu "Plone" e "Zope2" sono diventati "veri" egg da poco.
Iniziano quindi ad essere disponibili molti egg che (giustamente) richiedono dipendenze da questi moduli software...
...peccato che a loro volta questi abbiano dipendenze verso altri egg che sono troppo aggiornati per la vecchia versione di Plone 3.1.
NB: l'idea non è sbagliata di per se! In un mondo perfetto se un utente che non sa nulla di Zope & Plone naviga la rete e trova il riferimento ad un prodotto che si chiama Ploneboard e che fornisce un forum, potrebbe volerlo provare. Se tenta di installarlo con easy_install, perché questo non dovrebbe a sua volta scaricarmi un ambiente Plone completo?
Vediamo di risolvere
Diciamo che state leggendo questo perché vi siete dimenticati di tenere l'opzione "-N", oppure un nuovo prodotto che dovete per forza installare ha delle dipendenze pericolose, o siete masochisti...
Ad ogni modo (i gusti son gusti) eccovi un esempio di un buildout di un Plone 3.1 che di recente mi ha dato problemi.
[buildout]
parts =
plone
zope2
instance
zopepy
fss
# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
http://dist.plone.org
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads
# Add additional eggs here
# elementtree is required by Plone
eggs =
elementtree
iw.fss>=2.7.5,<2.7.6dev
iw.recipe.fss
Products.DocFinderTab
# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
develop =
...
[plone]
recipe = plone.recipe.plone
[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}
[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 7084
#debug-mode = on
#verbose-security = on
effective-user = plone
eggs =
${buildout:eggs}
${plone:eggs}
...
# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package
zcml =
iw.fss
iw.fss-meta
...
products =
${buildout:directory}/products
${plone:products}
[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy
[fss]
recipe = iw.recipe.fss
storages =
...
Trovate degli omissis per alcune parti generiche e non interessanti.
Qual'è l'effetto di lanciare un buildout con questo .cfg, tenendo conto delle recenti dipendenze degli egg con Plone e Zope2?
Una frittata... e non particolarmente piacevole.
Ecco cosa potreste leggere a console (usate l'opzione "-v" per individuare gli errori):
... Installing 'plone.recipe.zope2instance'. We have the best distribution that satisfies 'plone.recipe.zope2instance'. Picked: plone.recipe.zope2instance = 4.0a2 Getting required 'Zope2>=2.12.1' required by plone.recipe.zope2instance 4.0a2. We have no distributions for Zope2 that satisfies 'Zope2>=2.12.1'. ...
In pratica, l'aggiornamento prova a scarica l'ultima versione di plone.recipe.zope2instance, ma dall'uscita di Plone 4 l'ultima versione risulta essere la 4.0a2. Questo va già male di per se, ma come accennato sopra un altro grosso problema è che questo è dipendente dall'egg Zope2 versione 2.12.1.
Inutile proseguire oltre; a sua volta questo egg ha un'infinità di altre dipendenze... vediamo dove porta tutto questo:
Getting distribution for 'Zope2>=2.12.1'.
Running easy_install:
/opt/local/bin/python "-c" "from setuptools.command.easy_install import main; main()" "-mUNxd" "/Users/luca/Library/Buildout/eggs/tmpFz8U_N" "-q" "/Users/luca/Library/Buildout/downloads/dist/Zope2-2.12.1.tar.gz"
path=/Users/luca/Library/Buildout/eggs/setuptools-0.6c11-py2.4.egg
src/initgroups/_initgroups.c: In function ‘initgroups_initgroups’:
src/initgroups/_initgroups.c:34: warning: implicit declaration of function ‘initgroups’
File "build/bdist.macosx-10.6-i386/egg/Zope2/Startup/zopectl.py", line 313
finally:
^
SyntaxError: invalid syntax
File "/Users/luca/Library/Buildout/eggs/tmpFz8U_N/Zope2-2.12.1-py2.4-macosx-10.6-i386.egg/Zope2/Startup/zopectl.py", line 313
finally:
^
SyntaxError: invalid syntax
While:
Installing.
Getting section instance.
Initializing section instance.
Installing recipe plone.recipe.zope2instance.
Getting distribution for 'Zope2>=2.12.1'.
Error: Couldn't install: Zope2 2.12.1
Questo non è l'unico errore possibile, ma spieghiamolo: Plone 4 userà Python 2.6 e la sintassi non è completamente compatibile con Python 2.4 usato fino alla versione 3.3.
In altri casi invece il problema è un conflitto di dipendenze: ad esempio Plone 3.1 ha già un egg Zope2, la cui versione è la 0.0.
Questo perché nei buildout di Plone vengono usati (e possono essere usati anche per i vostri scopi) i fake-eggs. Un fake egg non è un vero e proprio egg ma il buildout crede di averlo disponibile alla versione (di solito) 0.0.
In un modo o nell'altro, il buildout non arriva a conclusione...
Come risolvere
La prima regola è analizzare gli errori; lanciare quindi il buildout con l'opzione "-v" per avere messaggi dettagliati, poi risalire la catena delle dipendenze nella console e trovare chi tra questi egg sta scaricando "Zope2>2.12.1" (oppure altri egg non appropriati perché rilasciati per Plone 4).
Nell'esempio sopra il problema era plone.recipe.zope2instance. Ci possono essere altri egg maledetti (ne vediamo almeno un altro più avanti) a seconda dei prodotti usati nel vostro buildout.
La soluzione è fissare le versioni:
[buildout]
parts =
plone
zope2
instance
zopepy
fss
versions=versions
# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
http://dist.plone.org
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads
# Add additional eggs here
# elementtree is required by Plone
eggs =
elementtree
iw.fss>=2.7.5,<2.7.6dev
iw.recipe.fss
Products.DocFinderTab
# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
develop =
...
[versions]
plone.recipe.zope2instance = 3.6
...
La nuova parte versions, usata esplicitamente nella parte buildout, fissa plone.recipe.zope2instance alla "vecchia" versione 3.6.
Non ho una regola per trovare la versione giusta... andare alla pagina del Cheeseshop e guardare la sezione CHANGES di questo egg è stato sufficiente. La 3.6 è la main release precedente alla 4.0.
Questo potrebbe essere sufficiente... in presenza di altri egg velenosi si può ricorrere all'uso esplicito degli additional-fake-eggs.
Alcuni egg ad esempio hanno una dipendenza da "Plone" (la cui vita come egg, ricordo, è iniziata con la versione 3.2).
Ecco come modificare la parte zope2 per sistemare la dipendenza a Plone:
[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}
fake-zope-eggs = true
additional-fake-eggs =
Plone
In questo modo il nostro buildout avrà già disponibile un egg "Plone" alla versione 0.0.
I problemi rimangono in vari casi. Cosa succedere ad esempio se voglio usare une prodotto che ha una dipendenza ad una versione precisa di un egg che ho nella sezione fake-eggs? Ad esempio: Ploneboard versione 2.1beta2 ha una sezione di dipendenze così fatta (preso dal suo setup.py):
install_requires=[
'setuptools',
'Products.SimpleAttachment',
'plone.app.controlpanel',
'plone.app.portlets',
'plone.portlets',
'plone.memoize',
'plone.i18n',
'python-dateutil',
'Plone >= 3.3',
],
Anche lanciando il nostro buildout con opzione "-N" e con la presenza del fake-egg "Plone", buildout prova giustamente ad ottenere una versione di "Plone>= 3.3". La versione 0.0 ovviamente non va bene.
La sezione fake-eggs ha una potenzialità maggiore; potrei cambiare il buildout così:
[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}
fake-zope-eggs = true
additional-fake-eggs =
Plone=3.3
Questo significa che il nostro fake-egg "Plone" non sarà più a versione 0.0
NB: ovviamente non è detto (e non ho testato) che provare questa versione di Ploneboard, fatta per Plone 3.3 su un Plone 3.1, porti a qualche risultato funzionante... spero che passi il concetto generale dell'esempio!
Un ulteriore esempio
Ora voglio anche usare in questo vecchio buildout un file .cfg per lo sviluppatore, magari copiato da altri buildout. Questo aggiunge alcuni egg molto utili per lo sviluppo in locale:
[buildout]
extends = buildout.cfg
parts+=
omelette
[instance]
http-address = 8080
eggs +=
plone.reload==1.1
zcml +=
plone.reload
[omelette]
recipe = collective.recipe.omelette
eggs =
${instance:eggs}
products =
${instance:products}
Se lancio il buildout senza l'opzione "-N" torno ad avere problemi:
./bin/buildout -vc sviluppo.cfg
Ottengo questo:
While: Installing instance. Error: There is a version conflict. We already have: Zope2 0.0 but Products.CMFCore 2.2.0-beta requires 'Zope2>=2.12.0b4dev'.
Come abbiamo già fatto: chi è che sta provando a scaricare Products.CMFCore 2.2.0-beta (anche CMF non era egghizzato fino a poco tempo fa)?
Analizzando indietro il trace, troviamo che il cattivo è plone.reload:
Getting required 'Products.CMFCore' required by plone.reload 1.1. We have the best distribution that satisfies 'Products.CMFCore'. Picked: Products.CMFCore = 2.2.0-beta
Possiamo di nuovo superare la cosa tramite fake-eggs, oppure fissando la versione di plore.reload ad una versione più vecchia, compatibile con Plone 3.1.
Nel primo caso modifico buildout.cfg di nuovo, come segue:
additional-fake-eggs =
Products.CMFCore
Plone=3.3
Anche in questo caso forse sto barando... ma non è detto (vedere sotto).
Il modo canonico è come sempre trovare una versione compatibile; rimuovo il fake-egg "Products.CMFCore" e questa volta modifico sviluppo.cfg:
[instance]
http-address = 8080
eggs +=
plone.reload<1.1dev
E con questo abbiamo finito!
Quale modo è il migliore?
In generale, fissare le versioni è la giusta soluzione, e con l'uso di versions si sta facendo quello che le release successive di Plone hanno fatto.
L'uso dei fake-eggs è comunque una scappatoia da non dimenticare... Magari Ploneboard 2.1 funziona anche con Plone 3.1... solo che nessuno lo ha mai testato (e potreste volerlo fare voi).
Lo stesso per plone.reload. La versione successiva (la 1.2) ha rimosso la dipendenza all'egg Products.CMFCore. Magari anche la 1.1 funziona correttamente con il nostro vecchio Plone e gli sviluppatori si sono accorti di come questa dipendenza creasse più problemi che altro.
Nov 27, 2009
Plone is Cool!
Ecco la maglietta sfoggiata alla Conference di Budapest... in versione open source.
Alla recente Plone Conference ci siamo presentati in gruppo con una maglietta creata ad-hoc per l'occasione. Il tema è "Plone is Cool": l'immagine anteriore è costante, ma sulla schiena sono stati stampati 5 diversi frammenti di codice (python e jQuery) che portano tutti ad un risultato molto simile :-)
Grande successo soprattutto per il "lancio delle magliette" ai portatori sani di domande intelligenti al termine dei talk di Massimo e Andrew! Nei giorni successivi, infatti, non sono mancati gli incontri casuali con plonisti che diffondevano il Verbo del CMS più cool.
Sul sito di RedTurtle trovate i file sorgenti con loghi e codice pronti per la stampa.
Di seguito riporto il codice.
>>> import CMS >>> all_cms = CMS.queryAllKnowCMS() >>> all_cms.sort(lambda x, y: cmp(x.coolValue, ... y.coolValue)) >>> print all_cms[-1] 'Plone'
>>> import CMS
>>> plone = CMS.getCmsByName('Plone')
>>> CMS.getCoolerCmsThan(plone)
Traceback (most recent call last):
...
NotFoundError: can't find a cooler CMS than 'Plone'
>>> @memoize >>> def ploneIsCool(self): ... return True
>>> var title = jq(".documentFirstHeading > span");
>>> var old_title = title.text().strip();
>>> title.text(old_title.split(" ")[2] + " is Cool!");
>>> title.text();
"Plone is Cool!"
>>> import CMS >>> coolestCMS = IFullyFeatured(CMS) >>> coolestCMS.downloadURL() 'http://plone.org/products/plone'
Nov 23, 2009
Un italiano a Budapest
Non vi racconterò di talk, di tecnologie, di nuove feature. Non vi racconterò nemmeno dell'ultima e della prossima release di plone. La mia gita alla plone conference è stata un viaggio emozionante tra persone e idee.
Non so esattamente quale sia la percezione dall'esterno, ma ogni anno la conference rappresenta, per me, la possibilità di ritrovare vecchi amici che hanno una passione in comune.
Si parte!
Già alla cena pre-conference l'accoglienza è stata incredibile.
Aaron aveva un posto buono a fianco a lui e subito i gruppi si sono mescolati: italiani, americani, polacchi, francesi, tedeschi, olandesi.
Tutti li' a parlare di tutto. C'era quello mi chiedeva di amberjack, quello che si ricordava di un piatto italiano e voleva la ricetta, quello che ti racconta che si è finalmente preso una spider e ne è così orgoglioso.
Tutto come se fossimo vecchi compagni di scuola che hanno condiviso qualcosa di particolare e prezioso.
Spesso si dice:
plone il cms, plone il framework, ma soprattutto plone la comunità
La solita retorica, trita retorica, dell'open source, vero? beh, magari no.
Se ne sei fuori, o meglio se ne vuoi stare fuori, sei libero di vederla così, ma così non è. Frequento e ho frequentato in passato altre comunità (i partner ibm, i lug, l'xpug) e nonostante abbia incotnrato alti livelli di eccellenza, questa community è quella più coinvolgente, appassionante, e professionalmente energizzante.
ZEA
Il gruppo ZEA si è riunito dopo diverso tempo in una riunione live. Ho potuto conoscere di persona e di scambiare opinioni con Matt, Russ, Kit e Jean Paul, che conoscevo solo in modo marginale, ma anche di rivedere vecchi amici come Xavier e Godefroid. E' stato utile, credo che il gruppo sia oggi più compatto e propositivo.
Plone Italia
Il riaggregarsi del gruppo italiano è stato allo stesso modo entusiasmante.
Ognuno aveva la sua idea, il suo modo di vedere le cose. E si è discusso, preso in considerazione le varie tesi.
Quello che ne è venuto fuori lo potete o lo avete letto sulla ML, ma il punto interessante, ancora una volta, non è stato solo il risultato finale.
Il confronto, il discutere, il mettere in dubbio quello che è il tuo piccolo mondo di fronte agli altri è un modo estremamente appagante di crescere. E ti rendi conto che dopo 12 anni di lavoro e non so quanti di informatica, non sei ancora arrivato. C'è sempre qualcuno che ha qualcosa di nuovo da raccontarti un punto di vista diverso, e cresci.
collective.amberjack
Poi c'è stata la mia personalissima ciliegina sulla torta: collective.amberjack.
Ho potuto presentarlo in un talk ufficiale, ho "guidato" uno sprint e raccontato a tutti gli sprinter gli avanzamenti del lavoro fatto.
Messa giù così ha un che di vagamente autocelebrativo e presuntuoso. E sicuramente una parte di me è decisamente soddisfatta dell'interesse che ne è uscito. Il punto però è un altro.
Perdersi nella comunità
Ho sempre visto tutti coloro che contribuivano come una specie di esseri con capacità tecniche, qualità personali di livello superiore.
Il che in parte è anche vero. Quello che è, però, ancora più vero non sono le capacità tecniche, ma la voglia di proporsi e di perseverare.
In fondo quello che è cambiato in me rispetto alle precedenti conference è stato il voler mettere sul piatto quello che so fare, tanto o poco non importa. La comunità ha apprezzato ed evidenziato. Poi, magari, amberjack sarà stata anche un buona idea, ma in ogni caso è stato l'impegno che ha fatto la differenza.
E' la differenza che passa tra lo stare nell'ombra e sfruttare l'open source, come molti purtroppo fanno, e il fondersi nella comunità: più dai, più ti impegni, più avrai in cambio in termini di credibilità, riconoscenza, amicizia!
Ritorno a casa
Alla fine del viaggio la lezione imparata è che tutta la retorica dell'open source, del fatto che tutti possono contribuire, che è la community che segna la strada è niente di più che la realtà.
Non ci si può, però, limitare a raccontarla (alle conferenze, ai linux day, in post sui blog), occorre declinarla in azioni, in codice, in attività, in quello che sai fare.
Allora? che pensi di proporre alla prossima ploneconf?
Nov 20, 2009
Dominopoint Day 2009: la nostra presentazione
Nov 17, 2009
Da Budapest... con stile
Un breve report dalla Plone Conference 2009.
Per una panoramica dei principali talk che hanno animato la settima Plone Conference (Budapest, 2009) vi rimando alle precise recensioni di Maurizio e Luca.
In queste poche righe, invece, vorrei sintetizzare promesse e aspettative che rivoluzioneranno la vita di un plone skinner: grandi poteri saranno concessi alla nostra stirpe di fate madrine, che da qualche lembo di stoffa sono chiamate a creare un lussuoso abito da cerimonia ;)
Non è un caso se Steve McMahon ha concluso il suo talk "Overlays, Accordians and Tabs, Oh My" con la celebre massima dello zio Ben ("With great power comes great responsability").
Ma andiamo con ordine.
Il nuovo tema Deco-oriented.
Non c'era presentazione che non lo mostrasse. Limi gli ha dedicato un intero talk ("Complex CSS layout made easy"). Che dire... finalmente quello che tutti aspettavamo: un layout completamente table-less!
L'aspetto generale, da un punto di vista puramente grafico, non stravolge la struttura lineare e pulita che ha sempre caratterizzato Plone: anzi, lo svecchia e gli conferisce un tocco di professionalità in più (personalmente non sopportavo l'azzurrino pallido e il verdino acido dell'interfaccia base ;) ).
Niente tabelle, quindi: l'impostazione è già proiettata verso Deco, con una griglia di blocchi posizionati sapientemente a suon di CSS, con la garanzia di poca spesa e ottima resa sia per layout fissi che liquidi. Come spiega chiaramente Limi nella PLIP, saranno mantenuti i vecchi ID, spariranno le base_properties, saranno semplificati e alleggeriti i fogli di stile... e altre novità che attutiranno un po' l'impatto con il futuro (prossimo?) Plone 5.
Deliverance e XDV
Hanno destato la curiosità di molti, sia neofiti che già avvezzi a rules e XPath.
Si insiste ancora sul concetto che Deliverance, e ancor più XDV, permetterà a chiunque di creare fantabulose skin per Plone senza doverne conoscere nemmeno il nome. Non sono d'accordo, ma non è questa la sede per discuterne. Di sicuro con Plone 5 si farà il grande salto e per allora dovremo essere pronti con il paracadute sulle spalle.
XDV è il fratellino semplificato di Deliverance, che ha il grande vantaggio di essere installabile come egg in pochi passaggi ma, proprio per questa sua estrema semplificazione, non offre tutti i vantaggi del fratello maggiore. Dopo la Conference potrei ricredermi: durante un open-space con Nate Aune e Denys Mishunov si è parlato dei continui miglioramenti fatti proprio per avvicinare XDV a Deliverance, non ultimo l'integrazione delle espressioni condizionali.
Haran... Banjo?
Questa davvero non me l'aspettavo e mi ha colto di sorpresa. Nate Aune ha presentato, sia in un talk che agli sprint, questo nuovo progetto Deliverance-oriented. Banjo è pensato per creare velocemente e interattivamente (TTW) le rules di posizionamento dal sito padre al tema Deliverance. Qualche clic e via! Attendo curiosa e fiduciosa gli sviluppi di questo tool: non credo che potrà eliminare completamente l'intervento sul codice ma aiuterebbe e semplificherebbe la vita agli skinner di primo pelo.
JQueryTools
Già da Plone 4 vedremo parecchi effetti speciali: tutto è pensato nell'ottica di ridurre al massimo il numero di clic necessari per le operazioni più semplici (login, impostazione di un oggetto come vista predefinita et similia). Ne ha parlato ampiamente Eric Steele al suo talk "A Look at Plone 4". Si potrà fare uso (e abuso?) di effetti come overlays, tabs, accordions: vi rimando alla presentazione di Steve McMahon per approfondire l'argomento. Quanto impatterà tutto ciò nell'applicazione di una grafica uniforme al nostro sito Plone? E quanto, soprattutto, si potranno applicare questi effetti senza perdere accessibilità (nel senso stretto del termine, quello ben noto a chi deve fare i conti con la legge Stanca)? Lo scopriremo solo vivendo :)
Conclusioni
Questa è stata solo la mia seconda Conference, ma rispetto alla precedente (Washington D.C., 2008) ho notato un interesse molto più forte verso il lavoro dello skinner: i talk e gli open-space dedicati erano tanti e piuttosto affollati, capitava spesso di essere presentati a guru ploneschi che elargivano complimenti e pacche sulle spalle. Qualcuno ha persino azzardato l'ipotesi di creare un CSS Zen Garden per Plone :)
Adesso non resta che portare un po' di questa sferzata d'energia anche nella comunità italiana... si potrebbe forse iniziare da un bel restyling di Plone.it? ;)
Nov 12, 2009
Plone nuovamente premiato agli Open Source CMS Awards
Dopo il secondo posto del 2007 e il primo posto nel 2008, Plone si conferma la miglior scelta nella categoria "other open souirce CMS"
Packt Publishing, uno dei leader nell'editoria relativa al software libero, organizza ogni anno il premio "Best open source CMS".
A partire dallo scorso Giugno, dopo che un panel di esperti ha selezionato i "top five" della categoria "Other open source CMS", i voti del pubblico sono affluiti fino alla fine di Ottobre, decretando il successo di Plone, come già nel 2008.
Per noi che conosciamo Plone e ci lavoriamo quotidianamente, questo risultato non è certo una sorpresa: per chi non lo conosce ancora, può essere un importante elemento di valutazione.
C'è da dire che, di anno in anno, gli organismi di terza parte che valutano i CMS con griglie molto severe, come il CMS watch, collocano regolarmente Plone ai livelli più alti come prestazioni complessive. E' importante diffondere il concetto che Plone è davvero un sistema completo e di classe enterprise, e interessa a tutti (a noi come ai Clienti) che riconoscimenti come questi stiano a dimostrarlo.
Plone Conference 2009 - un'esperienza da ricordare
Budapest, vecchi e nuovi amici, e molte cose interessanti come in tutte le Conference di Plone. Pare che anche RedTurtle sia piaciuta.
Due parole in più rispetto al precedente post di Massimo.
Tra gli elementi di soddisfazione, oltre al solito clima costruttivo che la comunità sa offrire, è stata l'impressione che RedTurtle si sia costruita un suo spazio e una sua credibilità anche al di fuori dei confini nazionali: se ci aveva fatto piacere veder accettare due talk su tre proposti, ce ne ha fatto ancora di più vedere con quanto interesse siano stati accolte le nostre presentazioni.
Ci pare di capire che Carneade (presentazione, video youtube, e talk ustream) è piaciuto perchè è un'idea, trasversale rispetto agli scenari di impiego, per rappresentare in Plone le strutture organizzative reali in tutta la loro complessità, e quindi ha un ampio ventaglio di applicazione sia nelle realtà pubbliche (il nostro tipico target), sia in quelle private.
Amberjack (presentazione, video youtube, e talk ustream), sebbene un po' meno "astratto", comunque risponde a un'esigenza diffusa, e sarà interessante vedere come la comunità lo farà crescere: l'idea di rendere i siti Plone sempre più autoesplicativi, trasformando un percorso guidato in un tutorial sulla tecnologia, sembra promettente.
La modestia è d'obbligo, quando si ha a che fare con chi ha creato una tecnologia e ne governa la roadmap, e quando ci si confronta con colleghi di aziende di tutto il mondo. Direi che, dopo Budapest, noi RedTurtle, sempre consapevoli dei nostri limiti, possiamo essere più tranquilli sulla nostra capacità di lavorare allo stesso livello degli altri sviluppatori mondiali Plone.
Nov 09, 2009
Conversione da millisecondi a data/ora standard
tip per la conversione da millisecondi a data/ora standard in Lotus Notes tramite @ function
Nello sviluppo di form per appplicazioni web può capitare di scontrarsi con un ben noto problema nella gestione dei dati: la conversione del formato data/ora.
In questo breve post descrivo il caso in cui la data viene fornita in millisecondi a partire dal 1970 (Unix time) che deve quindi essere convertita in un formato leggibile.
In Lotus Notes tale dato può essere elaborato usando la seguente formula:
millisecond := @TextToNumber(@UrlQueryString("data"));
@Adjust(@Time(1970;1;1;0;0;0);0;0;0;0;0;millisecond;[InLocalTime])
il risultato sarà: 19/01/2004 16:16
Nell'esempio i millisecondi vengono estratti dal url come sotto:
http://dominio.it/db.nsf/nomeform?openForm&data=1074528964
NB: viene ritornata una stringa, attenzione quindi al suo utilizzo.
Ploneconf2009: un breve sommario
Archetypes è morto: lunga vita ad Archetypes
Trovo finalmente il tempo di riassumere i punti salienti della Ploneconf 2009 di Bupadest.
La grande verità
Per la prima volta dai tempi di Plone 2.0 sono davvero convinto che il nostro amato e ben conosciuto Archetypes venga lentamente mandato a morte. La sua sarà una lenta e non facile caduta e molto probabilmente i suoi pezzi vivranno fino ai tempi di Plone 5, ma a differenza di tutte le altre volte l'alternativa che si sta disegnando è reale e soprattutto da qualcosa che Archetypes non aveva.
Sto ovviamente parlando di Dexterity. Questo nuovo framework promette maggiore velocità (il talk di David Glick intitolato "Building Content Types with Dexterity" ha anche mostrato qualche cifra, ma nulla di eccezionale a dire il vero, un particolare confermato anche da Wichert Akkerman nel suo intervento di cui parlo sotto), si integra in modo completo con la ZCA e l'uso delle interfacce... ma non sono questi i particolari che credo determineranno il suo successo.
Per la prima volta non si sta semplicemente fornendo una modo alternativo, ideologicamente più bello ma nella pratica più limitato, per ottenere esattamente quello che Archetypes già fornisce (ho visto vari di questi tentativi in passato, e anche Rok Garbas ci ha riprovato nel suo talk intitolato "Complex Forms with z3c.form"). Dexterity offre una grande nuova funzionalità che è la generazione dei contenuti via Web!
Per chi di voi ha già usato prodotti come ATSchemaEditorNG e derivati, questo potrebbe non sembrare niente di veramente nuovo, ma questa volta la differenza sta nel fatto che questi contenuti saranno esportabili come codice perfettamente funzionante e modificabile.
L'utente Plone potrebbe quindi generare autonomamente i propri modelli dati e richiedere interventi di sviluppo sono per ottenere risultati che l'interfaccia Web non offre... eccezionale!
Le slide e gli esempi sono da analizzare (forse un tantino esagerata anche l'inclusione opzionale dei componenti Grok... ma lo perdoniamo).
Il prodotto attualmente presenta alcuni limiti e mancate funzionalità che non lo fa consigliare per la produzione, ma sono tutte cose che verranno facilmente superate nel breve. Probabilmente Dexterity diventerà lo standard dello sviluppo in Plone 4, convivendo (forse non troppo pacificamente) con Archetypes, per diventare l'unico ospite in Plone 5.
De-cosa?
Era dappertutto e se ne parlava dappertutto... Deco!
Confesso che non mi sono assolutamente interessato all'argomento fino alla conferenza e anche durante la stessa ho schivato tutti i talk a riguardo, poi mi sono ritrovato ad uno degli incontri nella terza giornata (dedicata agli Open Space) in cui l'argomento era "pagine composte" e l'intervento di Limi ha portato l'attenzione su questo nuovo giocattolo.
Deco si dovrebbe occupare solo del layout. Tutti noi potremmo continuare ad utilizzare l'approccio di oggi (creo un contenuto, genero la sua vista) oppure basarci sul layout Deco che permetterà il movimento dei componenti della pagina (tiles) tramite drag & drop.
A sentire Limi l'accessibilità della pagina (intesa come validazione del codice) rimane garantita se si parte da un buon XHTML. Vedremo!
A ruota libera
Essendo finiti gli argomenti principali, finisco con una breve panoramica su alcuni interventi minori che ho trovato per qualche motivo interessanti.
Euphorie: combining grok, dexterity sql content in a single application - Wichert Akkerman.
Wichert ci ha offerto un interessante talk su come usare Plone senza usare Plone. La descrizione di un progetto dove Plone veniva completamente privato di ogni suo componente (sharing, versioning, ...) e dove i dati venivano presi da database relazionale...
...forse conveniva non usare Plone? :-)
plone.app.discussion - Timo
Un veloce incontro negli openspace su un vecchio argomento mai completamente risolto (speriamo sia la volta buona) un nuovo prodotto, speriamo il nuovo prodotto, per gestire i commenti ai contenuti in Plone. Sarà compatibile con Plone 3.3 e diventerà parte del sistema in Plone 4.1.
plone.app.discussion promette la moderazione dei commenti e un workflow per questi, ovviamente personalizzabile. Era ora!
Very frequently asked questions answered for the last time :-) - Andreas Jung
Come potevo non partecipare? Chi di voi non è mai stato ripreso da A.J. almeno una volta?
La persona più "diretta" della mailing list plone-users che ripeteva per l'ennesima volta, nel modo più gentile possibile, alle domande che troppo spesso si è sentito fare (lo so... non erano davvero dirette a lui...).
Non mi sono stupito del suo intervento dopo la lunga discussione che è sfociata nel flaming poche settimane prima della conferenza...
Ho trovato divertente vedere come il giorno dopo qualcuno abbia comunque fatto domande troppo banali nella lista... e con lo stesso approccio di sempre abbia ricevuto in regalo le risposte di A. Jung!
Oct 30, 2009
redturtle@ploneconf2009
alcuni riferimenti ai talk che abbiamo tenuto alla plone conference in corso in questo momento
I talk presentati sono stati 2:
- Carneade, dar vita alle relazioni del mondo reale: Plone come gestore di organizzazioni
- collective.amberjack: Plone come piattaforma per i tutorial
Tutto il materiale è già in linea.
Carneade
- La presentazione (su slideshare)
- un video di presentazione del sistema (su youtube)
- l'intero talk in streaming video (su ustream)
collective.amberjack
- La presentazione (su slideshare)
- un video di presentazione del sistema (su youtube)
- l'intero talk in streaming video (su ustream)
Sep 24, 2009
Sostituire i contenuti base di Plone con i propri archetype
Ho scritto un tutorial sul portale Plone Italia relativamente a questo delicato argomento.
Non dilunghiamoci troppo, dato che il tutorial può essere letto direttamente dal portale plone.it, ma riassumiamo solo i concetti che vi stanno dietro.
- Aumentare/modificare le funzionalità dei tipi nativi di Plone.
- Sostituire quindi questi tipi primitivi con i nostri tipi.
Fin qui tutto facile, il problema è sempre e solo uno: se sviluppiamo un nostro tipo di contenuto "News" e vogliamo che questo venga usato da Plone proprio come se fosse l'originale "News Item" di ATContentTypes, allora dovremmo combattere con l'integrazione nel sistema:
- Far capire a Plone che, dove prima veniva usato "News Item", ora venga usata la nostra news (piuttosto facile, ma noioso).
- Prodotti di terze parti (magari non ancora installati) dovranno usare il nostro contenuto se internamente facevano affidamento su "News Item"
Leggetevi quindi la guida all'applicazione di questo metodo.
Sep 16, 2009
PERFORMANCE, PERFORMANCE, PERFORMANCE...e non solo!
In uscita la release 8.5.1 di Lotus Domino
E' annunciata per metà ottobre l'uscita della release 8.5.1 di Lotus Domino.
Nel frattempo ci si sta sbizzarrendo nel testare la beta release e, udite udite, le reazioni sono estremamente positive, trapela addirittura una sorta di entusiasmo come da tempo non si sentiva.
In molti avranno certamente sofferto sin dal rilascio della R8.X il problema della lentezza del client notes standard (la versione eclipse in pratica).
Ebbene, in termini di prestazioni, se la versione 8.5.1 rimarrà così com'è, credo che tutti ne rimarranno estremamente soddisfatti
Non solo, a livello di amministrazione, inotes e designer sono annunciate una miriade di feature veramente interessanti
Single sign-on HTTP su Lotus Domino in ambiente Windows
Come realizzare SSO su HTTP in ambiente Windows per applicativi Lotus Domino
Durante lo scorso Lotusphere 2009 a Orlando avevo assistito ad una interessante sessione in cui venivano spiegati i piani e le modalità di integrazione tra ambienti Windows e Lotus Domino.
Di particolare interesse una dichiarazione rilasciata dalle persone IBM in merito al SSO HTTP: " Ragazzi, abbiamo intenzione di farla e lo standard che utilizzeremo è SPNEGO." Wow mi son detto! Con questo risolvo un bel po di situazioni ... peccato che non hanno annunciato quando sarà rilasciata.
Bene il "quando" è domani, o meglio la prossima release (8.5.1). Basti guardare la documentazione tecnica già presente sui wiki ufficiali IBM.
Sep 10, 2009
XPages - L'evoluzione della specie
Con la versione 8.5 del server Domino, IBM ha introdotto la tecnologia XPages, che promette di migliorare e facilitare la creazione di applicazioni Web 2.0
Le XPages sono un nuovo elemento di un'applicazione Domino 8.5 che consente di creare un'interfaccia Web 2.0 basata sulla tecnologia JSF.
Con le XPages si rimuovono le barriere per la programmazione Web in Domino; esse permettono di accedere ad una moltitudine di dati e
di realizzare facilmente la localizzazione delle applicazioni.
Uno strumento di sviluppo che "puo'" sostituire il "metodo classico" aumentando le possibilità e riducendo drasticamente i tempi di sviluppo e manutenzione.
Perchè sono importanti?
- Separazione della presentazione dei dati dalla logica applicativa (si possono collegare piu' database in una sola UI)
- Usano tutto cio' che già si conosce (stesse classi e funzioni @)
- Semplificano drasticamente la realizzazione di applicazioni Web "moderne" (in stile Web 2.0)
- Performance maggiori
- Portano finalmente in Domino alcuni costrutti del mondo J2EE (eg. variabili di sessione, JSE ecc.)
Il 16-17 Luglio 2009 RedTurtle ha partecipato a Milano al workshop tecnico sulle Xpages presso la sede IBM di Segrate.
Date un'occhiata a come funzionano le Xpages:
"Plone improvements ideas"
La comunità Plone cerca feedback da tutti gli utilizzatori
Da un paio di mesi la Plone Foundation ha aperto un servizio di richiesta di idee per le prossime release.
in questo senso dichiara:
This forum exists to allow you to suggest and vote on ideas that you think could improve Plone. We can't guarantee that we'll implement everything that's added here, but this is a chance to influence the future direction of Plone.
alcune di queste idee sono state votate e stanno lavorando per includerle nella release 4:
Puoi ovviamente proporre la tua idea, ma puoi anche votarne altre. Se ben organizzati, si può anche creare un "gruppo di pressione" in modo che alcuni temi sentiti solo in certi ambiti vengano resi noti anche ai developers.
Un caso è quello dell'accessibilità, tema molto caldo in Italia per via della famigerata legge Stanca, e che in ambito internazionale ci declina semplicemente con un rispetto delle norme del W3C.
Chiaramente il Forum è internazionale e la lingua è quella inglese, ma con il nostro dizionario inglese di fiducia, nulla ci spaventa :)
Sep 06, 2009
Pydev 1.5.0: into the wild
Il papà di Pydev annuncia il rilascio della versione 1.5.0 di questo eccezionale plugin per eclipse. La novità principale è che per la prima volta sarà completamente open source!
Da anni Pydev è uno degli strumenti favoriti da una moltitudine di sviluppatori Python per merito della sua completezza.
Fino a poco tempo fa al plugin open source Pydev si affiancava Pydev Extensions, liberamente scaricabile ma a codice chiuso. Dall'ultima versione, la 1.5.0, Pydev e Pydev Extensions sono stati unificati in un unico progetto open source! La notizia è stata data in questo annuncio da Fabio Zadrozny, lo sviluppatore che ha ideato questo gioiello.
Il link per l'installazione tramite eclipse è: http://pydev.org/updates
N.B.: occorre rimuovere eventuali versioni precedenti di Pydev prima di procedere all'aggiornamento.
Non possiamo che apprezzare Aptana, la società che finanzia lo sviluppo di Pydev, per questa scelta! Se nell'immediato si limita a togliere a molti sviluppatori il fastidio di chiudere una finestra promozionale. che compare periodicamente mentre si utilizza eclipse, nel lungo periodo permetterà a questo plugin di crescere con maggiore rapidità e di conquistare sempre più utenti.
Riferimenti:
- Il link della notizia originale
- La home page di Pydev
- La home page di Aptana
- Link per aggiornare eclipse: http://pydev.org/updates
Sep 03, 2009
NSD, il tuo compagno di viaggio quando Domino va in crash
NSD (Notes System Diagnostic) è uno strumento Lotus per raccogliere informazioni a fronte di un crash o di un hang di sistema. Vediamo la sessione presentata durante DominoPoint Day 2008, l'evento italiano della comunità Lotus.
Tra qualche mese ci sarà il terzo appuntamento con il DominoPoint Day, ripartiamo da dove ci eravamo fermati: la sessione su NSD presentata nel 2008. Scarica la presentazione su Slide Share.
Aug 24, 2009
Ridurre il numero dei click: SpeedUpUI
Introduzione al primo di una serie di prodotti atti a velocizzare l'interfaccia di Plone, aumentando le funzionalità present in ogni pagina
Introduzione
L'idea che sta dietro al progetto nasce dalla "lentezza" di Plone in tutte quelle situazioni in cui è necessario effettuare data-entry massivo e/o ripetere molto spesso la stessa operazione.
Non si sta quindi parlando di rendere Plone più veloce (il Web è pieno di sanguinose discussioni a riguardo!) ma di rendere l'interfaccia più semplice. A volte bastano pochi accorgimenti.
Un esempio semplice, ma che fa capire quello che intendo è la PLIP 228 discussa per Plone 4. Si parla di ripristinare il menù a tendina "Aggiungi nuovo elemento" anche per i contenuti che non sono cartella (rimosso con l'avvento di Plone 2.5). I motivi che hanno portato alla sua rimozione sono tutto sommato buoni (legati all'usabilità dell'interfaccia) ma tutti si sono accorti quanto fosse più facile prima (leggasi "meno click e meno caricamenti") inserire più contenti in modo massivo.
Un'interfaccia più ricca è anche più potente, ma porta anche a svantaggi dovuti alla sua minore facilità. Qual'è il confine?
In questo caso, e nei casi di cui questa serie di prodotti vuole occuparsi, la questione è ovviamente un appesantimento dell'interfaccia che diventa meno semplice, meno chiara...
Ad ogni modo non è sempre sbagliato fornire (a chi la vuole) un'interfaccia più complessa, che magari necessita l'utente/redattore ad un addestramento maggiore, ma che può portare a anche a ridurre il numero di caricamenti.
Esempio numero 1: le briciole di pane
Cosa non va nelle briciole di pane di Plone? Ovviamente nulla!
Chiari, semplici, leggibili link che permettono di tornare velocemente ai contenitori del documento corrente...
Quando un utente usa le briciole di pane?
Un utente visitatore le usa per tornare al contenitore... nulla di più, e non ci si aspetta quindi che siano necessarie altre funzionalità.
Trovo il comportamento attuale un po' limitante invece per gli utenti redattori... questi possono voler tornare al contenitore/i per effettuare altre operazioni, che a mio parere possono essere:
- Modificare il contenuto
- Accedere alla vista dei contenuti della cartella
- Aggiungere nuovi elementi
redturtle.speedupui.pathbar
Il primo (e speriamo non l'ultimo) prodotto si occupa ovviamente della pathbar di Plone che non a caso ho portato come esempio.
SpeedUpUI Pathbar sostituisce la normale viewlet delle briciole di pane con una versione più complessa che offre un menù a tendina ai redattori, per effettuare le operazioni descritte sopra.
La versione 0.1.0dev non supporta ancora la gestione dell'aggiunta di nuovi elementi (ammettiamolo... probabilmente sarebbe la modifica più interessante... date tempo al tempo!) così come non c'è un effettivo controllo dei permessi (perché mostrare un link "modifica" se l'utente non ha effettivamente il permesso di farlo?), ma ha offerto comunque interessanti spunti per fare riflessioni...
Innanzi tutto l'elemento corrente delle briciole di pane non ha nessuna funzionalità avanzata. Se si vuole modificare il contenuto corrente Plone offre già un apposito comando.
Per quali contenuti poi mostrare la voce "Contenti" per visualizzare i contenuti della cartella?
In un primo momento verrebbe da pensare tutti. Ovviamente tutti gli elementi della pathbar tranne l'ultimo sono sicuramente contenitori. Ad ogni modo ci sono casi in cui il contenitore è stato scritto per non sembrare tale... L'unico esempio vivente che ho visto usare questa funzionalità è l'oggetto PoiIssue del gestore di segnalazioni Poi.
Gli oggetti di questo tipo utilizzano l'interfaccia INonStructuralFolder. L'uso di questa interfaccia viene utilizzato da Plone per capire se la cartella deve in effetti sembrare una cartella agli occhi dell'utente (deve avere una scheda per visualizzare i contenuti?).
Martin Aspeli ha scritto un vecchio tutorial ancora valido a riguardo.
La scelta è stata quindi quella di non mostrare il comando di visione dei contenuti per i contenuti INonStructuralFolder.
Conclusione
Il prodotto non è completo, forse migliorabile (di certo per quanto riguarda l'interfaccia mostrata) e probabilmente qualche altra buona funzionalità potrebbe essere implementata.
La scelta di usare un namespace di secondo livello speedupui nasce da un fatto preciso: ci sono altri "pezzi" del puzzle Plone che possono mostrare funzionalità aggiuntive che permettano di ridurre i caricamenti...
Un esempio?
Il navigatore...
Aug 14, 2009
mappe google su plone
Lo sapete tutti, ormai siamo tutti molto web2.0 e una delle funzionalità più cool è geotaggare i contenuti rendendoli visibili su una mappa. E Google nella sua magnificenza ci offre un buon servizio di mappe con apposite API per utilizzarlo.
In Plone sono stati realizzati, nel tempo, diversi prodotti da varie aziende nel mondo:
L’ultimo in ordine di tempo e sicuramente il migliore, ovviamente imho, è Products.Maps di Jarn.
products.maps
Offre poche ed estremamente utili funzionalità:
- un nuovo contenuto “Location” (”Posto” in italiano), con tanto di icone colorate e ricerca del punto sulla mappa e preview del risultato. In pratica una pagina standard di Plone con in più la funzionalità di essere “piazzata” su una mappa.
- una vista che disegna una mappa di google e che è applicabile via menu a cartelle e cercatori
Utilizzando Maps puoi quindi creare delle cartelle all’interno delle quali inserire “posti”. Essendo contenuti plone questo significa che puoi associare permessi, workflow, parole chiave ecc.
A questo punto puoi anche creare il tuo cercatore che prenda tutte le location con una certa parola chiave o quelle in un certo stato e visualizzarle assieme.. in una nuova mappa.
Ma la cosa migliore che fa è di essere stato realizzato con tecnologia Z3 il che lo rende facilmente estendibile. quindi…
redturtle.maps.core
Il punto fondamentale è: Products.Maps è un ottimo prodotto, ma.. non tiene conto di tutti gli altri contenuti Plone. Nemmeno quelli base. Insomma, tutti i contenuti plone (basta che estendano ATContentType) hanno un bellissimo campo “Location” in cui solitamente indichi un indirizzo. Questo campo è bellamente ignorato da tutti. Eppure sarebbe così utile.
L’idea che abbiamo avuto con Andrew Mleczko è stata quindi quella di estendere Maps fornendo un adapter (o un set di adapter) per tutti i contenuti plone. L’unica condizione è che abbiano il campo Location valorizzato. Et voilà redturtle.maps.core è uscito dal cilindro.
Hey, nulla di devastantemente complicato (e questo il bello di plone..). Ma, secondo me, è esattamente quello che mancava per chiudere il cerchio.
Una prima release è stata rilasciata in occasione del Linuxday 2008 e ho avuto la possibilità di presentarla a Ferrara.
Poi, l’appetito vien mangiando, Andrew e Luca Fabbri hanno dato un ulteriore contributo alla cosa: il secondo ha migliorato la parte di query a google per tradurre l’indirizzo in coordinate geografiche, il prima ha dapprima realizzato una portlet (redturtle.maps.portlet) e quindi ha reso disponibile un template che effettua ricerche basate sui parametri che gli vengono passati e visualizza il tutto, ovviamente, in una mappa.
Nel frattempo ho esplorato la possibilità di avere baloon e icone differenziati per tipo.
Sempre sfruttando le funzionalità di plone/zope3 il comportamento relativo ai baloon potrà essere “overridden” in qualsiasi momento. in questo senso redturtle.maps.core è una specie di configurazione “out-of-the-box”.
Per il futuro, ci sono tutta una serie di funzionalità che vorremmo sistemare. Ad esempio i baloon appaiono veramente enormi: un contenuti plone è troppo verboso. Occorre pensare ad una soluzione.
Non nascondo che mi piacerebbe riuscire ad integrare il tutto in un’unica soluzione con Maps.
Stay tuned.
Aug 12, 2009
pagine composite con Plone
Una recensione su quattro prodotti plone nati per creare aggregare contenuti in una sola pagina plone.
Com’è noto Plone offre un’interfaccia in cui al centro della pagina visualizzi un oggetto per volta: una pagina, un evento, una news.
Non è, di base, possibile avere contemporaneamente più contenuti provenienti da punti differenti del portale oppure mettere assieme un cercatore, un testo libero e il contenuto di una cartella.
Nei giorni scorsi mi sono trovato a valutare alcuni prodotti Plone che offrano la possibilità di creare pagine composite. Mi sono imbattuto in questi:
I primi due usano un approccio simile ovvero ti permettono di riutilizzare o di inserire contenuti plone all’interno di un’area nella pagina. Gli altri due invece sfruttano le portlet come fornitrici di contenuti.
L’elenco non è esaustivo, ma questi mi sono sembrati abbastanza utilizzabili anche per un utente non esperto. Per tutti quanti l’idea è quella di fornire un meccanismo (abbastanza) facilmente usabile da chiuque e non quello di permettere di creare layout astrusi. Questo è roba per “designer”: gli editor si limitino a inserire e aggregare contenuti.. ;)
CMFContentPanels
Questo è un prodotto nato con la versione precedente di Plone (la 2.x), ma recentemente è stato modificato e ora funziona anche con la 3.x.
E’ alquanto versatile e l’avevo già utilizzato con la 2.5. Oggi, sinceramente, trovo il suo approccio un po’ datato. Speravo che il porting alla 3.x avesse introdotto ulteriori funzionalità, ma l’impianto generale è tendenzialmente lo stesso.
Inoltre gestisce gli allineamenti tramite tabelle. Dal punto di vista dell’accessibilità non è la soluzione ideale. Buono il fatto che i vecchi portali 2.5 possano essere migrati alla 3.x senza dover obbligatoriamente ricrearne parti ex-novo.
Collage
Ho molto apprezzato Collage per la sua flessibilità. Fondamentalmente funziona a righe all’interno delle quali vai ad aggiungere colonne. In ogni colonna, uno sotto l’altro, puoi aggiungere elementi. Non è studiato per “intabellare” contenuti, quindi non pensare a questo utilizzo, sarebbe una forzatura. E’ tutto realizzato tramite DIV quindi un po’ di CSS può essere d’aiuto per aggiungere un tocco di grafica in più. Tra l’altro ogni oggetto ha la sua classe e/o il suo id per cui è semplice identificare il punto su cui si può agire.
Ogni elemento può essere aggiunto attraverso semplici e intuitivi menù a scomparsa.
I contenuti che si possono inserire sono tutti quelli disponibili nel portale plone. Questo significa che eventuali tipi custom possono essere utilizzati. Inoltre puoi sia riusare oggetti già creati in qualche altra parte del portale che crearne di nuovi: verranno salvati all’interno del collage stesso.
L’interfaccia è debolmente usabile e ti permette di muovere gli elementi riordinandoli velocemente attraverso delle piccole frecce. Ho solo avuto qualche noia utilizzando l’opzione di copia: da riprovare questa funzionalità.
In generale l’ho trovato ottimo e molto facilmente utilizzabile.
Products.ContentWellPortlets
Questo è il primo dei due prodotti basati su portlet. L’idea è quella di fornire due aree “attive” all’interno delle quali inserire portlet: una sopra il contenuto corrente, una sotto.
Si applica quindi a qualsiasi oggetto tu vada a creare all’interno del portale e sfrutta tutte le regole delle normali portlet di plone. Questo significa che se in un folder aggiungi una portlet statica in testa, questa apparirà in tutte le pagine contenute nel folder. Esattamente come accade per le due colonne laterali.
Il principale vantaggio sta proprio in questo: essendo applicabile ovunque non hai la necessità di creare tipi ad hoc per avere contenuti speciali. Lo svantaggio è che puoi utilizzare solo portlet e non reali contenuti. Con il tempo le portlet disponibili saranno sempre più e sempre più pervasive: questo svantaggio calerà.
Non puoi e non potrai mai in ogni modo, però, aggiungere un contenuto come tipo custom alla stregua di Collage.
collective.portletpage
E’ un nuovo tipo di contenuto vero e proprio.
E’ una normale pagina Plone con in fondo 4 aree (nord, sud, est, ovest) in cui aggiungere portlet. A differenza del precedente ti permette di gestire con più flessibilità il layout delle portlet: in fondo hai due aree in più…
Anche questo prodotto è ben fatto ed è assolutamente plonish. D’altra parte l’autore è una garanzia in questo senso.
Credo che possa essere molto utile per strutturare sottohomepage di un portale o comunque punti di raccolta di informazioni. Il fatto che sia in ogni caso un’estensione di Page ne limita in parte l’utilizzo estensivo: e se volessi le stesse funzionalità su un evento? avrei bisogno di collective.portletevent? D’altra parte, uno sviluppatore può “prendere spunto” molto facilmente da questo prodotto.
Il fatto che utilizzi le portlet poi ha gli stessi vantaggi/svantaggi del precedente.










