work in progress: meeting minutes: additional fields, improved layout
This commit is contained in:
parent
4cb27a1e4a
commit
0700bb971b
7 changed files with 174 additions and 78 deletions
Binary file not shown.
|
@ -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-17 12:00 CET\n"
|
||||
"PO-Revision-Date: 2012-07-26 12:00 CET\n"
|
||||
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
|
||||
"Language-Team: loops developers <helmutm@cy55.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -296,6 +296,9 @@ msgstr "Besprechungsprotokoll für dieses Objekt anzeigen."
|
|||
msgid "Download Meeting Minutes"
|
||||
msgstr "Besprechungsprotokoll generieren"
|
||||
|
||||
msgid "Copy Agenda Items"
|
||||
msgstr "Tagesordnungspunkte kopieren"
|
||||
|
||||
msgid "Participants"
|
||||
msgstr "Teilnehmer"
|
||||
|
||||
|
@ -303,7 +306,7 @@ msgid "The names of the persons taking part in the event."
|
|||
msgstr "Die Namen der Personen, die an der Besprechung teilnehmen."
|
||||
|
||||
msgid "label_responsible"
|
||||
msgstr "Vortragender"
|
||||
msgstr "Vortragende/r"
|
||||
|
||||
msgid "desc_responsible"
|
||||
msgstr "Person, die diesen Tagesordnungpunkt vertritt."
|
||||
|
@ -315,10 +318,19 @@ msgid "desc_discussion"
|
|||
msgstr "Diskussion"
|
||||
|
||||
msgid "label_consequences"
|
||||
msgstr "Schlussfolgerungen"
|
||||
msgstr "Schlussfolgerung"
|
||||
|
||||
msgid "desc_consequences"
|
||||
msgstr "Schlussfolgerungen"
|
||||
msgstr "Schlussfolgerung"
|
||||
|
||||
msgid "header_workitems"
|
||||
msgstr "Aufgaben"
|
||||
|
||||
msgid "header_responsible"
|
||||
msgstr "zuständig"
|
||||
|
||||
msgid "header_deadline"
|
||||
msgstr "Termin"
|
||||
|
||||
msgid "Task/Action"
|
||||
msgstr "Aufgabe"
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
<input type="hidden" name="form.action"
|
||||
tal:attributes="value view/form_action" />
|
||||
<metal:data use-macro="view/fieldRenderers/fields" />
|
||||
<h3 i18n:translate="">Tasks</h3>
|
||||
<br />
|
||||
<tal:tasks define="report item/reportInstance;
|
||||
reportView nocall:item;
|
||||
results reportView/results;
|
||||
|
|
|
@ -186,7 +186,7 @@ class IAgendaItem(ILoopsAdapter):
|
|||
missing_value=u'',
|
||||
required=False)
|
||||
|
||||
concequences = schema.Text(
|
||||
consequences = schema.Text(
|
||||
title=_(u'label_consequences'),
|
||||
description=_(u'desc_consequences.'),
|
||||
default=u'',
|
||||
|
|
|
@ -248,7 +248,7 @@ Let's start with creating an a event and assigning it a task.
|
|||
... typeInterface=IEvent)
|
||||
>>> tAgendaItem = addAndConfigureObject(concepts, Concept, 'agendaitem',
|
||||
... title=u'AgendaItem', conceptType=concepts.getTypeConcept(),
|
||||
... typeInterface=IEvent)
|
||||
... typeInterface=IAgendaItem)
|
||||
|
||||
>>> ev01 = addAndConfigureObject(concepts, Concept, 'ev01',
|
||||
... title=u'loops Meeting', conceptType=tEvent)
|
||||
|
|
|
@ -25,85 +25,139 @@
|
|||
reportView nocall:item;
|
||||
results reportView/results;
|
||||
fields results/context/fields">
|
||||
<metal:header use-macro="item/macros/header" />
|
||||
<metal:results use-macro="reportView/resultsRenderer" />
|
||||
</div>
|
||||
|
||||
|
||||
<div metal:define-macro="header"
|
||||
tal:define="row results/first">
|
||||
<h1 i18n:translate="">Meeting Minutes</h1>
|
||||
<h2 tal:define="col fields/eventTitle">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></h2>
|
||||
<div>
|
||||
<span tal:define="col fields/eventStart">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span> -
|
||||
<span tal:define="col fields/eventEnd">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
|
||||
</div>
|
||||
<div tal:define="col fields/eventDescription">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div metal:define-macro="results">
|
||||
<table class="report"
|
||||
tal:define="showCheckboxes cb_name|nothing">
|
||||
<tr>
|
||||
<th tal:condition="showCheckboxes"
|
||||
style="border: 1px solid grey">
|
||||
<input type="checkbox" checked
|
||||
tal:attributes="onclick
|
||||
string:toggleCheckBoxes(this, '$cb_name:list')" /></th>
|
||||
<th i18n:translate=""
|
||||
style="border: 1px solid grey">Task/Action</th>
|
||||
<th style="border: 1px solid grey"
|
||||
i18n:translate="">Who?</th>
|
||||
<th style="border: 1px solid grey"
|
||||
i18n:translate="">When?</th>
|
||||
<th style="border: 1px solid grey"
|
||||
i18n:translate=""></th>
|
||||
</tr>
|
||||
<tal:task repeat="row results">
|
||||
<tr tal:repeat="colname python: ('title', 'description',)">
|
||||
<td tal:condition="showCheckboxes"
|
||||
style="border: 1px solid grey">
|
||||
<input type="checkbox" checked
|
||||
tal:condition="python:colname == 'title'"
|
||||
tal:attributes="name string:$cb_name:list;
|
||||
value row/context/uid" /></td>
|
||||
<td style="border: 1px solid grey"
|
||||
tal:define="col report/fields/?colname"
|
||||
tal:attributes="class col/cssClass">
|
||||
<metal:column use-macro="python:
|
||||
reportView.getColumnRenderer(col)" />
|
||||
</td>
|
||||
<td style="border: 1px solid grey" />
|
||||
<td style="border: 1px solid grey" />
|
||||
<td style="border: 1px solid grey" />
|
||||
</tr>
|
||||
<tal:workitems define="col report/fields/workItems">
|
||||
<metal:column use-macro="python:
|
||||
reportView.getColumnRenderer(col)" />
|
||||
</tal:workitems>
|
||||
</tal:task>
|
||||
<metal:page use-macro="item/macros/page_header" />
|
||||
<table class="report" width="100%"
|
||||
tal:define="showCheckboxes nothing">
|
||||
<metal:header use-macro="item/macros/header" />
|
||||
<metal:header use-macro="item/macros/rows" />
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<div metal:define-macro="subreport"
|
||||
<div metal:define-macro="page_header">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><h1 i18n:translate="">Meeting Minutes</h1></td>
|
||||
<td><span i18n:translate="">Page</span> </td>
|
||||
</tr>
|
||||
<table>
|
||||
</div>
|
||||
|
||||
|
||||
<metal:header define-macro="header"
|
||||
tal:define="row results/first">
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div tal:define="col fields/eventTitle">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></div>
|
||||
<div tal:define="col fields/eventDescription">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<span tal:define="col fields/eventDate">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<span tal:define="col fields/eventStart">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span> -
|
||||
<span tal:define="col fields/eventEnd">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="20%"
|
||||
i18n:translate="">Participants</td>
|
||||
<td colspan="3">
|
||||
<span tal:define="col fields/participants">
|
||||
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
</metal:header>
|
||||
|
||||
|
||||
<metal:results define-macro="results">
|
||||
<table class="report"
|
||||
tal:define="showCheckboxes cb_name|nothing">
|
||||
<metal:rows define-macro="rows">
|
||||
<tr tal:condition="showCheckboxes">
|
||||
<th style="border: 1px solid grey; width: 5%">
|
||||
<input type="checkbox" checked
|
||||
tal:attributes="onclick
|
||||
string:toggleCheckBoxes(this, '$cb_name:list')" /></th>
|
||||
<th colspan="4"
|
||||
i18n:translate=""
|
||||
style="border: 1px solid grey">Copy Agenda Items</th>
|
||||
</tr>
|
||||
<tal:task repeat="row results">
|
||||
<tr>
|
||||
<td tal:condition="showCheckboxes"
|
||||
style="border: 1px solid grey">
|
||||
<input type="checkbox" checked
|
||||
tal:attributes="name string:$cb_name:list;
|
||||
value row/context/uid" /></td>
|
||||
<td colspan="4"
|
||||
style="border: 1px solid grey"
|
||||
tal:define="col report/fields/title"
|
||||
tal:attributes="class col/cssClass">
|
||||
<metal:column use-macro="python:
|
||||
reportView.getColumnRenderer(col)" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr tal:repeat="colname python:
|
||||
('responsible', 'description', 'discussion', 'consequences')">
|
||||
<tal:field define="col report/fields/?colname">
|
||||
<td style="border: 1px solid grey"
|
||||
tal:condition="showCheckboxes"></td>
|
||||
<td style="border: 1px solid grey; width: 15%"
|
||||
tal:content="col/title"
|
||||
i18n:translate=""></td>
|
||||
<td colspan="3"
|
||||
style="border: 1px solid grey"
|
||||
tal:attributes="class col/cssClass">
|
||||
<metal:column use-macro="python:
|
||||
reportView.getColumnRenderer(col)" />
|
||||
</td>
|
||||
</tal:field>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="border: 1px solid grey"
|
||||
tal:condition="showCheckboxes"></th>
|
||||
<th colspan="2"
|
||||
style="border: 1px solid grey"
|
||||
i18n:translate="">header_workitems</th>
|
||||
<th style="border: 1px solid grey; width: 20%"
|
||||
i18n:translate="">header_responsible</th>
|
||||
<th style="border: 1px solid grey; width: 12%"
|
||||
i18n:translate="">header_deadline</th>
|
||||
</tr>
|
||||
<tal:workitems define="col report/fields/workItems">
|
||||
<metal:column use-macro="python:
|
||||
reportView.getColumnRenderer(col)" />
|
||||
</tal:workitems>
|
||||
</tal:task>
|
||||
</metal:rows>
|
||||
</table>
|
||||
</metal:results>
|
||||
|
||||
|
||||
<metal:sub define-macro="subreport"
|
||||
tal:define="results python:col.getValue(row)">
|
||||
<tr class="listing" tal:repeat="row results">
|
||||
<td tal:condition="showCheckboxes"
|
||||
style="border: 1px solid grey" />
|
||||
<td tal:repeat="col results/displayedColumns"
|
||||
tal:attributes="class col/cssClass"
|
||||
tal:attributes="class col/cssClass;
|
||||
colspan python:
|
||||
col.name == 'title' and '2' or None"
|
||||
style="border: 1px solid grey">
|
||||
<metal:column use-macro="python:
|
||||
<metal:column use-macro="python:
|
||||
reportView.getColumnRenderer(col)" />
|
||||
</td>
|
||||
</tr>
|
||||
</div>
|
||||
</metal:sub>
|
||||
|
||||
|
||||
</html>
|
||||
|
|
|
@ -285,7 +285,7 @@ class MeetingMinutesWork(WorkReportInstance, SubReport):
|
|||
|
||||
rowFactory = MeetingMinutesWorkRow
|
||||
|
||||
fields = Jeep((workTitle, party, day, state)) #description,
|
||||
fields = Jeep((workTitle, party, day)) #, state)) #description,
|
||||
defaultOutputFields = fields
|
||||
defaultSortCriteria = (day,)
|
||||
states = ('planned', 'accepted', 'running', 'done',
|
||||
|
@ -309,13 +309,20 @@ eventTitle = CalculatedField('eventTitle', u'Event Title',
|
|||
eventDescription = CalculatedField('eventDescription', u'Event Description',
|
||||
description=u'',
|
||||
executionSteps=(['header']))
|
||||
eventDate = DateField('eventDate', u'Event Date',
|
||||
description=u'',
|
||||
format=('date', 'short'),
|
||||
executionSteps=(['header']))
|
||||
eventStart = DateField('eventStart', u'Event Start',
|
||||
description=u'',
|
||||
format=('dateTime', 'short'),
|
||||
format=('time', 'short'),
|
||||
executionSteps=(['header']))
|
||||
eventEnd = DateField('eventEnd', u'Event End',
|
||||
description=u'',
|
||||
format=('dateTime', 'short'),
|
||||
format=('time', 'short'),
|
||||
executionSteps=(['header']))
|
||||
participants = CalculatedField('participants', u'Participants',
|
||||
description=u'',
|
||||
executionSteps=(['header']))
|
||||
taskTitle = UrlField('title', u'Task Title',
|
||||
description=u'The short description of the task.',
|
||||
|
@ -325,6 +332,18 @@ taskDescription = TextField('description', u'Description',
|
|||
description=u'The long description of the task.',
|
||||
cssClass='header-2',
|
||||
executionSteps=['output'])
|
||||
responsible = TextField('responsible', u'label_responsible',
|
||||
description=u'Responsible.',
|
||||
cssClass='header-2',
|
||||
executionSteps=['output'])
|
||||
discussion = TextField('discussion', u'label_discussion',
|
||||
description=u'Discussion.',
|
||||
cssClass='header-2',
|
||||
executionSteps=['output'])
|
||||
consequences = TextField('consequences', u'label_consequences',
|
||||
description=u'Consequences.',
|
||||
cssClass='header-2',
|
||||
executionSteps=['output'])
|
||||
workItems = SubReportField('workItems', u'Work Items',
|
||||
description=u'A list of work items belonging to the task.',
|
||||
reportFactory=MeetingMinutesWork,
|
||||
|
@ -345,6 +364,10 @@ class TaskRow(BaseRow):
|
|||
def eventDescription(self):
|
||||
return self.event.description
|
||||
|
||||
@Lazy
|
||||
def eventDate(self):
|
||||
return self.event.start
|
||||
|
||||
@Lazy
|
||||
def eventStart(self):
|
||||
return self.event.start
|
||||
|
@ -353,8 +376,13 @@ class TaskRow(BaseRow):
|
|||
def eventEnd(self):
|
||||
return self.event.end
|
||||
|
||||
@Lazy
|
||||
def participants(self):
|
||||
return self.event.participants
|
||||
|
||||
useRowProperty = BaseRow.useRowProperty
|
||||
attributeHandlers = dict(
|
||||
eventDate=useRowProperty,
|
||||
eventStart=useRowProperty,
|
||||
eventEnd=useRowProperty,
|
||||
)
|
||||
|
@ -367,8 +395,10 @@ class MeetingMinutes(WorkReportInstance):
|
|||
|
||||
rowFactory = TaskRow
|
||||
|
||||
fields = Jeep((eventTitle, eventStart, eventEnd, eventDescription,
|
||||
tasks, taskTitle, taskDescription, workItems))
|
||||
fields = Jeep((eventTitle, eventDate, eventStart, eventEnd,
|
||||
eventDescription, participants,
|
||||
tasks, taskTitle, responsible, taskDescription,
|
||||
discussion, consequences, workItems))
|
||||
defaultOutputFields = fields
|
||||
states = ('planned', 'accepted', 'done', 'done_x', 'finished')
|
||||
taskTypeNames = ('agendaitem',)
|
||||
|
|
Loading…
Add table
Reference in a new issue