Felder sortieren mit archetypes.schemaextender
Ein kurze Anleitung, wie man mit dem archetypes.schemaextender Felder innerhalb eines schematas sortieren kann.
Möchte man die Felder nicht nur hinzufügen, sondern auch gleich das schema sortieren, dann bietet sich die Verwendung des IOrderableSchemaExtender statt des ISchemaExtender Interfaces an.
class MyExtender(object):
component.adapts(IATContentType)
interface.implements(IOrderableSchemaExtender)
fields = [
PortalsField("available_portals",
schemata="settings",
widget = InAndOutWidget(
label=u"Available portals",
description=u"Select one or more portals where this item will be available."
),
),]
def __init__(self, context):
self.context = context
def getFields(self):
return self.fields
def getOrder(self, order):
# get the settings schema
settings = order['settings']
# move available_portals on top
settings.remove('available_portals')
settings.insert(0, 'available_portals')
return order
Hier wird mit Hilfe der Methode getOrdner die neue Reihenfolge bestimmt. Mit order['settings'] wählen wir uns einen Tab (schemata) aus. In diesem können wir jetzt, mit remove/insert ein beliebiges Feld löschen und es an einer anderen Stelle wieder einfügen.
Es ist übrigens auch möglich einen ganzen Tab (schemata) zu verschieben.