You are reading the articles stored in Case study
May 07, 2010
... and finally: what if they want tab inside Plone portlets?
A little demo (and the idea behind) for collective.portlettabber product
They want tab!
The request is quite common in recent layout that you can see all around the Web. Ok, "portlet" is common, but you can also find many examples of portlets with tabs.
What is this? The data inside portlets is split in sections that you can easily switch with a little Javascript code. The benefit is to put more information inside a tiny space, maybe showing to users only the most interesting ones when he arrive at your page.
Technically speaking this task is so simple that a blog post is not needed... but we don't know what kind of contents we want put inside the portlet tab.
Also the customer want to have the choice of use all (maybe the most part) of Plone portlets available is his installation... We really can't rewrite/overrider all portlets to get this...
...and finally (like everytime) accessibility. Data inside portlets must the accessible and the requirement 15 of the Stanca Act force us to make this available also with Javascript disabled.
Solution
Let's starts from what we can't lose:
- accessibility of the page without Javascript
- all Plone portlet usable as "tab"
For those two reasons the simplest way is to keep Plone portlet engine like it is. Plone portlets are working normally without Javascript, so why don't simply show tabs in only when Javascript is there?
This lead us to a solution. "Simply" generate portlet with tab using Javascript.
One more time again jQuery is our hero. The product add to Plone portal_javascript tool a new jQuery plugin for this. Is not a perfect plugin right now (is a composition of jQuery and normal Javascript OOP) but reach the target.
Here an example:
jq(document).ready(function() {
var generatedPortlet = jq.tabbedportlet();
generatedPortlet.makeTab("#portal-column-two .portletNews");
generatedPortlet.makeTab("#portal-column-two .portletCalendar");
generatedPortlet.makeTab("#portal-column-two .portlet-static-static");
jq("#portal-column-two .visualPadding").prepend(generatedPortlet.getPortlet());
});
When page is loaded a new Javascript object is created, and calling makeTab method you can "steal" other existing portlets all around the page (simply giving a jQuery selector, a DOM element or a jQuery object wrapping the portlet).
The method also has other features, look at the pypi page below for more.
Every call to makeTab will remove the portlet and move the DOM elements of the portlet inside a new ones (that, for now, is not inside the document yet).
When you have finished, just put the result of getPortlet method wherever you want.
The final effect is quite good... the demo will show you the page with disabled Javascript, then (long life to Web Developer's Firefox extension) it is enabled again and the page reloaded...
What next?
The product is not so simple to be used by Plone site members (this is not named collective.portlet.tabber...
)
A developer or a skinner must provide the additional Javascript inside a product/theme and he must know something about jQuery selectors... but after this starting setup... nothing more!
Another thing Ithat is not perfect is the Javascript structure, not a fully jQuery plugin. You can't fully rely on chaining right now.
More info?
http://pypi.python.org/pypi/collective.portlettabber
Document Actions
Apr 29, 2010
Ferrara WPD 2010 - un case study di evento riuscito
Con la soddisfazione dei Clienti si possono fare molte cose, anche un evento di successo
Chi trova un amico....
Mesi fa, in un incontro strategico con esperti di marketing, abbiamo appreso con sorpresa che il "passaparola" tra Clienti soddisfatti e potenziali nuovi Clienti, che per noi è la norma, rappresenta il livello massimo del successo di mercato.
Col senno di poi, ci siamo resi conto di aver sempre saputo che un Cliente soddisfatto è anche un amico prezioso: PloneGov Italia è in fondo l'estensione a un livello più alto di questo principio di scambio di informazioni utili. Sentire qualcuno che dice "Ti consiglio Plone" per noi è quasi altrettanto importante che sentir dire "Ti consiglio RedTurtle" (per inciso, ad oggi metà degli Enti PloneGov Italia sono nostri Clienti).
La "Plonopoli" emiliana
Scendendo nel pratico: aver trovato la Città giusta (la nostra: a Ferrara Università, Camera di Commercio, Comune, Provincia, AUSL e AOU Sant'Anna tutti usano Plone), il Cliente giusto (AUSL Ferrara) e la persona giusta (Isabella Masina dell'Ufficio Comunicazione), ci ha consentito di mettere rapidamente in piedi un evento oggettivamente utile non solo per noi, ma soprattutto per gli stessi Enti che vi hanno preso parte.
L'occasione giusta
Consolidati luogo, Cliente e interlocutore, il World Plone Day ha fornito l'elemento mancante: l'occasione giusta. Isabella, ben coordinandosi con i responsabili di riferimento, capaci di cogliere il senso dell'iniziativa, e appoggiandosi a RedTurtle per individuare i relatori più interessanti, ha messo in gioco la capacità organizzativa del suo Ente, e (con una tempestiva adesione) la "fratellanza" PloneGov Italia, riuscendo a coinvolgere, oltre ai membri Ferraresi di PloneGov Italia, anche la Regione, AUSL Bologna ed anche Enti fuori regione come Ospedali Galliera Genova.
E' ovvio che questi stessi enti, compresi quelli già Clienti RedTurtle, non sono a disposizione di un'azienda e mai si sarebbero mossi per un evento "marcato" RedTurtle. Invece, le dinamiche di PloneGov e il modo con cui la AUSL si è messa in gioco, simile a quello già sperimentato da Camera di Commercio di Ferrara, hanno consentito a Enti differenti, uniti dall'appartenenza a PloneGov Italia, di investire il loro tempo in un'azione di autopromozione della tecnologia, lasciando spazio a nostri interventi tecnici a fronte di una piccola sponsorizzazione.
"A collective win-win"
Così abbiamo visto AUSL differenti parlare tra loro e con Comuni e Aziende Ospedaliere. Perchè la cosa ci faccia piacere, è chiaro, ed è legittima la speranza di aumentare il numero di nostri Clienti soddisfatti. La cosa interessante è che tutti assieme abbiamo abilitato un modello trasparente, lecito e non invadente per aiutare i nostri Clienti a condividere la loro soddisfazione, parlandosi tra loro di problemi e di soluzioni Plone. Forse siamo davvero al top del marketing....
Document Actions
Mar 26, 2010
"Future is bright, future is Plone"
Sometimes when you are doing a lot of Plone development and integrations you could miss the big picture: Plone is not just a CMS. It's a damn good CMS with almost unlimited possibilities of integration. However its 'unlimity' has started to be one of its biggest limitations.
I'm working right now on a project that uses ore.contentmirror to serialize Plone content data to postgresql which can be later reused in repoze.bfg. I have found several similar deployments in the Plone community which were quite inspiring.
The scenario is almost always the same:
- to use Plone as a CMS (backend)
- to have fast framework (frontend) to serve my backend data
- to include in frontend layer Web2.0 functionality and some other dynamic stuff
- to make benefit of external indexing server for full text search, for both frontend and backend
You can of course use solr with collective.solr for search engine but thanks to tsearch2 some of the search/ranking functionalities can be taken directly from postgresql (making the whole stack much smaller and easier to maintain).
Serializing Plone data to SQL opens many possibilities. But with Plone you can do much more.

You can integrate other CMS's like Alfresco or Sharepoint using CMIS. You can connect your Plone instance to Salesforce. Instead of using tsearch2 or solr as an indexing engine - you can use Google Search Appliance inside your Plone instance. If you want to start online document collaboration you can even connect it to Google Docs.
External services and applications are not the end of the story. There is of course WSGI with collective.xdv and Deliverance and bunch of other interesting middlewares and we shouldn't forget about PAS plugins.
It's possible that I missed something interesting. Plone community is very creative, thought. It's hard to be always up to date. That's why I'm sure that I miss a place where integrators and developers can share they successful stories and discuss potential use cases. A place which will make Plone future bright.
Document Actions
Jan 19, 2010
What's New in Composite Applications in IBM Lotus Notes 8.5.1
Come and learn about whats new with composite applications in Lotus Notes 8.5.1. You'll see how you can leverage the new tooling in the Composite Application Editor (CAE) to quickly assemble applications and create new components using "point and click". We'll show how different components like Web, XPages, Java Views and Eclipse views can be assembled in a composite and on the side shelf within your application. You'll learn about the new container framework and what this means for your components. We'll cover the low level extensions to the CAE that allow you to add your own custom tooling for your components, and you'll learn all about custom actions and see how they can make your applications more powerful.**

Bob Balfe ha presentato due interessantissime CA realizzate con la versione 8.5.1 e illustrato i nuovi oggetti:
- Synphony Spreadsheet Container
- Web Browser container
- Host on Demand container
- Notes Document Container
- Notes View container
Ed inoltre, per il futuro:
- CAI URL enhancement - pagealias
- Role based access to components
Peccato per la scarsità dei talk riguardanti l'argomento, ma di sicuro Balfe, Guru assoluto in materia, ha alzato ai massimi livelli la qualità del suo intervento.
Document Actions
Nov 18, 2009
Deliverance, tips and tricks
When to use regular expressions and "abort".
The attempt to use Deliverance on a Plone site which must also provide users all the functionality of the backend could be more difficult than expected.
Should be evaluated each case involving the opening of a popup or overlay javascript, because without the appropriate rules of match would get a beautiful Internal Server Error or a very nice "zoom effect" (in the popup will be reloaded the entire site) .
How to solve the problem?
Putting on top of our file rules.xml the match for all addresses that should not be filtered by Deliverance.
For the popup Related Items:
<match path="regex:^(.*/VirtualHostRoot|)/.*referencebrowser_popup$" abort="1" /> <match path="regex:^(.*/VirtualHostRoot|)/.*referencebrowser_popup$" abort="1" />
To view in a news the image in original size:
<match path="regex:^(.*/VirtualHostRoot|)/.+/image_view_fullscreen" abort="1" /> <match path="regex:^(.*/VirtualHostRoot|)/.+/image_view_fullscreen" abort="1" />
For some of the basic tools of TinyMCE, including uploading files and images:
<match path="regex:^(.*/VirtualHostRoot|)/tinymce-upload$" abort="1" /> <match path="regex:^(.*/VirtualHostRoot|)/.+/plone(image|link)\.htm$" abort="1" /> <match path="regex:^(.*/VirtualHostRoot|)/.*/plugins/table/(table|row|cell|merge_cells)\.htm$" abort="1" /> <match path="regex:^(.*/VirtualHostRoot|)/.+/advanced/(source_editor|anchor)\.htm$" abort="1" />
Every time a new TinyMCE tool is enabled not forget to make sure it works properly ;)
Understood the principle, is easy to customize and improve the regular expression to fit our needs!