show target and source info on work items that have been moved or delegated
This commit is contained in:
parent
e74d21bb7a
commit
fea68978f3
4 changed files with 43 additions and 6 deletions
|
@ -134,6 +134,7 @@
|
||||||
</div>
|
</div>
|
||||||
</metal:block>
|
</metal:block>
|
||||||
|
|
||||||
|
|
||||||
<metal:assignments define-macro="assignments"
|
<metal:assignments define-macro="assignments"
|
||||||
tal:condition="view/showAssignments">
|
tal:condition="view/showAssignments">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -24,11 +24,8 @@ $Id$
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from zope import interface, component
|
from zope import interface, component
|
||||||
from zope.app import zapi
|
|
||||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||||
from zope.cachedescriptors.property import Lazy
|
from zope.cachedescriptors.property import Lazy
|
||||||
#from zope.formlib.namedtemplate import NamedTemplate
|
|
||||||
from zope.i18nmessageid import MessageFactory
|
|
||||||
|
|
||||||
from cybertools.browser.action import actions
|
from cybertools.browser.action import actions
|
||||||
from cybertools.typology.interfaces import IType
|
from cybertools.typology.interfaces import IType
|
||||||
|
|
|
@ -31,7 +31,7 @@ from zope.cachedescriptors.property import Lazy
|
||||||
from zope.event import notify
|
from zope.event import notify
|
||||||
from zope.lifecycleevent import ObjectModifiedEvent
|
from zope.lifecycleevent import ObjectModifiedEvent
|
||||||
from zope.traversing.browser import absoluteURL
|
from zope.traversing.browser import absoluteURL
|
||||||
from zope.traversing.api import getName
|
from zope.traversing.api import getName, getParent
|
||||||
|
|
||||||
from cybertools.ajax import innerHtml
|
from cybertools.ajax import innerHtml
|
||||||
from cybertools.browser.action import actions
|
from cybertools.browser.action import actions
|
||||||
|
@ -116,6 +116,18 @@ class WorkItemDetails(TrackDetails):
|
||||||
if value is not None:
|
if value is not None:
|
||||||
return weekDays[value.weekday()].title()
|
return weekDays[value.weekday()].title()
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def sourceWorkItem(self):
|
||||||
|
sourceId = self.track.data.get('source')
|
||||||
|
if sourceId:
|
||||||
|
return getParent(self.track)[sourceId]
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def targetWorkItem(self):
|
||||||
|
targetId = self.track.data.get('target')
|
||||||
|
if targetId:
|
||||||
|
return getParent(self.track)[targetId]
|
||||||
|
|
||||||
def actions(self):
|
def actions(self):
|
||||||
info = DialogAction(self.view,
|
info = DialogAction(self.view,
|
||||||
description=_(u'Information about this work item.'),
|
description=_(u'Information about this work item.'),
|
||||||
|
|
|
@ -166,7 +166,8 @@
|
||||||
|
|
||||||
<metal:info define-macro="workitem_info"
|
<metal:info define-macro="workitem_info"
|
||||||
tal:define="item nocall:view/track">
|
tal:define="item nocall:view/track">
|
||||||
<table class="object_info" width="400">
|
<table class="object_info" width="400"
|
||||||
|
tal:define="state item/track/getStateObject">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><h2 i18n:translate="">Work Item Information</h2><br /></td>
|
<td colspan="2"><h2 i18n:translate="">Work Item Information</h2><br /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -201,7 +202,7 @@
|
||||||
<td valign="top"><span i18n:translate="">Comment</span>:</td>
|
<td valign="top"><span i18n:translate="">Comment</span>:</td>
|
||||||
<td tal:content="item/track/comment"></td>
|
<td tal:content="item/track/comment"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr tal:define="state item/track/getStateObject">
|
<tr>
|
||||||
<td><span i18n:translate="">State</span>:</td>
|
<td><span i18n:translate="">State</span>:</td>
|
||||||
<td i18n:translate=""
|
<td i18n:translate=""
|
||||||
tal:content="state/title"></td>
|
tal:content="state/title"></td>
|
||||||
|
@ -212,6 +213,32 @@
|
||||||
(<span tal:content="python:
|
(<span tal:content="python:
|
||||||
item.getUserForUserName(item.track.creator)['title']" />)</td>
|
item.getUserForUserName(item.track.creator)['title']" />)</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr tal:condition="python:state.name == 'delegated'">
|
||||||
|
<td><span i18n:translate="">Delegated to</span>:</td>
|
||||||
|
<td><a tal:define="party python:view.getObjectForUid(item.targetWorkItem.party)"
|
||||||
|
tal:attributes="href python:view.getUrlForTarget(party)"
|
||||||
|
tal:content="party/title" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr tal:condition="python:state.name == 'moved'">
|
||||||
|
<td><span i18n:translate="">Moved To</span>:</td>
|
||||||
|
<td><a tal:define="task python:view.getObjectForUid(item.targetWorkItem.taskId)"
|
||||||
|
tal:attributes="href python:view.getUrlForTarget(task)"
|
||||||
|
tal:content="task/title" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr tal:define="source item/sourceWorkItem;
|
||||||
|
isDelegated python:source and source.state == 'delegated'"
|
||||||
|
tal:condition="source">
|
||||||
|
<td>
|
||||||
|
<span tal:condition="isDelegated"
|
||||||
|
i18n:translate="">Delegated by</span>
|
||||||
|
<span tal:condition="not:isDelegated"
|
||||||
|
i18n:translate="">Moved From</span>:
|
||||||
|
</td>
|
||||||
|
<td><a tal:define="objId python:isDelegated and source.party or source.taskId;
|
||||||
|
obj python:view.getObjectForUid(objId)"
|
||||||
|
tal:attributes="href python:view.getUrlForTarget(obj)"
|
||||||
|
tal:content="obj/title" /></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><br />
|
<td colspan="2"><br />
|
||||||
<input type="button" value="Close" onclick="closeDialog()"
|
<input type="button" value="Close" onclick="closeDialog()"
|
||||||
|
|
Loading…
Add table
Reference in a new issue