* Copyright (C) 2011, StatusNet, Inc.
*
* Profile block to show for a group
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class GroupProfileBlock extends ProfileBlock
{
protected $group = null;
{
parent::__construct($out);
$this->group = $group;
+ $this->profile = $this->group->getProfile();
}
- function avatar()
- {
- return ($this->group->homepage_logo) ?
- $this->group->homepage_logo : User_group::defaultLogo(AVATAR_PROFILE_SIZE);
+ protected function showAvatar(Profile $profile, $size=null)
+ {
+ $avatar_url = $profile->getGroup()->homepage_logo ?: User_group::defaultLogo($size ?: $this->avatarSize());
+ $this->out->element('img', array('src' => $avatar_url,
+ 'class' => 'avatar u-photo',
+ 'width' => $this->avatarSize(),
+ 'height' => $this->avatarSize(),
+ 'alt' => $profile->getBestName()));
}
function name()
function url()
{
- return $this->group->mainpage;
+ return $this->group->homeUrl();
}
- function canEdit()
+ function location()
{
- $user = common_current_user();
- return ((!empty($user)) && ($user->isAdmin($this->group)));
+ return $this->group->location;
}
- function editUrl()
+ function homepage()
{
- return common_local_url('editgroup', array('nickname' => $this->group->nickname));
+ return $this->group->homepage;
}
- function editText()
+ function description()
{
- return _('Edit');
+ return $this->group->description;
}
- function location()
+ function otherProfiles()
{
- return $this->group->location;
+ return array();
}
- function homepage()
+ function showActions()
{
- return $this->group->homepage;
+ $cur = common_current_user();
+ $this->out->elementStart('div', 'entity_actions');
+ // TRANS: Group actions header (h2). Text hidden by default.
+ $this->out->element('h2', null, _('Group actions'));
+ $this->out->elementStart('ul');
+ if (Event::handle('StartGroupActionsList', array($this, $this->group))) {
+ $this->out->elementStart('li', 'entity_subscribe');
+ if (Event::handle('StartGroupSubscribe', array($this, $this->group))) {
+ if ($cur) {
+ $profile = $cur->getProfile();
+ if ($profile->isMember($this->group)) {
+ $lf = new LeaveForm($this->out, $this->group);
+ $lf->show();
+ } else if ($profile->isPendingMember($this->group)) {
+ $cf = new CancelGroupForm($this->out, $this->group);
+ $cf->show();
+ } else if (!Group_block::isBlocked($this->group, $profile)) {
+ $jf = new JoinForm($this->out, $this->group);
+ $jf->show();
+ }
+ }
+ Event::handle('EndGroupSubscribe', array($this, $this->group));
+ }
+ $this->out->elementEnd('li');
+ if ($cur && $cur->isAdmin($this->group)) {
+ $this->out->elementStart('li', 'entity_edit');
+ $this->out->element('a', array('href' => common_local_url('editgroup',
+ array('nickname' => $this->group->nickname)),
+ // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+ // TRANS: %s is the nickname of the group.
+ 'title' => sprintf(_m('TOOLTIP','Edit %s group properties'), $this->group->nickname)),
+ // TRANS: Link text for link on user profile.
+ _m('BUTTON','Edit'));
+ $this->out->elementEnd('li');
+ $this->out->elementStart('li', 'entity_edit');
+ $this->out->element('a', array('href' => common_local_url('grouplogo',
+ array('nickname' => $this->group->nickname)),
+ // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+ // TRANS: %s is the nickname of the group.
+ 'title' => sprintf(_m('TOOLTIP','Add or edit %s logo'), $this->group->nickname)),
+ // TRANS: Link text for link on user profile.
+ _m('MENU','Logo'));
+ $this->out->elementEnd('li');
+ }
+ if ($cur && $cur->hasRight(Right::DELETEGROUP)) {
+ $this->out->elementStart('li', 'entity_delete');
+ $df = new DeleteGroupForm($this->out, $this->group);
+ $df->show();
+ $this->out->elementEnd('li');
+ }
+
+ Event::handle('EndGroupActionsList', array($this, $this->group));
+ }
+ $this->out->elementEnd('ul');
+ $this->out->elementEnd('div');
}
- function description()
+ function show()
{
- return $this->group->description;
+ $this->out->elementStart('div', 'profile_block group_profile_block section');
+ if (Event::handle('StartShowGroupProfileBlock', array($this->out, $this->group))) {
+ parent::show();
+ Event::handle('EndShowGroupProfileBlock', array($this->out, $this->group));
+ }
+ $this->out->elementEnd('div');
+ }
+
+ function showName()
+ {
+ parent::showName();
+ $this->showAliases();
+ }
+
+ function showAliases()
+ {
+ $aliases = $this->group->getAliases();
+
+ if (!empty($aliases)) {
+ $this->out->elementStart('ul', 'group_aliases');
+ foreach ($aliases as $alias) {
+ $this->out->element('li', 'group_alias', $alias);
+ }
+ $this->out->elementEnd('ul');
+ }
}
-}
\ No newline at end of file
+}