Jump to content

ICT:THE pattern checklist

From Costa Sano MediaWiki

ICT: Pattern Checklist — Dashboard, Form, Template, Cargo

This checklist summarizes the reusable pattern for creating a new structured data module.

1. Create Template:EntityName

<noinclude>
{{#cargo_declare:
 _table=TableName
 |field1=String
 |field2=Text
 |field3=Date
 |field4=Page
}}
{{#forminput:form=EntityName}}
</noinclude>

{{#cargo_store:
 field1={{{field1|}}}
 |field2={{{field2|}}}
 |field3={{{field3|}}}
 |field4={{{field4|}}}
}}

== {{{field1|}}} ==

Checklist:

  • Template name = EntityName
  • Cargo table name = TableName
  • All fields declared in #cargo_declare
  • #forminput:form=EntityName present in

2. Create Form:EntityName

<noinclude>
Form for creating and editing EntityName pages.
</noinclude>

{{{info
|no summary
|no preview
|no minor edit
|no watch
|no footer
}}}

{{{for template|EntityName}}}

{| class="formtable"
! Field 1
| {{{field|field1|mandatory}}}
|-
! Field 2
| {{{field|field2|input type=textarea}}}
|-
! Field 3
| {{{field|field3|input type=datepicker}}}
|-
! Field 4
| {{{field|field4|input type=combobox|values from namespace=EntityName}}}
|}

{{{standard input|save}}}

{{{end template}}}

Checklist:

  • info block BEFORE for template
  • standard input|save included
  • Template name matches exactly

3. Create Template:EntityRow

<includeonly>
|-
| {{#formlink:form=EntityName
    |target={{{_pageName}}}
    |link text={{{field1}}}
    |returnto=Dashboard:EntityName
  }}
| {{{field2}}}
| {{{field3}}}
</includeonly>

Checklist:

  • First column uses #formlink
  • target = {{{_pageName}}}
  • returnto points to the Dashboard

4. Create Dashboard:EntityName

= EntityName Dashboard =

{| class="wikitable sortable"
! Field1 !! Field2 !! Field3
{{#cargo_query:
 tables=TableName
 |fields=_pageName,field1,field2,field3
 |where=_pageNamespace=EntityName
 |order by=field1
 |format=template
 |template=EntityRow
 |named args=yes
 |cache=no
}}
|}

{{#forminput:
 form=EntityName
 |namespace=EntityName
 |button text=➕ New EntityName
 |returnto=Dashboard:EntityName
}}

Checklist:

  • Cargo query uses correct table and fields
  • format=template with EntityRow
  • New‑record button uses #forminput

5. Final Verification

  • Creating a new record opens Special:FormEdit/EntityName/…
  • Editing via dashboard opens ?action=formedit
  • No MediaWiki editor clutter appears
  • Cargo table updates automatically
  • All names (Template, Form, Namespace) match exactly

This checklist can be reused for every new module (Persons, Locations, Events, Assets, etc.).