feat: OG coverage dashboard as default admin view (#94) #112

Merged
jmiller merged 1 commits from feat/dashboard-94 into dev 2026-06-29 15:49:13 +00:00
Owner

Implements the dedicated dashboard requested in #94 (coverage was previously just an include in the tags list).

What's new

  • DashboardModel (BaseDatabaseModel): getStats() (overall coverage %, missing title/desc/image), getCoverageByType() (per-content_type breakdown), getMissingArticles() (published articles with no OG tag).
  • View/Dashboard/HtmlView + tmpl/dashboard/default.php:
    • SVG donut coverage gauge (no Chart.js dependency — inline SVG, color-coded green/amber/red)
    • Field-gap badges (title / description / image)
    • Coverage-by-content-type table
    • List of articles missing OG tags, each linking to the article editor, with a Batch Generate shortcut
  • DisplayController default view → dashboard; Dashboard + Tags submenu entries added.
  • Removed the inline coverage.php include from the tags list — it ran 6 uncached COUNT queries on every list load; that logic now lives in DashboardModel (also addresses the perf note from the audit).
  • Declared tmpl/dashboard in the manifest; language strings added to en-GB and en-US.

Acceptance criteria (#94)

  • Dashboard is the default admin view
  • Coverage metrics display
  • Coverage-by-content-type breakdown
  • Missing-items list with batch-generate path
  • Image coverage stat
  • Chart (SVG donut)

All PHP php -l clean; manifest/INI parse. Runtime smoke test still recommended (open component → dashboard renders, donut + tables populate).

Closes #94.

🤖 Generated with Claude Code

Implements the dedicated dashboard requested in #94 (coverage was previously just an `include` in the tags list). ## What's new - **`DashboardModel`** (BaseDatabaseModel): `getStats()` (overall coverage %, missing title/desc/image), `getCoverageByType()` (per-`content_type` breakdown), `getMissingArticles()` (published articles with no OG tag). - **`View/Dashboard/HtmlView` + `tmpl/dashboard/default.php`**: - SVG donut coverage gauge (no Chart.js dependency — inline SVG, color-coded green/amber/red) - Field-gap badges (title / description / image) - Coverage-by-content-type table - List of articles missing OG tags, each linking to the article editor, with a **Batch Generate** shortcut - **`DisplayController` default view → `dashboard`**; Dashboard + Tags submenu entries added. - Removed the inline `coverage.php` include from the tags list — it ran **6 uncached `COUNT` queries on every list load**; that logic now lives in `DashboardModel` (also addresses the perf note from the audit). - Declared `tmpl/dashboard` in the manifest; language strings added to en-GB **and** en-US. ## Acceptance criteria (#94) - [x] Dashboard is the default admin view - [x] Coverage metrics display - [x] Coverage-by-content-type breakdown - [x] Missing-items list with batch-generate path - [x] Image coverage stat - [x] Chart (SVG donut) All PHP `php -l` clean; manifest/INI parse. Runtime smoke test still recommended (open component → dashboard renders, donut + tables populate). Closes #94. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jmiller added 1 commit 2026-06-29 15:48:56 +00:00
feat: OG coverage dashboard as default admin view (#94)
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Generic: Project CI / Lint & Validate (pull_request) Successful in 17s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Failing after 48s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
696e369ec1
- New DashboardModel (BaseDatabaseModel) with getStats(), getCoverageByType(),
  getMissingArticles() — coverage logic moved out of the list template
- New View/Dashboard/HtmlView + tmpl/dashboard/default.php: SVG donut coverage
  gauge, field-gap badges, per-content_type breakdown table, and a list of
  published articles missing OG tags (linking to the article editor) with a
  Batch Generate shortcut
- DisplayController default_view -> dashboard; Dashboard + Tags submenu entries
- Removed the inline coverage.php include from the tags list (it ran 6 uncached
  COUNT queries on every list load); that logic now lives in DashboardModel
- Declared tmpl/dashboard in the manifest; added language strings (en-GB, en-US)
jmiller merged commit 60c243a733 into dev 2026-06-29 15:49:13 +00:00
jmiller deleted branch feat/dashboard-94 2026-06-29 15:49:14 +00:00
Sign in to join this conversation.
No Reviewers
Priority -
Type -
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteOpenGraph#112