This is an old revision of the document!
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.
Single Field
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 <schema>.<name>
.
<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.
Complete Schema
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 struct_schema
command.
<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>
Action struct_lookup
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 struct_field
or struct_schema
. Eg.
<form> action struct_lookup struct_field "someschema.name" submit "Save into lookup" </form>
Prefilling
You can prefill fields by adding a =
after the field name. You must prefill with data stored in database, not with what you get when table or page are displayed (e.g. dates are in Y-m-d format independet from your locale).
When you set a Text
use “=some text”
, for a date use =2020-01-01
or simple variables like =%Y-%m-%d
.
For Lookup-Fields you must setup the complete namespace to the target (e.g. “=[”“ns:ns1:ns2:page”“,0]”
). Watch out for the double-quotes! This form is valid for struct-db version 16.
Following code
<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):
(sorry, can't attach pictures)