Merge branch 'master' into testing

This commit is contained in:
Brion Vibber 2010-04-05 10:42:41 -07:00
commit b71f276ed5
8 changed files with 198 additions and 49 deletions

View File

@ -212,6 +212,7 @@ class GroupMemberListItem extends ProfileListItem
} }
} }
function showGroupBlockForm() function showGroupBlockForm()
{ {
$user = common_current_user(); $user = common_current_user();
@ -224,7 +225,24 @@ class GroupMemberListItem extends ProfileListItem
$bf->show(); $bf->show();
$this->out->elementEnd('li'); $this->out->elementEnd('li');
} }
}
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'members')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
function homepageAttributes()
{
if (common_config('nofollow', 'members')) {
$aAttrs['rel'] = 'nofollow';
}
} }
} }

View File

@ -32,8 +32,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1); exit(1);
} }
require_once INSTALLDIR.'/lib/profilelist.php';
/** /**
* This class outputs a paginated list of profiles self-tagged with a given tag * This class outputs a paginated list of profiles self-tagged with a given tag
* *
@ -124,8 +122,8 @@ class PeopletagAction extends Action
$profile->query(sprintf($qry, $this->tag, $lim)); $profile->query(sprintf($qry, $this->tag, $lim));
$pl = new ProfileList($profile, $this); $ptl = new PeopleTagList($profile, $this); // pass the ammunition
$cnt = $pl->show(); $cnt = $ptl->show();
$this->pagination($this->page > 1, $this->pagination($this->page > 1,
$cnt > PROFILES_PER_PAGE, $cnt > PROFILES_PER_PAGE,
@ -146,3 +144,33 @@ class PeopletagAction extends Action
} }
} }
class PeopleTagList extends ProfileList
{
function newListItem($profile)
{
return new PeopleTagListItem($profile, $this->action);
}
}
class PeopleTagListItem extends ProfileListItem
{
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'peopletag')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
function homepageAttributes()
{
if (common_config('nofollow', 'peopletag')) {
$aAttrs['rel'] = 'nofollow';
}
}
}

View File

@ -388,18 +388,23 @@ class ShowgroupAction extends GroupDesignAction
$this->elementStart('div', array('id' => 'entity_members', $this->elementStart('div', array('id' => 'entity_members',
'class' => 'section')); 'class' => 'section'));
$this->element('h2', null, _('Members')); if (Event::handle('StartShowGroupMembersMiniList', array($this))) {
$pml = new ProfileMiniList($member, $this); $this->element('h2', null, _('Members'));
$cnt = $pml->show();
if ($cnt == 0) {
$this->element('p', null, _('(None)'));
}
if ($cnt > MEMBERS_PER_SECTION) { $gmml = new GroupMembersMiniList($member, $this);
$this->element('a', array('href' => common_local_url('groupmembers', $cnt = $gmml->show();
array('nickname' => $this->group->nickname))), if ($cnt == 0) {
_('All members')); $this->element('p', null, _('(None)'));
}
if ($cnt > MEMBERS_PER_SECTION) {
$this->element('a', array('href' => common_local_url('groupmembers',
array('nickname' => $this->group->nickname))),
_('All members'));
}
Event::handle('EndShowGroupMembersMiniList', array($this));
} }
$this->elementEnd('div'); $this->elementEnd('div');
@ -502,3 +507,26 @@ class GroupAdminSection extends ProfileSection
return null; return null;
} }
} }
class GroupMembersMiniList extends ProfileMiniList
{
function newListItem($profile)
{
return new GroupMembersMiniListItem($profile, $this->action);
}
}
class GroupMembersMiniListItem extends ProfileMiniListItem
{
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'members')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
}

View File

@ -163,4 +163,22 @@ class SubscribersListItem extends SubscriptionListItem
$bf->show(); $bf->show();
} }
} }
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'subscribers')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
function homepageAttributes()
{
if (common_config('nofollow', 'subscribers')) {
$aAttrs['rel'] = 'nofollow';
}
}
} }

View File

@ -299,4 +299,8 @@ $default =
), ),
'api' => 'api' =>
array('realm' => null), array('realm' => null),
'nofollow' =>
array('subscribers' => true,
'members' => true,
'peopletag' => true),
); );

View File

@ -139,25 +139,30 @@ class ProfileAction extends OwnerDesignAction
$this->elementStart('div', array('id' => 'entity_subscribers', $this->elementStart('div', array('id' => 'entity_subscribers',
'class' => 'section')); 'class' => 'section'));
$this->element('h2', null, _('Subscribers')); if (Event::handle('StartShowSubscribersMiniList', array($this))) {
$cnt = 0; $this->element('h2', null, _('Subscribers'));
if (!empty($profile)) { $cnt = 0;
$pml = new ProfileMiniList($profile, $this);
$cnt = $pml->show(); if (!empty($profile)) {
if ($cnt == 0) { $sml = new SubscribersMiniList($profile, $this);
$this->element('p', null, _('(None)')); $cnt = $sml->show();
if ($cnt == 0) {
$this->element('p', null, _('(None)'));
}
} }
}
if ($cnt > PROFILES_PER_MINILIST) { if ($cnt > PROFILES_PER_MINILIST) {
$this->elementStart('p'); $this->elementStart('p');
$this->element('a', array('href' => common_local_url('subscribers', $this->element('a', array('href' => common_local_url('subscribers',
array('nickname' => $this->profile->nickname)), array('nickname' => $this->profile->nickname)),
'class' => 'more'), 'class' => 'more'),
_('All subscribers')); _('All subscribers'));
$this->elementEnd('p'); $this->elementEnd('p');
}
Event::handle('EndShowSubscribersMiniList', array($this));
} }
$this->elementEnd('div'); $this->elementEnd('div');
@ -254,3 +259,23 @@ class ProfileAction extends OwnerDesignAction
} }
} }
class SubscribersMiniList extends ProfileMiniList
{
function newListItem($profile)
{
return new SubscribersMiniListItem($profile, $this->action);
}
}
class SubscribersMiniListItem extends ProfileMiniListItem
{
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'subscribers')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
}

View File

@ -181,9 +181,8 @@ class ProfileListItem extends Widget
function showAvatar() function showAvatar()
{ {
$avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE); $avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
$this->out->elementStart('a', array('href' => $this->profile->profileurl, $aAttrs = $this->linkAttributes();
'class' => 'url entry-title', $this->out->elementStart('a', $aAttrs);
'rel' => 'contact'));
$this->out->element('img', array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE), $this->out->element('img', array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE),
'class' => 'photo avatar', 'class' => 'photo avatar',
'width' => AVATAR_STREAM_SIZE, 'width' => AVATAR_STREAM_SIZE,
@ -223,8 +222,8 @@ class ProfileListItem extends Widget
{ {
if (!empty($this->profile->homepage)) { if (!empty($this->profile->homepage)) {
$this->out->text(' '); $this->out->text(' ');
$this->out->elementStart('a', array('href' => $this->profile->homepage, $aAttrs = $this->homepageAttributes();
'class' => 'url')); $this->out->elementStart('a', $aAttrs);
$this->out->raw($this->highlight($this->profile->homepage)); $this->out->raw($this->highlight($this->profile->homepage));
$this->out->elementEnd('a'); $this->out->elementEnd('a');
} }
@ -299,4 +298,17 @@ class ProfileListItem extends Widget
{ {
return htmlspecialchars($text); return htmlspecialchars($text);
} }
function linkAttributes()
{
return array('href' => $this->profile->profileurl,
'class' => 'url entry-title',
'rel' => 'contact');
}
function homepageAttributes()
{
return array('href' => $this->profile->homepage,
'class' => 'url');
}
} }

View File

@ -81,20 +81,36 @@ class ProfileMiniListItem extends ProfileListItem
function show() function show()
{ {
$this->out->elementStart('li', 'vcard'); $this->out->elementStart('li', 'vcard');
$this->out->elementStart('a', array('title' => $this->profile->getBestName(), if (Event::handle('StartProfileListItemProfileElements', array($this))) {
'href' => $this->profile->profileurl, if (Event::handle('StartProfileListItemAvatar', array($this))) {
'rel' => 'contact member', $aAttrs = $this->linkAttributes();
'class' => 'url')); $this->out->elementStart('a', $aAttrs);
$avatar = $this->profile->getAvatar(AVATAR_MINI_SIZE); $avatar = $this->profile->getAvatar(AVATAR_MINI_SIZE);
$this->out->element('img', array('src' => (($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_MINI_SIZE)), $this->out->element('img', array('src' => (($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_MINI_SIZE)),
'width' => AVATAR_MINI_SIZE, 'width' => AVATAR_MINI_SIZE,
'height' => AVATAR_MINI_SIZE, 'height' => AVATAR_MINI_SIZE,
'class' => 'avatar photo', 'class' => 'avatar photo',
'alt' => ($this->profile->fullname) ? 'alt' => ($this->profile->fullname) ?
$this->profile->fullname : $this->profile->fullname :
$this->profile->nickname)); $this->profile->nickname));
$this->out->element('span', 'fn nickname', $this->profile->nickname); $this->out->element('span', 'fn nickname', $this->profile->nickname);
$this->out->elementEnd('a'); $this->out->elementEnd('a');
$this->out->elementEnd('li'); Event::handle('EndProfileListItemAvatar', array($this));
}
$this->out->elementEnd('li');
}
}
// default; overridden for nofollow lists
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
$aAttrs['title'] = $this->profile->getBestName();
$aAttrs['rel'] = 'contact member'; // @todo: member? always?
$aAttrs['class'] = 'url';
return $aAttrs;
} }
} }