diff --git a/browser/common.py b/browser/common.py
index 4c78a7c..571df48 100644
--- a/browser/common.py
+++ b/browser/common.py
@@ -404,19 +404,16 @@ class BaseView(GenericView, I18NView):
@Lazy
def versionId(self):
- #versionable = IVersionable(self.context, None)
versionable = IVersionable(self.target, None)
return versionable and versionable.versionId or ''
@Lazy
def currentVersionId(self):
- #versionable = IVersionable(self.context, None)
versionable = IVersionable(self.target, None)
return versionable and versionable.currentVersion.versionId or ''
@Lazy
def hasVersions(self):
- #versionable = IVersionable(self.context, None)
versionable = IVersionable(self.target, None)
return versionable and len(versionable.versions) > 1 or False
@@ -424,8 +421,6 @@ class BaseView(GenericView, I18NView):
def versionInfo(self):
if not self.useVersioning:
return None
- #context = self.context
- #versionable = IVersionable(context, None)
target = self.target
versionable = IVersionable(target, None)
if versionable is None:
@@ -512,6 +507,11 @@ class BaseView(GenericView, I18NView):
inlineEditable = False
+ # work items
+ @Lazy
+ def workItems(self):
+ return []
+
# comments
@Lazy
diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt
index 2256416..eb4faf4 100644
--- a/browser/concept_macros.pt
+++ b/browser/concept_macros.pt
@@ -7,6 +7,7 @@
+
diff --git a/browser/node.py b/browser/node.py
index 139d942..bf4a542 100644
--- a/browser/node.py
+++ b/browser/node.py
@@ -482,8 +482,19 @@ class NodeView(BaseView):
self.recordAccess('external_edit')
return ExternalEditorView(target, self.request).load(url=url)
- # comments
+ # work items
+ @Lazy
+ def work_macros(self):
+ from loops.organize.work.browser import work_macros
+ return work_macros.macros
+
+ @Lazy
+ def workItems(self):
+ return component.getMultiAdapter((self.context, self.request),
+ name='workitems.html')
+
+ # comments
@Lazy
def comment_macros(self):
diff --git a/organize/work/browser.py b/organize/work/browser.py
index ae52d67..be92bb4 100644
--- a/organize/work/browser.py
+++ b/organize/work/browser.py
@@ -34,8 +34,10 @@ from cybertools.browser.action import actions
from cybertools.organize.interfaces import IWorkItems
from loops.browser.action import DialogAction
from loops.browser.form import ObjectForm, EditObject
+from loops.browser.node import NodeView
from loops.organize.party import getPersonForUser
from loops.organize.tracking.browser import BaseTrackView
+from loops.organize.tracking.report import TrackDetails
from loops import util
from loops.util import _
@@ -43,6 +45,37 @@ from loops.util import _
work_macros = ViewPageTemplateFile('work_macros.pt')
+class WorkItemsView(NodeView):
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ @Lazy
+ def workItems(self):
+ ts = self.loopsRoot.getRecordManager().get('work')
+ if ts is not None:
+ return IWorkItems(ts)
+
+ @Lazy
+ def allWorkItems(self):
+ result = []
+ target = self.virtualTargetObject
+ workItems = self.workItems
+ if None in (workItems, target):
+ return result
+ for wi in workItems.query(task=util.getUidForObject(target)):
+ result.append(WorkItemDetails(self, wi))
+ return result
+
+
+class WorkItemDetails(TrackDetails):
+
+ @Lazy
+ def description(self):
+ return self.track.description
+
+
class WorkItemView(BaseTrackView):
pass
diff --git a/organize/work/configure.zcml b/organize/work/configure.zcml
index 914b17d..e726057 100644
--- a/organize/work/configure.zcml
+++ b/organize/work/configure.zcml
@@ -24,6 +24,12 @@
+
+
+
+
+ Work Items
+
+
+
+
+
+
+
+
+
+ Subject
+