[Plone-IT] Estendere AT Folder per singola istanza Plone

Luca Fabbri keul a redturtle.it
Mar 26 Feb 2013 13:06:55 UTC


2013/2/26 Giorgio Pieretti <giorgio.pieretti a openprojects.it>:
> Ciao Roberto,
> Giusto qualche settimana fa avevo esposto un problema analogo e con l'aiuto
> della ml avevamo individuato alcuni limiti di schemaextender... ti consiglio
> di fare una ricerca del mio post... non posso aiutarti oltre poiché sono in
> ferie e sul tablet dal quale scrivo non ho i posts vecchi...
>

Il problema però questa volta non sembra legato a quanto visto la
volta scorsa: le modifiche che Roberto vuole fare a me sembrano
norrmalissime...

A prima occhiata non vedo errori... e parte il fatto che non capisco
perché tu stia usando overrides.zcml!

Perché? Non dovrebbe servirti



> 2013/2/26 Roberto Rascioni <r.rascioni a unimc.it>:
>
> Salve a tutti,
> vorrei estendere l'AT Folder di Plone ed estenderlo solo nel momento in cui
> un tema e/o un prodotto è installato nell'istanza Plone e non
> incondizionatamente per tutti le istanze Plone che ho già in produzione.
>
> Per estendere il prodotto ho utilizzato archetypes.schemaextender e ho
> seguito passo per passo la sezione chiamata Layer-aware example per fare in
> modo che l'AT esteso sia associato ad uno specifico browser layer. Quando
> riavvio l'istanza in debug Il tutto va a buon fine senza errori ma l'AT non
> viene mai esteso con i campi che ho aggiunto.
>
> Ho notato che se nel file extender.py modifico il valore di implements da
> implements(IBrowserLayerAwareExtender) a  implements(ISchemaExtender) l'AT
> viene esteso correttamente ma ovviamente viene esteso per tutti i siti Plone
> incondizionatamente
>
> Qualcuno di voi ha idea di come risolvere il problema e di quale sia
> l'errore?
>
> Prima di tutto: come hai gestito l'estensione? Lo chiedo perché se
> cerchi nell'archivio di questa ML trovi una recente e interessante
> discussione che parla di schemaextender e di problemi che puoi avere
> in certi casi.
>
> Dopo questo, se non hai usato le funzionalità base di schemaextender
> direi che il tuo problema sta nel non avere registrano bene il tuo
> layer...
>
> Magari se ci incolli un po' del tuo codice (le di interesse)  possiamo
> darti una mano.
>
>
> Ciao Luca,
> intanto grazie mille della risposta e della disponibilità.
>
> Credo anche io che il problema sia nella registrazione del browser layer ma
> non riesco a capire dove sia l'errore...
> in più mettici anche che quello stesso layer  lo utilizzo per registrare
> altre browser:viewlet e il tutto funziona correttamente
>
> Comunque di seguito invio il codice che ho utilizzato per estendere l'AT
> Folder
> I file sono tutti nella cartella browser del tema che ho creato:
>
> extender.py
> ------------------------------------------------------
>
> from Products.Archetypes.public import LinesField, BooleanField
> from Products.Archetypes.public import MultiSelectionWidget, BooleanWidget
> from plone.app.blob.field import BlobField, ImageField
>
> from Products.Archetypes import atapi
>
> from archetypes.schemaextender.field import ExtensionField
>
> from zope.component import adapts
> from zope.interface import implements
>
> from archetypes.schemaextender.interfaces import ISchemaExtender,
> IOrderableSchemaExtender, IBrowserLayerAwareExtender
> from Products.ATContentTypes.interface import IATFolder
>
> from Products.CMFCore.permissions import ManageProperties, ManageUsers
> from Products.Archetypes.atapi import DisplayList
>
> from interfaces import IThemeSpecific
>
>
> class FolderOptionsFields(ExtensionField, BooleanField):
>    """ New added fields """
>
>
> class FolderExtender(object):
>     adapts(IATFolder)
>     implements(IBrowserLayerAwareExtender)
>
>     # Don't do schema extending unless our add-on product is installed on
> Plone site
>     layer = IThemeSpecific
>
>
>     fields = [
>         FolderOptionsFields("showtitleinsection",
>         write_permission = ManageUsers,
>         schemata='settings',
>         widget=BooleanWidget(label=" Lorem ipsum dolor sit amet"
>                description=" consectetur adipisicing elit, sed do eiusmod
> tempor incididunt ut labore et dolore magna aliqua"
>                 )),
>               ]
>
>
>     def __init__(self, context):
>         self.context = context
>
>     def getFields(self):
>         return self.fields
>
>
>
> overrides.zcml
> ----------------------------------------------------------
>
>   <include package="archetypes.schemaextender" />
>
>   <adapter factory=".archetype_extender.FolderExtender"
> provides="archetypes.schemaextender.interfaces.ISchemaExtender" />
>
>
>
> interfaces.py
> ------------------------------------------------------------
>
> from plone.theme.interfaces import IDefaultPloneLayer
> from plone.portlets.interfaces import IPortletManager
> from zope.viewlet.interfaces import IViewletManager
> from zope.interface import Interface
>
> class IThemeSpecific(IDefaultPloneLayer):
>     """Marker interface that defines a Zope 3 browser layer.
>        If you need to register a viewlet only for the
>        "University of Macerata theme" theme, this interface must be its
> layer
>        (in theme/viewlets/configure.zcml).
>     """
>
>
>
>
>
>
>
>
> _______________________________________________
> Plone-IT mailing list
> Plone-IT a lists.plone.org
> https://lists.plone.org/mailman/listinfo/plone-plone-it
> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>
>
> Mi sono accorto ti un piccolo refuso incollando il codice il file ora si
> chiama extender.py, l'ho rinominato da poco, e non più archetype_extender.py
> Diciamo che l'errore non è lì quindi ;)
>
> overrides.zcml
> ----------------------------------------------------------
>
>   <include package="archetypes.schemaextender" />
>
>   <adapter factory=".extender.FolderExtender"
> provides="archetypes.schemaextender.interfaces.ISchemaExtender" />
>
>
> _______________________________________________
> Plone-IT mailing list
> Plone-IT a lists.plone.org
> 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: luca.fabbri a redturtle.it
Web Site: http://www.redturtle.it/
Phone: +39 0532 1915958
Fax: +39 0532 287070


Maggiori informazioni sulla lista Plone-IT