Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs Plone: OrderableSchemaExtender mit überschriebenem Mutator

Plone: OrderableSchemaExtender mit überschriebenem Mutator

Manchmal benötigt man zusätzliche Felder bei Archetypes basierten Inhalten, wie den Plone default Inhalten Seite, Nachricht usw. Dies läßt sich mit dem archetypes.schemaextender realisieren. Nachfolgend ein Beispiel für ein neues Feld welches mittels IOrderableSchemaExtender eingebaut wird. Weiterhin wird der Mutator des Feldes überschrieben um die Daten nachzuverarbeiten.

Zusätzliches Feld

Ein zusätzliches Feld mit überschriebener set-Methode (Mutator), welche den Eingabewert mit einem String erweitert und ihn dann speichert.

class MyField(ExtensionField, StringField):
"""A trivial field."""
def set(self, instance, value, **kwargs):
value = "Plone:" + value
self.getStorage(instance).set(self.getName(),
instance, value, **kwargs)

OrderableSchemaExtender

class MyExtender(object):
    component.adapts(IATContentType)
    interface.implements(IOrderableSchemaExtender)

def get_first_schemata(self): ### SELECT SCHEMATA FOR CONTENT TYPE if self.context.portal_type in self.nonstdtypes: scheme = 'Overview' else: scheme = 'default' return scheme
def getFields(self): ### SET FIELD cfields = [ PortalsField( "my_new_field", schemata = self.get_first_schemata(), widget = StringWidget( description = _( u"descr_destselector_my_new_field",
u"put in your string", ), label = _( u"label_destselector_my_new_field",
u"My new field",
), visible = { 'edit': 'visible', 'view': 'invisible', }, ), ), ] ### return cfields

def getOrder(self, order): ### GET SCHEMA FROM order cschema = order[self.get_first_schemata()] # MOVE my_niew_field TO BOTTOM cschema.remove('my_new_field') cschema.insert(len(cschema), 'my_new_field') return order