Il 30/05/13 17.03, Luca Fabbri ha scritto:
2013/5/30 Roberto Rascioni <[email protected]>:
Salve lista!
avrei la necessità di aggiungere un nuovo campo nello schema di una portlet
già esistente.

Googlelando un po' non ho trovato molto tranne il consiglio di subclassare
la portlet esistente e crearne una nuova con l'aggiunta dello schema voluto.
Un buon consiglio ma purtroppo sono costretto ad aggiungere campi alla
portlet esistente perchè quest'ultima è già in produzione in diversi siti.

Qualcuno di voi sa consigliarmi una metodologia da seguire? O anche un
prodotto che si occupi di aggiungere nuovi campi ad una portlet esistente?

Se ho capito il tuo dubbio non è un problema, se il nuovo campo
dell'assignment è un attributo di classe con un default, non avrai
problemi:
Ne parlavo qui:
http://blog.keul.it/2011/04/plone-portlets-are-not-enemies-just.html
Andando poi in gestione delle vecchie portlet avrai il nuovo attributo
da compilare.

Se non vuoi creare una nuova portlet puoi probabilmente limitarti a
definire un nuovo portletRenderer:
http://plone.org/documentation/kb/customization-for-developers/portlet-renderers
Nell'esempio sopra viene solo cambiato il template, ma la direttiva
plone:portletRenderer dovrebbe prevedere anche l'uso di "class".


Ciao Luca!
e grazie della pronta risposta! Il mio problema è proprio quello descritto nel primo post che mi hai inviato ma rileggendo il messaggio mi sono accorto di aver omesso alcuni importanti particolari:

nel mio caso dovrò aggiungere dei nuovi campi alla gestione della portlet esistente e dovrò farlo estendendo un prodotto installato via buildout e che risiede quindi nella cartella eggs.

In effetti ho già esteso il prodotto perchè avevo la necessità di sovrascrivere la pt originale:

class Renderer(portletOriginale.Renderer):
    render = ViewPageTemplateFile('templates/miaPageTemplate.pt')


Ma quando provo con la stessa logica ad estedere la classe Assignment per aggiungere i nuovi campi non succede nulla..tra le altre cose non ricevo nemmeno errori:


class IMiaPortlet(portletOriginale.IOriginalPortlet):

    count = schema.Int(title=_(u'Number of items to display'),
                       description=_(u'How many items to list.'),
                       required=True,
                       default=5)


class Assignment(portletOriginale.Assignment):

  implements(IMiaPortlet)

  count = 5

  def __init__(self, count=5):
     self.count = count


Non so se questa sia la procedura corretta e sto sbagliando qualcosa
o se sto sbagliando tutto da principio perchè è impossibile aggiungere nuovi campi attraverso questo metodo

Grazie mille di nuovo della risposta che mi hai inviato comunque

Ciao
Roberto


_______________________________________________
Plone-IT mailing list
[email protected]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html

Rispondere a