Merge branch 'master' into bbmaster

This commit is contained in:
Helmut Merz 2012-04-14 12:39:47 +02:00
commit ba108d4625
5 changed files with 39 additions and 18 deletions

View file

@ -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

View file

@ -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"

View file

@ -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()

View file

@ -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)

View file

@ -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))