Use TaskView for providing task work items listing
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3200 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
46b8b0b7eb
commit
6f8e716923
7 changed files with 55 additions and 31 deletions
|
@ -3,14 +3,18 @@
|
|||
|
||||
<metal:data define-macro="conceptdata">
|
||||
<div tal:attributes="class string:content-$level;">
|
||||
<metal:block use-macro="view/concept_macros/concepttitle" />
|
||||
<metal:slot define-slot="fields">
|
||||
<metal:block use-macro="view/concept_macros/conceptfields" />
|
||||
</metal:slot>
|
||||
<metal:block use-macro="view/concept_macros/conceptchildren" />
|
||||
<metal:block use-macro="view/concept_macros/conceptresources" />
|
||||
<metal:block use-macro="view/work_macros/workitems" />
|
||||
<metal:block use-macro="view/comment_macros/comments" />
|
||||
<metal:block use-macro="view/concept_macros/concepttitle" />
|
||||
<metal:slot define-slot="fields">
|
||||
<metal:block use-macro="view/concept_macros/conceptfields" />
|
||||
</metal:slot>
|
||||
<metal:slot define-slot="children">
|
||||
<metal:block use-macro="view/concept_macros/conceptchildren" />
|
||||
</metal:slot>
|
||||
<metal:slot define-slot="resources">
|
||||
<metal:block use-macro="view/concept_macros/conceptresources" />
|
||||
</metal:slot>
|
||||
<metal:slot define-slot="querydata" />
|
||||
<metal:block use-macro="view/comment_macros/comments" />
|
||||
</div>
|
||||
</metal:data>
|
||||
|
||||
|
@ -209,8 +213,9 @@
|
|||
<metal:actions define-macro="parents">
|
||||
<div tal:repeat="concept macro/info/view/parents|macro/info/parents">
|
||||
<a href="#"
|
||||
tal:attributes="href string:${view/url}/.target${concept/uniqueId}">
|
||||
<span i18n:translate="" tal:content="concept/title">Concept</span>
|
||||
tal:attributes="href python: view.getUrlForTarget(concept)">
|
||||
<span i18n:translate=""
|
||||
tal:content="concept/title">Concept</span>
|
||||
(<i tal:content="concept/typeTitle"
|
||||
i18n:translate="">Type</i>)
|
||||
</a>
|
||||
|
|
|
@ -398,6 +398,13 @@ div.comment {
|
|||
padding-top: 0.4em;
|
||||
}
|
||||
|
||||
/* calendar, work items */
|
||||
|
||||
.today {
|
||||
color: #444488;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* dojo stuff */
|
||||
|
||||
.dijitDialog {
|
||||
|
|
|
@ -501,13 +501,6 @@ class NodeView(BaseView):
|
|||
from loops.organize.work.browser import work_macros
|
||||
return work_macros.macros
|
||||
|
||||
@Lazy
|
||||
def workItems(self):
|
||||
target = self.virtualTargetObject
|
||||
if target is not None:
|
||||
return component.getMultiAdapter((target, self.request),
|
||||
name='taskworkitems.html')
|
||||
|
||||
# comments
|
||||
|
||||
@Lazy
|
||||
|
|
|
@ -46,5 +46,12 @@ organize_macros = ViewPageTemplateFile('view_macros.pt')
|
|||
|
||||
class TaskView(ConceptView):
|
||||
|
||||
pass
|
||||
@Lazy
|
||||
def macro(self):
|
||||
return organize_macros.macros['task']
|
||||
|
||||
@Lazy
|
||||
def workItems(self):
|
||||
return component.getMultiAdapter((self.context, self.request),
|
||||
name='taskworkitems.html')
|
||||
|
||||
|
|
|
@ -1,6 +1,15 @@
|
|||
<!-- $Id$ -->
|
||||
|
||||
|
||||
<metal:task define-macro="task">
|
||||
<metal:data use-macro="view/concept_macros/conceptdata">
|
||||
<metal:fill fill-slot="querydata">
|
||||
<metal:workitems use-macro="view/work_macros/workitems" />
|
||||
</metal:fill>
|
||||
</metal:data>
|
||||
</metal:task>
|
||||
|
||||
|
||||
<metal:data define-macro="conceptdata">
|
||||
<tal:person condition="item/person">
|
||||
<metal:block use-macro="view/concept_macros/conceptdata">
|
||||
|
|
|
@ -201,12 +201,9 @@ class BaseWorkItemsView(object):
|
|||
state = form.get('wi_state') or self.options.wi_state
|
||||
if not state:
|
||||
result['state'] = ['planned', 'accepted', 'running', 'done', 'done_x',
|
||||
'finished', 'delegated']
|
||||
else:
|
||||
if state == 'all':
|
||||
del result['state']
|
||||
else:
|
||||
result['state'] = state
|
||||
'finished', 'delegated']
|
||||
elif state != 'all':
|
||||
result['state'] = state
|
||||
return result
|
||||
|
||||
def query(self, **criteria):
|
||||
|
@ -222,9 +219,14 @@ class TaskWorkItems(BaseWorkItemsView, ConceptView):
|
|||
|
||||
columns = set(['User', 'Title', 'Day', 'Start', 'End', 'Duration', 'Info'])
|
||||
|
||||
@Lazy
|
||||
def target(self):
|
||||
return self.context
|
||||
|
||||
def listWorkItems(self):
|
||||
criteria = self.baseCriteria
|
||||
criteria['task'] = util.getUidForObject(self.context)
|
||||
criteria['task'] = util.getUidForObject(self.target)
|
||||
# TODO: option: include subtasks
|
||||
return sorted(self.query(**criteria), key=lambda x: x.track.timeStamp)
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<!-- listings -->
|
||||
|
||||
<metal:work define-macro="workitems"
|
||||
tal:define="work nocall:view/workItems"
|
||||
tal:define="work nocall:item/workItems"
|
||||
tal:condition="work/listWorkItems|nothing">
|
||||
<br />
|
||||
<h2 i18n:translate="">Work Items</h2>
|
||||
|
@ -25,12 +25,13 @@
|
|||
tal:attributes="colspan python: len(work.columns)"
|
||||
tal:content="row/month">2009-01</td></tr>
|
||||
<tr tal:attributes="class python:
|
||||
repeat['row'].odd() and 'even' or 'odd'">
|
||||
(repeat['row'].odd() and 'even' or 'odd')">
|
||||
<td class="nowrap center"
|
||||
tal:attributes="title row/weekDay"
|
||||
i18n:attributes="title">
|
||||
<b tal:omit-tag="not:row/isToday"
|
||||
tal:content="row/day">2007-03-30</b></td>
|
||||
tal:define="today python: row.isToday and ' today' or ''"
|
||||
tal:attributes="title row/weekDay;
|
||||
class string:nowrap center$today"
|
||||
i18n:attributes="title"
|
||||
tal:content="row/day">2007-03-30</td>
|
||||
<td class="nowrap center" tal:content="row/start">17:30</td>
|
||||
<td class="nowrap center" tal:content="row/end">20:00</td>
|
||||
<td class="nowrap center" tal:content="row/duration">2:30</td>
|
||||
|
|
Loading…
Add table
Reference in a new issue