76 lines
2.4 KiB
HTML
76 lines
2.4 KiB
HTML
|
|
{% extends "base.html" %}
|
|||
|
|
{% block title %}Publish{% endblock %}
|
|||
|
|
{% block content %}
|
|||
|
|
<h1>Publish Issue</h1>
|
|||
|
|
|
|||
|
|
<form method="get" action="/publish" style="margin-bottom: 1rem;">
|
|||
|
|
<label>
|
|||
|
|
Target Week
|
|||
|
|
<input type="week" name="week" value="{{ week_str }}">
|
|||
|
|
</label>
|
|||
|
|
<button type="submit" class="outline">Load Week</button>
|
|||
|
|
</form>
|
|||
|
|
|
|||
|
|
<p>{{ week_start.strftime('%b %d') }} – {{ week_end.strftime('%b %d, %Y') }} · {{ articles|length }} articles</p>
|
|||
|
|
|
|||
|
|
{% if articles %}
|
|||
|
|
<form method="post" action="/publish" id="publish-form">
|
|||
|
|
<input type="hidden" name="week_start" value="{{ week_start.isoformat() }}">
|
|||
|
|
<input type="hidden" name="week_end" value="{{ week_end.isoformat() }}">
|
|||
|
|
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th><input type="checkbox" id="select-all" checked></th>
|
|||
|
|
<th>Date</th>
|
|||
|
|
<th>Title</th>
|
|||
|
|
<th>Author</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
{% for article in articles %}
|
|||
|
|
<tr>
|
|||
|
|
<td>
|
|||
|
|
<input type="checkbox" name="article_ids" value="{{ article.id }}" checked
|
|||
|
|
class="article-checkbox">
|
|||
|
|
</td>
|
|||
|
|
<td>{{ article.pub_date.strftime('%b %d') }}</td>
|
|||
|
|
<td>{{ article.title }}</td>
|
|||
|
|
<td>{{ article.author }}</td>
|
|||
|
|
</tr>
|
|||
|
|
{% endfor %}
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
<fieldset>
|
|||
|
|
<legend>Cover</legend>
|
|||
|
|
<label>
|
|||
|
|
<input type="radio" name="cover_method" value="ai" checked>
|
|||
|
|
AI Cover (Pollinations.ai)
|
|||
|
|
</label>
|
|||
|
|
<label>
|
|||
|
|
<input type="radio" name="cover_method" value="text">
|
|||
|
|
Text Cover (fallback)
|
|||
|
|
</label>
|
|||
|
|
</fieldset>
|
|||
|
|
|
|||
|
|
<button type="submit" id="publish-btn">Generate Issue</button>
|
|||
|
|
</form>
|
|||
|
|
{% else %}
|
|||
|
|
<p>No articles found for this week. Try fetching articles first from the <a href="/">Dashboard</a>.</p>
|
|||
|
|
{% endif %}
|
|||
|
|
{% endblock %}
|
|||
|
|
|
|||
|
|
{% block scripts %}
|
|||
|
|
<script>
|
|||
|
|
document.getElementById('select-all')?.addEventListener('change', function() {
|
|||
|
|
document.querySelectorAll('.article-checkbox').forEach(cb => cb.checked = this.checked);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
document.getElementById('publish-form')?.addEventListener('submit', function() {
|
|||
|
|
document.getElementById('publish-btn').setAttribute('aria-busy', 'true');
|
|||
|
|
document.getElementById('publish-btn').textContent = 'Generating...';
|
|||
|
|
});
|
|||
|
|
</script>
|
|||
|
|
{% endblock %}
|