Kalender im Posting als Erweiterung

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 8410
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von Kirk »

Ich habe es jetzt die listener so abgeändert:

Code: Alles auswählen

    public function add_calendar($event)
    {
    $this->template->assign_vars(array(
         $row = $event['row'],
               'MONTH_YEAR'        => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
                'DATE'              => $this->user_OBJ->format_date($row['post_time'], 'd', false),
    ));
    }
}
Ext deaktiviert und komplett gelöscht, Cache geleert, EXT aktiviert aber leider keine Veränderung.
Kann es sein das ich für format_date noch irgendwas einfügen muss?
In der services.yml habe ich das hier noch hinzugefügt - @template
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von D@ve »

Ohne jetzt genau zu wissen, was dieses Event macht. Du willst die $event['row'] verändern, dann musst Du das auch wieder an das Event-Array zurückgeben. ODER Du schreibst das direkt ins Template, aber nicht beides gleichzeitig ;-)

Also entweder so...

Code: Alles auswählen

   public function add_calendar($event)
    {
         $row = $event['row'];
         $row[ 'MONTH_YEAR'] = $this->user_OBJ->format_date($row['post_time'], 'M Y', false);
         $row[ 'DATE'] = $this->user_OBJ->format_date($row['post_time'], 'd', false),
         $event['row'] = $row;
  } 
(hier holst Du Dir aus dem Event-Objekt das Array "row" und fügst Du zwei Template-Variablen hinzu und schreibst das wieder zurück ins Event-Objekt:


oder so:

Code: Alles auswählen

        public function add_calendar($event)
        {
        $this->template->assign_vars(array(
                   'MONTH_YEAR'        => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
                    'DATE'              => $this->user_OBJ->format_date($row['post_time'], 'd', false),
        ));
        } 
(Hier ignorierst Du das Event-Objekt und schreibst Deine Variablen direkt ins Template)
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 8410
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von Kirk »

Ich habe in der listner.php das hier eingetragen:

Code: Alles auswählen

        public function add_calendar($event)
        {
        $this->template->assign_vars(array(
                   'MONTH_YEAR'        => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
                    'DATE'              => $this->user_OBJ->format_date($row['post_time'], 'd', false),
        ));
        }
Die html Datei sieht so aus:

Code: Alles auswählen

            <div class="calendar_sheet">
                <div class="date">
                    <span class="month">{postrow.MONTH_YEAR}</span>
                    <span class="day">{postrow.DATE}</span>
                </div>
            </div>
Jetzt bekomme ich wieder diese Fehlermeldung:
phpBB Debug] PHP Notice: in file [ROOT]/ext/kirk/calendarinposting/event/listener.php on line 63: Undefined variable: row

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='http://de.php.net/datetime.construct'>d ... nstruct</a>]: Failed to parse time string (@) at position 0 (@): Unexpected character' in /users/kirk2/www/phpBB3/phpbb/datetime.php:50 Stack trace: #0 /users/kirk2/www/phpBB3/phpbb/datetime.php(50): DateTime->__construct('@', Object(DateTimeZone)) #1 /users/kirk2/www/phpBB3/phpbb/user.php(720): phpbb\datetime->__construct(Object(phpbb\user), '@', Object(DateTimeZone)) #2 /users/kirk2/www/phpBB3/ext/kirk/calendarinposting/event/listener.php(63): phpbb\user->format_date(NULL, 'M Y', false) #3 [internal function]: kirk\calendarinposting\event\listener->add_calendar(Object(phpbb\event\data)) #4 /users/kirk2/www/phpBB3/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(phpbb\event\data)) #5 /users/kirk2/www/phpBB3/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'core.viewtopic_...', Object(phpbb\event\data)) #6 /users/kirk2/www/phpBB3/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php(167): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('core.viewtopic_...', Object(phpbb\event\data)) #7 /users/kirk2/www/phpBB3/phpbb/event/dispatcher.php(40): Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('core.viewtopic_...', Object(phpbb\event\data)) #8 /users/kirk2/www/phpBB3/viewtopic.php(1728): phpbb\event\dispatcher->trigger_event('core.viewtopic_...', Array) #9 {main} thrown in /users/kirk2/www/phpBB3/phpbb/datetime.php on line 50
Trage ich es so ein:

Code: Alles auswählen

    public function add_calendar($event)
    {
    $this->template->assign_vars(array(
         $row = $event['row'],
               'MONTH_YEAR'        => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
                'DATE'              => $this->user_OBJ->format_date($row['post_time'], 'd', false),
    ));
    }
wird mir zwar keine Fehlermeldung angezeigt, dafür aber auch kein Datum.
So sollte es ausschauen: [ externes Bild ]
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von Elsensee »

Naja.. du musst row schon noch aus dem Objekt holen.. Aber warum da bei dir bei der zweiten Version kein Syntax-Fehler kommt, verwirrt mich.. In PHP darf man offenbar echt alles... :o
Zumindest is $row vor dem Array noch nicht initialisiert, weshalb du das Objekt noch nicht benutzen kannst. (Aber es sollte trotzdem.. ach egal :-? )

Muss dann also so heißen:

Code: Alles auswählen

public function add_calendar($event)
{
    $row = $event['row'];
    $this->template->assign_vars(array(
               'MONTH_YEAR'        => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
                'DATE'              => $this->user_OBJ->format_date($row['post_time'], 'd', false),
    ));
} 
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 8410
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von Kirk »

Danke Elsensee aber es wird immer noch kein Datum in dieser Grafik angezeigt.
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von Elsensee »

Hmm.. Natürlich.

Schließlich willst du es ja pro Beitrag ausgeben - deswegen muss das sowas sein, wie $this->template->assign_block_vars(.... :wink:

Schritt 1: Das Event core.viewtopic_modify_post_row anstelle von core.viewtopic_modify_post_action_conditions benutzen. :wink:
Schritt 2: D@ves erste Version benutzen - so halb... Es muss eine andere Variable verändert werden. Zumindest kannst du die Variablen nicht direkt ans Template übergeben. Du musst es aber nicht so machen - du kannst es auch so machen:

Code: Alles auswählen

public function add_calendar($event)
{
    $row = $event['row'];
    $event['post_row'] = array_merge($event['post_row'], array(
        'MONTH_YEAR'        => $this->user_OBJ->format_date($row['post_time'], 'M Y', false),
        'DATE'              => $this->user_OBJ->format_date($row['post_time'], 'd', false),
    ));
} 
Das ist Erhalten, Verändern und Zurückgeben in quasi nur einem Schritt. :D
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 8410
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Kalender im Posting als Erweiterung

Beitrag von Kirk »

Jetzt funktioniert es, vielen Dank Elsensee :)
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 5086
Registriert: 08.06.2009 12:03

Re: Kalender im Posting als Erweiterung

Beitrag von Talk19zehn »

Hello, "Bedankomat" und "Gratulation" an Elsensee, der mit wenigen logischen Informationen das Ziel einleitete. Vielen Dank dafür, da ich Nicht-phpLer mitfieberte und suchte, suchte, suchte, um zu verstehen.
Man oh man, --- ich hatte gerade das Date-Format in Verdacht und wühlte vergeblich in jenen Strukturen. Dir Kirk, viel Glück mit der Extension. :grin: 8)

Grüße
Adventereigniskalender für phpBB 3.3.x
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren. Meine Tastatur klemmt. Nichts anderes zählt?
Antworten

Zurück zu „Extension Bastelstube“