{# doto-list-calendar.html - Template for doto task list as a month calendar #}
{#
Context variables:
- calendar: Dict describing the month grid (built by
nodes._calendar_month_grid):
* year / month — ints for the displayed month.
* month_label — e.g. "August 2026".
* weekday_labels — ordered short weekday names (Mon..Sun).
* weeks — list of weeks; each week is a list of 7
day dicts with:
- day (int day-of-month)
- iso (YYYY-MM-DD)
- in_month (bool; False for padding
days of adjacent months)
- tasks (list of DotoTask due that
day)
* unscheduled — tasks without a parseable due date.
- task_links: Dict mapping task.id -> href of the task box (Feature 5).
- icon_mode: Effective icon mode ("icon" | "icon-text" | "text").
Available filters:
- row_classes: Get CSS classes for a task.
Client-side nature:
Clicking a day reveals that day's task panel via the vendored,
dependency-free doto-views.js. When JS is unavailable the markup degrades
gracefully: every day's tasks are present in the DOM (visually collapsed by
CSS, but still accessible). A child theme can fully re-author this file via
/_doto/templates/html/.
#}
{{ calendar.month_label }}
{%- for weekday in calendar.weekday_labels %}
{{ weekday }}
{%- endfor %}
{%- for week in calendar.weeks %}
{%- for cell in week %}
{%- if cell.tasks %}
{%- for task in cell.tasks %}
{%- set href = (task_links.get(task.id) if task_links is defined else '#' ~ task.id) or ('#' ~ task.id) %}