Table of Contents
Struct Plugin: Bureaucracy Support
The Struct Plugin supports integration with the Bureaucracy Plugin. This allows reusing the input mechanisms of the different types in bureaucracy forms and creation of structured data when pages are created through Bureaucracy's template action or saving them into lookup schemas.
You can use any field from any defined schema as a field in a Bureaucracy form. To do so simply use the type
struct_field and specify the field name in the form of
<form> Action template templates:product product : struct_field "products.product" @ submit "Create new product" </form>
The defined (translated) label will automatically be used for the field as well as all the validation rules configured in the schema.
You can use the value entered in a Struct field as any other value for templating. Eg. you can use
@@products.product@@ to access the value of the example above.
All Struct values will be assigned to the resulting pages of (when using the Bureaucracy template action), provided the schema assignments match.
Instead of adding individual fields to a Bureaucracy form as described above, you can also add a whole schema to the form. To do so, simply use the
<form> Action template templates:product product : textbox name @ struct_schema "products" ! submit "Create new product" </form>
Please note that all additional parameters given will be added to each individual field. Eg. you can only make all fields of the schema mandatory or optional.
In this way you can't use
@ to mark fields to be used as page names. To use a field of the struct_schema as page name you can define it with the bureaucracy syntax
@@ and the fully qualified name of the struct field e.g.
products.product in the [destination]. The [separator]
: is not needen then.
<form> Action template templates:product destination:@@products.product@@ textbox name @ struct_schema "products" ! submit "Create new product" </form>
You can save data from bureaucracy forms into lookup schema, using
struct_lookup form action. To do so add
action struct_lookup and desired lookup fields using
<form> action struct_lookup struct_field "someschema.name" submit "Save into lookup" </form>
You can prefill fields by adding a
= after the field name. You must pre-fill with the formats stored in the database, not the formats you get when the table or page is displayed (e.g. dates are in Y-m-d format, independent of your locale).
When you set a
"=some text", for a date use
=2020-01-01 or simple variables like
For Lookup-Fields on Page-Schemes you must setup the complete namespace to the target (e.g.
"=[""ns:ns1:ns2:page"",0]"). For Lookup-Fields in in Lookup-Schemes you must set the
"=["""",1]") of the row. Watch out for the double-quotes! This form is valid for struct-db starting from version 16.
<form> action struct_lookup struct_field "employeetraining.employee" struct_field "employeetraining.training" "=[""ns:ns1:ns2:page"",0]" struct_field "employeetraining.date" =%Y-%m-%d struct_fieldhidden "employeetraining.last date" =%Y-%m-%d submit "Save into lookup" </form>
will result in this (localized in Schema-Editor):