Skip to content

Releases: thobgg/webtrees-sammlungen

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 08:53

Gesichter auf Gruppenbildern – wer ist wer. In den Apps wtWin und wtTux
zieht man einen Rahmen um ein Gesicht und wählt im Auswahlfenster die Person:
aus dem Stammbaum (mit Suche), nur als Name oder als „unbekannt“. Die
Zuordnung steht in der Bilddatei selbst, im Standard, den auch digiKam und
Lightroom lesen. Das Modul zeigt die Rahmen in der Lightbox beim Darüberfahren
mit Namen und Verweis zur Person; im Personenblatt der Apps sammeln sich alle
Gruppenbilder einer Person.

Personenauswahl für ein markiertes Gesicht

Gruppenbild mit zugeordneten Gesichtern

Dazu: das ganze Archiv lässt sich jetzt auch aus den Apps verwalten
(Schnittstelle Stufe 6), und in der Lightbox lassen sich Bilder zum Lesen
drehen.

Bitte beachten: Beim Umbenennen bleibt die Dateiendung jetzt fest, und
eine Datei, die zu einem Medienobjekt gehört, wird auch im Stammbaum
umbenannt. POST …/exif lässt nicht mitgeschickte Felder stehen, statt sie
zu leeren.

Neu

  • Gesichter auf Gruppenbildern. Rahmen um Gesichter, von Hand in den
    Apps markiert und einer Person zugeordnet (aus dem Stammbaum, nur ein Name
    oder unbekannt). Sie stehen in der Bilddatei als XMP „MWG Regions“ – der
    Standard, den auch digiKam, Lightroom und ExifTool lesen –, die Person im
    Stammbaum als sammlungen:Xref. Ein Gesicht zuzuordnen hängt das Bild
    nicht an die Person (in der App auf Wunsch per Häkchen doch). Ohne MWG-Bereiche liest das Modul die der
    Windows-Fotogalerie. In der Lightbox zeigt das Darüberfahren mit der Maus
    Rahmen und Namen, mit Verweis auf die Personenseite; private Personen
    bleiben verborgen wie überall in webtrees.
  • Schnittstelle Stufe 5. Bild-Einträge tragen bereiche (links oben,
    normiert); POST …/exif nimmt bereiche an (ersetzt alle Gesichter,
    andere Bereiche bleiben; Fehler bad-regions) und auch datum_unsicher;
    GET …/sammlung?person=I21 liefert alle Bilder, auf denen die Person
    markiert ist. Dafür führt das Modul ein kleines Verzeichnis (Tabelle
    sammlungen_bereich_index), das sich beim Abfragen mit dem Medienordner
    abgleicht – auch Rahmen aus digiKam kommen so hinein. Übersicht:
    darfBereiche, personenFilter. api: 5.
  • Schnittstelle Stufe 6: Verwaltung aus der App. Was die Verwaltung im
    Browser kann, geht jetzt auch über die Schnittstelle, mit denselben Rechten:
    POST …/umbenennen, …/zuordnen (Bild in ein Album oder heraus),
    …/sichtbar (Verwalter); …/sammlung-speichern, …/sammlung-loeschen,
    …/einstellungen (auch GET), …/cache-leeren (Administrator). Sammlungen
    werden über ihren Slug angesprochen, nicht über die Datenbank-Id; Fehler
    kommen wie überall in der Schnittstelle als Code mit HTTP 200.
    GET …/sammlungen?alle=1 liefert für Verwalter zusätzlich verwaltung:
    alle Sammlungen, auch ausgeblendete, mit den Feldern der Maske und den
    Auswahllisten. Die Übersicht nennt darfOrdnen, darfVerwalten,
    darfEinstellungen und je Sammlung album und bildquelle.
    POST …/exif beschreibt Postkarten wie die Lightbox: motiv,
    transkription, notiz einzeln, beide Seiten mit Kartenschlüssel und
    Gegenseite, Gesichter nur auf der einen Seite. GET …/eintrag trägt bei
    einer Postkarte ebenso motiv, transkription, notiz und gegenseite.
    api: 6.
  • Drehen zum Lesen. In der Lightbox dreht ↻ oder die Taste R das Bild um
    90 Grad, Umschalt + R zurück – etwa für quer beschriebene Postkarten. Nur
    zum Ansehen: gespeichert wird nichts, die Lage gilt je Bildseite, solange
    die Seite offen ist. Zoomen und Verschieben funktionieren auch gedreht,
    Gesichtsrahmen drehen mit.

Geändert

  • POST …/exif lässt Ungesendetes stehen. Bisher wurden fehlende Felder
    geleert; jetzt bleibt, was nicht mitgeschickt wird, in der Datei. Ein leer
    mitgeschicktes Feld leert wie bisher. Apps, die alle Felder schicken,
    merken keinen Unterschied – außer dass Kartenschlüssel, Gegenseite und
    „Datum unsicher“ einer Postkarte beim Speichern aus der App nicht mehr
    verloren gehen.
  • Postkarten aus der App verlieren keine Rückseite mehr. Schickt eine App
    an eine Postkarte nur eine beschreibung (ohne die Überschriften „Motiv:“,
    „Transkription:“, „Notiz:“), gilt sie als Motiv; Transkription und Notiz
    bleiben stehen, und beide Seiten der Karte bekommen den neuen Text.
  • Umbenennen zieht das Medienobjekt mit. Gehört die Datei zu einem
    Medienobjekt, ändert das Modul jetzt auch dessen FILE-Zeile im Stammbaum
    (wie webtrees selbst beim Umbenennen), statt nur die Suchtabelle – vorher
    zeigte das Medienobjekt danach auf eine Datei, die es nicht mehr gab. Auch
    das Verzeichnis der Gesichter folgt dem neuen Namen. Die Endung der Datei
    lässt sich nicht mehr ändern (aus einem Bild wird keine andere Dateiart).
  • Löschen einer Sammlung räumt auch die Dateizuordnungen ab. Bisher
    blieben die Zuordnungen von Dateien eines Albums in der Datenbank liegen.
  • Zeilenenden aus Textfeldern werden vor dem Schreiben vereinheitlicht und
    stehen nicht mehr als 
 im XMP.

Full Changelog: v1.9.0...v1.10.0

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 17:32

Postkarten. Vorder- und Rückseite als ein Eintrag, wenden per Klick oder
Taste, die Transkription neben der Rückseite – und ein Schreibweg, der die
Scans nicht mehr anfasst.

Postkarten-Galerie

Rückseite mit Transkription und Editor

Bitte beachten: Bei JPEG schreibt das Modul Beschreibung und Datum nur
noch ins XMP, nicht mehr zusätzlich in die klassischen EXIF-Felder
(ImageDescription, DateTimeOriginal). Das Modul selbst, digiKam,
Lightroom und die Windows-Fotoanzeige lesen XMP; ein Betrachter, der nur
das klassische EXIF kennt, zeigt neue Beschriftungen nicht an.

Neu

  • Anzeigetyp „Postkarten“. Für eine Ordner-Sammlung wie „Großmutters
    Postkartensammlung“: PK_0001_V.jpg und PK_0001_R.jpg sind Vorder- und
    Rückseite einer Karte und werden als ein Eintrag gezeigt. Die Kachel zeigt
    die Vorderseite und ein Zeichen, wenn es eine Rückseite gibt; in der
    Lightbox wendet eine Schaltfläche (oder die Taste W) die Karte, neben der
    Rückseite steht die Transkription. Dateien ohne Gegenstück sind Einzelkarten;
    zwei Dateien desselben webtrees-Medienobjekts (ein OBJE mit zwei FILE)
    gelten ebenfalls als Paar. Gezählt und geblättert wird nach Karten.
    Der Ordner gehört in den Medienordner des Stammbaums (etwa
    media/falkenrath/postkarten), sonst bietet ihn die Verwaltung nicht an.
    Ein Datum aus dem klassischen EXIF übernimmt eine Postkarte nicht: bei
    Scans ist das der Speichertag des Bildprogramms, nicht der Poststempel.
  • Editor für Postkarten. Die Seitenleiste hat für eine Karte drei Felder
    statt der Beschreibung: Motiv, Transkription, Notiz. Sie landen mit festen
    Überschriften (Motiv:, Transkription:, Notiz:) in der einen
    XMP-Beschreibung, damit die Datei in jedem anderen Programm lesbar bleibt.
    Gespeichert wird in beide Seiten, mit dem bestehenden Tagesbackup; jede
    Datei bekommt dazu dc:identifier (den Kartenschlüssel) und dc:relation
    (den Dateinamen der Gegenseite). Ein Häkchen „Datum unsicher“ kennzeichnet
    ein erschlossenes Poststempeldatum (sammlungen:DatumUnsicher im eigenen
    XMP-Namensraum; xmp:CreateDate bleibt ein sauberes Datum). Die Galerie
    zeigt es als „um 12.05.1912“.
  • Schnittstelle Stufe 4. Einträge tragen datumUnsicher; in einer
    Postkarten-Sammlung außerdem rueckseite (ein Eintrag oder null), motiv,
    transkription, notiz. api: 4.

Geändert

  • Metadaten werden verlustfrei geschrieben. Bisher lud der EXIF-Dienst das
    Bild mit Imagick und speicherte es mit writeImage() – das JPEG wurde bei
    jedem Speichern der Beschreibung neu komprimiert, die Datei war danach nicht
    mehr der Scan. Jetzt wird bei JPEG nur das XMP-Segment (APP1) ausgetauscht,
    alle anderen Segmente und die Bilddaten bleiben Byte für Byte erhalten
    (identify -format "%#" liefert vorher und nachher dieselbe Signatur;
    Unit-Test über die Scan-Daten). Geschrieben wird in eine Nachbardatei, die
    das Original ersetzt – ein Abbruch lässt es unversehrt. Imagick wird für
    JPEG nicht mehr gebraucht, weder zum Schreiben noch zum Lesen. Die
    EXIF-Felder ImageDescription/DateTimeOriginal, die bisher zusätzlich
    gesetzt wurden, entfallen bei JPEG: das hätte einen eigenen TIFF-Schreiber
    verlangt, der vorhandene Scanner-EXIF-Blöcke beschädigen kann. Gelesen wird
    XMP ohnehin zuerst. PNG, GIF und WebP gehen weiter über Imagick.
  • Fremde Metadaten bleiben erhalten. Bisher baute das Modul das
    XMP-Paket bei jedem Speichern neu, nur aus seinen eigenen Feldern – was
    andere Programme hineingeschrieben hatten, war danach weg: Gesichtsregionen,
    Bewertungen, Farbmarkierungen, Stichwort-Hierarchien, Beschreibungen in
    weiteren Sprachen. Jetzt ersetzt es nur Beschreibung (Fassung x-default),
    Datum, Personen, Stichwörter und die Postkarten-Felder; alles andere bleibt
    stehen, ebenso die Fortsetzungs-Segmente großer XMP-Pakete. Felder in
    Kurzschreibweise (als Attribut) liest und ersetzt es ebenfalls. Ein
    vorhandenes Paket, das kein lesbares XML ist oder eine DTD enthält, wird
    nicht überschrieben; die Lightbox meldet dann einen Fehler.
  • Lightbox bildschirmfüllend am Rechner: Schaltfläche ⛶ oder Taste F.
    Kopfzeile, Wenden und Seitenleiste bleiben bedienbar. Am Telefon füllt wie
    bisher ein Antippen des Bildes den Schirm. Die Karte wenden geht nur noch
    mit W.
  • Galerie-Skript nach Updates neu geladen. Es wurde einen Tag
    zwischengespeichert, der Versionszusatz beim Einbinden fehlte – nach einem
    Update standen neue Knöpfe da und taten nichts.
  • Tasten in der Lightbox wirken nicht mehr, während in der Seitenleiste
    getippt wird (vorher blätterten die Pfeiltasten im Textfeld das Bild weiter).
  • Link zur App: Das Repo von wtAnd heißt jetzt
    app4webtrees (Android-App wtAnd,
    Desktop-Client in Arbeit). Die README verweisen dorthin; der alte Name
    leitet weiter.

Full Changelog: v1.8.0...v1.9.0

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 14:35

Neu

  • Schnittstelle für Apps, Stufe 3: ein Eintrag zu einer Datei.
    GET /tree/{tree}/archiv/api/eintrag?pfad=… liefert zu einer Datei im
    Medienordner denselben Eintrag wie eine Sammlung – EXIF, Personen,
    Adressen. Damit kann wtAnd ein Foto, das es aus dem Stammbaum oder einem
    Profil kennt (api4webtrees 1.4 nennt dort den Pfad), vor dem Bearbeiten
    lesen und dann wie ein Archivbild beschriften. api: 3.

Full Changelog: v1.7.1...v1.8.0

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 22 Sep 13:34

Behoben

  • Fehler der App-Schnittstelle kamen auf der NAS als HTML an. Die Routen
    antworteten mit echten Statuscodes (403, 404, 400), und der nginx davor
    ersetzt bei 4xx den Antworttext durch seine eigene Fehlerseite – das JSON
    mit dem Fehlercode ging verloren, und wtAnd hielt jeden abgelehnten Upload
    für eine abgelaufene Sitzung. Jetzt kommen Fehler wie bei api4webtrees mit
    HTTP 200 und ok:false; der gemeinte Status steht im Feld status.

Full Changelog: v1.7.0...v1.7.1

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 12:17

Neu

  • Schnittstelle für Apps, Stufe 2: schreiben. Zwei POST-Routen für
    „unterwegs festhalten“ – ein Foto aus der Schublade abfotografieren, sagen
    wer drauf ist, fertig:
    /tree/{tree}/archiv/api/hochladen legt eine Datei in einem Ordner des
    Medienordners ab, als Datei im Archiv, nicht als Medienobjekt; Beschreibung,
    Datum und Personen gehen bei Bildern als EXIF/XMP mit, auf Wunsch wird die
    Datei gleich einer thematischen Sammlung zugeordnet. Darf, wer in webtrees
    Medien hochladen darf. /tree/{tree}/archiv/api/exif schreibt dieselben
    Felder an eine vorhandene Bilddatei, mit der Regel der Lightbox: nur
    Verwalter. Die Übersicht nennt jetzt, was der Nutzer darf (darfHochladen,
    darfExif) und die Ordner, in die er hochladen kann (ordnerListe).
    Anders als beim Hochladen in webtrees wird eine vorhandene Datei nicht
    überschrieben und der Upload nicht still in den Hauptordner verschoben: der
    Name bekommt eine Nummer, der Ordner bleibt. api: 2.

Full Changelog: v1.6.0...v1.7.0

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 09:42

Das Archiv kommt in die App. Die Android-App wtAnd
soll zeigen, worum es dem Modul geht: die Fotos, die im Stammbaum an niemandem
hängen. Dafür bekommt das Modul eine lesende Schnittstelle – bewusst hier und
nicht in api4webtrees, damit kein Modul an den Tabellen eines anderen hängt.

Neu

  • Schnittstelle für Apps. Zwei lesende Routen liefern das Archiv als JSON,
    gedacht für wtAnd, offen für jeden Client
    mit dem Sitzungs-Cookie eines Baummitglieds:
    /tree/{tree}/archiv/api/sammlungen (die Übersicht: Ordner-Sammlungen,
    thematische Sammlungen, Sammlungen nach Medientyp, nicht eingebundene Medien,
    freier Bestand) und /tree/{tree}/archiv/api/sammlung?kategorie=… (die
    Einträge einer Sammlung, seitenweise, mit fertigen Adressen für Kachel,
    Vollbild und Original). Die Daten kommen aus derselben Aufbereitung wie die
    Galerie; Seitengröße und Sprache (pro_seite, lang) gelten nur für die
    Antwort und werden nicht beim Nutzer gemerkt. Wer kein Mitglied ist, bekommt
    statt der Anmeldeseite eine JSON-Fehlermeldung (403). Stufe der
    Schnittstelle: api: 1. Beschreibung in der README unter „Schnittstelle für
    Apps“.

Behoben

  • Vorschaubilder fehlten auf SQLite und PostgreSQL, wenn ein GEDCOM die
    Dateiendung groß schreibt (FORM JPG). Die Vorschau-Abfragen verglichen das
    Format nur mit Kleinbuchstaben; MySQL sieht darüber hinweg, die anderen
    nicht. Jetzt zählen beide Schreibweisen.

Full Changelog: v1.5.1...v1.6.0

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 04 Sep 15:41

Zwei Rückmeldungen von Bernat Banyuls, per Mail statt als Issue – und
als eigenes kleines Release, weil die erste davon in v1.5.0 ein Symbol
verschwinden lässt, das vorher wenigstens da war.

Behoben

  • Im Rural-Theme (jon48) fehlte das Menüsymbol ganz. Rural gibt jedem
    Menü ohne eigenes Symbol ein generisches – mit einer Regel ohne Gewicht, die
    jede andere überstimmt. Unsere Grundregel „kein Symbol“ für unbekannte Themes
    tat genau das: alle Menüs hatten ein Symbol, nur unseres nicht. Die Grundregel
    ist gestrichen – ohne Regel zeichnet der Browser ohnehin nichts, Themes ohne
    Symbole bleiben also sauber – und Rural steht mit seinen Maßen (35 Pixel im
    Menü, 24 im Aufklappmenü) in der Größentabelle, sodass dort unser Symbol
    erscheint statt des generischen.

Geändert

  • Thematische Sammlungen ohne gestrichelten Rand. Der gestrichelte Rahmen
    sollte sie von den Ordner-Sammlungen abheben, wurde aber als „noch nicht
    fertig eingerichtet“ gelesen – gestrichelt heißt im Web fast überall
    Platzhalter. Jetzt tragen sie denselben Farbbalken links wie die
    Ordner-Sammlungen; die Unterscheidung leistet die Überschrift mit der
    Reißzwecke.

Full Changelog: v1.5.0...v1.5.1

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 15:06

Vier Anregungen aus Issue #23 von @ro-la – die erste Rückmeldung, die nicht
von einem Fehler handelt, sondern davon, wie sich das Modul anfühlt, wenn man es
nicht selbst gebaut hat. Drei davon sind Bedienung: die Verwaltung liegt jetzt im
Menü, Seitengröße und Darstellung entscheidet der Betrachter statt der Verwalter.
Die vierte war ein Fehler, den niemand sah, dessen Installation aussieht wie
unsere: wer sein Datenverzeichnis verschoben hatte, bekam ein leeres Archiv.

Ein fünfter Punkt – ein Bilderwähler über alle Medienobjekte statt nur die des
Ordners – steht als Issue #24 offen; er ist eine eigene Baustelle, kein Nebensatz.

Behoben

  • Aus der Verwaltung führte kein Weg zurück (Issue #23). Die
    Verwaltungsseiten des Moduls laufen im Verwaltungs-Layout von webtrees, und
    das zeigt kein Genealogie-Menü – oben stehen nur Hilfe, Meine Seite, Sprache,
    Abmelden. Solange man nur über die Schaltfläche auf der Übersicht hineinkam,
    fiel das nicht auf. Seit das Aufklappmenü von jeder Seite aus dorthin einlädt,
    saß man drin fest.

    Jetzt hat jede der vier Verwaltungsseiten die Brotkrumenleiste von webtrees
    selbst – Verwaltung / Einstellungen / Sammlungen verwalten / Name, jedes Glied
    anklickbar – und wo der Baum bekannt ist, führt ein Verweis direkt zurück in
    die Galerie.

  • Der Medienordner musste innerhalb der Installation liegen (Issue #23,
    gemeldet von @ro-la). webtrees erlaubt es, das Datenverzeichnis zu
    verschieben – der empfohlene Weg, die Originaldateien aus der Reichweite der
    Adresszeile zu nehmen. Das Modul setzte den Pfad aber an zwölf Stellen selbst
    aus der Konstante Webtrees::DATA_DIR zusammen, die nur die Vorgabe für die
    Einstellung INDEX_DIRECTORY ist. Wer sein Datenverzeichnis verschoben hatte,
    bekam leere Sammlungen, einen freien Bestand von null und Bilder als 404.

    Eine Stelle war schwerwiegender als der Rest: die Sicherung vor dem Schreiben
    von EXIF prüfte gegen data/media – mit fest verdrahtetem Ordnernamen. Wer
    seinen Medienordner anders nennt, bei dem schlug die Prüfung fehl, die
    Sicherung wurde übersprungen und die Datei ohne Netz überschrieben. Still.

    Alle zwölf Stellen holen den Pfad jetzt aus einer Funktion, die ihn so
    bestimmt wie webtrees selbst. Bei unveränderten Einstellungen kommt Zeichen
    für Zeichen derselbe Pfad heraus wie bisher; ein Test hält das fest, ein
    zweiter, dass die feste Annahme nicht zurückkehrt.

Hinzugefügt

  • Einträge pro Seite in der Ansicht umschaltbar (Issue #23, vorgeschlagen von
    @ro-la), 10 bis 200, gemerkt je Nutzer. Bisher galt eine modulweite Zahl
    für alle und für jedes Gerät gleich – auf einem großen Schirm sind 50 Bilder
    wenig, auf dem Telefon sind dieselben 50 mehrere Megabyte. Die Grenzen des
    Moduls gelten weiter: wer eine größere Zahl in die Adresse schreibt, bekommt
    die Obergrenze.

  • Foto-Raster und große Bilder umschaltbar, aber nur in Bildersammlungen.
    In einer Dokumentensammlung wäre ein Foto-Raster ein Gitter aus PDF-Symbolen;
    dort bleibt die Wahl des Verwalters stehen. Der Vorschlag lautete „Anzeigetyp
    frei wählbar" – umgesetzt ist er dort, wo beide Darstellungen etwas zeigen.

  • Verwaltung direkt aus dem Menü erreichbar (Issue #23, vorgeschlagen von
    @ro-la). Für Administratoren klappt der Menüpunkt jetzt auf: Übersicht,
    Sammlungen verwalten, Einstellungen. Bisher führte der Weg dorthin nur über
    die Schaltfläche auf der Übersichtsseite oder über die Steuerleiste.

    Für alle anderen bleibt es ein einzelner Verweis – ein Klick, Galerie. Ein
    Aufklappmenü kostet dort einen Handgriff und bringt nichts. Die Übersicht
    steht deshalb auch als erster Untereintrag drin: ein Menü mit Untereinträgen
    klappt beim Klick auf, statt zu springen, sonst wäre der kurze Weg zur
    Galerie verloren.

Full Changelog: v1.4.1...v1.5.0

v1.4.1

Choose a tag to compare

@github-actions github-actions released this 27 Aug 16:49

Ein Anzeigefehler, gemeldet von @ro-la – und weil Meldungen selten kommen,
soll er nicht bis zum nächsten Bündel warten.

Behoben

  • Das Menüsymbol überstimmte jedes Theme (Issue #22, gemeldet von @ro-la).
    Es wurde über content: url(...) eingesetzt, fest auf 50 Pixel skaliert und in
    jedem Theme. Über content: eingefügte Bilder ignorieren width und
    height – das Theme konnte sich also nicht wehren. Am Gerät gemessen sind die
    Symbole der Themes 50 Pixel groß (webtrees), 40 (Colors), 28 (Xenea), 22
    (Clouds); minimal, F.A.B. und die meisten fremden Themes haben gar keine. In
    Colors war unseres dadurch mehr als doppelt so groß wie alle anderen, in
    minimal stand ein Bild mitten in einer reinen Textzeile.

    Jetzt ist es ein Hintergrundbild in einer Box fester Größe – damit bestimmen
    wir Größe und Ausrichtung – und es erscheint nur in Themes, die selbst
    Menüsymbole zeigen; erkannt an der Klasse, die webtrees am <body> setzt.
    Statt des Fotos ein flaches SVG, das neben gezeichneten Symbolen nicht
    auffällt. Damit entfällt auch Imagick im Seitenkopf.

Full Changelog: v1.4.0...v1.4.1

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 14:22

Das Modul wird auf dem Telefon benutzbar – und auf jedem Gerät schnell.

Zwei Zahlen fassen das Release zusammen, beide an einer Instanz mit 1826
Archivdateien gemessen: eine Galerieseite wog 174,2 MB und braucht jetzt
4,8 MB
, und sie brauchte 12 Sekunden bis zum ersten Byte und braucht jetzt
0,2
. Dazu eine Bedienung, mit der man Fotos herumzeigen kann, ohne sich zu
entschuldigen: kneifen, schieben, wischen, tippen für randlos.

Der dritte Strang ist die Ehrlichkeit der Zahlen. Der freie Bestand – der Teil
des Archivs, der im Stammbaum nicht auftaucht – wurde falsch gezählt, und zwar
seit 1.0.0 in zwei Richtungen gleichzeitig: Verweise aus Quellen galten als
Einbindung, und Dateien ohne Medienobjekt kamen gar nicht vor. Auf der
Testinstanz meldete die Ansicht deshalb 0 Objekte, wo 1126 Dateien liegen.

Hinzugefügt

  • Bedienung wie in einer Foto-App auf Telefon und Tablet. Die Lightbox
    öffnet dort über die volle Höhe, die Seitenleiste legt sich über das Bild
    statt daneben zu drängen, und die Blätterpfeile weichen den Gesten:

    • zwei Finger vergrößern bis fünffach,
    • ein Finger schiebt das vergrößerte Bild, das dabei im Rahmen bleibt,
    • Doppeltippen fährt auf die getippte Stelle zu und wieder zurück,
    • Wischen blättert weiter, aber nur bei unvergrößertem Bild – sonst wäre
      jedes Verschieben ein Bildwechsel,
    • am Rechner Doppelklick und Strg + Mausrad.

    Hintergrund: quer aufgenommene Fotos füllen auf einem 384 Pixel breiten
    Schirm nur ein Band von rund 256 Pixeln Höhe, egal wie viel Platz darunter
    frei bleibt. Ohne Vergrößern ist darauf kein Gesicht zu erkennen.

  • Einmal aufs Bild tippen räumt Kopfzeile und Vorschauleiste weg und
    fordert zugleich Vollbild an, nochmal tippen holt beides zurück. Ein
    Schließer bleibt oben rechts stehen, sonst käme man nur über die
    Zurück-Taste heraus, und die verlässt im Telefon-Browser die Seite.

    Am S25 Ultra gemessen, quer gehalten und mit einem 3:2-Foto: 284 × 189
    vorher, 576 × 384 nachher
    – gut die vierfache Fläche. Hochkant wächst der
    Rahmen von 646 auf 832 Pixel; ein Querformat-Foto ist dort weiterhin durch
    die Breite begrenzt, gewonnen wird also Schwarz – dafür ist der Zoom da.

    Wo es die Fullscreen-API nicht gibt (iPhone) oder sie abgelehnt wird, bleibt
    es beim Wegräumen der modul-eigenen Leisten.

    Das Vollbild wird dabei nur betreten und erst beim Schließen wieder verlassen.
    Jedes Betreten quittiert der Browser mit seinem Sicherheitshinweis („… ist
    jetzt im Vollbildmodus"), der sich aus der Seite heraus nicht abschalten
    lässt; so erscheint er einmal je Galerie statt bei jedem zweiten Tippen.

Geändert

  • Das Auslesen der Metadaten dekodierte jedes Foto vollständig. Für Angaben,
    die im Dateikopf stehen, öffnete das Modul die ganze Datei: bei einem 7 MB
    großen Bild mit 4796 × 7731 Punkten rund hundert Megabyte Speicher und ein
    Zehntel Sekunde Rechenzeit – mal fünfzig Bilder je Galerieseite. Gemessen
    vergingen so 5,3 Sekunden, bevor das erste Byte beim Browser ankam, beim
    ersten Aufruf einer Seite sogar zwölf.

    Imagick::pingImage() liest nur den Kopf samt EXIF- und XMP-Profil. Dieselbe
    Seite braucht jetzt 125 bis 320 Millisekunden, und die ausgelesenen Werte
    sind unverändert – gegengeprüft an drei Seiten: gleiche Anzahl Beschreibungen,
    Daten und Bildmaße wie vorher.

  • Galerien liefern verkleinerte Bilder statt der Originale. Eine Rasterseite
    schickte bisher 50 Originaldateien: gemessen 174,2 MB, im Mittel mit der
    21-fachen Breite dessen, was auf dem Schirm ankommt – also rund der
    450-fachen Pixelzahl. Jede Kachel wurde zudem zweimal dekodiert, weil dasselbe
    Original als weichgezeichneter Hintergrund dahinterliegt. Auf dem Telefon
    ruckelte davon jedes Blättern und jedes Drehen.

    Jetzt gibt es drei Größen: 400 Pixel für die Kachel, 1600 für die Lightbox,
    das Original hinter „Vollbild in neuem Tab". Dieselbe Seite wiegt damit
    4,8 MB statt 174,2 – ein Sechsunddreißigstel.

    Erzeugt wird mit dem Bildstapel von webtrees selbst (ImageFactory, also
    Imagick oder GD, je nach Server): keine zusätzliche Voraussetzung für andere
    Installationen. Dateien unter 150 KB oder solche, die ohnehin schmaler sind
    als angefordert, gehen unverändert raus – bei denen kostet das Umrechnen mehr
    als es spart (gemessen: 54 ms unverändert gegen 149 ms verkleinert).

  • Ein quer gehaltenes Telefon zählt jetzt als Telefon. Die Regeln für die
    randlose Lightbox hingen an max-width: 767.98px; quer gehalten ist dasselbe
    Gerät 832 Pixel breit und bekam die Darstellung für große Bildschirme, also
    einen geschrumpften Dialog mitten auf dem Schirm. Maßgeblich ist zusätzlich
    die geringe Höhe (max-height: 500px). Die Blätterpfeile verschwinden nun
    nach Eingabegerät (hover: none und pointer: coarse) statt nach
    Fensterbreite – ein schmales Fenster am Rechner hat weiterhin eine Maus.

Behoben

  • Ein Teil der Piktogramme erschien als Fragezeichen. webtrees liefert kein
    vollständiges FontAwesome aus, sondern die Auswahl, die es selbst benutzt –
    ein Name außerhalb dieser Auswahl wird nicht etwa weggelassen, sondern als
    gestrichelter Kreis mit Fragezeichen gezeichnet. Das Modul benutzte 16 solcher
    Namen, unter anderem beim freien Bestand und beim Medienobjekt.

    Alle Symbole laufen jetzt über eine Zuordnung auf das, was vorhanden ist; auch
    die in der Verwaltung frei eingetragenen Namen. Ein Test hält fest, dass im
    Markup kein unbekannter Name mehr steht.

  • Der freie Bestand sah nur Medienobjekte und übersah das Archiv. Gezählt
    wurde in der Datenbank: Medienobjekte ohne Verknüpfung. Ein Archiv besteht
    aber in aller Regel aus Dateien, die gar kein Medienobjekt haben – zu einem
    Vorfahren gehören dutzende Aufnahmen, von denen nur ein paar am Datensatz
    hängen sollen. Der Rest ist kein Rückstand, sondern der Bestand.

    Gezählt wird jetzt vom Dateisystem her: frei ist, was entweder gar nicht als
    Medienobjekt eingetragen ist oder eingetragen ist und an keiner Person
    und keiner Familie hängt. Die Übersicht zeigt die Summe und eine Kachel je
    Ordner. Ein Durchlauf durch das Verzeichnis und zwei Abfragen, nicht eine je
    Datei.

    Am Beispiel eines Archivs mit 1826 Dateien: vorher meldete die Ansicht
    0 Objekte, jetzt 1126 Dateien, aufgeschlüsselt nach Ordner.

  • Der freie Bestand zählte Verweise aus Quellen und Notizen als Einbindung
    und meldete dadurch „Alle Medienobjekte sind mit Personen oder Familien
    verknüpft", obwohl an keiner Person etwas hing. In webtrees darf eine
    OBJE-Zeile in jedem Datensatz stehen – auch in einer Quelle, einer Notiz,
    einem Repositorium oder einem Einreicher. Die Abfrage prüfte nur, dass es
    eine gibt, nicht wer verweist. Wer seine Registerscans an Quellen hängt –
    der Normalfall bei Kirchenbüchern und Standesämtern – bekam einen leeren
    freien Bestand gemeldet, also genau das Gegenteil der Aussage der Ansicht.

    Maßgeblich sind jetzt ausschließlich Personen und Familien. Betroffen waren
    drei Abfragen (Zählung, Auflistung, Vorschaubilder); sie teilen sich die
    Regel nun an einer Stelle. Der Fehler steckt seit 1.0.0 im Modul.

  • Lightbox saß auf dem Telefon um 8 Pixel versetzt und ragte rechts über den
    Bildschirmrand hinaus, wodurch der Schließknopf angeschnitten war. Das
    Bootstrap-Bündel von webtrees ist für Schreibrichtungen aufbereitet und setzt
    den Abstand des Dialogs über [dir] .modal-dialog; Attribut plus Klasse
    schlägt eine einzelne Klasse, unser margin kam nie an. Jetzt wird
    Bootstraps eigene Stellschraube --bs-modal-margin umgestellt.

Full Changelog: v1.3.3...v1.4.0