unify create and edit forms; i18n fix: check session

This commit is contained in:
Helmut Merz 2012-04-14 11:49:59 +02:00
parent a67bb15dd0
commit 738e82fb0b
3 changed files with 21 additions and 13 deletions

View file

@ -149,6 +149,9 @@ class ObjectForm(NodeView):
@Lazy
def data(self):
return self.getData()
def getData(self):
instance = self.instance
data = instance.applyTemplate(mode='edit')
form = self.request.form

View file

@ -71,18 +71,19 @@
</form>
<metal:block define-macro="create" i18n:domain="loops">
<div dojoType="dijit.layout.BorderContainer"
<form metal:define-macro="create" i18n:domain="loops"
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"
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"
tal:omit-tag="not:view/isInnerHtml">
<input type="hidden" name="form.action" value="create"
@ -113,6 +114,7 @@
tal:condition="fixedType"
tal:attributes="value typeToken" />
<script type="text/javascript"
tal:condition="not:fixedType"
tal:content="string:replaceFieldsNode(
'form.fields', 'form.type',
'${view/virtualTargetUrl}/$innerForm')">
@ -135,9 +137,8 @@
</table>
</div>
<div metal:use-macro="view/template/macros/buttons" />
</form>
</div>
</metal:block>
</div>
</form>
<metal:assignments define-macro="assignments"

View file

@ -62,6 +62,10 @@ class LanguageInfo(object):
if len(available) == 1:
return available[0]
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:
return lang
return (negotiator.getLanguage(available, self.request)