Tag progetto, @menzioni, appuntamenti da conversazioni

- Modello Tag con nome e colore, M2M su Conversazione
- Modello Appuntamento con luogo, note, partecipanti, link a Conversazione
- @menzioni nei commenti e aggiornamenti: @username → link al profilo
- Autocomplete JS per @menzioni nelle textarea
- Auto-data conversazioni (default=now)
- CRUD completo appuntamenti con permessi autore
- Appuntamenti in agenda, dashboard, dettaglio conversazione
- Crea riunione direttamente da una conversazione (pre-compila titolo e partecipanti)
- Admin: Tag, Appuntamento registrati
This commit is contained in:
automationkriz
2026-04-07 14:28:47 +00:00
parent 006bb24215
commit 09f51b1227
19 changed files with 828 additions and 12 deletions

View File

@@ -230,6 +230,32 @@
</div>
{% endif %}
<!-- Prossimi appuntamenti -->
{% if prossimi_appuntamenti %}
<div class="card mt-4 fade-in">
<div class="card-header-accent d-flex justify-content-between align-items-center" style="background:#fef3c7; color:#d97706; border-bottom-color:#fde68a;">
<span><i class="bi bi-calendar-check me-2"></i>Prossimi appuntamenti</span>
<a href="{% url 'appuntamenti_lista' %}" class="small fw-normal" style="color:#d97706;">Tutti →</a>
</div>
<div class="p-0">
{% for app in prossimi_appuntamenti %}
<div class="d-flex align-items-center gap-3 px-3 py-2 {% if not forloop.last %}border-bottom{% endif %}">
<div class="text-center flex-shrink-0" style="width:36px;">
<div style="font-size:.85rem; font-weight:700; color:#d97706;">{{ app.data_ora|date:"d" }}</div>
<div style="font-size:.6rem; text-transform:uppercase; color:#94a3b8;">{{ app.data_ora|date:"M" }}</div>
</div>
<div class="flex-grow-1">
<a href="{% url 'appuntamento_dettaglio' app.pk %}" class="text-decoration-none text-dark fw-semibold small d-block">
{{ app.titolo|truncatewords:6 }}
</a>
<small class="text-muted">{{ app.data_ora|date:"H:i" }}{% if app.luogo %} · {{ app.luogo }}{% endif %}</small>
</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}
</div>
</div>