work in progress: view work items
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3098 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
a77166dfee
commit
94d38bbe2c
6 changed files with 79 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<metal:fields use-macro="item/template/macros/conceptfields" />
|
||||
<metal:fields use-macro="item/template/macros/conceptchildren" />
|
||||
<metal:fields use-macro="item/template/macros/conceptresources" />
|
||||
<metal:fields use-macro="view/work_macros/workitems" />
|
||||
<metal:fields use-macro="view/comment_macros/comments" />
|
||||
</div>
|
||||
</metal:data>
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -24,6 +24,12 @@
|
|||
|
||||
<!-- application views -->
|
||||
|
||||
<browser:page
|
||||
name="workitems.html"
|
||||
for="loops.interfaces.INode"
|
||||
class="loops.organize.work.browser.WorkItemsView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
name="create_workitem.html"
|
||||
for="loops.interfaces.INode"
|
||||
|
|
|
@ -2,6 +2,28 @@
|
|||
<!-- $Id$ -->
|
||||
|
||||
|
||||
<metal:work define-macro="workitems"
|
||||
tal:define="workItems nocall:view/workItems"
|
||||
tal:condition="workItems/allWorkItems">
|
||||
<br />
|
||||
<h2 i18n:translate="">Work Items</h2>
|
||||
<metal:workitems define-macro="workitems_listing"
|
||||
tal:define="workItems nocall:workItems|nocall:view/workItems;">
|
||||
<tal:workitem tal:repeat="workItem workItems/allWorkItems">
|
||||
<br />
|
||||
<div class="comment">
|
||||
<h3>
|
||||
<span tal:content="workItem/description">Subject</span></h3>
|
||||
<div class="info">
|
||||
<span tal:replace="workItem/user/title">John</span>,
|
||||
<span tal:replace="workItem/timeStamp">2007-03-30</span>
|
||||
</div>
|
||||
</div>
|
||||
</tal:workitem>
|
||||
</metal:workitems>
|
||||
</metal:work>
|
||||
|
||||
|
||||
<metal:block define-macro="create_workitem">
|
||||
<form method="post"
|
||||
id="addWorkitem_form" class="dialog"
|
||||
|
|
Loading…
Add table
Reference in a new issue