2013/5/31 Vito Falco <[email protected]>:
> 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 ;)
>

Non lo conoscevo!



> 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



-- 
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

Rispondere a