Skip to content

Commit 02840c5

Browse files
committed
control panel
1 parent 1532af0 commit 02840c5

7 files changed

Lines changed: 46 additions & 39 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ classifiers = [
2525
dependencies = [
2626
"Products.CMFPlone",
2727
"plone.api",
28-
2928
"z3c.jbot",
29+
"collective.z3cform.datagridfield",
3030
]
3131

3232
[project.optional-dependencies]

src/cs_dynamicpages/controlpanels/dynamica_pages_control_panel/controlpanel.py

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,37 @@
77
from zope import schema
88
from zope.component import adapter
99
from zope.interface import Interface
10+
from collective.z3cform.datagridfield.datagridfield import DataGridFieldFactory
11+
from collective.z3cform.datagridfield.registry import DictRow
12+
from plone.autoform.directives import widget
13+
14+
class IRowTypeFieldsSchema(Interface):
15+
row_type = schema.Choice(
16+
title="Row type",
17+
required=True,
18+
vocabulary="cs_dynamicpages.RowType",
19+
)
20+
21+
each_row_type_fields = schema.List(
22+
title="Row type fields",
23+
required=True,
24+
value_type=schema.TextLine(),
25+
default=[],
26+
)
1027

1128

1229
class IDynamicaPagesControlPanel(Interface):
13-
myfield_name = schema.TextLine(
14-
title=_(
15-
"This is an example field for this control panel",
16-
),
17-
description=_(
18-
"",
19-
),
20-
default="",
21-
required=False,
22-
readonly=False,
30+
widget(row_type_fields=DataGridFieldFactory)
31+
row_type_fields = schema.List(
32+
title=u"Row Type Fields",
33+
required=True,
34+
value_type=DictRow(title=u"Row Type Fields", schema=IRowTypeFieldsSchema),
35+
default=[
36+
{
37+
"row_type": "cs_dynamicpages-featured-view",
38+
"each_row_type_fields": ["title", "description", "image", "link_text", "link_url"],
39+
}
40+
],
2341
)
2442

2543

src/cs_dynamicpages/profiles.zcml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,4 @@
2727
/>
2828

2929

30-
<include package=".upgrades" />
31-
3230
</configure>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<registry>
3+
<records interface="cs_dynamicpages.controlpanels.dynamica_pages_control_panel.controlpanel.IDynamicaPagesControlPanel" />
4+
</registry>

src/cs_dynamicpages/upgrades/__init__.py

Whitespace-only changes.

src/cs_dynamicpages/upgrades/configure.zcml

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/cs_dynamicpages/vocabularies/row_type.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from zope.schema.interfaces import IVocabularyFactory
88
from zope.schema.vocabulary import SimpleTerm
99
from zope.schema.vocabulary import SimpleVocabulary
10-
10+
from plone import api
1111

1212
class VocabItem:
1313
def __init__(self, token, value):
@@ -25,12 +25,19 @@ class RowType:
2525
def __call__(self, context):
2626
items = []
2727
terms = []
28-
if not IDexterityContent.providedBy(context):
29-
req = getRequest()
30-
context = req.PARENTS[0]
28+
elements = api.content.find(
29+
portal_type="DynamicPageRow",
30+
context=api.portal.get(),
31+
)
32+
if elements:
33+
query_context = elements[0].getObject()
34+
else:
35+
if not IDexterityContent.providedBy(context):
36+
req = getRequest()
37+
query_context = req.PARENTS[0]
3138
sm = getSiteManager()
3239
available_views = sm.adapters.lookupAll(
33-
required=(providedBy(context), providedBy(getRequest())),
40+
required=(providedBy(query_context), providedBy(getRequest())),
3441
provided=Interface,
3542
)
3643
available_view_names = [
@@ -39,6 +46,7 @@ def __call__(self, context):
3946
for view_name in available_view_names:
4047
items.append(VocabItem(view_name, view_name.replace(VIEW_PREFIX, "")))
4148
if not available_view_names:
49+
4250
items.append(VocabItem("cs_dynamicpages-featured-view", "Featured View"))
4351
for item in items:
4452
terms.append(

0 commit comments

Comments
 (0)