{% extends "base.html" %} {% import "_copy.html" as copy %} {% block title %}{{ post.filename }} - {{ t('app.title') }}{% endblock %} {% block content %}

← {{ t('post.back') }}

{{ post.filename }}

{{ t('posts.date') }}
{{ post.date }}
{{ t('posts.state') }}
{{ t('posts.state_' + (post.state or 'draft')) }}
{{ t('posts.pillar') }}
P{{ post.pillar }}
{# Two axes, chosen separately: a format is a shape, a label is an effect on the reader. references/formats.md keeps them apart, and a screen showing only one of them quietly makes them the same choice. #}
{{ t('posts.format') }}
{% if post.format %}{{ t('interview.format_' + post.format.replace('-', '_')) }}{% endif %}
{{ t('posts.label') }}
{% if post.label %}{{ t('interview.label_' + post.label.lower()) }}{% endif %}
{# One triple over one text. The three numbers are read off the file on screen, so a post edited after archiving reports what it is now, and so the signature share is a share of the count beside it. The stored `chars` is what was archived; showing both would put two character counts on one screen and let a share be measured against the wrong one. #}
{{ t('posts.shape') }}
{% if shape.signature %}{{ t('posts.shape_signed', paragraphs=shape.paragraphs, characters=shape.characters, signature=shape.signature) }}{% else %}{{ t('posts.shape_value', paragraphs=shape.paragraphs, characters=shape.characters) }}{% endif %}

{{ t('post.body') }}

{% if unreadable %}

{{ t('post.unreadable') }}

{{ unreadable }}

{% else %}

{{ t('post.body_hint') }}

{{ post_text }}
{% if post_text.strip() %}
{{ copy.slot('post-text', 'copy.post') }}
{% endif %} {% if notes %}

{{ t('post.notes') }}

{{ t('post.notes_hint') }}

{{ markdown(notes) }}
{% endif %} {% endif %}

{{ t('post.publish') }}

{{ t('post.publish_hint') }}

{% if unreadable %}

{{ t('post.measure_blocked') }}

{% else %} {% if publish_problem == 'bad-when' %}

{{ t('post.publish_bad_when') }}

{% elif publish_problem == 'running' %}

{{ t('post.publish_running') }}

{% elif publish_problem == 'spent' %}

{{ t('post.publish_spent') }}

{% elif publish_problem in ('refused', 'unfinished') %}

{{ t('post.publish_' + ('unfinished' if publish_problem == 'unfinished' else 'refused')) }}

{{ publish_words }}
{% endif %} {% if plan_changed %}

{{ t('post.plan_changed') }}

{% endif %} {% if sent %}

{{ t('post.publish_sent') }}

{{ sent }}
{% if publish_words %}

{{ publish_words }}

{% endif %}

{{ t('post.publish_state_next') }}

{% endif %} {% if plan %}

{{ t('post.plan') }}

{{ t('post.plan_hint') }}

{{ plan }}

{{ t('post.publish_do_hint') }}

{% endif %}

{{ t('post.publish_when_hint') }}

{{ t('post.state') }}

{{ t('post.state_hint') }}

{% if state_problem == 'bad-state' %}

{{ t('post.state_bad') }}

{% endif %}

{{ t('post.state_ref_hint') }}

{% endif %}

{{ t('post.measure') }}

{{ t('post.measure_hint') }}

{% if saved %}

{{ t('post.saved') }}

{% endif %} {% if unreadable %}

{{ t('post.measure_blocked') }}

{% else %} {% if post.measured %} {# Once the line is filled, the three numbers are what this screen is for and the form is what you open to fix a typo. Nothing here says provisional or confirmed: that is a property of a bucket, and it lives on /measure. #}

{{ t('post.measured_block') }}

{{ t('measure.connections') }}
{% if post.inbound_connections is none %}{{ t('posts.not_measured') }}{% else %}{{ post.inbound_connections }}{% endif %}
{{ t('measure.dms') }}
{% if post.inbound_dms is none %}{{ t('posts.not_measured') }}{% else %}{{ post.inbound_dms }}{% endif %}
{{ t('measure.meetings') }}
{% if post.meeting_mentions is none %}{{ t('posts.not_measured') }}{% else %}{{ post.meeting_mentions }}{% endif %}

{{ post.measured }}{% if post.note %} {{ post.note }}{% endif %}

{{ t('post.correct') }} {% endif %}
{% if post.measured %}
{% endif %} {% endif %} {% endblock %} {% block scripts %}{% endblock %}