CMS · Content categories

Hierarchical, multi-language category tree used to classify proposals and stores, with parent selection, per-language names and a CSV export of the whole taxonomy.

AreaCMS
Routescms.categories · cms.categories.index · cms.categories.new · cms.categories.edit
Centre modulescms
Staff levelsroot · admin
Modelscategory · category-language
UI labeltitle.header.cms.categories / menu.navbar.category.show
Coverage4 use cases · 1 happy · 4 failure

How it works

Root/admin only — the tightest CMS permission, because categories are structural. searchParentCategories + selectParentCategory build the hierarchy, and updateTranslationName keeps per-language names in step. downloadCSV exports the tree. Categories are also referenced by the app-button manager: MOF types stores and proposals require a category (error.mof.category.required), so deleting a category can break app navigation.

Use cases

Why someone opens this (4)

  • Defining the content taxonomy a centre’s app navigation is built on.
  • Adding a sub-category under an existing parent.
  • Translating category names for a multilingual centre.
  • Exporting the taxonomy for review or migration.

Path map

flowchart LR
    F(["Content categories"]):::feat
    F --> H1["Sub-category created and translated"]:::ok
    F -.-> X1["Name missing"]:::bad
    F -.-> X2["Missing translation"]:::bad
    F -.-> X3["Deleting a category in use"]:::bad
    F -.-> X4["Export fails"]:::bad
    classDef feat fill:#6a4a8f,stroke:#6a4a8f,color:#ffffff,font-weight:bold
    classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e
    classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13

Happy paths

Sub-category created and translated

  1. Admin opens CMS → Categories → new and enters the default-language name.
  2. Searches and selects a parent category.
  3. Fills the name for each additional language.
  4. Saves; the category becomes selectable on proposals, stores and app buttons.

Failure paths

QA checklist

Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.

  • ✅ Sub-category created and translated
  • ⛔ Name missing
  • ⛔ Missing translation
  • ⛔ Deleting a category in use
  • ⛔ Export fails

Implementation


Generated from doc/feature-inventory.json · id cms-categories · commit 276788ca6