Skip to content

Releases: WHYdesignstudio/immoadmin-wordpress

v2.11.1 — Reservierte Zeilen sitzen an der richtigen Stelle

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 10 Aug 13:15

Reservierte Wohnungen erschienen mitten in einer fremden Zeile — auf liesi.wien steckten Mackgasse 11 Top 2 und 3 in der Zeile von Mackgasse 9 Top 37 — und wurden von der Klick-Sortierung nicht mitsortiert.

Reservierte, verkaufte und vermietete Wohnungen werden ohne Akkordion gerendert. Die Aufräumroutine aus v2.10.3, die von Bricks falsch eingehängte Zeilen zurückholt, kannte nur die Akkordion-Variante und ließ genau diese Zeilen verschachtelt zurück. Sie erkennt jetzt beide Zeilentypen.

v2.11.0 — Sortierung blendet keine Wohnungen mehr aus

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 10 Aug 12:53

Beim Sortieren nach Haus (oder jedem anderen Feld) verschwanden Wohnungen, denen das Sortierfeld fehlt — auf liesi.wien betraf das die reservierten Einheiten.

Die Sortierung lief über eine meta_query-Bedingung, und jede Form davon, nach der WordPress sortieren kann, filtert zugleich. Sie hängt den Sortierwert jetzt per LEFT JOIN an: eine fehlende Angabe kostet eine Wohnung ihre Position, nie ihre Zeile. Wohnungen ohne Wert stehen am Ende — in beide Sortierrichtungen.

v2.10.3 — Klick-Sortierung erfasst nachgeladene Zeilen

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 10 Aug 12:24

Nach "mehr anzeigen" sortierte ein Klick auf eine Spaltenüberschrift nur die ursprünglich geladenen Zeilen — nach Haus sortiert blieb Mackgasse 11 immer unten.

Ursache: Bricks hängt jede nachgeladene Seite in die letzte bereits vorhandene Zeile hinein statt in die Tabelle. Sichtbar fällt das nicht auf, der Sortierer sah dadurch aber nur die erste Seite. Die Zeilen werden jetzt wieder in die Tabelle einsortiert, sobald sie ankommen.

v2.10.2 — Sortierung greift auch im Frontend

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 10 Aug 12:12

Die in v2.10.0 eingeführte Sortierung wirkte nur im Builder, im Frontend blieb die alte Reihenfolge stehen.

Ursache: die Filter-Elemente über der Tabelle (Zimmer, Wohnfläche, Preis) bauen die Tabellen-Query bereits auf, um ihre eigenen Optionen zu füllen — also bevor die Tabelle rendert. Die Sortierung wurde aber erst beim Rendern registriert und kam damit zu spät.

v2.10.1 — Sortier-Fixes

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 10 Aug 12:07

Behebt zwei Fehler aus v2.10.0:

  • Zweite Sortierung greift jetzt. Innerhalb eines Hauses wurde nicht nach Türnummer geordnet, sondern beliebig (Türnummern kamen absteigend). Das Feld ist jetzt ein Dropdown "Zweite Sortierung: Stiege & Tür / Keine" statt einer Checkbox.
  • "Mackgasse 9" kommt vor "Mackgasse 11". Vorher sortierte die Datenbank Hausnamen zeichenweise, also "11" vor "9".

v2.10.0 — Sortierung im Builder wählbar

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 10 Aug 11:28

Die Tabellen-Sortierung lässt sich jetzt direkt am Element einstellen: Verhalten → Sortierung.

  • Dropdown mit Klartext-Optionen: Stiege & Tür, Türnummer, Stiege, Haus / Gebäude, Geschoss, Wohnfläche, Zimmer, Kaufpreis, Miete (kalt), Preis pro m², Status, Objekttyp, Titel, Zuletzt hinzugefügt — oder "Eigenes Feld …" für einen eigenen Meta-Key.
  • Richtung: aufsteigend / absteigend.
  • Danach nach Stiege & Tür sortieren: Tiebreak, damit z. B. "Haus aufsteigend" innerhalb eines Hauses weiter nach Türnummer ordnet.

Vorher waren die beiden Sortier-Controls im Builder wirkungslos — die Reihenfolge kam nur aus dem Bricks-Query-Panel.

v2.9.0 — Preis & Exposé bei reserviert/verkauft schützen

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 17 Jul 05:13

Fix: Reservierte Wohnungen gaben Preis und Exposé preis

Bei reservierten Einheiten standen Preis und Exposé-PDF weiterhin im DOM und das Accordion ließ sich aufklappen. Die Status-Logik kannte bisher nur sold/rentedreserved fiel durch jede Prüfung.

Neu

  • Redaction für reserved / sold / rented: Preis- und Dokumentspalten werden serverseitig gar nicht erst aufgelöst. Kein Preis, keine PDF-URL — weder im Markup noch in href, data-sort-value oder aria-label.
  • Kein Aufklappen: Betroffene Zeilen rendern ohne Panel, ohne tabindex, ohne aria-expanded.
  • REST & Detailseiten: Preis-/Dokument-Meta fliegen aus der REST-Antwort, Detailseiten liefern 404, Archiv/Feed/Sitemap listen sie nicht mehr. Redakteure sehen weiterhin alles.

Fix

  • .is-dimmed hat nie abgeblendet: Die Regel saß auf einer display:contents-Zeile, wo opacity wirkungslos ist. Zielt jetzt auf die Zellen.

Unverändert (bewusst)

Das Control „Verkaufte / vermietete Wohnungen" (Anzeigen/Abblenden/Ausblenden) bleibt bei sold/rented — reservierte Wohnungen sind noch am Markt und sollen sichtbar bleiben, nur eben ohne Preis und PDF.

Die PDF-Datei selbst bleibt für jeden abrufbar, der ihre URL bereits kennt. Die URLs sind nicht erratbar (Zufalls-ID + Content-Hash), und eine gesperrte Einheit zeigt ihren Status ohnehin.

v2.8.2 — Accordion Oversized-Image Guard

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 30 Jun 12:30

Fix: oversized images no longer tear the units-table accordion

Wide images dropped into the accordion panel via dynamic data (e.g. full-resolution floor plans from {cf_floor_plan_N}) could stretch the whole table grid to thousands of pixels in horizontal-scroll mode, pushing the panel content off-screen so it looked blank/broken.

The scroll wrapper is now a CSS query container and the accordion panel (plus its media) is capped to the visible width (100cqw), pinned with sticky; left:0. Panel content can no longer expand the grid regardless of the source image's dimensions.

No template or settings changes required — auto-applies after update.

v2.8.1 — Device-aware Scroll Hint Label

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 28 May 13:56

Improvement

Der Scroll-Hinweis Label ist jetzt geräte-spezifisch:

  • Touch (Handy/Tablet): Wischen (Default)
  • Desktop mit Maus: Scrollen (Default)

Erkennung via `matchMedia('(hover: hover) and (pointer: fine)')`. Beide Texte sind im Bricks-Builder unabhängig anpassbar:

  • "Scroll-Hinweis Text (Touch)"
  • "Scroll-Hinweis Text (Desktop)"

Default-Span-Text bleibt das Touch-Label, damit No-JS-Mobile-User immer noch was sehen.

v2.8.0 — Scroll Hint + Webhook Hardening

Choose a tag to compare

@KarlosSchmidtos KarlosSchmidtos released this 28 May 13:34

New Feature — Scroll Hint Overlay (Bricks)

In der Bricks Units-Table unter Verhalten:

  • Neuer Toggle: Scroll-Hinweis anzeigen (Default an, erscheint wenn "Horizontal scrollen" aktiv)
  • Konfigurierbarer Label-Text (Default "Wischen")
  • Animierte Pill rechts unten — SVG-Hand zwischen zwei Chevrons, wackelt sanft
  • Erscheint NUR wenn Tabelle wirklich Overflow hat (scrollWidth > clientWidth)
  • Verschwindet bei erstem User-Scroll, nach 6 Sekunden, oder wenn ResizeObserver meldet dass Overflow weg ist
  • Respektiert prefers-reduced-motion

Security Hardening

  • class-webhook.phpget_client_ip() nutzt CF-Connecting-IP → X-Forwarded-For (erster Hop) → REMOTE_ADDR. Vorher: hinter Cloudflare/Coolify war die ganze Welt in einem 20/min Limit gebucketet.
  • class-webhook.php — Rate-Limit Buckets werden nur bei AUTH-FEHLERN inkrementiert. Erfolgreiche Requests verbrauchen kein Budget. Verhindert DoS via Wrong-Token-Flood.
  • class-webhook.php — Neuer per-Token Bucket (200/min) so dass eine missbrauchte IP nicht den legitimen Token-Owner aussperren kann.
  • class-sync.phpcleanup_orphan_media nutzt jetzt die GLEICHE sanitize_file_name() Transformation wie der Downloader. Vorher wurden Dateien mit Umlauten/Sonderzeichen fälschlich als Orphans gelöscht.