Merge branch 'master' into bbmaster

This commit is contained in:
Helmut Merz 2012-06-01 08:28:11 +02:00
commit 2ecf05e5e9
7 changed files with 130 additions and 21 deletions

View file

@ -83,7 +83,7 @@ class ObjectForm(NodeView):
def checkPermissions(self): def checkPermissions(self):
obj = self.target obj = self.target
if obj is None: if obj is None:
obj = self.context obj = self.containerext
return canWriteObject(obj) return canWriteObject(obj)
@Lazy @Lazy
@ -289,7 +289,9 @@ class CreateObjectForm(ObjectForm):
@Lazy @Lazy
def title(self): def title(self):
if self.fixedType: if self.fixedType:
return _(u'Create %s') % self.typeConcept.title #return _(u'Create %s') % self.typeConcept.title
return _(u'Create $type',
mapping=dict(type=self.typeConcept.title))
else: else:
return _(self.defaultTitle) return _(self.defaultTitle)

View file

@ -400,7 +400,7 @@ class ChildRelationSet(RelationSet):
self.context.assignChild(related, self.predicate, order, relevance) self.context.assignChild(related, self.predicate, order, relevance)
def remove(self, related): def remove(self, related):
related = baseObject(related.context) related = baseObject(related)
self.context.deassignChild(related, [self.predicate]) self.context.deassignChild(related, [self.predicate])
def __iter__(self): def __iter__(self):

View file

@ -115,6 +115,7 @@ class ResultsConceptView(ConceptView):
""" """
reportName = None # define in subclass if applicable reportName = None # define in subclass if applicable
reportType = None # set for using special report instance adapter
@Lazy @Lazy
def result_macros(self): def result_macros(self):
@ -143,8 +144,9 @@ class ResultsConceptView(ConceptView):
@Lazy @Lazy
def reportInstance(self): def reportInstance(self):
reportType = self.reportType or self.report.reportType
ri = component.getAdapter(self.report, IReportInstance, ri = component.getAdapter(self.report, IReportInstance,
name=self.report.reportType) name=reportType)
ri.view = self.nodeView ri.view = self.nodeView
return ri return ri

Binary file not shown.

View file

@ -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: 2012-05-09 12:00 CET\n" "PO-Revision-Date: 2012-05-30 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"
@ -47,6 +47,9 @@ msgstr "Ressource anlegen..."
msgid "Create %s" msgid "Create %s"
msgstr "%s anlegen" msgstr "%s anlegen"
msgid "Create $type"
msgstr "$type anlegen"
msgid "Create a new resource object." msgid "Create a new resource object."
msgstr "Eine neue Ressource erzeugen" msgstr "Eine neue Ressource erzeugen"
@ -230,19 +233,34 @@ msgstr "Begriff bearbeiten"
msgid "Create Event..." msgid "Create Event..."
msgstr "Termin anlegen..." msgstr "Termin anlegen..."
msgid "Create a new event" msgid "Create a new event."
msgstr "Einen neuen Termin anlegen." msgstr "Einen neuen Termin anlegen."
msgid "Create Follow-up Event..."
msgstr "Folgetermin anlegen..."
msgid "Create an event that is linked to this one."
msgstr "Einen neuen Termin anlegen, der mit diesem verknüpft ist."
msgid "Edit Event..."
msgstr "Termin bearbeiten..."
msgid "Modify event."
msgstr "Termin bearbeiten"
msgid "Modify follow-up event."
msgstr "Folgetermin bearbeiten"
msgid "Create Task..." msgid "Create Task..."
msgstr "Aufgabe anlegen..." msgstr "Aufgabe anlegen..."
msgid "Create a new task" msgid "Create a new task."
msgstr "Eine neue Aufgabe anlegen." msgstr "Eine neue Aufgabe anlegen."
msgid "Edit Task..." msgid "Edit Task..."
msgstr "Aufgabe bearbeiten..." msgstr "Aufgabe bearbeiten..."
msgid "Modify task" msgid "Modify task."
msgstr "Aufgabe bearbeiten" msgstr "Aufgabe bearbeiten"
msgid "Create Project..." msgid "Create Project..."

View file

@ -83,6 +83,32 @@
class="loops.organize.browser.party.EditPersonForm" class="loops.organize.browser.party.EditPersonForm"
permission="zope.View" /> permission="zope.View" />
<browser:page
name="create_followup_event.html"
for="loops.interfaces.INode"
class="loops.organize.browser.event.CreateFollowUpEventForm"
permission="zope.View" />
<zope:adapter
name="create_followup_event"
for="loops.browser.node.NodeView
zope.publisher.interfaces.browser.IBrowserRequest"
factory="loops.organize.browser.event.CreateFollowUpEvent"
permission="zope.View" />
<browser:page
name="edit_followup_event.html"
for="loops.interfaces.INode"
class="loops.organize.browser.event.EditFollowUpEventForm"
permission="zope.View" />
<zope:adapter
name="edit_followup_event"
for="loops.browser.node.NodeView
zope.publisher.interfaces.browser.IBrowserRequest"
factory="loops.organize.browser.event.EditFollowUpEvent"
permission="zope.View" />
<!-- authentication --> <!-- authentication -->
<browser:addform <browser:addform

View file

@ -27,9 +27,12 @@ from zope import interface, component
from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from cybertools.browser.action import actions
from cybertools.meta.interfaces import IOptions from cybertools.meta.interfaces import IOptions
from loops.browser.action import DialogAction from loops.browser.action import DialogAction, TargetAction
from loops.browser.concept import ConceptView from loops.browser.concept import ConceptView
from loops.browser.form import CreateConceptPage, CreateConcept
from loops.browser.form import EditConceptPage, EditConcept
from loops.browser.node import NodeView from loops.browser.node import NodeView
from loops.common import adapted from loops.common import adapted
from loops.util import _ from loops.util import _
@ -38,6 +41,39 @@ from loops.util import _
organize_macros = ViewPageTemplateFile('view_macros.pt') organize_macros = ViewPageTemplateFile('view_macros.pt')
actions.register('createEvent', 'portlet', DialogAction,
title=_(u'Create Event...'),
description=_(u'Create a new event.'),
viewName='create_concept.html',
dialogName='createEvent',
typeToken='.loops/concepts/event',
fixedType=True,
prerequisites=['registerDojoDateWidget'],
)
actions.register('editEvent', 'portlet', DialogAction,
title=_(u'Edit Event...'),
description=_(u'Modify event.'),
viewName='edit_concept.html',
dialogName='editEvent',
prerequisites=['registerDojoDateWidget'],
)
actions.register('createFollowUpEvent', 'portlet', TargetAction,
title=_(u'Create Follow-up Event...'),
description=_(u'Create an event that is linked to this one.'),
viewName='create_followup_event.html',
prerequisites=['registerDojoDateWidget'],
)
actions.register('editFollowUpEvent', 'portlet', TargetAction,
title=_(u'Edit Event...'),
description=_(u'Modify follow-up event.'),
viewName='edit_followup_event.html',
prerequisites=['registerDojoDateWidget'],
)
class Events(ConceptView): class Events(ConceptView):
@Lazy @Lazy
@ -45,19 +81,11 @@ class Events(ConceptView):
return organize_macros.macros['events'] return organize_macros.macros['events']
def getActions(self, category='object', page=None, target=None): def getActions(self, category='object', page=None, target=None):
actions = [] acts = super(Events, self).getActions(category, page, target)
if category == 'portlet': if category == 'portlet':
actions.append(DialogAction(self, title=_(u'Create Event...'), acts.extend(actions.get(category, ['createEvent'],
description=_(u'Create a new event.'), view=self, page=page, target=target))
viewName='create_concept.html', return acts
dialogName='createEvent',
typeToken='.loops/concepts/event',
fixedType=True,
innerForm='inner_concept_form.html',
page=page,
target=target))
self.registerDojoDateWidget()
return actions
@Lazy @Lazy
def selectedDate(self): def selectedDate(self):
@ -215,3 +243,36 @@ class CalendarInfo(NodeView):
def getEventTitles(self, day): def getEventTitles(self, day):
events = self.events[day-1] events = self.events[day-1]
return '; '.join(ev.title for ev in events) return '; '.join(ev.title for ev in events)
# special forms
class CreateFollowUpEventForm(CreateConceptPage):
fixedType = True
typeToken = '.loops/concepts/event'
form_action = 'create_followup_event'
showAssignments = True
class EditFollowUpEventForm(EditConceptPage, CreateFollowUpEventForm):
pass
# form controllers
class BaseFollowUpController(object):
pass
class CreateFollowUpEvent(CreateConcept, BaseFollowUpController):
defaultTypeToken = '.loops/concepts/event'
class EditFollowUpEvent(EditConcept, BaseFollowUpController):
pass