Land CSOC-WP-0006 PageOps: member space/page CRUD, copy, transfer

Thin CONTENT_ROOT content plane (ADR-0003/0004) with space visual field,
product UI for Title/Abstract/Visual, page list sidebar, and tests. Update
capability model and smoke checklist; mark WP-0006 finished.
This commit is contained in:
tegwick 2026-08-13 12:46:39 +02:00
parent 00dbb86c93
commit affed64839
24 changed files with 1812 additions and 151 deletions

View file

@ -1,11 +1,16 @@
{% extends "base.html" %}
{% block title %}Spaces — {{ site_name }}{% endblock %}
{% block content %}
<h1>Spaces</h1>
<p class="muted">
Co-creation spaces for your tenant.
Page content will live as markdown in Forgejo-backed repositories.
</p>
<div style="display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;align-items:flex-start;">
<div>
<h1 style="margin-bottom:0.35rem;">Spaces</h1>
<p class="muted" style="margin:0;">
Co-creation spaces for your tenant. Pages live as markdown on the content plane
(local dir+git; Forgejo optional).
</p>
</div>
<a class="btn" href="{% url 'spaces:create' %}">New space</a>
</div>
{% if spaces %}
<ul class="space-list" style="list-style:none;padding:0;margin:1.5rem 0 0;">
@ -18,15 +23,20 @@
{% if space.description %}
<p class="muted" style="margin:0.35rem 0 0;font-size:0.95rem;">{{ space.description }}</p>
{% endif %}
{% if space.visual %}
<p class="muted" style="margin:0.25rem 0 0;font-size:0.85rem;">Visual: {{ space.visual }}</p>
{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
<div class="card">
<h2 style="margin-top:0;">No spaces yet</h2>
<p class="muted" style="margin-bottom:0;">
Operators can seed a space via Django admin (tenant-matched).
Create-space UI and Forgejo binding land next (T04–T06).
<p class="muted">
Create a space to start writing pages (Title, Abstract, Visual + markdown body).
</p>
<p style="margin-bottom:0;">
<a class="btn" href="{% url 'spaces:create' %}">Create your first space</a>
</p>
</div>
{% endif %}