🔒 Repository is read-only – file editing is disabled.

PaganLinux/pagan-web-v2/templates/admin/downloads.html main

77 linii Raw ← Powrót
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
{% extends "admin/layout.html" %}
{% block admin_title %}Karty pobierania{% endblock %}
{% block admin_h1 %} Karty pobierania{% endblock %}
{% block admin_sub %}Sekcja /download – dodawaj, edytuj i porządkuj karty z linkami i opisami{% endblock %}
{% block admin_content %}
<div class="card" style="margin-bottom:1rem">
 <div class="card-header"><h2> {{ t('admin_dl_add') }}</h2>
 <a href="https://paganlinux.eu/download" target="_blank" class="btn btn-sm" style="background:var(--accent);color:#000"> {{ t('admin_dl_preview') }}</a>
 </div>
 <form method="POST" action="/admin/download/add" style="display:flex;gap:0.5rem;flex-wrap:wrap;align-items:flex-end">
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
 <div><label style="font-size:0.75rem">{{ t('admin_dl_icon') }}</label><input name="icon" value="" style="width:64px"></div>
 <div><label style="font-size:0.75rem">{{ t('admin_dl_title_label') }}</label><input name="title" required style="width:160px" placeholder="np. Obraz ISO KDE"></div>
 <div><label style="font-size:0.75rem">{{ t('admin_dl_desc') }}</label><input name="description" style="width:260px" placeholder="Krótki opis..."></div>
 <div><label style="font-size:0.75rem">{{ t('admin_dl_url') }}</label><input name="url" placeholder="https://..." style="width:220px"></div>
 <div><label style="font-size:0.75rem">{{ t('admin_dl_btn') }}</label><input name="button_label" placeholder="np. Pobierz z repo" style="width:140px"></div>
 <button class="btn btn-sm" style="background:#2ea043;color:#fff">+ {{ t('admin_dl_add') }}</button>
 </form>
</div>

<div class="card">
 <div class="card-header"><h2> {{ t('admin_dl_list') }} ({{ downloads|length }})</h2></div>
 {% if downloads %}
 <div style="overflow-x:auto">
 <table style="width:100%">
 <tr><th></th><th>{{ t('admin_dl_title_label') }}</th><th>{{ t('admin_dl_desc') }}</th><th>{{ t('admin_dl_url') }}</th><th>{{ t('admin_status') }}</th><th>{{ t('admin_actions') }}</th></tr>
 {% for d in downloads %}
 <tr>
 <td style="font-size:1.2rem">{{ d.icon }}</td>
 <td><strong>{{ d.title }}</strong></td>
 <td style="font-size:0.8rem;color:var(--muted)">{{ d.description }}</td>
 <td style="font-size:0.75rem;color:var(--muted);word-break:break-all">{% if d.url %}<a href="{{ d.url }}" target="_blank">{{ d.url }}</a>{% endif %}</td>
 <td>{% if d.enabled %}<span style="color:#2ea043">✅ {{ t('admin_dl_on') }}</span>{% else %}<span style="color:var(--muted)">⭕ {{ t('admin_dl_off') }}</span>{% endif %}</td>
 <td>
 <div style="display:flex;gap:0.3rem;flex-wrap:wrap">
 <form method="POST" action="/admin/download/{{ d.id }}/move" style="margin:0">
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
 <input type="hidden" name="dir" value="up">
 <button class="btn btn-sm" style="font-size:0.7rem;padding:0.15rem 0.4rem" title="↑"></button>
 </form>
 <form method="POST" action="/admin/download/{{ d.id }}/move" style="margin:0">
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
 <input type="hidden" name="dir" value="down">
 <button class="btn btn-sm" style="font-size:0.7rem;padding:0.15rem 0.4rem" title="↓"></button>
 </form>
 <form method="POST" action="/admin/download/{{ d.id }}/toggle" style="margin:0">
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
 <button class="btn btn-sm" style="font-size:0.7rem;padding:0.15rem 0.4rem" title="{{ t('admin_dl_toggle') }}">{{ '' if d.enabled else '' }}</button>
 </form>
 <form method="POST" action="/admin/download/{{ d.id }}/delete" style="margin:0" onsubmit="return confirm('{{ t('admin_dl_delete_confirm') }}')">
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
 <button class="btn btn-sm" style="font-size:0.7rem;padding:0.15rem 0.4rem;background:#da3633;color:#fff"><svg class="i16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M10 11v6M14 11v6"/></svg></button>
 </form>
 </div>
 <details style="margin-top:0.35rem">
 <summary style="cursor:pointer;font-size:0.75rem;color:var(--accent)"> {{ t('admin_dl_edit') }}</summary>
 <form method="POST" action="/admin/download/{{ d.id }}/edit" style="display:flex;gap:0.3rem;flex-wrap:wrap;align-items:flex-end;padding:0.5rem;background:var(--bg);border:1px solid var(--border);border-radius:4px">
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
 <div><label style="font-size:0.7rem">{{ t('admin_dl_icon') }}</label><input name="icon" value="{{ d.icon }}" style="width:56px"></div>
 <div><label style="font-size:0.7rem">{{ t('admin_dl_title_label') }}</label><input name="title" value="{{ d.title }}" required style="width:140px"></div>
 <div><label style="font-size:0.7rem">{{ t('admin_dl_desc') }}</label><input name="description" value="{{ d.description }}" style="width:220px"></div>
 <div><label style="font-size:0.7rem">{{ t('admin_dl_url') }}</label><input name="url" value="{{ d.url }}" placeholder="https://..." style="width:220px"></div>
 <div><label style="font-size:0.7rem">{{ t('admin_dl_btn') }}</label><input name="button_label" value="{{ d.button_label }}" style="width:130px"></div>
 <label style="font-size:0.75rem;display:flex;align-items:center;gap:0.25rem;margin-bottom:0.4rem"><input type="checkbox" name="enabled" value="1" {% if d.enabled %}checked{% endif %}> {{ t('admin_dl_on') }}</label>
 <button class="btn btn-sm" style="font-size:0.7rem;padding:0.15rem 0.4rem;background:#2ea043;color:#fff"> {{ t('admin_save') }}</button>
 </form>
 </details>
 </td>
 </tr>
 {% endfor %}
 </table>
 </div>
 {% else %}
 <p style="text-align:center;color:var(--muted);padding:2rem">{{ t('admin_dl_empty') }}</p>
 {% endif %}
</div>
{% endblock %}