mirror of
https://github.com/openvk/openvk
synced 2024-12-23 00:51:03 +03:00
User: Added a tab in "My Groups" page for usual and managed groups
This commit is contained in:
parent
9780b5ad52
commit
e5238ecc41
5 changed files with 32 additions and 6 deletions
|
@ -454,23 +454,31 @@ class User extends RowModel
|
||||||
return sizeof(DatabaseConnection::i()->getContext()->table("messages")->where(["recipient_id" => $this->getId(), "unread" => 1]));
|
return sizeof(DatabaseConnection::i()->getContext()->table("messages")->where(["recipient_id" => $this->getId(), "unread" => 1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getClubs(int $page = 1): \Traversable
|
function getClubs(int $page = 1, bool $admin = false): \Traversable
|
||||||
{
|
{
|
||||||
$sel = $this->getRecord()->related("subscriptions.follower")->page($page, OPENVK_DEFAULT_PER_PAGE);
|
$sel = $this->getRecord()->related("subscriptions.follower")->page($page, OPENVK_DEFAULT_PER_PAGE);
|
||||||
foreach($sel->where("model", "openvk\\Web\\Models\\Entities\\Club") as $target) {
|
foreach($sel->where("model", "openvk\\Web\\Models\\Entities\\Club") as $target) {
|
||||||
$target = (new Clubs)->get($target->target);
|
$target = (new Clubs)->get($target->target);
|
||||||
|
if($admin && !$target->canBeModifiedBy($this)) continue;
|
||||||
if(!$target) continue;
|
if(!$target) continue;
|
||||||
|
|
||||||
yield $target;
|
yield $target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getClubCount(): int
|
function getClubCount(bool $admin = false): int
|
||||||
{
|
{
|
||||||
|
$result = [];
|
||||||
$sel = $this->getRecord()->related("subscriptions.follower");
|
$sel = $this->getRecord()->related("subscriptions.follower");
|
||||||
$sel = $sel->where("model", "openvk\\Web\\Models\\Entities\\Club");
|
foreach($sel->where("model", "openvk\\Web\\Models\\Entities\\Club") as $target) {
|
||||||
|
$target = (new Clubs)->get($target->target);
|
||||||
|
if($admin && !$target->canBeModifiedBy($this)) continue;
|
||||||
|
if(!$target) continue;
|
||||||
|
|
||||||
|
$result[] = $target;
|
||||||
|
}
|
||||||
|
|
||||||
return sizeof($sel);
|
return sizeof($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPinnedClubs(): \Traversable
|
function getPinnedClubs(): \Traversable
|
||||||
|
|
|
@ -79,6 +79,7 @@ final class UserPresenter extends OpenVKPresenter
|
||||||
} else {
|
} else {
|
||||||
$this->template->user = $user;
|
$this->template->user = $user;
|
||||||
$this->template->page = $this->queryParam("p") ?? 1;
|
$this->template->page = $this->queryParam("p") ?? 1;
|
||||||
|
$this->template->admin = $this->queryParam("act") == "managed";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{extends "../@listView.xml"}
|
{extends "../@listView.xml"}
|
||||||
{var iterator = $user->getClubs($page)}
|
{var iterator = $user->getClubs($page, $admin)}
|
||||||
{var count = $user->getClubCount()}
|
{var count = $user->getClubCount($admin)}
|
||||||
|
|
||||||
{block title}{_"groups"}{/block}
|
{block title}{_"groups"}{/block}
|
||||||
|
|
||||||
|
@ -26,6 +26,21 @@
|
||||||
|
|
||||||
{* BEGIN ELEMENTS DESCRIPTION *}
|
{* BEGIN ELEMENTS DESCRIPTION *}
|
||||||
|
|
||||||
|
{block tabs}
|
||||||
|
{if !is_null($thisUser) && $user->getId() === $thisUser->getId()}
|
||||||
|
<div {if !$admin}id="activetabs"{/if} class="tab">
|
||||||
|
<a {if !$admin}id="act_tab_a"{/if} href="/groups{$user->getId()}">
|
||||||
|
{_groups}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div {if $admin}id="activetabs"{/if} class="tab">
|
||||||
|
<a {if $admin}id="act_tab_a"{/if} href="/groups{$user->getId()}?act=managed">
|
||||||
|
{_managed}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/block}
|
||||||
|
|
||||||
{block link|strip|stripHtml}
|
{block link|strip|stripHtml}
|
||||||
{$x->getURL()}
|
{$x->getURL()}
|
||||||
{/block}
|
{/block}
|
||||||
|
|
|
@ -186,6 +186,7 @@
|
||||||
"all_followers" = "All followers";
|
"all_followers" = "All followers";
|
||||||
"only_administrators" = "Only administrators";
|
"only_administrators" = "Only administrators";
|
||||||
"website" = "Website";
|
"website" = "Website";
|
||||||
|
"managed" = "Managed";
|
||||||
|
|
||||||
"administrators_one" = "$1 administrator";
|
"administrators_one" = "$1 administrator";
|
||||||
"administrators_other" = "$1 administrators";
|
"administrators_other" = "$1 administrators";
|
||||||
|
|
|
@ -194,6 +194,7 @@
|
||||||
"all_followers" = "Все подписчики";
|
"all_followers" = "Все подписчики";
|
||||||
"only_administrators" = "Только администраторы";
|
"only_administrators" = "Только администраторы";
|
||||||
"website" = "Сайт";
|
"website" = "Сайт";
|
||||||
|
"managed" = "Управляемые";
|
||||||
|
|
||||||
"administrators_one" = "$1 администратор";
|
"administrators_one" = "$1 администратор";
|
||||||
"administrators_few" = "$1 администратора";
|
"administrators_few" = "$1 администратора";
|
||||||
|
|
Loading…
Reference in a new issue