X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgroupprofileblock.php;h=1a15c34bb1c4259ba4810e17ce869b31bdb28fa0;hb=c9a9a8bc58d613056a5a584a203889fd602d8ac1;hp=f54f82e9e589beb14e1dbefff0823227245e7667;hpb=66b505a341c3f2b2fc842355bb55bdadd9cbff23;p=quix0rs-gnu-social.git diff --git a/lib/groupprofileblock.php b/lib/groupprofileblock.php index f54f82e9e5..1a15c34bb1 100644 --- a/lib/groupprofileblock.php +++ b/lib/groupprofileblock.php @@ -4,7 +4,7 @@ * 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 @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { * @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; @@ -53,12 +52,17 @@ class GroupProfileBlock extends ProfileBlock { 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() @@ -68,37 +72,114 @@ class GroupProfileBlock extends ProfileBlock 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 +}