ep3-bs icon indicating copy to clipboard operation
ep3-bs copied to clipboard

Namen des 2. Spielers anzeigen

Open cysus opened this issue 4 years ago • 22 comments

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...

cysus avatar Sep 09 '20 13:09 cysus

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

Shineson1001 avatar Sep 10 '20 16:09 Shineson1001

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?

cysus avatar Sep 10 '20 19:09 cysus

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.

Shineson1001 avatar Sep 11 '20 08:09 Shineson1001

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.

obel1x avatar Sep 21 '20 18:09 obel1x

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

Shineson1001 avatar Sep 22 '20 06:09 Shineson1001

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?

obel1x avatar Sep 22 '20 14:09 obel1x

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.

Shineson1001 avatar Sep 22 '20 20:09 Shineson1001

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?

obel1x avatar Oct 17 '20 15:10 obel1x

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 avatar Oct 18 '20 19:10 Shineson1001

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.

Shineson1001 avatar Oct 24 '20 19:10 Shineson1001

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

MacHoliday avatar Feb 16 '21 07:02 MacHoliday

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

Shineson1001 avatar Feb 16 '21 20:02 Shineson1001

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

MacHoliday avatar Feb 16 '21 21:02 MacHoliday

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

Shineson1001 avatar Feb 19 '21 23:02 Shineson1001

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

MacHoliday avatar Feb 20 '21 05:02 MacHoliday

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

Shineson1001 avatar Feb 20 '21 09:02 Shineson1001

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 avatar Feb 22 '21 06:02 MacHoliday

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);	

}

MacHoliday avatar Feb 23 '21 12:02 MacHoliday

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

Shineson1001 avatar Feb 23 '21 18:02 Shineson1001

DANKE! Funktioniert!

MacHoliday avatar Feb 25 '21 06:02 MacHoliday

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

Sahel2021 avatar Aug 13 '21 12:08 Sahel2021

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

Shineson1001 avatar Aug 14 '21 18:08 Shineson1001