{% extends "basis.html" %}{% set r = t.regal %}{% set lader_mehr = {"platten_suche.js": statisch_url("platten_suche.js"), "platten_suche.css": statisch_url("platten_suche.css"), "platten_zustimmung.js": statisch_url("platten_zustimmung.js"), "platten_zustimmung.css": statisch_url("platten_zustimmung.css")} %}{% if discogs_abzug() %}{% set r = dict(r, **discogs_texte(sprache)) %}{% set lader_mehr = dict(lader_mehr, **{"platten_katalog.js": statisch_url("platten_katalog.js")}) %}{% endif %}{% block titel %}{{ r.einlesen }} – Timbre{% endblock %}{% block kopf %}{% endblock %}{% block hauptklasse %} class="pr-main"{% endblock %}{% block inhalt %} {# Platten einlesen (10.11.2026): Einlesen B „Eine Karte füllt sich“ + „Stapel scannen“ aus C (Galerie docs/konzepte/2026-11-09-plattenregal/). static/platten.js füllt das Gerüst über /api/v1/platten (dieselbe API wie Desktop und iOS). Ohne Kamera: Barcode oder Katalognummer tippen; ein Barcode-Foto nur, wenn der Browser BarcodeDetector kann – das Bild bleibt im Browser. Mithören ist ein sichtbarer Platzhalter („kommt mit Live Vinyl“), nie in den Store-Apps. Texte nur aus texte_plattenregal.py (#pr-t). iOS-App (regalfix 10.11.2026, TP2 an-server-20261110-0600): meldet die App die Fähigkeit `regal.einlesen`, zeigt platten.js „Mit Kamera scannen“ (#pr-scan) statt „Barcode-Foto“; die App liest die Nummer auf dem Gerät und schickt nur sie (`regal.nummer`). Zweite Stufe (12.11.2026): ohne Treffer lädt platten.js static/platten_suche.js nach (Feld „Artist und Titel“ an der Meldung, `lader_mehr`). Zweite Quelle (12.11.2026, Schalter TIMBRE_DISCOGS_ABZUG, Vorgabe aus): nur wenn discogs_abzug() es erlaubt, ersetzt texte_discogs.regal die Meldungen und den Hinweis unter dem Feld und nennt das Zusatz-Modul (`zusatz`, static/platten_katalog.js: Herkunft je Treffer). Sonst steht davon nichts in der Seite – auch nie in den Store-Fassungen. Zustimmung „Plattensuche bei MusicBrainz“ (12.11.2026, in JEDER Fassung – ohne sie sucht der Server nicht): `zu` in #pr-t trägt Zustand, Text der Fassung und Knöpfe; platten.js lädt static/platten_zustimmung.js nach (Dialog vor der ersten Suche, Zustand und Zurücknehmen in #pz-stand). Der Hinweis unter dem Feld folgt dem Zustand. #}
{# Store-Fassungen (11.11.2026, nur zeigen, was der Build kann): „Stapel scannen“ steht dort nicht im HTML. In der iOS-App hängt static/platten.js den Weg an, sobald die App `regal.einlesen` meldet; am Mac gibt es ihn nicht. (Ein verborgener Link ginge nicht: `.xp-lib a{display:inline-flex}` schlägt das Attribut hidden.) #}

{{ r.stapel if stapel else r.einlesen }}

{{ r.stapel_satz if stapel else r.einlesen_satz }}

{# Store-Fassungen (11.11.2026): kein Barcode-Foto – dort zählt nur der Scanner der App (Fähigkeit regal.einlesen) #} {% if not store_app %}{% endif %} {% if ios_app %}{% endif %} {% if not store_app %}{% endif %}
{% if not store_app %}{% endif %} {% if ios_app %}{% endif %}

{% if not mac_store_app %}

{{ r.stapel }}

{{ r.stapel_leer }}

    {% endif %} {% if not store_app %}{% endif %}
    {{ r.von_hand }}

    {{ r.datenschutz if zu.gueltig else zu.ohne }}

    {{ zu.seit or "" }}

    {{ r.zum_regal }}

    {% endblock %}