поле данных не видно в редакторе типов контента через ловкость - PullRequest
0 голосов
/ 11 января 2012

Я добавил collective.z3cform.datagridfield в свою сборку, она видится активной в настройках моего сайта; однако я не могу добавить поле типа datagridfield через веб-редактор для типа содержимого ловкости. Чего мне не хватает?

1 Ответ

2 голосов
/ 19 января 2012

Расширение ответа vangheem: вы можете обеспечить поддержку коллективно.z3cform.datagridfield, предоставив фабрику полей, но это будет взлом.

Причина в том, что collective.z3cform.datagridfield.row.DictRow ожидает схему, определяющую строки таблицы. Это становится подчиненной формой после визуализации. В этом случае у редактора схемы потребуется запросить информацию в зависимости от типа поля и для (таблицы) схемы.

В зависимости от того, какое решение вы используете, вы можете обойтись без реализации фабрики полей с фиксированной схемой таблицы , например:

from five import grok
from zope import schema
import collective.z3cform.datagridfield.row
import plone.schemaeditor.interfaces
import zope.interface

# example from http://pypi.python.org/pypi/collective.z3cform.datagridfield
class ITableRowSchema(zope.interface.Interface): 
    one = schema.TextLine(title=u"One")
    two = schema.TextLine(title=u"Two")
    three = schema.TextLine(title=u"Three")

# new field factory for the zope.schema.interfaces.IObject
class DataGridFieldFactory(grok.GlobalUtility):
    grok.provides(plone.schemaeditor.interfaces.IFieldFactory)
    # this will show up in the schema editor vocabulary
    title = "DataGridField"

    def __call__(self, *args, **kwargs):
        # that's the horrid part as it will nail your field to this
        # specific schema
        kw = dict(value_type=collective.z3cform.datagridfield.row.DictRow(
            schema=ITableRowSchema))
        kwargs.update(kw)
        return zope.schema.List(*args, **kwargs)

Пожалуйста, загляните в: plone.schemaeditor.fields.py для получения дополнительной информации о полевой фабрике.

Это даст вам основную сетку данных для вашего типа контента. Чего не хватает, так это виджета, который в настоящее время нельзя объявить AFAIK.

...