-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/holiday timeframe multiselect #1296
Conversation
…frame-multiselect
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## master #1296 +/- ##
============================================
+ Coverage 41.14% 43.14% +1.99%
- Complexity 2334 2384 +50
============================================
Files 91 91
Lines 9235 9462 +227
============================================
+ Hits 3800 4082 +282
+ Misses 5435 5380 -55 ☔ View full report in Codecov by Sentry. |
# Conflicts: # tests/Model/BookingTest.php
# Conflicts: # src/Model/Timeframe.php
# Conflicts: # assets/admin/js/src/timeframe.js # tests/Model/BookingTest.php # tests/Wordpress/CustomPostTypeTest.php
# Conflicts: # src/Plugin.php
# Conflicts: # assets/admin/js/admin.min.js
# Conflicts: # src/Model/Timeframe.php # src/Wordpress/CustomPostType/CustomPostType.php # tests/Wordpress/CustomPostTypeTest.php
# Conflicts: # assets/admin/js/admin.js # assets/admin/js/admin.min.js
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hallo @hansmorb, ich habe nur Kleinigkeiten anzumerken.
Zusätzliche Anmerkung: Wieso nennen wir die postmeta-Strings der neuen Felder nicht location-id-list
anstatt location-ids
, dadurch sind sie etwas einfacher (durch mehr als einen Buchstaben) unterscheidbar.
Das klingt gut, habe ich gleich mal umgesetzt |
# Conflicts: # tests/php/Wordpress/CustomPostTypeTest.php
Documents `@since` version in the private/public api and format the indentation correctly.
EDIT 2024-02-04 von @datengraben - Aufteilung via Überschriften und
EDIT 2024-02-08 von @datengraben - Name des Meta-Feld
TLDR; Ein Versuch, existierende Changes schon älterer Branches für das "Multiselect bei Holidays"-Feature neu aufzusetzen und sie mit Unit-Tests zu versehen.
Was
Ermöglicht Nutzenden mehrere Artikel / Standorte einem Urlaub Zeitrahmen zuzuordnen, dabei haben die Nutzenden die Auswahl zwischen folgenden Multi-Select-Typen:
Multi-Select-Typ: Manuelle Auswahl
Multi-Select-Typ: Kategorieauswahl
Multi-Select-Typ: "Alle"
Wie
Ein neues Metafeld namens "location-id-list" bzw. "item-id-list" wird angelegt, das existiert parallel zu "item-id" und "location-id" und kommt nur bei Holiday Zeitrahmen zum Tragen.
Für die Kategorie und Alle Auswahl wird beim Speichern des Timeframe automatisch das location-id-list bzw. item-id-list array mit den aktuellen Werten aktualisiert. (Also was aktuell zu diesem Zeitpunkt Artikel sind die in Kategorie sind oder die IDs von allen Artikeln).
Da unsere SQL Queries postIds brauchen, müssen wir das so machen. Also muss auch dieses location-id-list und item-id-list Metafeld regelmäßig aktualisiert werden. Das passiert wenn:
Mehr brauchen wir nicht, wenn ein Artikel / Standort gelöscht wird ist das nicht schlimm. Wenn eine Kategorie zugewiesen wird, wird der Artikel / Standort aktualisiert.
Warum nicht alle Zeitrahmen
Es gibt noch zu viele Funktionen, die bei Buchbaren Zeitrahmen immer nur GENAU einen Standort / genau ein Item erwarten. Die wurden mit TODO #507 markiert. Diese Stellen müssten geändert werden um eine Zuweisung auf Buchbare Zeitrahmen zu ermöglichen.
Darüber hinaus ergibt die Option "Alle Standorte" bei buchbaren Zeitrahmen keinen Sinn.
Refactored
Ich habe die Zugriffe auf die itemID & locationID von magic gettern zu einer eigenen Methode gemacht. Das hat den Hintergrund, dass wir bei mehreren Items für einen Timeframe nicht einfach getItems()->ID machen können, da getItems() immer eine Array zurückgibt. Aktuell funktioniert zwar noch getItem()->ID, aber wenn wir das später mal umbauen wollen ist es einfacher wenn das ein Methodenaufruf ist. Darüber hinaus gibt es Methoden wie getTags(), die den Metakey item-id bzw. location-id direkt ziehen, da wollte ich ermöglichen, dass das auch mit mehreren items/locations geht ohne immer die items / location posts aus der Datenbank ziehen zu müssen.
Diskutiert
Sollen beim Timeframe Export mehrere Items so dargestellt werden (obere Zeile)
oder soll der Timeframe mehrere Zeilen haben, jeweils immer mit anderen Werten?
EDIT: Plenum 29.10. :
Mögliche TO-Dos: