From 4d0f42aea2b70b2bbae23584e215e1b832d6c9d2 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sat, 9 Apr 2011 16:58:38 -0400 Subject: [PATCH] Events for showing the 'tail' of a threaded notice --- EVENTS.txt | 22 ++++++++++++++++- lib/threadednoticelist.php | 49 ++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/EVENTS.txt b/EVENTS.txt index 08a4273ec9..eb848bb888 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -1162,4 +1162,24 @@ StartShowGroupProfileBlock: When showing the profile block for a group EndShowGroupProfileBlock: After showing showing the profile block for a group - $out: XMLOutputter to append custom output -- $group: the group being shown \ No newline at end of file +- $group: the group being shown + +StartShowThreadedNoticeTail: when showing the replies etc. to a notice +- $nli: parent noticelistitem +- $notice: parent notice +- &$children: list of children + +EndShowThreadedNoticeTail: when showing the replies etc. to a notice +- $nli: parent noticelistitem +- $notice: parent notice +- $children: list of children + +StartShowThreadedNoticeSub: when showing a reply to a notice +- $nli: parent noticelistitem +- $parent: parent notice +- $child: child notice + +EndShowThreadedNoticeSub: when showing a reply to a notice +- $nli: parent noticelistitem +- $parent: parent notice +- $child: child notice diff --git a/lib/threadednoticelist.php b/lib/threadednoticelist.php index b686e17629..c5cd2d3081 100644 --- a/lib/threadednoticelist.php +++ b/lib/threadednoticelist.php @@ -185,33 +185,40 @@ class ThreadedNoticeListItem extends NoticeListItem $notices[] = clone($notice); // *grumble* inefficient as hell } - $this->out->elementStart('ul', 'notices threaded-replies xoxo'); + if (Event::handle('StartShowThreadedNoticeTail', array($this, $this->notice, &$notices))) { + $this->out->elementStart('ul', 'notices threaded-replies xoxo'); - $item = new ThreadedNoticeListFavesItem($this->notice, $this->out); - $hasFaves = $item->show(); + $item = new ThreadedNoticeListFavesItem($this->notice, $this->out); + $hasFaves = $item->show(); - $item = new ThreadedNoticeListRepeatsItem($this->notice, $this->out); - $hasRepeats = $item->show(); + $item = new ThreadedNoticeListRepeatsItem($this->notice, $this->out); + $hasRepeats = $item->show(); - if ($notices) { - if ($moreCutoff) { - $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out); - $item->show(); + if ($notices) { + if ($moreCutoff) { + $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out); + $item->show(); + } + foreach (array_reverse($notices) as $notice) { + if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) { + $item = new ThreadedNoticeListSubItem($notice, $this->out); + $item->show(); + Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice)); + } + } } - foreach (array_reverse($notices) as $notice) { - $item = new ThreadedNoticeListSubItem($notice, $this->out); - $item->show(); + + if ($notices || $hasFaves || $hasRepeats) { + // @fixme do a proper can-post check that's consistent + // with the JS side + if (common_current_user()) { + $item = new ThreadedNoticeListReplyItem($this->notice, $this->out); + $item->show(); + } } + $this->out->elementEnd('ul'); + Event::handle('EndShowThreadedNoticeTail', array($this, $this->notice, $notices)); } - if ($notices || $hasFaves || $hasRepeats) { - // @fixme do a proper can-post check that's consistent - // with the JS side - if (common_current_user()) { - $item = new ThreadedNoticeListReplyItem($this->notice, $this->out); - $item->show(); - } - } - $this->out->elementEnd('ul'); } parent::showEnd();