diff --git a/CHANGES.txt b/CHANGES.txt
index e84ca84..7b037f4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,9 @@ $Id$
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
- calendar portlet
diff --git a/browser/concept.py b/browser/concept.py
index 3f327ba..1b933f1 100644
--- a/browser/concept.py
+++ b/browser/concept.py
@@ -452,6 +452,11 @@ class ConceptView(BaseView):
return False
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):
diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt
index 23e5db4..aec459f 100644
--- a/browser/concept_macros.pt
+++ b/browser/concept_macros.pt
@@ -13,6 +13,9 @@
+
+
+
diff --git a/browser/loops.js b/browser/loops.js
index 6070e92..7221b16 100644
--- a/browser/loops.js
+++ b/browser/loops.js
@@ -34,6 +34,13 @@ function showIf(node, value, targetName) {
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) {
dojo.forEach(dojo.query('[widgetId]', node), function(n) {
w = dijit.byNode(n);
diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo
index 6800bf3..91529e9 100644
Binary files a/locales/de/LC_MESSAGES/loops.mo and b/locales/de/LC_MESSAGES/loops.mo differ
diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po
index 2832082..ccdf831 100644
--- a/locales/de/LC_MESSAGES/loops.po
+++ b/locales/de/LC_MESSAGES/loops.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: $Id$\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 \n"
"Language-Team: loops developers \n"
"MIME-Version: 1.0\n"
@@ -676,6 +676,12 @@ msgstr "Informationen über diese Aktivität."
msgid "Edit work item."
msgstr "Aktivität bearbeiten."
+msgid "delegate_to_party"
+msgstr "an"
+
+msgid "move_to_task"
+msgstr "nach"
+
msgid "new"
msgstr "neu"
@@ -703,6 +709,9 @@ msgstr "abgeschlossen"
msgid "cancelled"
msgstr "abgebrochen"
+msgid "moved"
+msgstr "verschoben"
+
msgid "replaced"
msgstr "ersetzt"
@@ -727,6 +736,9 @@ msgstr "abbrechen"
msgid "delegate"
msgstr "delegieren"
+msgid "move"
+msgstr "verschieben"
+
msgid "close"
msgstr "abschließen"
diff --git a/organize/browser/view_macros.pt b/organize/browser/view_macros.pt
index 1345d05..51f5434 100644
--- a/organize/browser/view_macros.pt
+++ b/organize/browser/view_macros.pt
@@ -3,9 +3,6 @@
-
-
-
diff --git a/organize/work/README.txt b/organize/work/README.txt
index 2189e25..ea70153 100644
--- a/organize/work/README.txt
+++ b/organize/work/README.txt
@@ -142,7 +142,7 @@ only available for privileged users.
>>> form.actions
[{'name': 'plan', 'title': 'plan'}, {'name': 'accept', 'title': 'accept'},
{'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'}]
diff --git a/organize/work/browser.py b/organize/work/browser.py
index 796a79e..ee9affe 100644
--- a/organize/work/browser.py
+++ b/organize/work/browser.py
@@ -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
# 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
if not state:
result['state'] = ['planned', 'accepted', 'running', 'done', 'done_x',
- 'finished', 'delegated',
+ 'finished', 'delegated', 'moved',
'cancelled']
elif state != 'all':
result['state'] = state
@@ -348,6 +348,17 @@ class CreateWorkItemForm(ObjectForm, BaseTrackView):
return [dict(name=util.getUidForObject(p), title=p.title)
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
def duration(self):
if self.state == 'running':
@@ -411,6 +422,8 @@ class CreateWorkItem(EditObject, BaseTrackView):
setValue(k)
if action == 'delegate':
setValue('party')
+ if action == 'move':
+ setValue('task')
startDate = form.get('start_date', '').strip()
startTime = form.get('start_time', '').strip().replace('T', '') or '00:00:00'
endTime = form.get('end_time', '').strip().replace('T', '') or '00:00:00'
diff --git a/organize/work/work_macros.pt b/organize/work/work_macros.pt
index 7da50ed..2bb6f63 100644
--- a/organize/work/work_macros.pt
+++ b/organize/work/work_macros.pt
@@ -90,14 +90,16 @@
-
-
+
+ to
+
+
Start - End
diff --git a/version.py b/version.py
index c201bea..ce66773 100644
--- a/version.py
+++ b/version.py
@@ -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
# it under the terms of the GNU General Public License as published by