Merge branch '0.9.x'

This commit is contained in:
Brion Vibber 2011-03-18 16:39:41 -07:00
commit f6e22da122
2 changed files with 64 additions and 19 deletions

View File

@ -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. * Hook for RouterInitialized event.
* *
@ -101,16 +101,45 @@ class ModPlusPlugin extends Plugin
return true; return true;
} }
/**
* Add per-profile info popup menu for author on notice lists.
*
* @param NoticeListItem $item
* @return boolean hook value
*/
function onStartShowNoticeItem($item) 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)); $isRemote = !(User::staticGet('id', $profile->id));
if ($isRemote) { if ($isRemote) {
$target = common_local_url('remoteprofile', array('id' => $profile->id)); $target = common_local_url('remoteprofile', array('id' => $profile->id));
$label = _m('Remote profile options...'); $label = _m('Remote profile options...');
$item->out->elementStart('div', 'remote-profile-options'); $out->elementStart('div', 'remote-profile-options');
$item->out->element('a', array('href' => $target), $label); $out->element('a', array('href' => $target), $label);
$item->out->elementEnd('div'); $out->elementEnd('div');
} }
} }
} }

View File

@ -4,20 +4,36 @@
*/ */
$(function() { $(function() {
function ModPlus_setup(notice) { // Notice lists...
if ($(notice).find('.remote-profile-options').size()) { $('.notice .author').live('mouseenter', function(e) {
var $options = $(notice).find('.remote-profile-options'); var notice = $(this).closest('.notice');
$options.prepend($()) var popup = notice.find('.remote-profile-options');
$(notice).find('.author').mouseenter(function(event) { if (popup.length) {
$(notice).find('.remote-profile-options').fadeIn(); popup.fadeIn();
});
$(notice).mouseleave(function(event) {
$(notice).find('.remote-profile-options').fadeOut();
});
} }
});
$('.notice').live('mouseleave', function(e) {
var notice = $(this);
var popup = notice.find('.remote-profile-options');
if (popup.length) {
popup.fadeOut();
} }
});
$('.notice').each(function() { // Profile lists...
ModPlus_setup(this); $('.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();
}
});
}); });