{% extends "layout.html" %}
{% block content %}
<section class="game-editor" aria-labelledby="GameFormHeading">
<a class="back-link" href="{{ back_url }}">← All games</a>
<header class="page-heading">
<div>
<p class="eyebrow">Game administration</p>
<h1 id="GameFormHeading">{{ heading }}</h1>
{% if visibility_internal %}
<span class="internal-badge">Internal</span>
{% endif %}
</div>
{% if mode == "edit" %}
<div class="management-actions">
<a class="clay-action clay-action-secondary"
href="{{ add_field_url }}">Add field</a>
<a class="clay-action clay-action-danger"
href="{{ delete_url }}">Delete game</a>
</div>
{% endif %}
</header>
{% if has_errors %}
<div class="error-summary" role="alert" tabindex="-1">
<h2>Check the game details</h2>
<p><a href="#{{ error_control_id }}">{{ error_message }}</a></p>
</div>
{% endif %}
<form class="standalone-form clay-form-panel" method="post"
action="{{ action_url }}">
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
{% if mode == "edit" %}
<input type="hidden" name="game_revision"
value="{{ game_revision }}">
{% endif %}
<label class="form-field" for="GameShortName">
<span>Short name</span>
<input id="GameShortName"
{% if mode == "create" %}name="short_name"{% endif %}
type="text" value="{{ short_name }}"
pattern="[a-z0-9]+" required
{% if error_field == "short_name" %}
aria-invalid="true"
aria-describedby="GameShortNameError"
{% endif %}
{% if mode == "edit" %}readonly{% endif %}>
<small>Permanent lowercase prefix used in card IDs.</small>
{% if error_field == "short_name" %}
<small id="GameShortNameError" class="field-error">
{{ error_message }}
</small>
{% endif %}
</label>
<label class="form-field" for="GameDisplayName">
<span>Display name</span>
<input id="GameDisplayName" name="display_name" type="text"
value="{{ display_name }}" required
{% if error_field == "display_name" %}
aria-invalid="true"
aria-describedby="GameDisplayNameError"
{% endif %}>
{% if error_field == "display_name" %}
<small id="GameDisplayNameError" class="field-error">
{{ error_message }}
</small>
{% endif %}
</label>
<label class="form-field" for="GameDescription">
<span>Description <em>Optional</em></span>
<textarea id="GameDescription" name="description"
rows="7"
{% if error_field == "description" %}
aria-invalid="true"
aria-describedby="GameDescriptionError"
{% endif %}>{{ description }}</textarea>
{% if error_field == "description" %}
<small id="GameDescriptionError" class="field-error">
{{ error_message }}
</small>
{% endif %}
</label>
<p class="form-hint">Descriptions support Markdown.</p>
<fieldset class="visibility-options">
<legend>Visibility</legend>
<label class="visibility-option">
<input name="visibility" type="radio" value="PUBLIC"
{% if visibility_public %}checked{% endif %} required>
<span>
<strong>Public</strong>
<small>Available through normal card workflows.</small>
</span>
</label>
<label class="visibility-option">
<input name="visibility" type="radio" value="INTERNAL"
{% if visibility_internal %}checked{% endif %}>
<span>
<strong>Internal</strong>
<small>
Only the administrator can see this game and its
cards.
</small>
</span>
</label>
</fieldset>
<button class="form-submit" type="submit">{{ submit_label }}</button>
</form>
{% if mode == "edit" %}
<section class="definition-panel" aria-labelledby="FieldsHeading">
<div class="section-heading">
<div>
<p class="eyebrow">Card details</p>
<h2 id="FieldsHeading">Custom fields</h2>
</div>
<a class="clay-action" href="{{ add_field_url }}">Add field</a>
</div>
{% if length(fields) == 0 %}
<div class="empty-panel">
<h2>Uses standard card fields</h2>
<p>Add a custom field when this game needs extra card details.</p>
</div>
{% else %}
<ul class="definition-list">
{% for field in fields %}
<li>
<div class="definition-copy">
<p class="eyebrow">{{ field.type }}</p>
<h3>{{ field.label }}</h3>
<p><code>{{ field.key }}</code>
{% if field.choice_count > 0 %}
· {{ field.choice_count }} choices
{% endif %}</p>
</div>
<div class="definition-actions">
<form method="post" action="{{ field_order_url }}">
<input type="hidden" name="csrf_token"
value="{{ csrf_token }}">
<input type="hidden" name="game_revision"
value="{{ game_revision }}">
{% for id in field.up_order %}
<input type="hidden" name="field_id" value="{{ id }}">
{% endfor %}
<button class="clay-action clay-action-secondary"
type="submit" {% if field.is_first %}disabled{% endif %}>
Move up
</button>
</form>
<form method="post" action="{{ field_order_url }}">
<input type="hidden" name="csrf_token"
value="{{ csrf_token }}">
<input type="hidden" name="game_revision"
value="{{ game_revision }}">
{% for id in field.down_order %}
<input type="hidden" name="field_id" value="{{ id }}">
{% endfor %}
<button class="clay-action clay-action-secondary"
type="submit" {% if field.is_last %}disabled{% endif %}>
Move down
</button>
</form>
<a class="clay-action clay-action-secondary"
href="{{ field.edit_url }}">Edit field</a>
<a class="clay-action clay-action-danger"
href="{{ field.delete_url }}">Delete</a>
</div>
</li>
{% endfor %}
</ul>
{% endif %}
</section>
{% endif %}
</section>
{% endblock %}