Personal tools
You are here: Home Documentazione Ricette Messaggi nelle pagine Plone da codice Python
Document Actions

Messaggi nelle pagine Plone da codice Python

Spesso nell'interazione tra utente e plone abbiamo bisogno di mandare messaggi e avvisi, ecco come fare in plone 3.

Plone dialoga con l'utente che lo sta usando da sempre, indicando azioni eseguite o problemi avvenuti nella zona alta della pagina, proprio sopra al titolo del contesto.

Fino alla precedente versione il modo di comunicare quei messaggi era piuttosto "rozzo", sebbene semplice ed efficace: veniva aggiunta all'url una querystring apposita, che il template sapeva di dover renderizzare come messaggio..

Con Plone 3 la cosa e' (finalmente) cambiata, e non si deve piu' ricorrere a qualcosa di così evidente e poco flessibile.

il servizio plone_utils mette a disposizione una chiamata che permette di aggiungere tutti i messaggi che vogliamo, indicando anche se si tratta di una info, di un warning o di un error.

Come? Ecco degli esempi..

in un controlled script di portal_skins (come ad es. event_edit.cpy presente in plone_form_scripts):

..
context.plone_utils.addPortalMessage(_(u'Error saving event.'), 'error')
..
context.plone_utils.addPortalMessage(_(u'Event changes saved.'))
..

mentre in una chiamata effettuata da normale codice python (es. un metodo di un tool su file system):

..
plone_utils = getToolByName(self, 'plone_utils')
msg = u"Fatto. tutti gli oggetti sono stati elaborati."
plone_utils.addPortalMessage(msg, request=self.REQUEST)
..

si noti che nel caso in cui la chiamata avviene da codice su file system è necessario effettuare il bind della REQUEST per permettere al sistema di annotare il nostro messaggio.

quello che avviene in fase di presentazione dei messaggi è che il template effettua la chiamata plone_utils.showPortalMessages, capace di estrarre tutti i messaggi annotati, che verranno così renderizzati..

by Maurizio Delmonte last modified 2008-07-04 13:02

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: