Skip to content

Commit

Permalink
Add suppot for drafted content preview for Dexterity content when req…
Browse files Browse the repository at this point in the history
…uest is marked with IDisplayFormDrafting
  • Loading branch information
datakurre committed Sep 8, 2016
1 parent a059f39 commit 8f4dca6
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
34 changes: 34 additions & 0 deletions plone/app/drafts/dexterity.py
Expand Up @@ -8,6 +8,7 @@
from plone.app.drafts.lifecycle import syncDraftOnSave
from plone.app.drafts.proxy import DraftProxy
from plone.app.drafts.utils import getCurrentDraft
from plone.autoform.view import WidgetsView
from plone.dexterity.browser.add import DefaultAddForm
from plone.dexterity.browser.edit import DefaultEditForm
from plone.dexterity.interfaces import IDexterityContent
Expand Down Expand Up @@ -52,6 +53,10 @@ def isDraftable(fti):
])


class IDisplayFormDrafting(IFormLayer):
"""Marker interface for requests drafting on Dexterity display form"""


class IAddFormDrafting(IFormLayer):
"""Marker interface for requests drafting on Dexterity add form"""

Expand Down Expand Up @@ -139,6 +144,35 @@ def __init__(self, form, request, context):
super(DefaultEditFormGroupFieldWidgets, self).__init__(form, request, context) # noqa


@adapter(WidgetsView, IDisplayFormDrafting, IDexterityContent)
@implementer(IWidgets)
class DefaultDisplayFormFieldWidgets(FieldWidgetsBase):

def __init__(self, form, request, context):
print "DefaultDisplayFormFied..."
fti = queryUtility(IDexterityFTI, name=context.portal_type)
if isDraftable(fti):
current = ICurrentDraftManagement(request)

if current.targetKey is not None:
current.mark()

if current.draft:
context = DraftProxy(current.draft, context)

super(DefaultDisplayFormFieldWidgets, self).__init__(form, request, context) # noqa


@adapter(IGroup, IDisplayFormDrafting, Interface)
@implementer(IWidgets)
class DefaultDisplayFormGroupFieldWidgets(FieldWidgetsBase):

def __init__(self, form, request, context):
draft = getCurrentDraft(request)
context = DraftProxy(draft, context)
super(DefaultDisplayFormGroupFieldWidgets, self).__init__(form, request, context) # noqa


def autosave(event): # noqa
context = getattr(event, 'object', None)
request = getattr(context, 'REQUEST', getRequest())
Expand Down
2 changes: 2 additions & 0 deletions plone/app/drafts/dexterity.zcml
Expand Up @@ -6,6 +6,8 @@
<adapter factory=".dexterity.DefaultAddFormGroupFieldWidgets" />
<adapter factory=".dexterity.DefaultEditFormFieldWidgets" />
<adapter factory=".dexterity.DefaultEditFormGroupFieldWidgets" />
<adapter factory=".dexterity.DefaultDisplayFormFieldWidgets" />
<adapter factory=".dexterity.DefaultDisplayFormGroupFieldWidgets" />

<subscriber handler=".dexterity.capture" />
<subscriber handler=".dexterity.cancel" />
Expand Down

0 comments on commit 8f4dca6

Please sign in to comment.