Merge branch 'bbmaster2' of http://git.cy55.de/loops into bbmaster2
This commit is contained in:
commit
214fb2dc0f
5 changed files with 42 additions and 17 deletions
|
@ -196,6 +196,7 @@ class BaseView(GenericView, I18NView, SortableMixin):
|
||||||
icon = None
|
icon = None
|
||||||
modeName = 'view'
|
modeName = 'view'
|
||||||
isToplevel = False
|
isToplevel = False
|
||||||
|
isVisible = True
|
||||||
|
|
||||||
def __init__(self, context, request):
|
def __init__(self, context, request):
|
||||||
context = baseObject(context)
|
context = baseObject(context)
|
||||||
|
|
|
@ -183,14 +183,17 @@
|
||||||
tal:attributes="value related/uidToken" />
|
tal:attributes="value related/uidToken" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr tal:define="children python:list(related.unique(related.children()));
|
<tal:nested condition="list_nested">
|
||||||
resources python:list(related.resources())"
|
<tr tal:define="children python:
|
||||||
tal:condition="python:list_nested and (children or resources)">
|
list(related.unique(related.children()));
|
||||||
<td tal:condition="item/showCheckboxes|nothing" />
|
resources python:list(related.resources())"
|
||||||
<td colspan="5">
|
tal:condition="python:children or resources">
|
||||||
<metal:list use-macro="item/template/macros/list_nested" />
|
<td tal:condition="item/showCheckboxes|nothing" />
|
||||||
</td>
|
<td colspan="5">
|
||||||
</tr>
|
<metal:list use-macro="item/template/macros/list_nested" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tal:nested>
|
||||||
</tal:item>
|
</tal:item>
|
||||||
</tal:items>
|
</tal:items>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2016 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -111,7 +111,9 @@ class NodeView(BaseView):
|
||||||
parts.extend(getParts(n))
|
parts.extend(getParts(n))
|
||||||
return parts
|
return parts
|
||||||
|
|
||||||
def update(self):
|
def update(self, topLevel=True):
|
||||||
|
if topLevel and self.view != self:
|
||||||
|
return self.view.update(False)
|
||||||
result = super(NodeView, self).update()
|
result = super(NodeView, self).update()
|
||||||
self.recordAccess()
|
self.recordAccess()
|
||||||
return result
|
return result
|
||||||
|
@ -410,8 +412,9 @@ class NodeView(BaseView):
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def menuItems(self):
|
def menuItems(self):
|
||||||
return [NodeView(child, self.request)
|
items = [NodeView(child, self.request).view
|
||||||
for child in self.context.getMenuItems()]
|
for child in self.context.getMenuItems()]
|
||||||
|
return [item for item in items if item.isVisible]
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def parents(self):
|
def parents(self):
|
||||||
|
@ -439,6 +442,10 @@ class NodeView(BaseView):
|
||||||
def active(self, item):
|
def active(self, item):
|
||||||
return item.context == self.context or item.context in self.parents
|
return item.context == self.context or item.context in self.parents
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def authenticationMethod(self):
|
||||||
|
return self.viewAnnotations.get('auth_method') or 'standard'
|
||||||
|
|
||||||
# virtual target support
|
# virtual target support
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
|
|
|
@ -95,6 +95,12 @@
|
||||||
|
|
||||||
<!-- specialized forms -->
|
<!-- specialized forms -->
|
||||||
|
|
||||||
|
<browser:page
|
||||||
|
name="create_person.html"
|
||||||
|
for="loops.interfaces.INode"
|
||||||
|
class="loops.organize.browser.party.CreatePersonForm"
|
||||||
|
permission="zope.View" />
|
||||||
|
|
||||||
<browser:page
|
<browser:page
|
||||||
name="edit_person.html"
|
name="edit_person.html"
|
||||||
for="loops.interfaces.INode"
|
for="loops.interfaces.INode"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2016 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -32,7 +32,7 @@ from cybertools.ajax import innerHtml
|
||||||
from cybertools.browser.action import actions
|
from cybertools.browser.action import actions
|
||||||
from cybertools.browser.form import FormController
|
from cybertools.browser.form import FormController
|
||||||
from loops.browser.action import DialogAction
|
from loops.browser.action import DialogAction
|
||||||
from loops.browser.form import EditConceptForm
|
from loops.browser.form import CreateConceptForm, EditConceptForm
|
||||||
from loops.browser.node import NodeView
|
from loops.browser.node import NodeView
|
||||||
from loops.common import adapted
|
from loops.common import adapted
|
||||||
from loops.organize.party import getPersonForUser
|
from loops.organize.party import getPersonForUser
|
||||||
|
@ -44,7 +44,8 @@ organize_macros = ViewPageTemplateFile('view_macros.pt')
|
||||||
actions.register('createPerson', 'portlet', DialogAction,
|
actions.register('createPerson', 'portlet', DialogAction,
|
||||||
title=_(u'Create Person...'),
|
title=_(u'Create Person...'),
|
||||||
description=_(u'Create a new person.'),
|
description=_(u'Create a new person.'),
|
||||||
viewName='create_concept.html',
|
#viewName='create_concept.html',
|
||||||
|
viewName='create_person.html',
|
||||||
dialogName='createPerson',
|
dialogName='createPerson',
|
||||||
typeToken='.loops/concepts/person',
|
typeToken='.loops/concepts/person',
|
||||||
fixedType=True,
|
fixedType=True,
|
||||||
|
@ -115,19 +116,26 @@ actions.register('send_email', 'object', DialogAction,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class EditPersonForm(EditConceptForm):
|
class PersonForm(object):
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def presetTypesForAssignment(self):
|
def presetTypesForAssignment(self):
|
||||||
types = list(self.typeManager.listTypes(include=('workspace',)))
|
types = list(self.typeManager.listTypes(include=('workspace',)))
|
||||||
#assigned = [r.context for r in self.assignments]
|
|
||||||
#types = [t for t in types if t.typeProvider not in assigned]
|
|
||||||
predicates = [n for n in ['standard', 'ismember', 'ismaster', 'isowner']
|
predicates = [n for n in ['standard', 'ismember', 'ismaster', 'isowner']
|
||||||
if n in self.conceptManager]
|
if n in self.conceptManager]
|
||||||
return [dict(title=t.title, token=t.tokenForSearch, predicates=predicates)
|
return [dict(title=t.title, token=t.tokenForSearch, predicates=predicates)
|
||||||
for t in types]
|
for t in types]
|
||||||
|
|
||||||
|
|
||||||
|
class CreatePersonForm(PersonForm, CreateConceptForm):
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EditPersonForm(PersonForm, EditConceptForm):
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class SendEmailForm(NodeView):
|
class SendEmailForm(NodeView):
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue