Ciao, io utilizzo con moderata soddisfazione https://github.com/hexagonit/hexagonit.portletstyle
Va di monkeypatch a manetta. Fa quello che dico io, ma non me la sento di consigliarlo per siti web "importanti", poichè è di difficile manuntenibilità. Però, chissà, ne puoi trarre ispirazione ;) Vito Il giorno 31 maggio 2013 09:02, Luca Fabbri <[email protected]> ha scritto: > 2013/5/30 Roberto Rascioni <[email protected]>: > > 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 > > > > Innanzi tutto: il mio suggerimento di usare un nuovo portletRenderer > era sbagliato, scusami. Come appunto hai evidenziato tu hai bisogno di > manipolare l'assignment e non il renderer. > > La modifica che hai fatto, estendendo le varie classi, potrebbero > andare bene per un nuovo tipo di portlet ma non per le vecchie portlet > (cosa che invece vuoi ottenere). > Il problema è che le vecchie portlet usano il vecchio assignment > (portletOriginale.Assignment). > > Non ho presente il tuo codice o il codice del prodotto originale, ma > la cosa più veloce che mi viene in mente al momento sarebbe quella di > iniziare ad utilizzare un branch del prodotto originale (i sorgenti li > hai?). > > NB. Usare branch è un po' come il Lato Oscuro: paga molto velocemente > e raggiungi velocemente il risultato, ma se il prodotto originale > viene aggiornato e puoi portarti dietro le modifiche, ti troverai ad > dover "inseguire". > > Altra possibilità: monkey patch (probabilmente). > > Magari qualcun altro ha soluzioni più eleganti :) > > -- > Saluti/Regards > > Luca Fabbri - RedTurtle Technology > E-mail: [email protected] > Web Site: http://www.redturtle.it/ > Phone: +39 0532 1915958 > Fax: +39 0532 287070 > _______________________________________________ > 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 > -- *Vito Falco* Webdeveloper & designer freelance, Plone enthusiast Bari, IT tel +39 3346330137 | skype vito80ba | twitter vito80ba Linkedin http://it.linkedin.com/in/vitof
_______________________________________________ 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
