PollListItem freed from noticeListItemAdapter clutches

In the future, use events for formatting microapp notices, more specifically
through the plugin's function "showNoticeContent" or similar, which is called
from MicroAppPlugin, which is extended from ActivityHandlerPlugin.
This commit is contained in:
Mikael Nordfeldth
2014-10-26 14:48:02 +01:00
parent fe92d7cf95
commit f69f713360
4 changed files with 37 additions and 122 deletions

View File

@@ -137,11 +137,6 @@ class PollPlugin extends MicroAppPlugin
return array(self::POLL_OBJECT, self::POLL_RESPONSE_OBJECT);
}
function adaptNoticeListItem($nli) {
return new PollListItem($nli);
}
/**
* When a notice is deleted, delete the related Poll
*
@@ -445,4 +440,31 @@ class PollPlugin extends MicroAppPlugin
return true;
}
protected function showNoticeContent(Notice $stored, HTMLOutputter $out, Profile $scoped=null)
{
if ($stored->object_type == self::POLL_RESPONSE_OBJECT) {
parent::showNoticeContent($stored, $out, $scoped);
return;
}
// If the stored notice is a POLL_OBJECT
$poll = Poll::getByNotice($stored);
if ($poll instanceof Poll and $scoped instanceof Profile) {
$response = $poll->getResponse($scoped);
if ($response instanceof Poll_response) {
// User has already responded; show the results.
$form = new PollResultForm($poll, $out);
} else {
$form = new PollResponseForm($poll, $out);
}
$form->show();
} elseif (!$scoped instanceof Profile) {
// TRANS: No current user's profile, so we can't take a reply.
$out->text(_m('You must be logged in to respond to this poll.'));
} else {
// TRANS: Error text displayed if no poll data could be found.
$out->text(_m('Poll data is missing'));
}
}
}