Commit e6afd16c authored by Brion Vibber's avatar Brion Vibber

ModPlus plugin -- Ticket #3095: add remote profile options popup to group...

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.
parent 0ea360c4
......@@ -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();
}
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment