DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:struct:bureaucracy

Struct Plugin

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 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 rid (e.g. "=["""",1]") of the row. 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)

plugin/struct/bureaucracy.txt · Last modified: 2020-05-19 15:04 by Klap-in