diff --git a/browser/form.py b/browser/form.py index c20723f..8fcda99 100644 --- a/browser/form.py +++ b/browser/form.py @@ -45,6 +45,7 @@ from cybertools.composer.schema.grid.field import grid_macros from cybertools.composer.schema.interfaces import ISchemaFactory from cybertools.composer.schema.browser.common import schema_macros, schema_edit_macros from cybertools.composer.schema.schema import FormState +from cybertools.meta.interfaces import IOptions from cybertools.stateful.interfaces import IStateful from cybertools.typology.interfaces import IType, ITypeManager from cybertools.util.format import toUnicode @@ -727,6 +728,13 @@ class EditConcept(EditObject): return obj.getParentRelations(predicates=predicates, parent=concept) def assignConcept(self, obj, concept, predicate): + if IOptions(adapted(concept.conceptType)).children_append: + sibRelations = concept.getChildRelations() + if sibRelations: + maxOrder = max([r.order for r in sibRelations]) + if maxOrder > 0: + return obj.assignParent(concept, predicate, + order=maxOrder+1) obj.assignParent(concept, predicate) def deassignConcept(self, obj, concept, predicates): diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 4e48081..25e408f 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 7548da0..4336297 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: 2012-07-26 12:00 CET\n" +"PO-Revision-Date: 2012-08-09 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -275,6 +275,12 @@ msgstr "Eine neues Projekt anlegen." msgid "Create Work Item..." msgstr "Aktivität anlegen..." +msgid "Create a work item for this object." +msgstr "Eine Aktivität zu diesem Objekt anlegen." + +msgid "Add Work Item" +msgstr "Aktivität anlegen/bearbeiten" + msgid "Edit Video..." msgstr "Video bearbeiten..." diff --git a/organize/browser/event.py b/organize/browser/event.py index 7245e41..514c0ed 100644 --- a/organize/browser/event.py +++ b/organize/browser/event.py @@ -39,6 +39,7 @@ from loops.browser.node import NodeView from loops.common import adapted, baseObject from loops.concept import Concept from loops.organize.work.meeting import MeetingMinutes +from loops.organize.tracking.report import TrackDetails from loops.setup import addAndConfigureObject from loops.util import _ from loops import util @@ -317,9 +318,21 @@ class CreateFollowUpEvent(CreateConcept, BaseFollowUpController): result = super(CreateFollowUpEvent, self).update() form = self.request.form toBeAssigned = form.get('cb_select_tasks') or [] - for uid in toBeAssigned: - task = util.getObjectForUid(uid) - self.createFollowUpTask(adapted(task)) + taskId = newTask = None + workItems = self.view.loopsRoot.getRecordManager()['work'] + for id in sorted(toBeAssigned): + if not '.' in id: + taskId = id + task = util.getObjectForUid(id) + newTask = self.createFollowUpTask(adapted(task)) + else: + tId, trackId = id.split('.') + if tId == taskId: + track = workItems.get(trackId) + if track is not None: + td = TrackDetails(self.view, track) + newTId = self.view.getUidForObject(newTask) + track.doAction('move', td.personId, task=newTId) return result def createFollowUpTask(self, source): diff --git a/organize/work/meeting.pt b/organize/work/meeting.pt index 4e80606..3d5a5c7 100644 --- a/organize/work/meeting.pt +++ b/organize/work/meeting.pt @@ -86,19 +86,21 @@ style="border: 1px solid grey">Copy Agenda Items +           - + + + style="border: 1px solid grey" class="center"> + value taskUid" /> - - - header_workitems - header_responsible - header_deadline - - - + + + + header_workitems + header_responsible + header_deadline + + - + + + tal:define="fields results/displayedColumns"> + style="border: 1px solid grey" class="center"> + +