tkrebs / ep3-bs

Online booking system for courts
http://bs.hbsys.de/
MIT License
181 stars 108 forks source link

Namen des 2. Spielers anzeigen #401

Open cysus opened 4 years ago

cysus commented 4 years ago

Hallo,

wie kann man den Namen des obligatorischen 2. Spielers im Kalender neben dem 1. Spieler anzeigen lassen?

z.B. Boris Becker - Michael Stich

Besten Dank...

Shineson1001 commented 4 years ago

Hi @cysus,

bei uns werden die Namen in einem Tooltip angezeigt ... weil die Felder schon für einen Namen fast zu klein sind .. und theoretisch bis zu 4 Namen angezeigt werden könnten. grafik

cysus commented 4 years ago

Hi @cysus,

bei uns werden die Namen in einem Tooltip angezeigt ... weil die Felder schon für einen Namen fast zu klein sind .. und theoretisch bis zu 4 Namen angezeigt werden könnten. grafik

Danke. Wie aktiviert man die Tooltips?

Shineson1001 commented 4 years ago

Hi, aktivieren kann man die Tooltip leider nicht ... die Funktion haben wir selber reinprogrammiert und ich müsste dir die zig Quellcodeänderungen zur Verfügung stellen.

obel1x commented 4 years ago

Ich hätte diese Funktion auch gerne. Lieber wäre mir sogar noch die Anzeige von Details in dem Popup, wenn man auf die Reservierung drückt. Aktuell steht da "Dieser Platz ist bereits belegt." - da hätte ich gerne "... von Boris Becker - Michael Stich" usw stehen. Ich könnte die Änderungen auch als Commit in Git in meinem Fork einbauen... ABER leider komme ich mit dem Zend- Framework so gar nicht klar (ich kann zwar PHP, aber das nicht). Kann mir wer mal sagen, welche IDE einem dieses ganze Modulgeraffel mal einfach macht und mir nen Tipp geben, womit ich unter Linux entwickeln kann?

Da off topic gerne an obel1x at web.de. Wenn ich dies Zeugs mit dem Framework kapiere, dann baue ich euch das ein.

Shineson1001 commented 4 years ago

Hi @obel1x, ich nutze Eclipse IDE for PHP Developers (Version: 2018-09 (4.9.0), Build id: 20180917-1800) .. wohl unter Windows.

obel1x commented 4 years ago

Hab ich nun auch installiert. Meine Änderungen würden sich sogar recht einfach in der Datei /ep3-bs/module/Square/view/square/square/index.occupied.phtml einbauen lassen. Da wird aber ausschließlich mit dem Objekt "$this" gearbeitet. Ich verstehe nicht: Wie ist das Objekt aufgebaut? Wo finde ich die Attribute, die Methoden? Wo die Definitionen? Eclipse gibt mir dazu keine Infos - irgendwie versteht er das Zend-Framework so nicht. Wie bringe ich den PDTs bei, wie die Autoloader des ZF2 funktionieren - oder übersehe ich da was?

Shineson1001 commented 4 years ago

Hi @obel1x, am einfachsten wäre es, wenn du dir Eclipse noch als Debug-Umgebung einrichtest. Dann kannst du einen Breakpoint an die relevanten Stellen setzen, und dann den Stack rauf und runter hoppeln, wenn der Breakpoint angesprungen wird, und kommst so recht schnell an die Stellen, wo die entsprechende Objekte ($this) instanziert werden ... im Grunde braucht man keine Wissen über die Funktionsweise vom Zend-Framework.

obel1x commented 4 years ago

Hey @Shineson1001 - danke! ich habe jetzt eclipse pdt mit composer-support, das ding hier geklont, nen apache+php-fpm aufgesetzt und komme auch in den Debugger. Nun sehe ich zwar ganz hübsch die Variabeln, aber das bringt mir sehr wenig, weil ich immer noch nicht weiss, was this genau kann. ich sehe dann methode, wie $this->partial(x) - auf die wäre ich aber im leben nicht gekommen. nach wie vor ist die type hierarchy leer, es lässt sich auch nix rein ziehen - versuche ich die Methode mit der Menüoption "Open in Type Hierarchy" zu öffnen kommt "The Resource is not on the build path of a script project". Auch die "quick type hierarchy" ist komplett leer. So komme ich nicht zum fliegen, wenn ich nich weiss woher die objekte kommen und was die können. Sollte eclispe pdt nicht die klassen des Projects und alle methoden automatisch laden? Evlt. fehlt da irgendeine Pfadangabe? Was muss ich bei PSR-0 und PSR-4 /Autoloader des Projekts angeben? Da hab ich nichts eingestellt, muss man das machen?

Shineson1001 commented 4 years ago

Hi @obel1x, ich gehe grob so vor. Ich suche mir im HTML-Code die Stelle, die ich anpassen möchte und versuche anhand von eindeutigen Markmalen (zB TAG-Folgen oder Class-Verwendungen) die Stelle im php-Code zu finden. Im Falle des Spielernames sollte man in der Cell.php landen und kann dort den Breakpoint setzen und die Seite über den Debugger laden lassen: grafik Die Änderungen/Erweiterungen muss man mit zusätzlichen Parameter in die Funktion reinreichen ... Über den Aufrufstack kommt man an die Stelle, an der man die zusätzlichen Infos abgreifen und weitergegben kann. Um die zusätzlichen Spielernamen ermitteln und weitergeben zu können, musst du wahrscheinlich 3 verschiedenen Seite anpassen ... die erste Seite baut die Seite zusammen, wenn man nicht angemeldet ist, die zweite Seite, wenn man als normaler Benutzer angemeldet ist und die dritte Seite, wenn man als Admin angemeldet ist.

Shineson1001 commented 3 years ago

Hi @cysus, wie viel Platz hast du pro Zelle um die zusätzlichen Namen anzeigen lassen zu können? Man kann ja theoretisch beliebig viele Mitspieler eintragen.

MacHoliday commented 3 years ago

Hallo Shineson1001, bist du erfolgreich gewesen? Ich suche auch nach einer Lösung für die Anzeige der Mitspieler im Popup, wenn man auf die Reservierung drückt. Kannst du deine Lösung ggf. teilen? Danke! VG Andreas

Shineson1001 commented 3 years ago

Hi @MacHoliday. du brauchst die Namen in diesem Popup? grafik

MacHoliday commented 3 years ago

Hi, danke für deine Antwort. Genau, in diesem Popup sollten alle Spielernamen stehen. Aber nur für Benutzer sichtbar, die gerade angemeldet sind.

Shineson1001 commented 3 years ago

Hi @MacHoliday, sieht aktuell in meiner Testumgebung so aus .. wenn man angemeldet ist, dann kommt eine Zeile mit den Namen hinzu. grafik

So sieht die Buchung im Detail aus: grafik

MacHoliday commented 3 years ago

Hi Shineson1001, genau so habe ich mir das vorgestellt! 👍 Wie hast du das realisiert? Mit der Version 1.7.0? Danke und viele Grüße Andreas

Shineson1001 commented 3 years ago

Hi @MacHoliday, ja, ich habe die Änderungen in der aktuellsten Version gemacht.

Die Patch Datei einfach in den Hauptordner von ep3-bs kopieren, kann nach dem Import wieder gelöscht werden, und dann mit git importieren:

Prüfen ob die Änderungen anwendbar sind

git apply --stat 0001-Im-Reservierungsfenster-wird-der-Reservierer-und-die.txt

Grob die Änderungen anzeigen

git apply --check 0001-Im-Reservierungsfenster-wird-der-Reservierer-und-die.txt

Patch importieren

git apply --index 0001-Im-Reservierungsfenster-wird-der-Reservierer-und-die.txt

Änderungen für den Commit vorbereiten/stage'n

git add module/Square/src/Square/Service/SquareValidator.php git add module/Square/src/Square/Service/SquareValidatorFactory.php git add module/Square/view/square/square/index.occupied.phtml

Änderungen ins lokale Git Repo übernehmen

git commit -m "Im Reservierungsfenster wird der Reservierer und die Mitspieler angezeigt."

Patch-Datei: 0001-Im-Reservierungsfenster-wird-der-Reservierer-und-die.txt

MacHoliday commented 3 years ago

Hallo Shineson1001, vielen Dank. Ich kämpfe noch mit der Ersteinrichtung git ... Kannst du mir bitte die geänderten Dateien zur Verfügung stellen? Danke VG Andreas

MacHoliday commented 3 years ago

Um die Mitspieler anzuzeigen hab ich nun die Datei -> module\Square\view\square\square\index.occupied.phtml wie folgt erweitert:

<?php

$squareType = $this->option('subject.square.type');

if ($this->notBookableReason) {
    $reason = $this->notBookableReason;

} else {
    $reason = $this->t('This %s is already occupied.');

}

echo sprintf('<p><span class="red">' . $reason . '</span></p>', $squareType);

if ($user !== null) {
$reservation = current($reservations);
$booking = $reservation->needExtra('booking');
$playerNames = $booking->getMeta('player-names');
        $outputPlayerNames = null;
        if ($playerNames) {
            $playerNames = @unserialize($playerNames);
            if ($playerNames) {
                foreach ($playerNames as $playerData) {
                    $nameData = $playerData['value'];
                    if ($nameData !== "") {
                        if ($outputPlayerNames === null) {
                            $outputPlayerNames = $nameData;
                        } else {
                            $outputPlayerNames .= sprintf('<br />%1$s', $nameData);
                        }
                    }
                }
            }
        }

echo sprintf('<p>Mitspieler:</br>%s</p>', $outputPlayerNames);  

}
Shineson1001 commented 3 years ago

Hi @MacHoliday, es sind insgesamt 3 Dateien, die angepasst werden müssen.

\module\Square\src\Square\Service\SquareValidator.php: SquareValidator.php \module\Square\src\Square\Service\SquareValidatorFactory.php: SquareValidatorFactory.php \module\Square\view\square\square\index.occupied.phtml: index.occupied.phtml

MacHoliday commented 3 years ago

DANKE! Funktioniert!

Sahel2021 commented 3 years ago

Hallo, ich habe gestern die aktuelle Version installiert und würde auch gerne das Popup mit den Namen der Spieler haben.

es sind insgesamt 3 Dateien, die angepasst werden müssen. \module\Square\src\Square\Service\SquareValidator.php: SquareValidator.php \module\Square\src\Square\Service\SquareValidatorFactory.php: SquareValidatorFactory.php \module\Square\view\square\square\index.occupied.phtml: index.occupied.phtml

Ich habe diese 3 Dateien angepasst, aber ein Popup erscheint noch nicht. Muss sonst noch was geändert werden? Grüße, Mattthias

Shineson1001 commented 3 years ago

Hi @Sahel2021, die Anpassung erzeugt keinen neuen Tooltip, sondern erweitert nur den Text des bestehenden Popups .. Siehe https://github.com/tkrebs/ep3-bs/issues/401#issuecomment-782459453