diff --git a/compound/book/view_macros.pt b/compound/book/view_macros.pt
index 350e946..43be71b 100644
--- a/compound/book/view_macros.pt
+++ b/compound/book/view_macros.pt
@@ -7,8 +7,10 @@
tal:attributes="class string:content-$level">
+ tal:content="related/title" />
+
+
@@ -91,6 +93,7 @@
+
diff --git a/organize/stateful/browser.py b/organize/stateful/browser.py
index 713d552..1265b45 100644
--- a/organize/stateful/browser.py
+++ b/organize/stateful/browser.py
@@ -23,7 +23,9 @@ Views and actions for states management.
from zope import component
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy
+from zope.event import notify
from zope.i18n import translate
+from zope.lifecycleevent import ObjectModifiedEvent, Attributes
from cybertools.browser.action import Action, actions
from cybertools.composer.schema.field import Field
@@ -138,8 +140,7 @@ class ChangeStateForm(ObjectForm, ChangeStateBase):
@Lazy
def schema(self):
- # TODO: create schema directly, use field information specified
- # in transition
+ # TODO: use field information specified in transition
commentsField = Field('comments', _(u'label_transition_comments'),
'textarea',
description=_(u'desc_transition_comments'))
@@ -151,8 +152,10 @@ class ChangeStateForm(ObjectForm, ChangeStateBase):
class ChangeState(EditObject, ChangeStateBase):
def update(self):
- print '***', self.request.form
+ comments = self.request.form.get('comments') or u''
self.stateful.doTransition(self.action)
+ notify(ObjectModifiedEvent(self.view.virtualTargetObject,
+ dict(transition=self.action, comments=comments)))
return True
diff --git a/organize/stateful/view_macros.pt b/organize/stateful/view_macros.pt
index 6a4286d..9aa02a8 100644
--- a/organize/stateful/view_macros.pt
+++ b/organize/stateful/view_macros.pt
@@ -112,7 +112,8 @@
State:
-
+ tal:define="stateObject view/stateful/getStateObject"
+ tal:content="stateObject/title" /> -
Transition:
diff --git a/organize/tracking/change.py b/organize/tracking/change.py
index b3e3057..d9e8bbd 100644
--- a/organize/tracking/change.py
+++ b/organize/tracking/change.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
+# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
"""
Recording changes to loops objects.
-
-$Id$
"""
from zope.app.container.interfaces import IObjectAddedEvent, IObjectRemovedEvent
@@ -53,6 +51,9 @@ class ChangeManager(BaseRecordManager):
@Lazy
def valid(self):
+ req = util.getRequest()
+ if req and req.form.get('organize.suppress_tracking'):
+ return False
return (not (self.context is None or
self.storage is None or
self.personId is None)
@@ -70,6 +71,12 @@ class ChangeManager(BaseRecordManager):
if relation is not None:
data['predicate'] = util.getUidForObject(relation.predicate)
data['second'] = util.getUidForObject(relation.second)
+ event = kw.get('event')
+ if event is not None:
+ desc = getattr(event, 'descriptions', ())
+ for item in desc:
+ if isinstance(item, dict):
+ data.update(item)
if update:
self.storage.updateTrack(last, data)
else:
@@ -90,16 +97,18 @@ class ChangeRecord(Track):
@adapter(ILoopsObject, IObjectModifiedEvent)
def recordModification(obj, event):
- ChangeManager(obj).recordModification()
+ ChangeManager(obj).recordModification(event=event)
@adapter(ILoopsObject, IObjectAddedEvent)
def recordAdding(obj, event):
- ChangeManager(obj).recordModification('add')
+ ChangeManager(obj).recordModification('add', event=event)
@adapter(ILoopsObject, IAssignmentEvent)
def recordAssignment(obj, event):
- ChangeManager(obj).recordModification('assign', relation=event.relation)
+ ChangeManager(obj).recordModification('assign',
+ event=event, relation=event.relation)
@adapter(ILoopsObject, IDeassignmentEvent)
def recordDeassignment(obj, event):
- ChangeManager(obj).recordModification('deassign', relation=event.relation)
+ ChangeManager(obj).recordModification('deassign',
+ event=event, relation=event.relation)