Merge branch 'master' into bbmaster
This commit is contained in:
commit
ba108d4625
5 changed files with 39 additions and 18 deletions
|
@ -149,6 +149,9 @@ class ObjectForm(NodeView):
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def data(self):
|
def data(self):
|
||||||
|
return self.getData()
|
||||||
|
|
||||||
|
def getData(self):
|
||||||
instance = self.instance
|
instance = self.instance
|
||||||
data = instance.applyTemplate(mode='edit')
|
data = instance.applyTemplate(mode='edit')
|
||||||
form = self.request.form
|
form = self.request.form
|
||||||
|
|
|
@ -71,18 +71,19 @@
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
<metal:block define-macro="create" i18n:domain="loops">
|
<form metal:define-macro="create" i18n:domain="loops"
|
||||||
<div dojoType="dijit.layout.BorderContainer"
|
method="post" enctype="multipart/form-data"
|
||||||
|
id="dialog_form" class="dialog"
|
||||||
|
dojoType="dijit.form.Form"
|
||||||
|
tal:define="qualifier request/qualifier|view/qualifier|string:resource;
|
||||||
|
innerForm request/inner_form|view/inner_form|string:inner_form.html;
|
||||||
|
typeToken view/typeToken;
|
||||||
|
fixedType view/fixedType;
|
||||||
|
langInfo view/languageInfo;
|
||||||
|
language langInfo/language">
|
||||||
|
<div dojoType="dijit.layout.BorderContainer"
|
||||||
style="width: 70em; height: 600px"
|
style="width: 70em; height: 600px"
|
||||||
tal:omit-tag="not:view/isInnerHtml">
|
tal:omit-tag="not:view/isInnerHtml">
|
||||||
<form method="post" enctype="multipart/form-data"
|
|
||||||
id="dialog_form" class="dialog"
|
|
||||||
tal:define="qualifier request/qualifier|view/qualifier|string:resource;
|
|
||||||
innerForm request/inner_form|view/inner_form|string:inner_form.html;
|
|
||||||
typeToken view/typeToken;
|
|
||||||
fixedType view/fixedType;
|
|
||||||
langInfo view/languageInfo;
|
|
||||||
language langInfo/language">
|
|
||||||
<div dojoType="dijit.layout.ContentPane" region="center"
|
<div dojoType="dijit.layout.ContentPane" region="center"
|
||||||
tal:omit-tag="not:view/isInnerHtml">
|
tal:omit-tag="not:view/isInnerHtml">
|
||||||
<input type="hidden" name="form.action" value="create"
|
<input type="hidden" name="form.action" value="create"
|
||||||
|
@ -113,6 +114,7 @@
|
||||||
tal:condition="fixedType"
|
tal:condition="fixedType"
|
||||||
tal:attributes="value typeToken" />
|
tal:attributes="value typeToken" />
|
||||||
<script type="text/javascript"
|
<script type="text/javascript"
|
||||||
|
tal:condition="not:fixedType"
|
||||||
tal:content="string:replaceFieldsNode(
|
tal:content="string:replaceFieldsNode(
|
||||||
'form.fields', 'form.type',
|
'form.fields', 'form.type',
|
||||||
'${view/virtualTargetUrl}/$innerForm')">
|
'${view/virtualTargetUrl}/$innerForm')">
|
||||||
|
@ -135,9 +137,8 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div metal:use-macro="view/template/macros/buttons" />
|
<div metal:use-macro="view/template/macros/buttons" />
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</metal:block>
|
|
||||||
|
|
||||||
|
|
||||||
<metal:assignments define-macro="assignments"
|
<metal:assignments define-macro="assignments"
|
||||||
|
|
|
@ -39,7 +39,17 @@ class TextField(Field):
|
||||||
|
|
||||||
def getDisplayValue(self, row):
|
def getDisplayValue(self, row):
|
||||||
value = self.getValue(row)
|
value = self.getValue(row)
|
||||||
return row.parent.context.view.renderText(value, self.format)
|
text = row.parent.context.view.renderText(value, self.format)
|
||||||
|
text = self.removeTopSpacing(text)
|
||||||
|
return text
|
||||||
|
|
||||||
|
def removeTopSpacing(self, text):
|
||||||
|
styleInfo = u' style="margin-top: 0"'
|
||||||
|
for tag in (u'<p', u'<ol', u'<ul'):
|
||||||
|
if text.startswith(tag):
|
||||||
|
text = tag + styleInfo + text[len(tag):]
|
||||||
|
break
|
||||||
|
return text
|
||||||
|
|
||||||
|
|
||||||
class DecimalField(Field):
|
class DecimalField(Field):
|
||||||
|
@ -207,4 +217,4 @@ class SubReportField(Field):
|
||||||
def getValue(self, row):
|
def getValue(self, row):
|
||||||
ri = self.getReportInstance(row)
|
ri = self.getReportInstance(row)
|
||||||
return ri.getResults()
|
return ri.getResults()
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,10 @@ class LanguageInfo(object):
|
||||||
if len(available) == 1:
|
if len(available) == 1:
|
||||||
return available[0]
|
return available[0]
|
||||||
lang = self.request.get('loops.language')
|
lang = self.request.get('loops.language')
|
||||||
|
if lang is not None and lang in available:
|
||||||
|
return lang
|
||||||
|
session = ISession(self.request)[packageId]
|
||||||
|
lang = session.get('language')
|
||||||
if lang is not None and lang in available:
|
if lang is not None and lang in available:
|
||||||
return lang
|
return lang
|
||||||
return (negotiator.getLanguage(available, self.request)
|
return (negotiator.getLanguage(available, self.request)
|
||||||
|
|
9
table.py
9
table.py
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2012 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
|
||||||
|
@ -29,6 +29,7 @@ from zope.schema.interfaces import IContextSourceBinder, IIterableSource
|
||||||
|
|
||||||
from cybertools.composer.schema.factory import SchemaFactory
|
from cybertools.composer.schema.factory import SchemaFactory
|
||||||
from cybertools.composer.schema.grid.interfaces import KeyTable
|
from cybertools.composer.schema.grid.interfaces import KeyTable
|
||||||
|
from cybertools.composer.interfaces import IInstance
|
||||||
from loops.common import AdapterBase, adapted, baseObject
|
from loops.common import AdapterBase, adapted, baseObject
|
||||||
from loops.interfaces import IConcept, IConceptSchema, ILoopsAdapter
|
from loops.interfaces import IConcept, IConceptSchema, ILoopsAdapter
|
||||||
from loops.type import TypeInterfaceSourceList
|
from loops.type import TypeInterfaceSourceList
|
||||||
|
@ -111,8 +112,10 @@ class DataTableSourceBinder(object):
|
||||||
self.tableName = tableName
|
self.tableName = tableName
|
||||||
|
|
||||||
def __call__(self, instance):
|
def __call__(self, instance):
|
||||||
#context = baseObject(instance.context)
|
if IInstance.providedBy(instance):
|
||||||
context = instance.view.nodeView.context
|
context = instance.view.nodeView.context
|
||||||
|
else:
|
||||||
|
context = baseObject(instance.context)
|
||||||
dt = context.getLoopsRoot().getConceptManager()[self.tableName]
|
dt = context.getLoopsRoot().getConceptManager()[self.tableName]
|
||||||
return DataTableSourceList(adapted(dt))
|
return DataTableSourceList(adapted(dt))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue