forked from GNUsocial/gnu-social
ModPlus plugin -- Ticket #3095: add remote profile options popup to group membership and other profile lists
Popup remote profile options menu now shown on profile lists as well as notice lists.
This commit is contained in:
parent
0ea360c498
commit
e6afd16c02
@ -84,7 +84,7 @@ class ModPlusPlugin extends Plugin
|
||||
}
|
||||
|
||||
/**
|
||||
* Add OpenID-related paths to the router table
|
||||
* Add ModPlus-related paths to the router table
|
||||
*
|
||||
* Hook for RouterInitialized event.
|
||||
*
|
||||
@ -101,16 +101,45 @@ class ModPlusPlugin extends Plugin
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add per-profile info popup menu for author on notice lists.
|
||||
*
|
||||
* @param NoticeListItem $item
|
||||
* @return boolean hook value
|
||||
*/
|
||||
function onStartShowNoticeItem($item)
|
||||
{
|
||||
$profile = $item->profile;
|
||||
$this->showProfileOptions($item->out, $item->profile);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add per-profile info popup menu on profile lists.
|
||||
*
|
||||
* @param ProfileListItem $item
|
||||
*/
|
||||
function onStartProfileListItemProfile($item)
|
||||
{
|
||||
$this->showProfileOptions($item->out, $item->profile);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build common remote-profile options structure.
|
||||
* Currently only adds output for remote profiles, nothing for local users.
|
||||
*
|
||||
* @param HTMLOutputter $out
|
||||
* @param Profile $profile
|
||||
*/
|
||||
protected function showProfileOptions(HTMLOutputter $out, Profile $profile)
|
||||
{
|
||||
$isRemote = !(User::staticGet('id', $profile->id));
|
||||
if ($isRemote) {
|
||||
$target = common_local_url('remoteprofile', array('id' => $profile->id));
|
||||
$label = _m('Remote profile options...');
|
||||
$item->out->elementStart('div', 'remote-profile-options');
|
||||
$item->out->element('a', array('href' => $target), $label);
|
||||
$item->out->elementEnd('div');
|
||||
$out->elementStart('div', 'remote-profile-options');
|
||||
$out->element('a', array('href' => $target), $label);
|
||||
$out->elementEnd('div');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
// Notice lists...
|
||||
$('.notice .author').live('mouseenter', function(e) {
|
||||
var notice = $(this).closest('.notice');
|
||||
var popup = notice.find('.remote-profile-options');
|
||||
@ -18,4 +19,21 @@ $(function() {
|
||||
popup.fadeOut();
|
||||
}
|
||||
});
|
||||
|
||||
// Profile lists...
|
||||
$('.profile .avatar').live('mouseenter', function(e) {
|
||||
var profile = $(this).closest('.profile');
|
||||
var popup = profile.find('.remote-profile-options');
|
||||
if (popup.length) {
|
||||
popup.fadeIn();
|
||||
}
|
||||
});
|
||||
$('.profile').live('mouseleave', function(e) {
|
||||
var profile = $(this);
|
||||
var popup = profile.find('.remote-profile-options');
|
||||
if (popup.length) {
|
||||
popup.fadeOut();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user