<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;

/**
 * Anmeldung (PHP-Bridge) – verwendet das erfolgreiche Muster von fragebogen.php
 * Speicherort (Server): /templates/cassiopeia/php/anmelden.php
 * Zusätzliche Dateien (Server): /templates/cassiopeia/php/namen_anmeldung.txt, /templates/cassiopeia/php/antworten_anmeldung.csv
 *
 * Aufruf-Beispiel über Menü/Bridge (analog zum Erfolgsmodell):
 *   https://<Ihre-Domain>/fragebogen?raw=0&run=anmelden&mode=1
 *
 * Dieses Skript rendert das Formular (GET) und verarbeitet die Eingaben (POST).
 */

// === Einstellungen ===========================================================
$DEBUG = false;                         // nur für Tests: true -> Debug-Ausgaben
$absenderadresse = "ewaste@nederveld.de";
$zieladresse = "dr_patzig@yahoo.de";
$dir = __DIR__;                         // /templates/cassiopeia/php
$dateiNamen = $dir . "/namen_anmeldung.txt";
$csvDatei   = $dir . "/antworten_anmeldung.csv";
$debugDatei = $dir . "/debug_anmeldung.txt";

// === Hilfsfunktionen =========================================================
function logmsg($pfad, $msg) {
    $ts = date("Y-m-d H:i:s");
    @file_put_contents($pfad, "[$ts] $msg\n", FILE_APPEND);
}

function norm($s) {
    // für Vergleiche in namen_anmeldung.txt (Duplikat-Schutz)
    return trim(mb_strtolower(preg_replace('/\s+/u', ' ', (string)$s)));
}

function field($arr, $key, $default = "") {
    if (!isset($arr[$key])) return $default;
    $v = $arr[$key];
    if (is_array($v)) return $v;
    return trim((string)$v);
}

function as_list($v) {
    if ($v === null) return [];
    if (is_array($v)) return $v;
    if ($v === "") return [];
    return [$v];
}

function sanitize_for_csv($text) {
    // CSV-Trenner ist '|'; ersetze Pipes, Normalisiere Zeilenumbrüche
    $t = str_replace(["\r\n", "\n", "\r"], " / ", (string)$text);
    $t = str_replace("|", "¦", $t);
    return trim($t);
}

function ensure_file_exists_with_header($pfad, $headerLine) {
    if (!file_exists($pfad)) {
        @file_put_contents($pfad, $headerLine, FILE_APPEND);
    }
}

function read_name_set($pfad) {
    $set = [];
    if (file_exists($pfad)) {
        $lines = explode("\n", file_get_contents($pfad));
        foreach ($lines as $ln) {
            $ln = trim($ln);
            if ($ln !== "") $set[norm($ln)] = true;
        }
    }
    return $set;
}

function append_name($pfad, $name) {
    @file_put_contents($pfad, $name . "\n", FILE_APPEND);
}

// === Initialisiere Dateien ===================================================
ensure_file_exists_with_header($csvDatei,
    "Zeitstempel|FormularTyp|Name|Mail|Veranstaltungen|Rechnertyp|Anderer_Rechnertyp|Arbeitsspeicher_GB|Dauerspeicher|Prozessor|Backup_Option|Linux_Optionen|Linux_Sonderwunsch|Software_Sonderwunsch\n"
);
ensure_file_exists_with_header($dateiNamen, "");

// === Request/Response ========================================================
$app = Factory::getApplication();
$input = $app->input;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // --- Daten einsammeln ----------------------------------------------------
    $FormularTyp   = field($_POST, 'FormularTyp', 'Anmeldeformular'); // Tippfehler im HTML übernommen
    $Name          = field($_POST, 'Name');
    $Mail          = field($_POST, 'Mail');
    // 'Veranstaltung' kann als einzelner Wert ODER Array kommen (je nach HTML)
    $Veranstaltungen = isset($_POST['Veranstaltung']) ? $_POST['Veranstaltung'] : [];
    if (!is_array($Veranstaltungen)) $Veranstaltungen = [$Veranstaltungen];
    $rechnertyp    = field($_POST, 'rechnertyp');
    $anderer       = field($_POST, 'anderer_rechnertyp');
    $Arbeitsspeicher = field($_POST, 'Arbeitsspeicher');
    $Dauerspeicher = field($_POST, 'Dauerspeicher');
    $Prozessor     = field($_POST, 'Prozessor');
    $Backup_Option = field($_POST, 'Backup_Option');
    // alle Checkboxen mit gleichem Namen "Linux_Option" einsammeln
    $Linux_Optionen = as_list(isset($_POST['Linux_Option']) ? $_POST['Linux_Option'] : []);
    $Linux_Sonder   = field($_POST, 'Linux_Sonderwunsch');
    $Soft_Sonder    = field($_POST, 'Software_Sonderwunsch');

    if ($DEBUG) {
        logmsg($debugDatei, "POST erhalten: " . json_encode($_POST, JSON_UNESCAPED_UNICODE));
    }

    // --- Pflichtfelder prüfen ------------------------------------------------
    $errors = [];
    if ($Name === '') $errors[] = "Bitte geben Sie Ihren Namen ein.";
    if ($Mail === '') $errors[] = "Bitte geben Sie Ihre E-Mail oder Telefonnummer ein.";
    if (count($Veranstaltungen) === 0) $errors[] = "Bitte wählen Sie mindestens eine Veranstaltung aus.";
    if (count($Veranstaltungen) > 2) $errors[] = "Bitte wählen Sie höchstens zwei Veranstaltungen aus.";

    // --- Duplikat-Prüfung (gegen Namen) -------------------------------------
    $exist = read_name_set($dateiNamen);
    $nameKey = norm($Name);
    if ($nameKey !== "" && isset($exist[$nameKey])) {
        $errors[] = "Dieser Name ist bereits registriert. Bitte ergänzen Sie z.&nbsp;B. einen zweiten Vornamen oder fügen Sie '(2)' hinzu.";
    }

    if (!empty($errors)) {
        // Fehler anzeigen + Formular erneut
        echo "<div class='alert alert-danger'><ul>";
        foreach ($errors as $e) {
            echo "<li>" . htmlspecialchars($e, ENT_QUOTES, 'UTF-8') . "</li>";
        }
        echo "</ul></div>";
        // Formular erneut ausgeben
        render_form($Veranstaltungen);
        return;
    }

    // --- CSV schreiben -------------------------------------------------------
    $csv = [
        date("Y-m-d H:i:s"),
        sanitize_for_csv($FormularTyp),
        sanitize_for_csv($Name),
        sanitize_for_csv($Mail),
        sanitize_for_csv(implode(",", $Veranstaltungen)),
        sanitize_for_csv($rechnertyp),
        sanitize_for_csv($anderer),
        sanitize_for_csv($Arbeitsspeicher),
        sanitize_for_csv($Dauerspeicher),
        sanitize_for_csv($Prozessor),
        sanitize_for_csv($Backup_Option),
        sanitize_for_csv(implode(",", $Linux_Optionen)),
        sanitize_for_csv($Linux_Sonder),
        sanitize_for_csv($Soft_Sonder),
    ];
    $line = implode("|", $csv) . "\n";
    $ok = @file_put_contents($csvDatei, $line, FILE_APPEND) !== false;
    if (!$ok) {
        echo "<div class='alert alert-danger'>Fehler: Die Antworten konnten nicht gespeichert werden.</div>";
        if ($DEBUG) logmsg($debugDatei, "Fehler beim Schreiben in CSV.");
        render_form($Veranstaltungen);
        return;
    }

    // --- Name in Duplikatsliste schreiben -----------------------------------
    append_name($dateiNamen, $Name);
// --- Mail an Zieladresse ----------------------------------------------------
try {
    $mailer = Factory::getMailer();
    $mailer->setSender($absenderadresse);
    $mailer->addRecipient($zieladresse);
    $mailer->setSubject('Neue Anmeldung: ' . $Name);

    // Mailtext zusammenbauen
    $body = "Neue Anmeldung am " . date("d.m.Y H:i") . "\n\n";
    $body .= "Name: $Name\n";
    $body .= "E-Mail/Telefon: $Mail\n";
    $body .= "Veranstaltungen: " . implode(', ', $Veranstaltungen) . "\n";
    $body .= "Rechnertyp: $rechnertyp\n";
    if ($anderer !== '') $body .= "Anderer Typ: $anderer\n";
    if ($Arbeitsspeicher !== '') $body .= "RAM: $Arbeitsspeicher GB\n";
    if ($Dauerspeicher !== '') $body .= "Dauerspeicher: $Dauerspeicher\n";
    if ($Prozessor !== '') $body .= "Prozessor: $Prozessor\n";
    if ($Backup_Option !== '') $body .= "Backup-Option: $Backup_Option\n";
    if (!empty($Linux_Optionen)) $body .= "Linux-Optionen: " . implode(', ', $Linux_Optionen) . "\n";
    if ($Linux_Sonder !== '') $body .= "Linux-Sonderwünsche:\n$Linux_Sonder\n";
    if ($Soft_Sonder !== '') $body .= "Software-Sonderwünsche:\n$Soft_Sonder\n";

    $mailer->setBody($body);
    $mailer->Send();
} catch (Exception $e) {
    logmsg($debugDatei, "Mailversand fehlgeschlagen: " . $e->getMessage());
}

    // --- Bestätigung ---------------------------------------------------------
    echo "<h3>Vielen Dank für Ihre Anmeldung!</h3>";
    echo "<p>Sie haben folgende Daten übermittelt:</p>";
    echo "<ul>";
    echo "<li><strong>Name:</strong> " . htmlspecialchars($Name, ENT_QUOTES, 'UTF-8') . "</li>";
    echo "<li><strong>E-Mail/Telefon:</strong> " . htmlspecialchars($Mail, ENT_QUOTES, 'UTF-8') . "</li>";
    echo "<li><strong>Veranstaltungen:</strong> " . htmlspecialchars(implode(', ', $Veranstaltungen), ENT_QUOTES, 'UTF-8') . "</li>";
    echo "<li><strong>Rechnertyp:</strong> " . htmlspecialchars($rechnertyp, ENT_QUOTES, 'UTF-8') . "</li>";
    if ($anderer !== "") {
        echo "<li><strong>Anderer Rechnertyp:</strong> " . htmlspecialchars($anderer, ENT_QUOTES, 'UTF-8') . "</li>";
    }
    if ($Arbeitsspeicher !== "") {
        echo "<li><strong>Arbeitsspeicher:</strong> " . htmlspecialchars($Arbeitsspeicher, ENT_QUOTES, 'UTF-8') . " GB</li>";
    }
    if ($Dauerspeicher !== "") {
        echo "<li><strong>Dauerspeicher:</strong> " . htmlspecialchars($Dauerspeicher, ENT_QUOTES, 'UTF-8') . "</li>";
    }
    if ($Prozessor !== "") {
        echo "<li><strong>Prozessor:</strong> " . htmlspecialchars($Prozessor, ENT_QUOTES, 'UTF-8') . "</li>";
    }
    if ($Backup_Option !== "") {
        echo "<li><strong>Backup-Option:</strong> " . htmlspecialchars($Backup_Option, ENT_QUOTES, 'UTF-8') . "</li>";
    }
    if (!empty($Linux_Optionen)) {
        echo "<li><strong>Linux-Optionen:</strong> " . htmlspecialchars(implode(', ', $Linux_Optionen), ENT_QUOTES, 'UTF-8') . "</li>";
    }
    if ($Linux_Sonder !== "") {
        echo "<li><strong>Linux-Sonderwünsche:</strong> " . nl2br(htmlspecialchars($Linux_Sonder, ENT_QUOTES, 'UTF-8')) . "</li>";
    }
    if ($Soft_Sonder !== "") {
        echo "<li><strong>Software-Sonderwünsche:</strong> " . nl2br(htmlspecialchars($Soft_Sonder, ENT_QUOTES, 'UTF-8')) . "</li>";
    }
    echo "</ul>";
    echo "<p>Wir melden uns bei Ihnen, falls Rückfragen bestehen.</p>";
    return;
}

// === GET: Formular anzeigen ==================================================
render_form();

// ----------------------------------------------------------------------------
function render_form($preselectVeranstaltungen = []) {
    // Hilfsfunktion um 'checked' zu setzen
    $checked = function($value) use ($preselectVeranstaltungen) {
        return in_array($value, $preselectVeranstaltungen, true) ? ' checked="checked"' : '';
    };
    ?>
<form method="post" action="">
  <input name="FormularTyp" type="hidden" value="Anmeldeformular" />
  <p>Die Daten, die Sie hier eingeben, werden nach Ihrer Linux-Installation vernichtet. Wir behalten lediglich Ihren Namen und Ihre Mail-Adresse (bzw.: Telefonnummer) falls wir mit Ihnen einen gesonderten Termin ausmachen müssen.</p>
  <p>Hiermit melde ich mich für folgende Veranstaltungen an (bitte nur zwei Veranstaltungen auswählen):</p>
  <table>
    <tbody>
      <tr>
        <td><input name="Veranstaltung[]" type="checkbox" value="09.10.2025"<?php echo $checked("09.10.2025"); ?> /></td>
        <td style="width: 1%;">&nbsp;</td>
        <td>Do., 09.10.2025, 15:00 Veranstaltung: Backups machen</td>
      </tr>
      <tr>
        <td valign="top"><input name="Veranstaltung[]" type="checkbox" value="16.10.2025"<?php echo $checked("16.10.2025"); ?> /></td>
        <td>&nbsp;</td>
        <td>Do., 16.10.2025, 15:00 Veranstaltung: Backups machen, sowie Linux installieren. Wenn Sie ein Backup gemacht haben, dann können Sie hier Linux aufspielen lassen. Ansonsten können Sie hier nur das Backup machen lassen.</td>
      </tr>
      <tr>
        <td><input name="Veranstaltung[]" type="checkbox" value="15.11.2025"<?php echo $checked("15.11.2025"); ?> /></td>
        <td>&nbsp;</td>
        <td>Sa., 15.11.2025, 14:00 Veranstaltung: Linux installieren</td>
      </tr>
    </tbody>
  </table>
  <p>Der Ort ist jeweils: <a href="https://maps.app.goo.gl/naZEWLCkmz8pMcCQ6" target="_blank" rel="noopener">Rosa-Parks-Saal in der Lincoln-Siedlung, Mahalia-Jackson-Straße 1c, 64285 Darmstadt</a></p>
  <p>Achtung: Überlegen Sie sich ein gutes Passwort für Ihr Linux-System (mindestens 8 Zeichen). Schlechte Passwörter, wie "12345678" werden nicht akzeptiert. Ein gutes Passwort könnte der Name ihrer ersten Lehrerin sein, in dem eine Postleitzahl (nicht Ihre eigene!) eingefügt wird; z.&nbsp;B.: "Sc71384hmidt"</p>

  <table>
    <tbody>
      <tr>
        <td>Name:</td>
        <td><input maxlength="255" name="Name" required size="60" type="text" /></td>
      </tr>
      <tr>
        <td>E-Mail:</td>
        <td><input maxlength="255" name="Mail" required size="20" type="text" /> (falls keine E-Mail vorhanden, dann Telefonnummer)</td>
      </tr>
      <tr>
        <td colspan="2"><b>Falls bekannt, bitte auch folgendes angeben:</b></td>
      </tr>
      <tr>
        <td>Rechnertyp:</td>
        <td>
          <select name="rechnertyp">
            <option value="Laptop">Laptop</option>
            <option value="PC">PC</option>
            <option value="Anderer">Anderer</option>
          </select>
        </td>
      </tr>
      <tr>
        <td>Falls anderer Rechnertyp: Welcher?</td>
        <td><input maxlength="255" name="anderer_rechnertyp" size="60" type="text" /></td>
      </tr>
      <tr>
        <td>Arbeitsspeicher in GB:</td>
        <td><input maxlength="8" name="Arbeitsspeicher" size="8" type="text" /></td>
      </tr>
      <tr>
        <td>Dauerspeicher-Typ (SSD / HD) und jeweilige Größe in GB:</td>
        <td><input maxlength="255" name="Dauerspeicher" size="60" type="text" /></td>
      </tr>
      <tr>
        <td>Prozessor (Geschwindigkeit, Anzahl):</td>
        <td><input maxlength="255" name="Prozessor" size="20" type="text" /></td>
      </tr>
    </tbody>
  </table>
  <p>&nbsp;</p>
  <p>Im Linux-Café installieren wir Ihnen Linux Mint 22.1 (64&nbsp;Bit, Fenstersystem: X11). Abhängig von der Rechner-Hardware wird folgende Edition installiert werden:</p>
  <table style="width: 70%;" cellpadding="0" cellspacing="0">
    <thead><tr>
      <td><p><strong>RAM</strong></p></td>
      <td><p><strong>Edition</strong></p></td>
      <td><p><strong>Begründung</strong></p></td>
    </tr></thead>
    <tbody><tr>
      <td><p>2 GB</p></td>
      <td><p>Xfce</p></td>
      <td><p>Sehr ressourcenschonend, ideal für alte Rechner</p></td>
    </tr><tr>
      <td><p>4 GB</p></td>
      <td><p>MATE</p></td>
      <td><p>Guter Kompromiss zwischen Leistung und Optik</p></td>
    </tr><tr>
      <td><p>8 GB</p></td>
      <td><p>Cinnamon</p></td>
      <td><p>Schöne Oberfläche mit Effekten – ideal für aktuelle PCs</p></td>
    </tr></tbody>
  </table>
  <p>&nbsp;</p>
  <p><big><strong>Optionen &amp; Extras</strong></big></p>
  <p><strong>Backup-Optionen</strong></p>
  <p><input name="Backup_Option" type="radio" value="Backup_vorhanden" /> Ich habe bereits ein aktuelles Backup.</p>
  <p><input name="Backup_Option" type="radio" value="Festplatte_ausbauen" /> Ich möchte, dass meine Festplatte ausgebaut und durch eine andere Festplatte / SSD ersetzt wird.</p>
  <p><input name="Backup_Option" type="radio" value="Festplatte_wird_mitgebracht" /> Ich bringe eine ausreichend große externe Festplatte mit.</p>
  <p><input checked="checked" name="Backup_Option" type="radio" value="Backup_kontaktieren" /> Bitte kontaktieren Sie mich wegen des Backups.</p>
  <p><strong>Linux-Optionen &amp; Extras</strong></p>
  <p><input name="Linux_Option[]" type="checkbox" value="Verschluesselt" /> Ich möchte, dass mein Datenverzeichnis verschlüsselt ist (damit niemand meine Daten sehen kann, falls der Rechner geklaut wird). In diesem Fall wird bei der Anmeldung immer nach dem Passwort gefragt.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Passwort_nicht_abfragen" /> Ich möchte, dass mein Passwort nicht bei der Anmeldung abgefragt wird. Dies geht nur, wenn Datenverzeichnis nicht verschlüsselt ist.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Parallel_Installation" /> Ich möchte eine Parallel-Installation haben, bei der ich auswählen kann, ob ich mit Linux oder mit Windows boote.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Windows_in_VM" /> Ich möchte, dass dieses Windows in einer Virtuellen Maschine gebootet werden kann. Achtung: Dafür muss evtl. ein gesonderter Termin gemacht werden.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Systemschnappschuesse" /> Ich möchte Systemschnappschüsse machen lassen, damit ich das System im Notfall auf einen funktionierenden Stand zurücksetzen kann. (Nur bei Rechnern mit großem Dauerspeicher sinnvoll.)</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Lernen_selbst_zu_Installieren" /> Ich möchte lernen, wie ich selber Linux-Software (beispielsweise Spiele) installieren kann.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Bildschirm_nicht_ausschalten" /> Ich möchte, dass der Bildschirm nicht ausgeschaltet wird, wenn der Rechner am Stromnetz angeschlossen ist.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Kein_Bildschirmschoner" /> Ich möchte, dass der Bildschirmschoner nicht automatisch aktiviert wird.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Feststelltaste_deaktivieren" /> Ich möchte, dass die Feststelltaste (Caps Lock) deaktiviert wird.</p>
  <p>Falls Sie eines der folgenden Extras wählen, muss evtl. ein gesonderter Termin gemacht werden:</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Netzwerk_mit_anderen_Rechnern" /> Ich möchte ein privates Netzwerk zwischen meinen Computern haben.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Tricks_lernen" /> Ich möchte ein paar Tricks lernen (Ctrl-Kommandos, Datenübertragung zwischen Handy und Rechner, …).</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Weltkarte_Hintergrund" /> Ich möchte als Bildschirmhintergrund eine Weltkarte, die sich tageszeitabhängig bewegt.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Autostart_Programme" /> Ich möchte, dass bestimmte Programme automatisch starten.</p>
  <p><input name="Linux_Option[]" type="checkbox" value="Alte_Spiele" /> Ich möchte lernen, wie alte Computerspiele unter Linux laufen (Monkey Island, SimCity, …).</p>
  <p>Ich habe folgende Sonderwünsche bezüglich Linux:</p>
  <textarea cols="70" name="Linux_Sonderwunsch" rows="10"></textarea>
  <p>&nbsp;</p>
  <p><big><strong>Softwarewünsche</strong></big></p>
  <ul>
  <li>In der unteren Liste sind die Programme bereits angekreuzt, die bei der Edition "Cinnamon" automatisch installiert werden. Andere Editionen können abweichende Programme verwenden.</li>
  <li>Alle aufgeführten Programme sind gratis. Alle Programme können auch nachträglich installiert werden.</li>
  <li>Abhängig von der Anzahl der Installationen, muss für einige Programme möglicherweise ein gesonderter Termin vereinbart werden.</li>
  <li>Wir behalten uns vor, entsprechende, bessere Programme zu installieren. Weiterhin behalten wir uns vor, weniger Software zu installieren als gewünscht, falls Ihr Rechner nicht für Ihre Software-Wünsche geeignet ist. Selbstverständlich informieren wir Sie in beiden Fällen darüber, und fragen, ob Sie damit einverstanden sind.</li>
  </ul>
  <p>Ich möchte folgende Linux-Programme auf meinem Rechner installiert haben:</p>
  <table><tbody><tr>
    <td align="center">x</td>
    <td>Firefox: Web-Browser</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Chrome" /></td>
    <td>Chrome: Web-Browser (besser nicht, Google ist eine Datenkrake)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Tor" /></td>
    <td>Tor: Anonymer Webbrowser</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Thunderbird: E-Mail</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Matrix: Chat von Linux-Mint-Benutzern, um sich gegenseitig zu helfen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="HexChat" /></td>
    <td>HexChat: Chatten</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Whatsie" /></td>
    <td>Whatsie: WhatsApp, vollverschlüsselt</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="QuiteRSS" /></td>
    <td>QuiteRSS oder Akregator: Newsfeeder</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Libre Office: eine Art Office mit Writer→Word, Calc→Excel, Impress→PowerPoint. Plus: Draw (eine Art CorelDraw)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="OnlyOffice" /></td>
    <td>OnlyOffice: sieht besser aus und hat bessere Office kompatibilität</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Kalender: Terminkalender, wie die Android-App</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Xreader: PDFs (sowie CBR, CBZ, …) betrachten</td>
  </tr><tr>
    <td align="center">x</td>
    <td>XViewer: Bilder (Jpg, PNG, Gif, …) betrachten</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Gwenview" /></td>
    <td>Gwenview: Bilder (Jpg, PNG, Gif, …) betrachten (besser als XViewer)</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Zeichnung: eine Art Paint</td>
  </tr><tr>
    <td align="center">x</td>
    <td>pix: Fotos verwalten (auch: Umbenennen ganzer Bildserien)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Hugin" /></td>
    <td>Hugin: Panoramabilder erzeugen aus Einzelbildern</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Gimp" /></td>
    <td>Gimp: Bildbearbeitung</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Krita" /></td>
    <td>Krita: Malen &amp; Bildbearbeitung</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Inkscape" /></td>
    <td>Inkscape: Bearbeitung von Vektorgrafiken (svg, dxf, …)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="FBReader" /></td>
    <td>FBReader: E-Books lesen</td>
  </tr><tr>
    <td align="center">x</td>
    <td>xed: eine Art Notepad</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Taschenrechner</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Bildschirmfoto</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Bildschirmlupe: Einstellungen→Barrierefreiheit→Vergrößerung</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="KeePassXC" /></td>
    <td>KeePassXC: Passwortverwaltung</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="VLC" /></td>
    <td>VLC-Player: Audio- und Videodateien abspielen, Radio hören, vom Radio aufnehmen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Spotify" /></td>
    <td>Spotify: Streaming Music Client (benötigt kostenlosen Account)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="EasyTag" /></td>
    <td>Easy Tag: Tags von Musikdateien bearbeiten</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Audacity" /></td>
    <td>Audacity: Musikdateien bearbeiten</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="MuseScore" /></td>
    <td>MuseScore: Midi-Dateien erstellen / bearbeiten (Komponieren)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Kdenlive" /></td>
    <td>Kdenlive: Videos bearbeiten</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Handbrake" /></td>
    <td>Handbrake: Videos konvertieren</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="K3b" /></td>
    <td>K3b: CDs/DVDs brennen (sowie auch rippen)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="ytDownloader" /></td>
    <td>ytDownloader: YouTube Downloader</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="LibreCAD" /></td>
    <td>LibreCAD: CAD-Software. Geeignet, um den Lasercutter im <a href="https://makerspace-darmstadt.de/werkstatt" target="_blank" rel="noopener">MakerSpace</a> zu programieren.</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="LeoCAD" /></td>
    <td>LeoCAD: CAD-Software für Lego-Bausteine</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="QElectroTech" /></td>
    <td>QElectroTech: Schaltpläne erstellen</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Dokument-Scanner: Scanner-Software</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="FileZilla" /></td>
    <td>FileZilla: Dateiübertragung</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Dropbox" /></td>
    <td>Dropbox: Dateien in Cloud lagern</td>
  </tr><tr>
    <td align="center">x</td>
    <td>Transmission: BitTorrent Client (teilen Sie keine copyrightgeschützten Dateien, denn die Abmahnanwälte liegen auf der Lauer!)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="aMule" /></td>
    <td>aMule: Filesharing (teilen Sie keine copyrightgeschützten Dateien, denn die Abmahnanwälte liegen auf der Lauer!)</td>
  </tr><tr>
    <td align="center" valign="top">x</td>
    <td>Archivverwaltung: Dateien (ent-)packen (Zip, Rar)<br />
      <input name="Linux_Option[]" type="checkbox" value="rar" /> rar, unrar: Archivprogramme für Kommandozeile
    </td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Stellarium" /></td>
    <td>Stellarium: Ein Planetarium auf Ihrem Computer</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="KStars" /></td>
    <td>KStars: Interaktive Sternkarte</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Marble" /></td>
    <td>Marble: Interaktiver Globus, auch für Mond, Mars, Venus, …</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="GPSPrune" /></td>
    <td>GPS Prune: GPX-Tracks anzeigen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Mandelbulber" /></td>
    <td>Mandelbulber: 3D Fraktale erstellen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Fraqtive" /></td>
    <td>Fraqtive: Mandelbrot Menge (und Ähnliche) erstellen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="LaTeX" /></td>
    <td>LaTeX: (Wissenschaftliche) Textverarbeitung.</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="R" /></td>
    <td>R: Statistik-Programmiersprache (unter: "r-base")</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="gFortran" /></td>
    <td>gFortran: Fortran</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="VirtualBox" /></td>
    <td>VirtualBox: Virtuelle Maschinen laufen lassen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Wine" /></td>
    <td>Wine: .exe Dateien laufen lassen (aber nicht alle werden funktionieren)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="DosBox" /></td>
    <td>DosBox: DOS-Emulator, um beispielsweise alte DOS-Spiele laufen zu lassen</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="ScummVM" /></td>
    <td>ScummVM: Interpreter für zahlreiche Abenteuerspiele, beispielsweise "Monkey Island"</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="PySolFC" /></td>
    <td>PySolFC: Solitär, Mahjongg</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Pychess" /></td>
    <td>Pychess: Schach</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="3dChess" /></td>
    <td>3dChess: 3D Schach (bekannt von Raumschiff Enterprise)</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Steam" /></td>
    <td>Steam: Spieleplatform, die nahezu alle Windowsspiele auch auf Linux zum laufen gebracht hat (benötigt kostenlosen Account)</td>
  </tr><tr>
    <td align="center" valign="top">x</td>
    <td>Nemo: Dateimanager<br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-compare" /> nemo-compare: Kontextmenü zum Vergleichen <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-dropbox" /> nemo-dropbox: Dropbox-Integration <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-fileroller" /> nemo-fileroller: Integration für Archivmanager File Roller <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-font-manager" /> nemo-font-manager: Erweiterung für Schriftartenmanagement <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-gtkhash" /> nemo-gtkhash: GtkHash-Integration <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-media-columns" /> nemo-media-columns: Anzeige von Metadaten bei Bildern (Exif), PDF- und Musikdateien <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-nextcloud" /> nemo-nextcloud: Nextcloud Integration <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-owncloud" /> nemo-owncloud: ownCloud Integration <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-python" /> nemo-python: Python bindings für Nemo Komponenten <br />
      <input name="Linux_Option[]" type="checkbox" value="nemo-terminal" /> nemo-terminal: Eingebettetes Terminal
    </td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="MC" /></td>
    <td>MC: Midnight Commander Dateimanager</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="CPU-Temperaturanzeige" /></td>
    <td>CPU-Temperaturanzeige</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="Remmina" /></td>
    <td>Remmina: Verbindung zu anderen Rechnern über das Internet</td>
  </tr><tr>
    <td><input name="Linux_Option[]" type="checkbox" value="BrewTarget" /></td>
    <td>BrewTarget: Rezeptrechner für Bierbrauer</td>
  </tr></tbody></table>
  <p>&nbsp;</p>

  <p>Ich habe folgende Sonderwünsche bezüglich der Software:</p>
  <textarea cols="70" name="Software_Sonderwunsch" rows="10"></textarea> <br />
  <p>&nbsp;</p>
  <p><big><strong>Einverständniserklärung</strong></big></p>
  <p>Folgende Einverständniserklärung wird Ihnen vor diesen Veranstaltungen gegeben. Diese muss von Ihnen unterzeichnet werden.</p>
  <p><strong>Veranstaltungszweck und Teilnahmebedingungen</strong></p>
  <p>Das Linux-Café hat zum Ziel, Menschen zu ermöglichen, ihre vorhandene Hardware mit einer aktuellen Linux-Distribution zu nutzen. Wir weisen darauf hin, dass mit der Erlaubnis zur Teilnahme an der heutigen Veranstaltung keine rechtsgeschäftliche Bindung eingegangen, also kein Vertrag abgeschlossen wird.</p>
  <p>Der Eintritt, die Teilnahme und die ehrenamtliche Hilfestellung sind kostenlos.</p>
  <p><strong>Haftungsbeschränkung</strong></p>
  <p>Wir bitten daher um Verständnis dafür, dass wir nur im Falle des Vorliegens von Vorsatz oder grober Fahrlässigkeit für Schäden Ihres Eigentums, Ihres Körpers, Ihres Lebens oder Ihrer Gesundheit Haftung übernehmen können.</p>
  <p><strong>Hausregeln</strong></p>
  <ul>
  <li>Wir speichern keine personenbezogenen Daten von Gästen länger als nötig, höchstens für die Dauer der Veranstaltung.</li>
  <li>Sofern eine sichere Löschung eines Datenträgers mit personenbezogenen Daten im Rahmen der Veranstaltung technisch oder zeitlich nicht möglich sein sollte, so wird der Datenträger dem Gast überlassen, eventuell gegen Kostenerstattung.</li>
  <li>Wir behalten uns vor, Installationsversuche und Arbeiten an Geräten jederzeit abzulehnen oder abzubrechen</li>
  </ul>
  <p><strong>Datensicherheit</strong></p>
  <p>Wir bieten Hilfe bei der Datensicherung, weisen Sie aber darauf hin, dass ausschließlich Sie selbst für eine Sicherung Ihrer Daten verantwortlich sind! Wir machen Sie darauf aufmerksam, dass bei der Arbeit mit Datenträgern grundsätzlich immer die Gefahr von Datenverlust besteht. Wir übernehmen daher ausdrücklich keine Haftung für den Verlust oder die Beschädigung von Daten!</p>
  <p><strong>Datenschutz</strong></p>
  <p>Wenn wir Ihnen dabei helfen, vorhandene Daten von einem Gerät auf ein anderes zu bringen, so handelt es sich dabei rechtlich gesehen um eine automatisierte Verarbeitung von personenbezogenen Daten. Für eine solche Datenverarbeitung gelten die Vorschriften der Europäischen Datenschutz-Grundverordnung (DSGVO). Nach Artikel 5 Abs. 1f DSGVO müssen diese Informationen “in einer Weise verarbeitet werden, die eine angemessene Sicherheit der personenbezogenen Daten gewährleistet, einschließlich Schutz vor unbefugter oder unrechtmäßiger Verarbeitung und vor unbeabsichtigtem Verlust, unbeabsichtigter Zerstörung oder unbeabsichtigter Schädigung durch geeignete technische und organisatorische Maßnahmen”.</p>
  <p>Da wir im Rahmen unserer Tätigkeit im Linux-Café möglicherweise mit personenbezogenen Daten in Kontakt kommen, sind wir zur Beachtung des Datenschutzes verpflichtet, insbesondere zur Wahrung der Vertraulichkeit.</p>
  <p>Unsere Verpflichtung besteht umfassend. Wir dürfen personenbezogene Daten selbst nicht ohne Befugnis verarbeiten und wir dürfen anderen Personen diese Daten nicht unbefugt mitteilen oder zugänglich machen. Uns ist bekannt dass Verstöße gegen das Gebot der Vertraulichkeit nach europäischem Datenschutzrecht mit einer Geldbuße von bis zu 20 Mio. € belegt oder mit einer Geld- oder Freiheitsstrafe geahndet werden können (vgl. Art. 83 DSGVO, §§ 42, 43 BDSG).</p>
  <p><strong>Daten</strong></p>
  <p>Ich bestätige, dass ich mir der Gefahr von Datenverlust bei Arbeiten an meinem Gerät bewusst bin und entweder</p>
  <ul>
  <li>Sicherungskopien von meinen personenbezogenen Daten besitze, die im Linux-Café verarbeitet werden.</li>
  <li>oder die Hilfe der Linux-Café-Helfer:innen bei der Sicherung meiner personenbezogenen Daten in Anspruch nehme.</li>
  <li>oder keinen Wert auf die auf meinem Gerät vorhandenen Daten lege.</li>
  </ul>
  <p><input type="submit" value="Absenden" /></p>
</form>
<?php
}
