forked from GNUsocial/gnu-social
Share plugin now handles showing form in NoticeOptionItems
This commit is contained in:
parent
d24c4f349f
commit
dcfcceb6f2
@ -225,10 +225,7 @@ class ShowstreamAction extends ProfileAction
|
||||
|
||||
function showNotices()
|
||||
{
|
||||
$pnl = null;
|
||||
if (Event::handle('ShowStreamNoticeList', array($this->notice, $this, &$pnl))) {
|
||||
$pnl = new ProfileNoticeList($this->notice, $this);
|
||||
}
|
||||
$pnl = new NoticeList($this->notice, $this);
|
||||
$cnt = $pnl->show();
|
||||
if (0 == $cnt) {
|
||||
$this->showEmptyListMessage();
|
||||
|
@ -302,6 +302,7 @@ $default =
|
||||
'AuthCrypt' => array(),
|
||||
'Cronish' => array(),
|
||||
'Favorite' => array(),
|
||||
'Share' => array(),
|
||||
'LRDD' => array(),
|
||||
'StrictTransportSecurity' => array(),
|
||||
),
|
||||
|
@ -193,7 +193,6 @@ class NoticeListItem extends Widget
|
||||
$this->out->elementStart('div', 'notice-options');
|
||||
if (Event::handle('StartShowNoticeOptionItems', array($this))) {
|
||||
$this->showReplyLink();
|
||||
$this->showRepeatForm();
|
||||
$this->showDeleteLink();
|
||||
Event::handle('EndShowNoticeOptionItems', array($this));
|
||||
}
|
||||
@ -605,34 +604,6 @@ class NoticeListItem extends Widget
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* show the form to repeat a notice
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRepeatForm()
|
||||
{
|
||||
if ($this->notice->scope == Notice::PUBLIC_SCOPE ||
|
||||
$this->notice->scope == Notice::SITE_SCOPE) {
|
||||
$user = common_current_user();
|
||||
if (!empty($user) &&
|
||||
$user->id != $this->notice->profile_id) {
|
||||
$this->out->text(' ');
|
||||
$profile = $user->getProfile();
|
||||
if ($profile->hasRepeated($this->notice)) {
|
||||
$this->out->element('span', array('class' => 'repeated',
|
||||
// TRANS: Title for repeat form status in notice list when a notice has been repeated.
|
||||
'title' => _('Notice repeated.')),
|
||||
// TRANS: Repeat form status in notice list when a notice has been repeated.
|
||||
_('Repeated'));
|
||||
} else {
|
||||
$rf = new RepeatForm($this->out, $this->notice);
|
||||
$rf->show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* finish the notice
|
||||
*
|
||||
|
@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
|
||||
class ProfileNoticeList extends NoticeList
|
||||
{
|
||||
function newListItem($notice)
|
||||
{
|
||||
return new ProfileNoticeListItem($notice, $this->out);
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
|
||||
// We don't show the author for a profile, since we already know who it is!
|
||||
|
||||
/**
|
||||
* Slightly modified from standard list; the author & avatar are hidden
|
||||
* in CSS. We used to remove them here too, but as it turns out that
|
||||
* confuses the inline reply code... and we hide them in CSS anyway
|
||||
* since realtime updates come through in original form.
|
||||
*
|
||||
* Remaining customization right now is for the repeat marker, where
|
||||
* it'll list who the original poster was instead of who did the repeat
|
||||
* (since the repeater is you, and the repeatee isn't shown!)
|
||||
* This will remain inconsistent if realtime updates come through,
|
||||
* since those'll get rendered as a regular NoticeListItem.
|
||||
*/
|
||||
class ProfileNoticeListItem extends DoFollowListItem
|
||||
{
|
||||
/**
|
||||
* show a link to the author of repeat
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRepeat()
|
||||
{
|
||||
if (!empty($this->repeat)) {
|
||||
|
||||
// FIXME: this code is almost identical to default; need to refactor
|
||||
|
||||
$attrs = array('href' => $this->profile->profileurl,
|
||||
'class' => 'url');
|
||||
|
||||
if (!empty($this->profile->fullname)) {
|
||||
$attrs['title'] = $this->profile->getFancyName();
|
||||
}
|
||||
|
||||
$this->out->elementStart('span', 'repeat');
|
||||
|
||||
$text_link = XMLStringer::estring('a', $attrs, $this->profile->nickname);
|
||||
|
||||
// TRANS: Link to the author of a repeated notice. %s is a linked nickname.
|
||||
$this->out->raw(sprintf(_('Repeat of %s'), $text_link));
|
||||
|
||||
$this->out->elementEnd('span');
|
||||
}
|
||||
}
|
||||
}
|
@ -137,21 +137,4 @@ class GNUsocialProfileExtensionsPlugin extends Plugin
|
||||
array('nickname' => $nav->action->trimmed('nickname'))), _('Bio'),
|
||||
_('The user\'s extended profile'), $nav->action->trimmed('action') == 'bio', 'nav_bio');
|
||||
}
|
||||
|
||||
//Why the heck is this shoved into this plugin!?!? It deserves its own!
|
||||
function onShowStreamNoticeList($notice, $action, &$pnl)
|
||||
{
|
||||
//TODO: This function is called after the notices in $notice are superfluously retrieved in showstream.php
|
||||
$newnotice = new Notice();
|
||||
$newnotice->profile_id = $action->user->id;
|
||||
$newnotice->orderBy('modified DESC');
|
||||
$newnotice->whereAdd('reply_to IS NULL');
|
||||
$newnotice->limit(($action->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
|
||||
$newnotice->find();
|
||||
|
||||
$pnl = new NoticeTree($newnotice, $action);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -39,10 +39,7 @@ class RemoteProfileAction extends ShowstreamAction
|
||||
$this->raw(common_markup_to_html($markdown));
|
||||
}else{
|
||||
|
||||
$pnl = null;
|
||||
if (Event::handle('ShowStreamNoticeList', array($this->notice, $this, &$pnl))) {
|
||||
$pnl = new ProfileNoticeList($this->notice, $this);
|
||||
}
|
||||
$pnl = new NoticeList($this->notice, $this);
|
||||
$cnt = $pnl->show();
|
||||
if (0 == $cnt) {
|
||||
$this->showEmptyListMessage();
|
||||
|
@ -161,22 +161,16 @@ class SharePlugin extends ActivityVerbHandlerPlugin
|
||||
// ActivityObject is instead turned into an Activity
|
||||
$object = new Activity();
|
||||
$object->verb = ActivityVerb::SHARE;
|
||||
$object->type = $notice->object_type;
|
||||
$object->title = sprintf(_('%1$s repeated a notice by %2$s'),
|
||||
$object->getProfile()->getNickname(),
|
||||
$target->getProfile()->getNickname());
|
||||
$object->content = $notice->rendered;
|
||||
$this->extendActivity($stored, $act);
|
||||
|
||||
return $object;
|
||||
}
|
||||
|
||||
public function deleteRelated(Notice $notice)
|
||||
{
|
||||
try {
|
||||
$fave = Fave::fromStored($notice);
|
||||
$fave->delete();
|
||||
} catch (NoResultException $e) {
|
||||
// Cool, no problem. We wanted to get rid of it anyway.
|
||||
}
|
||||
// No action needed as we don't have a separate table for share objects.
|
||||
return true;
|
||||
}
|
||||
|
||||
// API stuff
|
||||
@ -260,20 +254,26 @@ class SharePlugin extends ActivityVerbHandlerPlugin
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function onStartShowNoticeOptionItems($nli)
|
||||
public function onEndShowNoticeOptionItems($nli)
|
||||
{
|
||||
if (Event::handle('StartShowFaveForm', array($nli))) {
|
||||
// FIXME: Use bitmasks (but be aware that PUBLIC_SCOPE is 0!)
|
||||
if ($nli->notice->scope == Notice::PUBLIC_SCOPE ||
|
||||
$nli->notice->scope == Notice::SITE_SCOPE) {
|
||||
$scoped = Profile::current();
|
||||
if ($scoped instanceof Profile) {
|
||||
if (Fave::existsForProfile($nli->notice, $scoped)) {
|
||||
$disfavor = new DisfavorForm($nli->out, $nli->notice);
|
||||
$disfavor->show();
|
||||
if ($scoped instanceof Profile &&
|
||||
$scoped->getID() !== $nli->notice->getProfile()->getID()) {
|
||||
|
||||
if ($scoped->hasRepeated($nli->notice)) {
|
||||
$nli->out->element('span', array('class' => 'repeated',
|
||||
// TRANS: Title for repeat form status in notice list when a notice has been repeated.
|
||||
'title' => _('Notice repeated.')),
|
||||
// TRANS: Repeat form status in notice list when a notice has been repeated.
|
||||
_('Repeated'));
|
||||
} else {
|
||||
$favor = new FavorForm($nli->out, $nli->notice);
|
||||
$favor->show();
|
||||
$repeat = new RepeatForm($nli->out, $nli->notice);
|
||||
$repeat->show();
|
||||
}
|
||||
}
|
||||
Event::handle('EndShowFaveForm', array($nli));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user