A boilerplate / reference module for building backend administrative interfaces in ProcessWire. It does nothing useful on its own — its sole purpose is to demonstrate, in one place, the patterns you will reach for when writing your own admin Process modules.
- Copy the
ProcessShowcase/directory tosite/modules/. - In the ProcessWire admin go to Modules > Refresh.
- Click Install next to "Showcase".
- Navigate to Setup > Showcase.
The module installs a single admin page at setup/showcase/ and registers
six child subpages via useNavJSON + nav. It only declares a single
PHP class — no separate config file, no install hook, no field/template
side-effects.
| Pattern | Implementation |
|---|---|
| Module configuration page | getModuleConfigInputfields() |
| Admin landing page | ___execute() |
| Custom subpages with menu entries | nav + useNavJSON in getModuleInfo() and matching ___executeXxx() methods |
| Dashboard layout | Stat cards + quick-action card grid in ___execute() |
| All common Inputfield types | ___executeForms() |
| Buttons, button-group, submit + dropdown menu | ___executeActions() |
| Dynamic repeater (add / remove / drag-reorder) | ___executeRepeater() |
Data tables (MarkupAdminDataTable and UIkit) |
___executeTables() |
| Description / item / nav lists | ___executeLists() |
| Card-grid layouts | ___executeCards() |
| URL | Method | What you'll see |
|---|---|---|
setup/showcase/ |
___execute() |
Stat cards, quick-action tiles, live config summary |
setup/showcase/forms/ |
___executeForms() |
Text, email, url, password, textarea, integer, float, datetime, select (single/multiple), radios, checkboxes, single checkbox, toggle, tags, icon, AsmSelect, PageName, PageTitle, Name, rich text (CKEditor → TinyMCE → textarea fallback), Page / PageAutocomplete / PageListSelect, File, Image, Selector, hidden, markup, fieldsets |
setup/showcase/actions/ |
___executeActions() |
Radio-based button group, UIkit uk-button-group, submit with dropdown of multiple addActionValue() items, secondary cancel button |
setup/showcase/repeater/ |
___executeRepeater() |
Dynamic repeater: add new rows, remove individual rows, drag-to-reorder via jQuery UI .sortable(), with the row count capped by the module's maxItems config |
setup/showcase/tables/ |
___executeTables() |
MarkupAdminDataTable with sortable columns, status labels, per-row action button group + a striped UIkit table |
setup/showcase/lists/ |
___executeLists() |
uk-description-list, uk-list with badges, uk-nav |
setup/showcase/cards/ |
___executeCards() |
Responsive uk-card grid with header / body / footer + action buttons |
Processbase class —___execute(),___executeXxx(),$this->headline(),$this->breadcrumb(),$this->browserTitle()ConfigurableModule—getModuleConfigInputfields(InputfieldWrapper $inputfields)InputfieldForm—processInput(),getValueByName(), magic$form->Inputfield…shortcutsInputfieldSubmit—addActionValue($value, $label, $icon)for the dropdown action menu,showInHeader(true)for header-pinned submitInputfieldButton—setSecondary(),href,iconMarkupAdminDataTable—setSortable(),setEncodeEntities(false),headerRow(),row()InputfieldMarkup+ raw HTML rows + jQuery UI.sortable()— the recipe used for the dynamic repeaterModules::getConfig/Modules::saveConfig— persisting module settings
- Restricted to superusers in
init(). - Form submissions are echoed back; nothing is written to pages, fields, templates or files.
- Uninstalling removes the admin page automatically (handled by the
pagekey ingetModuleInfo()).
Write a complete ProcessWire module designed exclusively as a boilerplate reference for building backend administrative interfaces. Please provide the necessary PHP code and file structure to demonstrate how to implement module configuration pages, custom admin subpages with dedicated menu entries, and dashboard-style layouts. The module must include practical examples of forms utilizing all available ProcessWire input field types, specifically focusing on repeater fields, dropdowns, button groups, and buttons with dropdown menus for executing multiple actions. Additionally, incorporate examples of rendering data using tables, lists, and card layouts within the ProcessWire admin UI.
