Three sites, one directory each
flux.vision, tobias.raayoni-last.com and randogoth.com. They were one site until October 2026, serving four audiences from a single dated list, which is the only format that can hold unrelated things at once. flux.vision is recovered from the Wayback Machine, where it had sat since being deleted in 2021: 90 articles, closed and maintained rather than updated. tobias.raayoni-last.com is the professional record, 97 articles back to 1999. randogoth.com is the technical work, 41 articles across six areas, served as an ANSI bulletin board. History starts here deliberately. The development history, the 266-row inventory that records why each article went where it did, the Wayback pipelines, the pruned articles, the source archives and the full-size images are kept beside the repo rather than in it, so a clone is the web presence and not the argument that produced it. REFACTOR.md is gitignored for the same reason. See README.md for where that material lives, and keep it: the sort is not reproducible from these three directories alone. Each site documents itself in its own README, including the traps that cost time and look like nothing when you get them wrong.
This commit is contained in:
commit
8505b7e9e0
1003 changed files with 13289 additions and 0 deletions
57
tobias.raayoni-last.com/raayoni/templates/_macros.html
Normal file
57
tobias.raayoni-last.com/raayoni/templates/_macros.html
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{# Provenance fields arrive as "Name <url>", several separated by "; ".
|
||||
Rendered as a mono credit line — the one slot no off-the-shelf theme has. #}
|
||||
{% macro names(raw) %}
|
||||
{%- for part in raw.split(';') %}
|
||||
{%- set p = part.strip() %}
|
||||
{%- if '<' in p %}
|
||||
{%- set nm = p.split('<')[0].strip() %}
|
||||
{%- set url = p.split('<')[1]|replace('>','')|trim %}
|
||||
<a href="{{ url }}" rel="noopener">{{ nm }}</a>
|
||||
{%- else %}{{ p }}{% endif %}
|
||||
{%- if not loop.last %}, {% endif %}
|
||||
{%- endfor %}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro credits(a) %}
|
||||
{%- set rows = [('for', 'for'), ('hiredby', 'hired by'), ('with', 'with'), ('photosby', 'photos by')] %}
|
||||
{%- set any = rows | selectattr(0, 'in', a.metadata) | list %}
|
||||
{%- if any %}
|
||||
<div class="credits">
|
||||
{%- for key, label in rows %}{% if a.metadata.get(key) %}
|
||||
<div><span class="rel">{{ label }}</span> {{ names(a.metadata.get(key)) }}</div>
|
||||
{%- endif %}{% endfor %}
|
||||
</div>
|
||||
{%- endif %}
|
||||
{%- endmacro %}
|
||||
|
||||
{# A tile. `empty` when no thumbnail survived — about 35 entries are in that
|
||||
position, so it degrades to a typographic card rather than a hole. #}
|
||||
{% macro tile(a, SITEURL) %}
|
||||
{# assetcheck flags references whose file did not survive #}
|
||||
{% set thumb = a.metadata.get('thumb') if not a.metadata.get('thumb_missing') else none %}
|
||||
<div class="item"
|
||||
data-category="{{ a.category }}"
|
||||
data-project="{{ a.metadata.get('project', '') }}"
|
||||
data-year="{{ a.date.year }}"
|
||||
data-title="{{ a.title|striptags }}">
|
||||
<div class="item-content">
|
||||
{% if thumb %}
|
||||
{# One image, not two: siblings dim on hover rather than the target
|
||||
colourising, so there is no need for a greyscale copy. #}
|
||||
<div class="hoverthumb">
|
||||
<img src="{{ SITEURL }}{{ thumb }}" alt="{{ a.title|striptags }}" loading="lazy" decoding="async">
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="hoverthumb empty"><span>{{ a.category }}</span></div>
|
||||
{% endif %}
|
||||
<div class="content">
|
||||
<div class="title">{{ a.title }}</div>
|
||||
<div class="year">{{ a.date.year }}{% if a.metadata.get('project') %} · {{ a.metadata.get('project') }}{% endif %}</div>
|
||||
{% set d = a.summary|striptags|trim %}
|
||||
{% if d %}<div class="description">{{ d|truncate(104, true, '…') }}</div>{% endif %}
|
||||
{% if a.tags %}<div class="tags">{% for t in a.tags %}<span>{{ t }}</span>{% endfor %}</div>{% endif %}
|
||||
</div>
|
||||
<a class="cover" href="{{ SITEURL }}/{{ a.url }}" aria-label="{{ a.title|striptags }}"></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue