work in progress: work items listing
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3104 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
ae108065de
commit
60c7d22e61
7 changed files with 63 additions and 25 deletions
|
@ -69,6 +69,10 @@ table.listing td.center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.listing td.nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
table.listing td.checkbox {
|
table.listing td.checkbox {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 10px;
|
width: 10px;
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
set_schema="loops.organize.tracking.access.IAccessRecord" />
|
set_schema="loops.organize.tracking.access.IAccessRecord" />
|
||||||
</zope:class>
|
</zope:class>
|
||||||
|
|
||||||
|
<zope:subscriber handler="cybertools.tracking.btree.unindexTrack" />
|
||||||
|
|
||||||
<zope:subscriber handler="loops.organize.tracking.change.recordModification" />
|
<zope:subscriber handler="loops.organize.tracking.change.recordModification" />
|
||||||
<zope:subscriber handler="loops.organize.tracking.change.recordAdding" />
|
<zope:subscriber handler="loops.organize.tracking.change.recordAdding" />
|
||||||
<zope:subscriber handler="loops.organize.tracking.change.recordAssignment" />
|
<zope:subscriber handler="loops.organize.tracking.change.recordAssignment" />
|
||||||
|
|
|
@ -242,7 +242,15 @@ class TrackDetails(BaseView):
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def timeStamp(self):
|
def timeStamp(self):
|
||||||
value = datetime.fromtimestamp(self.track.timeStamp)
|
return self.formatTimeStamp(self.track.timeStamp)
|
||||||
|
#value = datetime.fromtimestamp(self.track.timeStamp)
|
||||||
|
#return format.formatDate(value, 'dateTime', self.timeStampFormat,
|
||||||
|
# self.view.languageInfo.language)
|
||||||
|
|
||||||
|
def formatTimeStamp(self, ts):
|
||||||
|
if not ts:
|
||||||
|
return u''
|
||||||
|
value = datetime.fromtimestamp(ts)
|
||||||
return format.formatDate(value, 'dateTime', self.timeStampFormat,
|
return format.formatDate(value, 'dateTime', self.timeStampFormat,
|
||||||
self.view.languageInfo.language)
|
self.view.languageInfo.language)
|
||||||
|
|
||||||
|
|
|
@ -87,8 +87,8 @@ by calling the form controller's update method
|
||||||
>>> request.setPrincipal(pJohn)
|
>>> request.setPrincipal(pJohn)
|
||||||
|
|
||||||
>>> from loops.browser.node import NodeView
|
>>> from loops.browser.node import NodeView
|
||||||
>>> view = NodeView(home, request)
|
>>> nodeView = NodeView(home, request)
|
||||||
>>> cwiController = CreateWorkItem(view, request)
|
>>> cwiController = CreateWorkItem(nodeView, request)
|
||||||
|
|
||||||
>>> cwiController.update()
|
>>> cwiController.update()
|
||||||
False
|
False
|
||||||
|
@ -105,6 +105,11 @@ by calling the form controller's update method
|
||||||
>>> view.taskUrl
|
>>> view.taskUrl
|
||||||
'http://127.0.0.1/loops/concepts/loops_dev/@@SelectedManagementView.html'
|
'http://127.0.0.1/loops/concepts/loops_dev/@@SelectedManagementView.html'
|
||||||
|
|
||||||
|
>>> from loops.organize.work.browser import WorkItemDetails
|
||||||
|
>>> view = WorkItemDetails(nodeView, wi01)
|
||||||
|
>>> view.start, view.end
|
||||||
|
(u'08/12/28 19:00', u'20:15')
|
||||||
|
|
||||||
|
|
||||||
Fin de partie
|
Fin de partie
|
||||||
=============
|
=============
|
||||||
|
|
|
@ -75,6 +75,14 @@ class WorkItemDetails(TrackDetails):
|
||||||
def description(self):
|
def description(self):
|
||||||
return self.track.description
|
return self.track.description
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def start(self):
|
||||||
|
return self.formatTimeStamp(self.track.start)
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def end(self):
|
||||||
|
return self.formatTimeStamp(self.track.end)[-5:]
|
||||||
|
|
||||||
|
|
||||||
class WorkItemView(BaseTrackView):
|
class WorkItemView(BaseTrackView):
|
||||||
|
|
||||||
|
@ -121,7 +129,7 @@ class CreateWorkItem(EditObject, BaseTrackView):
|
||||||
v = form.get(k)
|
v = form.get(k)
|
||||||
if v:
|
if v:
|
||||||
result[k] = v
|
result[k] = v
|
||||||
for k in ('description', 'comment'):
|
for k in ('title', 'description', 'comment'):
|
||||||
setValue(k)
|
setValue(k)
|
||||||
startDate = form.get('start_date')
|
startDate = form.get('start_date')
|
||||||
startTime = form.get('start_time')
|
startTime = form.get('start_time')
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
<zope:class class="loops.organize.work.base.WorkItem">
|
<zope:class class="loops.organize.work.base.WorkItem">
|
||||||
<require permission="zope.View"
|
<require permission="zope.View"
|
||||||
interface="cybertools.organize.work.IWorkItem" />
|
interface="cybertools.organize.work.IWorkItem" />
|
||||||
<require permission="zope.View"
|
|
||||||
attributes="getName" />
|
|
||||||
<require permission="zope.ManageContent"
|
<require permission="zope.ManageContent"
|
||||||
set_schema="cybertools.organize.work.IWorkItem" />
|
set_schema="cybertools.organize.work.IWorkItem" />
|
||||||
</zope:class>
|
</zope:class>
|
||||||
|
|
|
@ -9,39 +9,53 @@
|
||||||
<h2 i18n:translate="">Work Items</h2>
|
<h2 i18n:translate="">Work Items</h2>
|
||||||
<metal:workitems define-macro="workitems_listing"
|
<metal:workitems define-macro="workitems_listing"
|
||||||
tal:define="workItems nocall:workItems|nocall:view/workItems;">
|
tal:define="workItems nocall:workItems|nocall:view/workItems;">
|
||||||
<tal:workitem tal:repeat="workItem workItems/allWorkItems">
|
<table class="listing">
|
||||||
<br />
|
<tr>
|
||||||
<div class="comment">
|
<th i18n:translate="">Title</th>
|
||||||
<h3>
|
<th i18n:translate="">User</th>
|
||||||
<span tal:content="workItem/description">Subject</span></h3>
|
<th i18n:translate="">Start</th>
|
||||||
<div class="info">
|
<th i18n:translate="">End</th>
|
||||||
<span tal:replace="workItem/user/title">John</span>,
|
</tr>
|
||||||
<span tal:replace="workItem/timeStamp">2007-03-30</span>
|
<tal:workitem tal:repeat="workItem workItems/allWorkItems">
|
||||||
</div>
|
<tr tal:attributes="class python:
|
||||||
</div>
|
repeat['workItem'].odd() and 'even' or 'odd'">
|
||||||
</tal:workitem>
|
<td>
|
||||||
|
<span tal:content="workItem/track/title">Title</span></td>
|
||||||
|
<td>
|
||||||
|
<span tal:replace="workItem/user/title">John</span></td>
|
||||||
|
<td class="nowrap">
|
||||||
|
<span tal:replace="workItem/start">2007-03-30</span></td>
|
||||||
|
<td class="nowrap">
|
||||||
|
<span tal:replace="workItem/end">2007-03-30</span></td>
|
||||||
|
</tr>
|
||||||
|
</tal:workitem>
|
||||||
|
</table>
|
||||||
</metal:workitems>
|
</metal:workitems>
|
||||||
</metal:work>
|
</metal:work>
|
||||||
|
|
||||||
|
|
||||||
<metal:block define-macro="create_workitem">
|
<metal:block define-macro="create_workitem">
|
||||||
<form method="post"
|
<form method="post" id="addWorkitem_form" class="dialog"
|
||||||
id="addWorkitem_form" class="dialog"
|
|
||||||
dojoType="dijit.form.Form">
|
dojoType="dijit.form.Form">
|
||||||
<input type="hidden" name="form.action" value="create_workitem" />
|
<input type="hidden" name="form.action" value="create_workitem" />
|
||||||
<input type="hidden" name="workitem.action" value="finish" />
|
<input type="hidden" name="workitem.action" value="finish" />
|
||||||
<div class="heading" i18n:translate="">Add Work Item</div>
|
<div class="heading" i18n:translate="">Add Work Item</div>
|
||||||
<div>
|
<div>
|
||||||
<label i18n:translate=""
|
<label i18n:translate="" for="title">Title</label>
|
||||||
for="description">Description</label>
|
<div>
|
||||||
|
<input name="title" id="title"
|
||||||
|
dojoType="dijit.form.ValidationTextBox" required
|
||||||
|
style="width: 60em" /></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label i18n:translate="" for="description">Description</label>
|
||||||
<div>
|
<div>
|
||||||
<textarea name="description" cols="80" rows="4" id="description"
|
<textarea name="description" cols="80" rows="4" id="description"
|
||||||
dojoType="dijit.form.SimpleTextarea"
|
dojoType="dijit.form.SimpleTextarea"
|
||||||
style="width: 60em"></textarea></div>
|
style="width: 60em"></textarea></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label i18n:translate=""
|
<label i18n:translate="" for="start-end">Start - End</label>
|
||||||
for="start-end">Start - End</label>
|
|
||||||
<div id="start-end">
|
<div id="start-end">
|
||||||
<input type="text" name="start_date" style="width: 8em"
|
<input type="text" name="start_date" style="width: 8em"
|
||||||
dojoType="dijit.form.DateTextBox"
|
dojoType="dijit.form.DateTextBox"
|
||||||
|
@ -63,8 +77,7 @@
|
||||||
regexp="[0-9]{1,2}(:[0-5][0-9]){0,1}" /></div>
|
regexp="[0-9]{1,2}(:[0-5][0-9]){0,1}" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label i18n:translate=""
|
<label i18n:translate="" for="comment">Comment</label>
|
||||||
for="comment">Comment</label>
|
|
||||||
<div>
|
<div>
|
||||||
<textarea name="comment" cols="80" rows="4" id="comment"
|
<textarea name="comment" cols="80" rows="4" id="comment"
|
||||||
dojoType="dijit.form.SimpleTextarea"
|
dojoType="dijit.form.SimpleTextarea"
|
||||||
|
|
Loading…
Add table
Reference in a new issue