X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fgroupprofileblock.php;h=1a15c34bb1c4259ba4810e17ce869b31bdb28fa0;hb=0590f2975e6c5b26bbe6121da5c49890e035721e;hp=32526b0458dd69c9235911fead82d1b6bde240b1;hpb=bbba1f6e168463b6994460568778e7a7df5941a1;p=quix0rs-gnu-social.git diff --git a/lib/groupprofileblock.php b/lib/groupprofileblock.php index 32526b0458..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,23 +72,7 @@ class GroupProfileBlock extends ProfileBlock function url() { - return $this->group->mainpage; - } - - function canEdit() - { - $user = common_current_user(); - return ((!empty($user)) && ($user->isAdmin($this->group))); - } - - function editUrl() - { - return common_local_url('editgroup', array('nickname' => $this->group->nickname)); - } - - function editText() - { - return _('Edit'); + return $this->group->homeUrl(); } function location() @@ -102,6 +90,11 @@ class GroupProfileBlock extends ProfileBlock return $this->group->description; } + function otherProfiles() + { + return array(); + } + function showActions() { $cur = common_current_user(); @@ -113,10 +106,14 @@ class GroupProfileBlock extends ProfileBlock $this->out->elementStart('li', 'entity_subscribe'); if (Event::handle('StartGroupSubscribe', array($this, $this->group))) { if ($cur) { - if ($cur->isMember($this->group)) { + $profile = $cur->getProfile(); + if ($profile->isMember($this->group)) { $lf = new LeaveForm($this->out, $this->group); $lf->show(); - } else if (!Group_block::isBlocked($this->group, $cur->getProfile())) { + } 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(); } @@ -124,15 +121,65 @@ class GroupProfileBlock extends ProfileBlock 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 show() + { + $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'); + } + } }