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: 7874
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: 7874
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: 7874
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: 7874
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: 4917
Registriert: 08.06.2009 12:03
Kontaktdaten:

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
Beste Grüße
phpBB3 Designs: Stylearea Ongray-Designs
Antworten

Zurück zu „Extension Bastelstube“