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 @@
- +
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