Kalender erweitern

  • Hallo zusammen,


    Ich wollte schauen ob ich den Kalender für Gilde Ready mache. Hierfür müsste ich beim Anmelden 2 Auswahlboxen hinzugefügt werden und beim Anzeigen eines Termins die eventParticipationList.tpl angepasst.

    Das hinzufügen von Informationen an den event points ist ja kein Problem. Wie sieht es denn aus wenn man Template Änderungen machen muss? Geht das per Plugin? Kann ich hier templates überschreiben / meine als "default" vorgeben?


    Gruß

    Dave

  • Hallo.

    Wie sieht es denn aus wenn man Template Änderungen machen muss?

    Dafür gibt es in den bestehenden Templates sogenannte Template-Listener (siehe {event name='XY'}-Blöcke in den Templates), wo du eigene Sachen einfügen kannst. So kannst du beispielsweise ein weiteres Template an dieser Stelle inkludieren oder auch Javascript-Code einschleusen, der das eigentliche Template manipuliert.


    Alternativ kannst du auch AbstractPage::$templateName (davon erbt jede Seite und jedes Formular) überschreiben und somit komplett dein eigenes Template anzeigen lassen.

    Geht das per Plugin?

    Ja, wie oben genannt entweder per Template-Listener oder per Eventlistener, welcher das bestehende Template komplett ersetzt.

    Kann ich hier templates überschreiben / meine als "default" vorgeben?

    Zum Überschreiben bleibt dir nur die Möglichkeit übrig, es per Eventlistener zu machen. Du kannst dich beispielsweise an folgendem Plugin von Black Rider orientieren, wo genau das gemacht wird:

  • Hi,


    Danke dir.

    An eine Lösung per Js Manipulation habe ich auch schon gedacht aber ich finde die Lösung nicht gerade "sauber". Das andere werde ich mir mal anschauen was ich damit machen kann :)

  • Hi,


    Habe noch nen kleines Problem derzeit. Beim anmelden an einen Termin wird die Seite nicht komplett neu geladen sondern nur per Ajax die Liste der angemeldeten User.

    Als Funtkion wird dafür genutzt: calendar\data\event\date\EventDateAction::save()


    Mein Problem ist aber hierbei das ich das Template nicht überschreiben kann da es 1. kein event "saved" gibt und dazu wird das template per "return" direkt in der Funktion gesetzt.


    kennt hier jemand eine passende Lösung?

  • Nun habe ich es soweit geschafft alles beim Kalender so zu ändern wie ich es gerne möchte. Leider gibt es scheinbar keine Möglichkeit bei Ajax Requests die Templates zu ändern.

    Wenn ich die Dateien mit meinem Paket überschreiben will kommt die Meldung:

    Code
    A package can't overwrite files from other packages. Only an update from the package which owns the file can do that. (Package 'de.edvunger.raid' tries to overwrite file 'lib/data/event/date/EventDateAction.class.php', which is owned by package 'com.woltlab.calendar')

    Eine Saubere Lösung Tempaltes/Quellcode Teile auszutauschen/erweitern gibt es also nicht?

  • wirst du da vermutlich schlechte Karten haben.

    Ich mach mich mal unbeliebt. ReflectionClass -> ReflectionProperty -> ReflectionProperty#getValue()? Aber ob man damit in den Pluginstore kommt ist recht fraglich.

  • Mir geht es nicht unbedingt darum das in den Pluginstore zu bekommen ;) Sondern für meine Gilde den Kalender nach unseren wünschen anzupassen.

    Bei einem Installationspaket ist das updaten am Ende doch einfacher.


    Muss ich gleich mal schauen ob mit den beiden Tipps weiter komme. Danke euch.

  • Also nach viel Sucharbeit im Quellcode sieht meine derzeitige Lösung so aus:


    Ich habe ein Event wcf\system\WCF@initialized hinzugefügt der dann meinen RequestHandler aufruft. Dort prüfe ich dann (leider bei jedem Aufruf einer Seite) className und actionName und ändere dann className auf meine eigene Klasse.


    Ich denke mit der extra RequestHandler Klasse kann ich leben und werde sie auch auf anderen Seiten benutzen um paar Ajax Daten zu manipulieren. Mit der neuen Klasse kann ich dann auch auf alles der Ursprungsklasse zugreifen und habe die möglichkeit alle Funktionen wie ich möchte zu ersetzen / zu ergänzen. Somit bin ich hier allem in allem sehr Flexibel unterwegs trotz zusätzlicher IF Abfrage bei jedem Seitenaufruf und in dem Fall doppelten template rendern bei der EventDateAction::save() Funktion


    Danke an Sebastian S. und Morik für die Tipps

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!