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
