Files

106 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Design
Файл: `/opt/vesti/web/templates/candidates.html`, правая панель
(`{% if selected %}`), блок действий (строки ~150–184).
### Текущая разметка
```html
<div class="mb-3 d-flex flex-wrap gap-2">
{% set hid %}...{% endset %}
{% if selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/approve" id="approve-form">
{{ hid }}
<label class="form-label small text-muted mb-0">💬 Мой комментарий...</label>
<textarea class="form-control form-control-sm mt-1" name="comment" rows="2"
placeholder="Комментарий/анонс…">{{ selected.comment or '' }}</textarea>
<div class="mt-2 d-flex gap-2">
<button class="btn btn-success" type="submit" title="...">✅ Опубликовать</button>
<button class="btn btn-sm btn-outline-secondary" type="submit"
formaction="/posts/{{ selected.id }}/comment" title="...">💾 Сохранить комментарий</button>
</div>
</form>
{% endif %}
{% if selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/reclassify">
{{ hid }}
<button class="btn btn-info" type="submit" title="...">🤖 Обработать моделью</button>
</form>
{% endif %}
{% if selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/rewrite">
{{ hid }}
<button class="btn btn-outline-primary" type="submit" title="...">✍️ Переписать</button>
</form>
{% endif %}
{% if selected.status != 'rejected' and selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/reject">
{{ hid }}
<button class="btn btn-outline-danger" type="submit">🚫 Отклонить</button>
</form>
{% endif %}
</div>
```
### Новая разметка
Кнопки действий выносятся в ОДИН flex-ряд НАД полем комментария; approve-форма
остаётся обёрткой только для «Опубликовать» + «Сохранить комментарий» + textarea
(поля `hid` нужны каждой форме; внутри approve-формы они уже есть).
```html
<div class="mb-3 d-flex flex-wrap gap-2">
{% set hid %}...{% endset %}
{% if selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/reclassify">
{{ hid }}
<button class="btn btn-info" type="submit" title="...">🤖 Обработать моделью</button>
</form>
{% endif %}
{% if selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/rewrite">
{{ hid }}
<button class="btn btn-outline-primary" type="submit" title="...">✍️ Переписать</button>
</form>
{% endif %}
{% if selected.status != 'rejected' and selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/reject">
{{ hid }}
<button class="btn btn-outline-danger" type="submit">🚫 Отклонить</button>
</form>
{% endif %}
{% if selected.status != 'published' %}
<form method="post" action="/posts/{{ selected.id }}/approve" id="approve-form">
{{ hid }}
<div class="mt-0 d-flex gap-2">
<button class="btn btn-success" type="submit" title="...">✅ Опубликовать</button>
</div>
<label class="form-label small text-muted mb-0 mt-2">💬 Мой комментарий...</label>
<textarea class="form-control form-control-sm mt-1" name="comment" rows="2"
placeholder="Комментарий/анонс…">{{ selected.comment or '' }}</textarea>
<div class="mt-2">
<button class="btn btn-sm btn-outline-secondary" type="submit"
formaction="/posts/{{ selected.id }}/comment" title="...">💾 Сохранить комментарий</button>
</div>
</form>
{% endif %}
</div>
```
Порядок в ряду: «🤖 Обработать моделью» → «✍️ Переписать» → «🚫 Отклонить» →
«✅ Опубликовать» (кнопка публикации — правая, главная). Затем — поле
комментария и «💾 Сохранить комментарий».
Все кнопки остаются `type="submit"` в своих формах; `formaction` у
«Сохранить комментарий» сохраняется; логика видимости не меняется.
## Верификация
- `openspec validate candidates-buttons-order` — чисто.
- Рендер шаблона проверяется только ч/з сам сервис (TestClient/живой GET),
т.к. прямой рендер `tpl.get_template(...)` блокируется политикой.
- Перезапуск: `sudo systemctl restart vesti-web` (Jinja2-кеш!).
- Ручная проверка: `GET /candidates` → выбран неопубликованный пост → в
правой панели НАД полем комментария в одном ряду кнопки
Обработать/Переписать/Отклонить/Опубликовать, под textarea — «Сохранить
комментарий».