{% extends "base.html" %}
|
{% block title %}{{ "Rechner einrichten" if ist_lokal else "Software anfordern" }} – Server-Bibliothek{% endblock %}
|
{% block content %}
|
|
<div class="page-head">
|
<div>
|
<p class="eyebrow">{{ "Verteilung" if ist_lokal else "Selbstbedienung" }}</p>
|
<h1>{{ "Rechner einrichten" if ist_lokal else "Software anfordern" }}</h1>
|
</div>
|
</div>
|
|
{% if not ist_lokal %}
|
<div class="panel" style="margin-bottom:18px; border-color: var(--accent);">
|
<p style="margin:0; font-size:13.5px;">
|
Dein Name wird zusammen mit deiner Rechner-/IP-Adresse protokolliert.
|
Bitte nur Tools anfordern, die du für deine Arbeit wirklich brauchst.
|
</p>
|
</div>
|
{% endif %}
|
|
<div class="panel" style="margin-bottom:18px;">
|
<p style="margin:0 0 8px; font-size:13.5px;">
|
Häkchen bei den benötigten Tools setzen, Mitarbeiter eintragen und
|
herunterladen. Die ausgewählten Installer-Dateien werden dabei direkt mit
|
ins Paket gepackt – auf dem <strong>neuen Rechner</strong> braucht ihr nur
|
das ZIP zu entpacken und <code>Rechner-einrichten-starten.bat</code>
|
doppelzuklicken, ganz ohne dass der Zielrechner Netzwerkzugriff auf
|
diesen Server haben muss. Alles landet dabei gesammelt unter
|
<code>C:\ClientBibliothek</code> – dafür wird automatisch eine
|
Windows-Defender-Ausnahme für genau diesen einen Ordner eingetragen.
|
Tools mit Installer-Datei werden still installiert. Tools ohne Installer
|
("als ZIP bereitgestellt", z. B. portable Tools) landen unangetastet als
|
ZIP in <code>\pakete</code> – die entpackt ihr bewusst von Hand an den
|
gewünschten Zielort. Nur die abschließende Meldung ans zentrale Protokoll
|
braucht (optional) Netzwerkzugriff – schlägt das fehl, bleibt trotzdem
|
das lokale Protokoll unter <code>\protokoll.log</code> vollständig.
|
</p>
|
</div>
|
|
{% if not installierbar %}
|
<div class="empty-state">
|
Kein Tool im Katalog hat aktuell eine verfügbare Installer-Datei.
|
<a href="{{ url_for('software_neu') }}">Erst ein Tool anlegen</a> oder
|
eine automatische Aktualisierung einmal ausführen.
|
</div>
|
{% else %}
|
<form method="post" class="form-grid">
|
<div class="field">
|
<label for="mitarbeiter">Mitarbeiter *</label>
|
<input type="text" id="mitarbeiter" name="mitarbeiter" required placeholder="z. B. Max Mustermann">
|
<div class="hint">Der Rechnername wird vom Skript automatisch erkannt (nicht nötig, hier einzutragen).</div>
|
</div>
|
|
<div class="field">
|
<label>Software (mehrere möglich) *</label>
|
<label class="checklist-kopf">
|
<input type="checkbox" id="alle_auswaehlen" onchange="alleUmschalten(this)"> Alle auswählen
|
</label>
|
<div class="checklist">
|
{% for kategorie, gruppe in installierbar | groupby("kategorie") %}
|
<div class="checklist-gruppe">
|
<div class="checklist-gruppen-titel">{{ kategorie }}</div>
|
{% for sw in gruppe %}
|
<label class="check-item">
|
<input type="checkbox" name="software_ids" value="{{ sw.id }}" class="sw-checkbox">
|
{{ sw.name }}{% if sw.version %} <span class="v">v{{ sw.version }}</span>{% endif %}
|
{% if sw.typ == "ordner" %}<span class="v">(als ZIP bereitgestellt, kein Auto-Entpacken)</span>{% endif %}
|
</label>
|
{% endfor %}
|
</div>
|
{% endfor %}
|
</div>
|
</div>
|
|
<div class="form-actions">
|
<button type="submit" class="btn">Installations-Paket herunterladen</button>
|
<a href="{{ url_for('dashboard') }}" class="btn btn-secondary">Abbrechen</a>
|
</div>
|
</form>
|
|
{% if nicht_installierbar %}
|
<div class="hint" style="margin-top:18px;">
|
Nicht wählbar (keine automatisch verwaltete Installer-Datei vorhanden):
|
{{ nicht_installierbar | join(", ") }}
|
</div>
|
{% endif %}
|
|
<script>
|
function alleUmschalten(quelle) {
|
document.querySelectorAll(".sw-checkbox").forEach(function (cb) {
|
cb.checked = quelle.checked;
|
});
|
}
|
</script>
|
{% endif %}
|
|
{% endblock %}
|