- work items: provide move action for assigning a work item to
another task - show work items (if present) for arbitrary concepts git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@4196 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
7859555281
commit
080b3a79f5
11 changed files with 62 additions and 11 deletions
|
@ -6,6 +6,9 @@ $Id$
|
||||||
1.1
|
1.1
|
||||||
---
|
---
|
||||||
|
|
||||||
|
- work items: provide "move" action for assigning a work item to
|
||||||
|
another task
|
||||||
|
- show work items (if present) for arbitrary concepts
|
||||||
- portal page with - now fully editable - portal links
|
- portal page with - now fully editable - portal links
|
||||||
- calendar portlet
|
- calendar portlet
|
||||||
|
|
||||||
|
|
|
@ -452,6 +452,11 @@ class ConceptView(BaseView):
|
||||||
return False
|
return False
|
||||||
return super(ConceptView, self).checkAction(name, category, target)
|
return super(ConceptView, self).checkAction(name, category, target)
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def workItems(self):
|
||||||
|
return component.getMultiAdapter((self.context, self.request),
|
||||||
|
name='taskworkitems.html')
|
||||||
|
|
||||||
|
|
||||||
class ConceptRelationView(ConceptView, BaseRelationView):
|
class ConceptRelationView(ConceptView, BaseRelationView):
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
<metal:slot define-slot="resources">
|
<metal:slot define-slot="resources">
|
||||||
<metal:block use-macro="view/concept_macros/conceptresources" />
|
<metal:block use-macro="view/concept_macros/conceptresources" />
|
||||||
</metal:slot>
|
</metal:slot>
|
||||||
|
<metal:slot define-slot="workitems">
|
||||||
|
<metal:block use-macro="view/work_macros/workitems" />
|
||||||
|
</metal:slot>
|
||||||
<metal:slot define-slot="querydata" />
|
<metal:slot define-slot="querydata" />
|
||||||
<metal:block use-macro="view/comment_macros/comments" />
|
<metal:block use-macro="view/comment_macros/comments" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -34,6 +34,13 @@ function showIf(node, value, targetName) {
|
||||||
dojo.byId(targetName).style.display = display;
|
dojo.byId(targetName).style.display = display;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showIfIn(node, conditions) {
|
||||||
|
dojo.forEach(conditions, function(cond) {
|
||||||
|
var display = (node.value == cond[0]) ? 'inline' : 'none';
|
||||||
|
dojo.byId(cond[1]).style.display = display;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function destroyWidgets(node) {
|
function destroyWidgets(node) {
|
||||||
dojo.forEach(dojo.query('[widgetId]', node), function(n) {
|
dojo.forEach(dojo.query('[widgetId]', node), function(n) {
|
||||||
w = dijit.byNode(n);
|
w = dijit.byNode(n);
|
||||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgstr ""
|
||||||
|
|
||||||
"Project-Id-Version: $Id$\n"
|
"Project-Id-Version: $Id$\n"
|
||||||
"POT-Creation-Date: 2007-05-22 12:00 CET\n"
|
"POT-Creation-Date: 2007-05-22 12:00 CET\n"
|
||||||
"PO-Revision-Date: 2011-02-18 12:00 CET\n"
|
"PO-Revision-Date: 2011-03-07 12:00 CET\n"
|
||||||
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
|
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
|
||||||
"Language-Team: loops developers <helmutm@cy55.de>\n"
|
"Language-Team: loops developers <helmutm@cy55.de>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -676,6 +676,12 @@ msgstr "Informationen über diese Aktivität."
|
||||||
msgid "Edit work item."
|
msgid "Edit work item."
|
||||||
msgstr "Aktivität bearbeiten."
|
msgstr "Aktivität bearbeiten."
|
||||||
|
|
||||||
|
msgid "delegate_to_party"
|
||||||
|
msgstr "an"
|
||||||
|
|
||||||
|
msgid "move_to_task"
|
||||||
|
msgstr "nach"
|
||||||
|
|
||||||
msgid "new"
|
msgid "new"
|
||||||
msgstr "neu"
|
msgstr "neu"
|
||||||
|
|
||||||
|
@ -703,6 +709,9 @@ msgstr "abgeschlossen"
|
||||||
msgid "cancelled"
|
msgid "cancelled"
|
||||||
msgstr "abgebrochen"
|
msgstr "abgebrochen"
|
||||||
|
|
||||||
|
msgid "moved"
|
||||||
|
msgstr "verschoben"
|
||||||
|
|
||||||
msgid "replaced"
|
msgid "replaced"
|
||||||
msgstr "ersetzt"
|
msgstr "ersetzt"
|
||||||
|
|
||||||
|
@ -727,6 +736,9 @@ msgstr "abbrechen"
|
||||||
msgid "delegate"
|
msgid "delegate"
|
||||||
msgstr "delegieren"
|
msgstr "delegieren"
|
||||||
|
|
||||||
|
msgid "move"
|
||||||
|
msgstr "verschieben"
|
||||||
|
|
||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "abschließen"
|
msgstr "abschließen"
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<metal:task define-macro="task">
|
<metal:task define-macro="task">
|
||||||
<metal:data use-macro="view/concept_macros/conceptdata">
|
<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:data>
|
||||||
</metal:task>
|
</metal:task>
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,7 @@ only available for privileged users.
|
||||||
>>> form.actions
|
>>> form.actions
|
||||||
[{'name': 'plan', 'title': 'plan'}, {'name': 'accept', 'title': 'accept'},
|
[{'name': 'plan', 'title': 'plan'}, {'name': 'accept', 'title': 'accept'},
|
||||||
{'name': 'start', 'title': 'start working'}, {'name': 'work', 'title': 'work'},
|
{'name': 'start', 'title': 'start working'}, {'name': 'work', 'title': 'work'},
|
||||||
{'name': 'finish', 'title': 'finish'},
|
{'name': 'finish', 'title': 'finish'}, {'name': 'move', 'title': 'move'},
|
||||||
{'name': 'cancel', 'title': 'cancel'}, {'name': 'modify', 'title': 'modify'}]
|
{'name': 'cancel', 'title': 'cancel'}, {'name': 'modify', 'title': 'modify'}]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2011 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -217,7 +217,7 @@ class BaseWorkItemsView(object):
|
||||||
state = form.get('wi_state') or self.options.wi_state
|
state = form.get('wi_state') or self.options.wi_state
|
||||||
if not state:
|
if not state:
|
||||||
result['state'] = ['planned', 'accepted', 'running', 'done', 'done_x',
|
result['state'] = ['planned', 'accepted', 'running', 'done', 'done_x',
|
||||||
'finished', 'delegated',
|
'finished', 'delegated', 'moved',
|
||||||
'cancelled']
|
'cancelled']
|
||||||
elif state != 'all':
|
elif state != 'all':
|
||||||
result['state'] = state
|
result['state'] = state
|
||||||
|
@ -348,6 +348,17 @@ class CreateWorkItemForm(ObjectForm, BaseTrackView):
|
||||||
return [dict(name=util.getUidForObject(p), title=p.title)
|
return [dict(name=util.getUidForObject(p), title=p.title)
|
||||||
for p in persons]
|
for p in persons]
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def tasks(self):
|
||||||
|
tasks = []
|
||||||
|
tnames = ['task', 'event']
|
||||||
|
ttypes = [self.conceptManager.get(tname) for tname in tnames]
|
||||||
|
for ttype in ttypes:
|
||||||
|
if ttype is not None:
|
||||||
|
tasks.extend(ttype.getChildren([self.typePredicate]))
|
||||||
|
return [dict(name=util.getUidForObject(t), title=t.title)
|
||||||
|
for t in tasks]
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def duration(self):
|
def duration(self):
|
||||||
if self.state == 'running':
|
if self.state == 'running':
|
||||||
|
@ -411,6 +422,8 @@ class CreateWorkItem(EditObject, BaseTrackView):
|
||||||
setValue(k)
|
setValue(k)
|
||||||
if action == 'delegate':
|
if action == 'delegate':
|
||||||
setValue('party')
|
setValue('party')
|
||||||
|
if action == 'move':
|
||||||
|
setValue('task')
|
||||||
startDate = form.get('start_date', '').strip()
|
startDate = form.get('start_date', '').strip()
|
||||||
startTime = form.get('start_time', '').strip().replace('T', '') or '00:00:00'
|
startTime = form.get('start_time', '').strip().replace('T', '') or '00:00:00'
|
||||||
endTime = form.get('end_time', '').strip().replace('T', '') or '00:00:00'
|
endTime = form.get('end_time', '').strip().replace('T', '') or '00:00:00'
|
||||||
|
|
|
@ -90,14 +90,16 @@
|
||||||
<div>
|
<div>
|
||||||
<label i18n:translate="" for="action">Action</label>
|
<label i18n:translate="" for="action">Action</label>
|
||||||
<select name="workitem.action" id="action"
|
<select name="workitem.action" id="action"
|
||||||
onChange="showIf(this, 'delegate', 'party')">
|
xonChange="showIf(this, 'delegate', 'party')"
|
||||||
|
onChange="showIfIn(this, [['move', 'target_task'],
|
||||||
|
['delegate', 'target_party']])">
|
||||||
<option tal:repeat="action view/actions"
|
<option tal:repeat="action view/actions"
|
||||||
tal:attributes="value action/name"
|
tal:attributes="value action/name"
|
||||||
tal:content="action/title"
|
tal:content="action/title"
|
||||||
i18n:translate="" />
|
i18n:translate="" />
|
||||||
</select>
|
</select>
|
||||||
<span id="party" style="display: none">
|
<span id="target_party" style="display: none">
|
||||||
<label i18n:translate="" for="input_party"
|
<label i18n:translate="delegate_to_party" for="input_party"
|
||||||
style="display: inline">to</label>
|
style="display: inline">to</label>
|
||||||
<select name="party" id="input_party">
|
<select name="party" id="input_party">
|
||||||
<option tal:repeat="cand view/candidates"
|
<option tal:repeat="cand view/candidates"
|
||||||
|
@ -105,6 +107,15 @@
|
||||||
tal:content="cand/title" />
|
tal:content="cand/title" />
|
||||||
</select>
|
</select>
|
||||||
</span>
|
</span>
|
||||||
|
<span id="target_task" style="display: none">
|
||||||
|
<label i18n:translate="move_to_task" for="input_task"
|
||||||
|
style="display: inline">to</label>
|
||||||
|
<select name="task" id="input_task">
|
||||||
|
<option tal:repeat="cand view/tasks"
|
||||||
|
tal:attributes="value cand/name"
|
||||||
|
tal:content="cand/title" />
|
||||||
|
</select>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label i18n:translate="" for="start-end">Start - End</label>
|
<label i18n:translate="" for="start-end">Start - End</label>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2011 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
Loading…
Add table
Reference in a new issue