Combines shared, blog, market, cart, events, federation, and account into a single repository. Eliminates submodule sync, sibling model copying at build time, and per-app CI orchestration. Changes: - Remove per-app .git, .gitmodules, .gitea, submodule shared/ dirs - Remove stale sibling model copies from each app - Update all 6 Dockerfiles for monorepo build context (root = .) - Add build directives to docker-compose.yml - Add single .gitea/workflows/ci.yml with change detection - Add .dockerignore for monorepo build context - Create __init__.py for federation and account (cross-app imports)
34 lines
1.6 KiB
HTML
34 lines
1.6 KiB
HTML
{# Calendar entries for blog listing cards — served as fragment from events app.
|
||
Each post's entries are delimited by comment markers so the consumer can
|
||
extract per-post HTML via simple string splitting. #}
|
||
{% for post_id in post_ids %}
|
||
<!-- card-widget:{{ post_id }} -->
|
||
{% set widget_entries = batch.get(post_id, []) %}
|
||
{% if widget_entries %}
|
||
<div class="mt-4 mb-2">
|
||
<h3 class="text-sm font-semibold text-stone-700 mb-2 px-2">Events:</h3>
|
||
<div class="overflow-x-auto scrollbar-hide" style="scroll-behavior: smooth;">
|
||
<div class="flex gap-2 px-2">
|
||
{% for entry in widget_entries %}
|
||
{% set _post_slug = slug_map.get(post_id, '') %}
|
||
{% set _entry_path = '/' + _post_slug + '/calendars/' + entry.calendar_slug + '/' + entry.start_at.year|string + '/' + entry.start_at.month|string + '/' + entry.start_at.day|string + '/entries/' + entry.id|string + '/' %}
|
||
<a
|
||
href="{{ events_url(_entry_path) }}"
|
||
class="flex flex-col gap-1 px-3 py-2 bg-stone-50 hover:bg-stone-100 rounded border border-stone-200 transition text-sm whitespace-nowrap flex-shrink-0 min-w-[180px]">
|
||
<div class="font-medium text-stone-900 truncate">{{ entry.name }}</div>
|
||
<div class="text-xs text-stone-600">
|
||
{{ entry.start_at.strftime('%a, %b %d') }}
|
||
</div>
|
||
<div class="text-xs text-stone-500">
|
||
{{ entry.start_at.strftime('%H:%M') }}
|
||
{% if entry.end_at %} – {{ entry.end_at.strftime('%H:%M') }}{% endif %}
|
||
</div>
|
||
</a>
|
||
{% endfor %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
<!-- /card-widget:{{ post_id }} -->
|
||
{% endfor %}
|