Skip to content

Instantly share code, notes, and snippets.

@fulv
Created November 5, 2013 00:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fulv/7311639 to your computer and use it in GitHub Desktop.
Save fulv/7311639 to your computer and use it in GitHub Desktop.
This works similarly to https://gist.github.com/fulv/7260167. The only difference is that form1 and form2 have a flditems field, which is a datagrid, and uses formdatagrid as its associated form. Formdatagrid has two fields, a text fldname, and a number fldquantity. After creating a document with form1, containing a few datagrid rows, open form2.
<plominodatabase id="testdb2">
<design>
<dbsettings version="1.18">
<AboutDescription type="Products.Archetypes.Field.TextField"><![CDATA[]]></AboutDescription>
<UsingDescription type="Products.Archetypes.Field.TextField"><![CDATA[]]></UsingDescription>
<IndexAttachments type="Products.Archetypes.Field.BooleanField">False</IndexAttachments>
<FulltextIndex type="Products.Archetypes.Field.BooleanField">True</FulltextIndex>
<IndexInPortal type="Products.Archetypes.Field.BooleanField">False</IndexInPortal>
<debugMode type="Products.Archetypes.Field.BooleanField">False</debugMode>
<CountDocuments type="Products.Archetypes.Field.BooleanField">False</CountDocuments>
<DateTimeFormat type="Products.Archetypes.Field.StringField">%Y-%m-%d</DateTimeFormat>
<StartPage type="Products.Archetypes.Field.StringField"/>
<i18n type="Products.Archetypes.Field.StringField"/>
<DoNotListUsers type="Products.Archetypes.Field.BooleanField">False</DoNotListUsers>
<DoNotReindex type="Products.Archetypes.Field.BooleanField">False</DoNotReindex>
<IsDatabaseTemplate type="Products.Archetypes.Field.BooleanField">False</IsDatabaseTemplate>
<excludeFromNav type="Products.Archetypes.Field.BooleanField">False</excludeFromNav>
<acl AnomynousAccessRight="NoAccess" AuthenticatedAccessRight="NoAccess">
<params id="UserRoles">
<param>
<value><struct>
</struct></value>
</param>
</params>
<params id="SpecificRights">
<param>
<value><struct>
<member>
<name>specific_deletedocument</name>
<value><string>PlominoAuthor</string></value>
</member>
</struct></value>
</param>
</params>
</acl>
</dbsettings>
<element id="form1" title="form1" type="PlominoForm">
<id type="Products.Archetypes.Field.StringField">form1</id>
<onCreateDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onCreateDocument>
<onOpenDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onOpenDocument>
<beforeSaveDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></beforeSaveDocument>
<onSaveDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onSaveDocument>
<onDeleteDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onDeleteDocument>
<onSearch type="Products.Archetypes.Field.TextField"><![CDATA[]]></onSearch>
<beforeCreateDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></beforeCreateDocument>
<FormLayout type="Products.Archetypes.Field.TextField"><![CDATA[
<p><span class="plominoFieldClass">flditems</span></p>
<p><span class="plominoFieldClass">fldtext</span></p>
]]></FormLayout>
<FormMethod type="Products.Archetypes.Field.TextField"><![CDATA[Auto]]></FormMethod>
<DocumentTitle type="Products.Archetypes.Field.TextField"><![CDATA[]]></DocumentTitle>
<DynamicDocumentTitle type="Products.Archetypes.Field.BooleanField">False</DynamicDocumentTitle>
<StoreDynamicDocumentTitle type="Products.Archetypes.Field.BooleanField">False</StoreDynamicDocumentTitle>
<DocumentId type="Products.Archetypes.Field.TextField"><![CDATA[]]></DocumentId>
<ActionBarPosition type="Products.Archetypes.Field.StringField">TOP</ActionBarPosition>
<HideDefaultActions type="Products.Archetypes.Field.BooleanField">False</HideDefaultActions>
<HideInMenu type="Products.Archetypes.Field.BooleanField">False</HideInMenu>
<isSearchForm type="Products.Archetypes.Field.BooleanField">False</isSearchForm>
<isPage type="Products.Archetypes.Field.BooleanField">False</isPage>
<SearchView type="Products.Archetypes.Field.StringField"/>
<SearchFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></SearchFormula>
<Position type="Products.Archetypes.Field.IntegerField"/>
<ResourcesJS type="Products.Archetypes.Field.TextField"><![CDATA[]]></ResourcesJS>
<ResourcesCSS type="Products.Archetypes.Field.TextField"><![CDATA[]]></ResourcesCSS>
<excludeFromNav type="Products.Archetypes.Field.BooleanField">False</excludeFromNav>
<elements>
<element id="flditems" title="flditems" type="PlominoField">
<id type="Products.Archetypes.Field.StringField">flditems</id>
<FieldType type="Products.Archetypes.Field.StringField">DATAGRID</FieldType>
<FieldMode type="Products.Archetypes.Field.StringField">EDITABLE</FieldMode>
<Formula type="Products.Archetypes.Field.TextField"><![CDATA[]]></Formula>
<FieldReadTemplate type="Products.Archetypes.Field.StringField"/>
<FieldEditTemplate type="Products.Archetypes.Field.StringField"/>
<Mandatory type="Products.Archetypes.Field.BooleanField">False</Mandatory>
<ValidationFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></ValidationFormula>
<ToBeIndexed type="Products.Archetypes.Field.BooleanField">False</ToBeIndexed>
<IndexType type="Products.Archetypes.Field.StringField">DEFAULT</IndexType>
<HTMLAttributesFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></HTMLAttributesFormula>
<params>
<param>
<value><struct>
<member>
<name>associated_form</name>
<value><string>formdatagrid</string></value>
</member>
<member>
<name>jssettings</name>
<value><string>"aoColumns": [
{ "sTitle": "Name" },
{ "sTitle": "Quantity", "sClass": "center" }
],
"bPaginate": false,
"bLengthChange": false,
"bFilter": false,
"bSort": false,
"bInfo": false,
"bAutoWidth": false,
"plominoDialogOptions": {
"width": 400,
"height": 300
}
</string></value>
</member>
<member>
<name>field_mapping</name>
<value><string>fldname,fldquantity</string></value>
</member>
</struct></value>
</param>
</params>
</element>
<element id="fldtext" title="fldtext" type="PlominoField">
<id type="Products.Archetypes.Field.StringField">fldtext</id>
<FieldType type="Products.Archetypes.Field.StringField">TEXT</FieldType>
<FieldMode type="Products.Archetypes.Field.StringField">EDITABLE</FieldMode>
<Formula type="Products.Archetypes.Field.TextField"><![CDATA[]]></Formula>
<FieldReadTemplate type="Products.Archetypes.Field.StringField"/>
<FieldEditTemplate type="Products.Archetypes.Field.StringField"/>
<Mandatory type="Products.Archetypes.Field.BooleanField">False</Mandatory>
<ValidationFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></ValidationFormula>
<ToBeIndexed type="Products.Archetypes.Field.BooleanField">False</ToBeIndexed>
<IndexType type="Products.Archetypes.Field.StringField">DEFAULT</IndexType>
<HTMLAttributesFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></HTMLAttributesFormula>
</element>
</elements>
</element>
<element id="form2" title="form2" type="PlominoForm">
<id type="Products.Archetypes.Field.StringField">form2</id>
<onCreateDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onCreateDocument>
<onOpenDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onOpenDocument>
<beforeSaveDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></beforeSaveDocument>
<onSaveDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onSaveDocument>
<onDeleteDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onDeleteDocument>
<onSearch type="Products.Archetypes.Field.TextField"><![CDATA[]]></onSearch>
<beforeCreateDocument type="Products.Archetypes.Field.TextField"><![CDATA[db = context.getParentDatabase()
search = db.getIndex().dbsearch({})
olddoc = search[0].getObject()
fields = context.getFormFields()
fieldsdict = {f.id:f for f in fields}
for id in fieldsdict:
value = olddoc.getItem(id)
Log("id: %s, value: %s" % (id, value))
context.REQUEST.set(id, value)
return None]]></beforeCreateDocument>
<FormLayout type="Products.Archetypes.Field.TextField"><![CDATA[
<p><span class="plominoFieldClass">flditems</span></p>
<p><span class="plominoFieldClass">fldtext</span></p>
]]></FormLayout>
<FormMethod type="Products.Archetypes.Field.TextField"><![CDATA[Auto]]></FormMethod>
<DocumentTitle type="Products.Archetypes.Field.TextField"><![CDATA[]]></DocumentTitle>
<DynamicDocumentTitle type="Products.Archetypes.Field.BooleanField">False</DynamicDocumentTitle>
<StoreDynamicDocumentTitle type="Products.Archetypes.Field.BooleanField">False</StoreDynamicDocumentTitle>
<DocumentId type="Products.Archetypes.Field.TextField"><![CDATA[]]></DocumentId>
<ActionBarPosition type="Products.Archetypes.Field.StringField">TOP</ActionBarPosition>
<HideDefaultActions type="Products.Archetypes.Field.BooleanField">False</HideDefaultActions>
<HideInMenu type="Products.Archetypes.Field.BooleanField">False</HideInMenu>
<isSearchForm type="Products.Archetypes.Field.BooleanField">False</isSearchForm>
<isPage type="Products.Archetypes.Field.BooleanField">False</isPage>
<SearchView type="Products.Archetypes.Field.StringField"/>
<SearchFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></SearchFormula>
<Position type="Products.Archetypes.Field.IntegerField"/>
<ResourcesJS type="Products.Archetypes.Field.TextField"><![CDATA[]]></ResourcesJS>
<ResourcesCSS type="Products.Archetypes.Field.TextField"><![CDATA[]]></ResourcesCSS>
<excludeFromNav type="Products.Archetypes.Field.BooleanField">False</excludeFromNav>
<elements>
<element id="flditems" title="flditems" type="PlominoField">
<id type="Products.Archetypes.Field.StringField">flditems</id>
<FieldType type="Products.Archetypes.Field.StringField">DATAGRID</FieldType>
<FieldMode type="Products.Archetypes.Field.StringField">EDITABLE</FieldMode>
<Formula type="Products.Archetypes.Field.TextField"><![CDATA[]]></Formula>
<FieldReadTemplate type="Products.Archetypes.Field.StringField"/>
<FieldEditTemplate type="Products.Archetypes.Field.StringField"/>
<Mandatory type="Products.Archetypes.Field.BooleanField">False</Mandatory>
<ValidationFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></ValidationFormula>
<ToBeIndexed type="Products.Archetypes.Field.BooleanField">False</ToBeIndexed>
<IndexType type="Products.Archetypes.Field.StringField">DEFAULT</IndexType>
<HTMLAttributesFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></HTMLAttributesFormula>
<params>
<param>
<value><struct>
<member>
<name>associated_form</name>
<value><string>formdatagrid</string></value>
</member>
<member>
<name>jssettings</name>
<value><string>"aoColumns": [
{ "sTitle": "Name" },
{ "sTitle": "Quantity", "sClass": "center" }
],
"bPaginate": false,
"bLengthChange": false,
"bFilter": false,
"bSort": false,
"bInfo": false,
"bAutoWidth": false,
"plominoDialogOptions": {
"width": 400,
"height": 300
}
</string></value>
</member>
<member>
<name>field_mapping</name>
<value><string>fldname,fldquantity</string></value>
</member>
</struct></value>
</param>
</params>
</element>
<element id="fldtext" title="fldtext" type="PlominoField">
<id type="Products.Archetypes.Field.StringField">fldtext</id>
<FieldType type="Products.Archetypes.Field.StringField">TEXT</FieldType>
<FieldMode type="Products.Archetypes.Field.StringField">EDITABLE</FieldMode>
<Formula type="Products.Archetypes.Field.TextField"><![CDATA[]]></Formula>
<FieldReadTemplate type="Products.Archetypes.Field.StringField"/>
<FieldEditTemplate type="Products.Archetypes.Field.StringField"/>
<Mandatory type="Products.Archetypes.Field.BooleanField">False</Mandatory>
<ValidationFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></ValidationFormula>
<ToBeIndexed type="Products.Archetypes.Field.BooleanField">False</ToBeIndexed>
<IndexType type="Products.Archetypes.Field.StringField">DEFAULT</IndexType>
<HTMLAttributesFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></HTMLAttributesFormula>
</element>
</elements>
</element>
<element id="formdatagrid" title="formdatagrid" type="PlominoForm">
<id type="Products.Archetypes.Field.StringField">formdatagrid</id>
<onCreateDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onCreateDocument>
<onOpenDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onOpenDocument>
<beforeSaveDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></beforeSaveDocument>
<onSaveDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onSaveDocument>
<onDeleteDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></onDeleteDocument>
<onSearch type="Products.Archetypes.Field.TextField"><![CDATA[]]></onSearch>
<beforeCreateDocument type="Products.Archetypes.Field.TextField"><![CDATA[]]></beforeCreateDocument>
<FormLayout type="Products.Archetypes.Field.TextField"><![CDATA[
<p><span class="plominoFieldClass">fldname</span></p>
<p><span class="plominoFieldClass">fldquantity</span></p>
]]></FormLayout>
<FormMethod type="Products.Archetypes.Field.TextField"><![CDATA[Auto]]></FormMethod>
<DocumentTitle type="Products.Archetypes.Field.TextField"><![CDATA[]]></DocumentTitle>
<DynamicDocumentTitle type="Products.Archetypes.Field.BooleanField">False</DynamicDocumentTitle>
<StoreDynamicDocumentTitle type="Products.Archetypes.Field.BooleanField">False</StoreDynamicDocumentTitle>
<DocumentId type="Products.Archetypes.Field.TextField"><![CDATA[]]></DocumentId>
<ActionBarPosition type="Products.Archetypes.Field.StringField">TOP</ActionBarPosition>
<HideDefaultActions type="Products.Archetypes.Field.BooleanField">False</HideDefaultActions>
<HideInMenu type="Products.Archetypes.Field.BooleanField">False</HideInMenu>
<isSearchForm type="Products.Archetypes.Field.BooleanField">False</isSearchForm>
<isPage type="Products.Archetypes.Field.BooleanField">False</isPage>
<SearchView type="Products.Archetypes.Field.StringField"/>
<SearchFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></SearchFormula>
<Position type="Products.Archetypes.Field.IntegerField"/>
<ResourcesJS type="Products.Archetypes.Field.TextField"><![CDATA[]]></ResourcesJS>
<ResourcesCSS type="Products.Archetypes.Field.TextField"><![CDATA[]]></ResourcesCSS>
<excludeFromNav type="Products.Archetypes.Field.BooleanField">False</excludeFromNav>
<elements>
<element id="fldname" title="fldname" type="PlominoField">
<id type="Products.Archetypes.Field.StringField">fldname</id>
<FieldType type="Products.Archetypes.Field.StringField">TEXT</FieldType>
<FieldMode type="Products.Archetypes.Field.StringField">EDITABLE</FieldMode>
<Formula type="Products.Archetypes.Field.TextField"><![CDATA[]]></Formula>
<FieldReadTemplate type="Products.Archetypes.Field.StringField"/>
<FieldEditTemplate type="Products.Archetypes.Field.StringField"/>
<Mandatory type="Products.Archetypes.Field.BooleanField">False</Mandatory>
<ValidationFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></ValidationFormula>
<ToBeIndexed type="Products.Archetypes.Field.BooleanField">False</ToBeIndexed>
<IndexType type="Products.Archetypes.Field.StringField">DEFAULT</IndexType>
<HTMLAttributesFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></HTMLAttributesFormula>
</element>
<element id="fldquantity" title="fldquantity" type="PlominoField">
<id type="Products.Archetypes.Field.StringField">fldquantity</id>
<FieldType type="Products.Archetypes.Field.StringField">NUMBER</FieldType>
<FieldMode type="Products.Archetypes.Field.StringField">EDITABLE</FieldMode>
<Formula type="Products.Archetypes.Field.TextField"><![CDATA[]]></Formula>
<FieldReadTemplate type="Products.Archetypes.Field.StringField"/>
<FieldEditTemplate type="Products.Archetypes.Field.StringField"/>
<Mandatory type="Products.Archetypes.Field.BooleanField">False</Mandatory>
<ValidationFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></ValidationFormula>
<ToBeIndexed type="Products.Archetypes.Field.BooleanField">False</ToBeIndexed>
<IndexType type="Products.Archetypes.Field.StringField">DEFAULT</IndexType>
<HTMLAttributesFormula type="Products.Archetypes.Field.TextField"><![CDATA[]]></HTMLAttributesFormula>
</element>
</elements>
</element>
</design>
</plominodatabase>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment