From 850d687901a01c1fc16f0025812ea48ec135bb73 Mon Sep 17 00:00:00 2001 From: chimo Date: Sun, 17 Aug 2014 13:33:07 -0400 Subject: [PATCH] Added adaptNoticeListItem and PollListItem --- plugins/Poll/PollPlugin.php | 64 ++--------------- plugins/Poll/lib/polllistitem.php | 114 ++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 59 deletions(-) create mode 100644 plugins/Poll/lib/polllistitem.php diff --git a/plugins/Poll/PollPlugin.php b/plugins/Poll/PollPlugin.php index 2a5805015c..ff98bcfb30 100644 --- a/plugins/Poll/PollPlugin.php +++ b/plugins/Poll/PollPlugin.php @@ -137,6 +137,11 @@ 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 * @@ -375,65 +380,6 @@ class PollPlugin extends MicroAppPlugin } } - - function showNoticeContent(Notice $notice, HTMLOutputter $out) - { - switch ($notice->object_type) { - case self::POLL_OBJECT: - return $this->showNoticePoll($notice, $out); - case self::POLL_RESPONSE_OBJECT: - return $this->showNoticePollResponse($notice, $out); - default: - // TRANS: Exception thrown when performing an unexpected action on a poll. - // TRANS: %s is the unexpected object type. - throw new Exception(sprintf(_m('Unexpected type for poll plugin: %s.'), $notice->object_type)); - } - } - - function showNoticePoll(Notice $notice, $out) - { - $user = common_current_user(); - - // @hack we want regular rendering, then just add stuff after that - $nli = new NoticeListItem($notice, $out); - $nli->showNotice(); - - $out->elementStart('div', array('class' => 'e-content poll-content')); - $poll = Poll::getByNotice($notice); - if ($poll) { - if ($user) { - $profile = $user->getProfile(); - $response = $poll->getResponse($profile); - if ($response) { - // User has already responded; show the results. - $form = new PollResultForm($poll, $out); - } else { - $form = new PollResponseForm($poll, $out); - } - $form->show(); - } - } else { - // TRANS: Error text displayed if no poll data could be found. - $out->text(_m('Poll data is missing')); - } - $out->elementEnd('div'); - - // @fixme - $out->elementStart('div', array('class' => 'e-content')); - } - - function showNoticePollResponse(Notice $notice, $out) - { - $user = common_current_user(); - - // @hack we want regular rendering, then just add stuff after that - $nli = new NoticeListItem($notice, $out); - $nli->showNotice(); - - // @fixme - $out->elementStart('div', array('class' => 'e-content')); - } - function entryForm($out) { return new NewPollForm($out); diff --git a/plugins/Poll/lib/polllistitem.php b/plugins/Poll/lib/polllistitem.php new file mode 100644 index 0000000000..95f3f47465 --- /dev/null +++ b/plugins/Poll/lib/polllistitem.php @@ -0,0 +1,114 @@ +. + * + * @category Poll + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * An adapter to show polls in a nicer way + * + * @category Poll + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class PollListItem extends NoticeListItemAdapter +{ + // @fixme which domain should we use for these namespaces? + const POLL_OBJECT = 'http://activityschema.org/object/poll'; + const POLL_RESPONSE_OBJECT = 'http://activityschema.org/object/poll-response'; + + function showNotice() + { + $notice = $this->nli->notice; + $out = $this->nli->out; + + switch ($notice->object_type) { + case self::POLL_OBJECT: + return $this->showNoticePoll($notice, $out); + case self::POLL_RESPONSE_OBJECT: + return $this->showNoticePollResponse($notice, $out); + default: + // TRANS: Exception thrown when performing an unexpected action on a poll. + // TRANS: %s is the unexpected object type. + throw new Exception(sprintf(_m('Unexpected type for poll plugin: %s.'), $notice->object_type)); + } + } + + function showNoticePoll(Notice $notice, $out) + { + $user = common_current_user(); + + // @hack we want regular rendering, then just add stuff after that + $nli = new NoticeListItem($notice, $out); + $nli->showNotice(); + + $out->elementStart('div', array('class' => 'e-content poll-content')); + $poll = Poll::getByNotice($notice); + if ($poll) { + if ($user) { + $profile = $user->getProfile(); + $response = $poll->getResponse($profile); + if ($response) { + // User has already responded; show the results. + $form = new PollResultForm($poll, $out); + } else { + $form = new PollResponseForm($poll, $out); + } + $form->show(); + } + } else { + // TRANS: Error text displayed if no poll data could be found. + $out->text(_m('Poll data is missing')); + } + $out->elementEnd('div'); + + // @fixme + $out->elementStart('div', array('class' => 'e-content')); + } + + function showNoticePollResponse(Notice $notice, $out) + { + $user = common_current_user(); + + // @hack we want regular rendering, then just add stuff after that + $nli = new NoticeListItem($notice, $out); + $nli->showNotice(); + + // @fixme + $out->elementStart('div', array('class' => 'e-content')); + } +}