diff --git a/README.md b/README.md
index 56211045..41c12559 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ ln -s /path/to/chandler/extensions/available/commitcaptcha /path/to/chandler/ext
ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions/enabled/
```
-4. Import `install/init-static-db.sql` to **same database** you installed Chandler to
+4. Import `install/init-static-db.sql` to **same database** you installed Chandler to and import all sqls from `install/sqls` to **same database**
5. Import `install/init-event-db.sql` to **separate database**
6. Copy `openvk-example.yml` to `openvk.yml` and change options
7. Run `composer install` in OpenVK directory
@@ -75,7 +75,7 @@ You may reach out to us via:
* [Bug-tracker](https://github.com/openvk/openvk/projects/1)
* [Ticketing system](https://openvk.su/support?act=new)
-* Telegram chat: Go to [our channel](https://t.me/openvkch) and open discussion in our channel menu.
+* Telegram chat: Go to [our channel](https://t.me/openvkenglish) and open discussion in our channel menu.
* [Reddit](https://www.reddit.com/r/openvk/)
* [Discussions](https://github.com/openvk/openvk/discussions)
diff --git a/README_RU.md b/README_RU.md
index 2ed13a7b..480552a3 100644
--- a/README_RU.md
+++ b/README_RU.md
@@ -48,7 +48,7 @@ ln -s /path/to/chandler/extensions/available/commitcaptcha /path/to/chandler/ext
ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions/enabled/
```
-4. Импортируйте `install/init-static-db.sql` в **ту же базу данных**, в которую вы установили Chandler
+4. Импортируйте `install/init-static-db.sql` в **ту же базу данных**, в которую вы установили Chandler, и импортируйте все SQL файлы из папки `install/sqls` в **ту же базу данных**
5. Импортируйте `install/init-event-db.sql` в **отдельную базу данных**
6. Скопируйте `openvk-example.yml` в `openvk.yml` и измените параметры
7. Запустите `composer install` в директории OpenVK
diff --git a/Web/Presenters/templates/@listView.xml b/Web/Presenters/templates/@listView.xml
index 35c9a2f0..9b47d992 100644
--- a/Web/Presenters/templates/@listView.xml
+++ b/Web/Presenters/templates/@listView.xml
@@ -2,13 +2,17 @@
{block wrap}
-
+
{include tabs}
-
+
+ {ifset size}
+ {include size, x => $dat}
+ {/ifset}
+
{var data = is_array($iterator) ? $iterator : iterator_to_array($iterator)}
-
+
{if sizeof($data) > 0}
-
-
- {include "components/paginator.xml", conf => (object) [
- "page" => $page,
- "count" => $count,
- "amount" => sizeof($data),
- "perPage" => $perPage ?? OPENVK_DEFAULT_PER_PAGE,
- "atBottom" => true,
- ]}
-
+ {include "components/paginator.xml", conf => (object) [
+ "page" => $page,
+ "count" => $count,
+ "amount" => sizeof($data),
+ "perPage" => $perPage ?? OPENVK_DEFAULT_PER_PAGE,
+ "atBottom" => true,
+ ]}
{else}
{ifset customErrorMessage}
{include customErrorMessage}
@@ -54,5 +58,9 @@
{/ifset}
{/if}
+
+ {ifset bottom}
+ {include bottom}
+ {/ifset}
{/block}
diff --git a/Web/Presenters/templates/User/Groups.xml b/Web/Presenters/templates/User/Groups.xml
index 18860fd8..26c7b7e1 100644
--- a/Web/Presenters/templates/User/Groups.xml
+++ b/Web/Presenters/templates/User/Groups.xml
@@ -2,37 +2,45 @@
{var iterator = $user->getClubs($page, $admin)}
{var count = $user->getClubCount($admin)}
-{block title}{_"groups"}{/block}
+{block title}
+ {_groups}
+{/block}
{block header}
-
{$user->getCanonicalName()} » {_"groups"}
-
-
+ {if !is_null($thisUser) && $user->getId() === $thisUser->getId()}
+ {_my_groups}
+ {else}
+
{$user->getCanonicalName()} » {_groups}
+ {/if}
{/block}
{* BEGIN ELEMENTS DESCRIPTION *}
{block tabs}
- {if !is_null($thisUser) && $user->getId() === $thisUser->getId()}
-
-
- {/if}
+ {if !is_null($thisUser) && $user->getId() === $thisUser->getId()}
+
+
+ {/if}
+{/block}
+
+{block size}
+
+
+ {if !is_null($thisUser) && $user->getId() === $thisUser->getId()}
+ {tr("groups_list", $thisUser->getClubCount())}
+ {else}
+ {tr("groups", $user->getClubCount())}
+ {/if}
+
+
{/block}
{block link|strip|stripHtml}
@@ -43,8 +51,19 @@
{/block}
-{block name}
- {$x->getName()}
+{block infoTable}
+
{/block}
{block description}
@@ -54,12 +73,46 @@
{block actions}
{var clubPinned = $thisUser->isClubPinned($x)}
{if $x->canBeModifiedBy($thisUser ?? NULL) && ($clubPinned || $thisUser->getPinnedClubCount() <= 10)}
-
+
+ {_check_community}
+
+
+
{if $clubPinned}
{_remove_from_left_menu}
{else}
{_add_to_left_menu}
{/if}
+
+
+ {/if}
+{/block}
+
+{block bottom}
+ {if !is_null($thisUser) && $user->getId() === $thisUser->getId()}
+
+
+
{_open_new_group}
+ {_open_group_desc}
+
+
+
+
{_search_group}
+ {_search_group_desc}
+
+
+
{/if}
{/block}
diff --git a/Web/Presenters/templates/components/error.xml b/Web/Presenters/templates/components/error.xml
index 288129a2..9ce715db 100644
--- a/Web/Presenters/templates/components/error.xml
+++ b/Web/Presenters/templates/components/error.xml
@@ -1,7 +1,6 @@
-
-
- {$title}
-
+
+
+ {$title}
{$description}
-
-
+
+
\ No newline at end of file
diff --git a/Web/Presenters/templates/components/paginator.xml b/Web/Presenters/templates/components/paginator.xml
index cf717e23..7c14e7e4 100644
--- a/Web/Presenters/templates/components/paginator.xml
+++ b/Web/Presenters/templates/components/paginator.xml
@@ -1,16 +1,18 @@
{var $space = 2}
{var $pageCount = ceil($conf->count / $conf->perPage)}
-
- {if $conf->page > $space}
-
«
- {/if}
- {for $j = $conf->page - ($space-1); $j <= $conf->page + ($space-1); $j++}
- {if $j > 0 && $j <= $pageCount}
-
{$j}
+
+
+ {if $conf->page > $space}
+
«
{/if}
- {/for}
- {if $conf->page <= $pageCount-$space}
-
»
- {/if}
+ {for $j = $conf->page - ($space-1); $j <= $conf->page + ($space-1); $j++}
+ {if $j > 0 && $j <= $pageCount}
+
{$j}
+ {/if}
+ {/for}
+ {if $conf->page <= $pageCount-$space}
+
»
+ {/if}
+
diff --git a/Web/static/css/style.css b/Web/static/css/style.css
index 3579c71c..cf40d339 100644
--- a/Web/static/css/style.css
+++ b/Web/static/css/style.css
@@ -1832,6 +1832,40 @@ body.scrolled .toTop:hover {
padding: 5px 0px 0px 0px;
}
+.groups_options {
+ padding: 10px 20px 20px;
+ border-top: #DEDEDE solid 1px;
+ margin-top: 12px;
+ margin-left: -12px;
+ margin-right: -12px;
+}
+
+#gp_container {
+ display: inline-block;
+}
+
+#gp_container span {
+ display: block;
+ margin: 10px 0 15px;
+}
+
+#gp_container h4 {
+ font-size: 11px;
+}
+
+.container_gray .content:last-child {
+ margin-bottom: 0;
+}
+
+.group_info {
+ padding: 0 0 0 5px !important;
+}
+
+.group_info .label {
+ width: auto !important;
+ padding-right: 5px;
+}
+
.border-block {
box-shadow: inset 0px 0 0px 1px #b6bfca, inset 0px 0 0px 10px #d8dfe7;
width: 300px;
diff --git a/locales/en.strings b/locales/en.strings
index 1fec702f..55b6ba28 100644
--- a/locales/en.strings
+++ b/locales/en.strings
@@ -223,6 +223,7 @@
"subscriptions" = "Subscriptions";
"join_community" = "Join community";
"leave_community" = "Leave community";
+"check_community" = "View community";
"min_6_community" = "Name of the group must have more that 6 characters";
"participants" = "Participants";
"groups" = "Groups";
@@ -240,6 +241,7 @@
"only_administrators" = "Only administrators";
"website" = "Website";
"managed" = "Managed";
+"size" = "Size";
"administrators_one" = "$1 administrator";
"administrators_other" = "$1 administrators";
@@ -272,10 +274,20 @@
"groups_one" = "$1 group";
"groups_other" = "$1 groups";
+"groups_list_zero" = "You are not a participant in any group";
+"groups_list_one" = "You are participating in one group";
+"groups_list_other" = "You are a participant of $1 groups";
+
"meetings_zero" = "No meetings";
"meetings_one" = "$1 meeting";
"meetings_other" = "$1 meetings";
+"open_new_group" = "Open a new group";
+"open_group_desc" = "Can't find the right group? Open your own...";
+"search_group" = "Search group";
+"search_by_groups" = "Search by groups";
+"search_group_desc" = "Here you can browse through the existing groups and choose a group to suit your needs...";
+
/* Albums */
"create" = "Create";
diff --git a/locales/ru.strings b/locales/ru.strings
index dc76df6e..085d9fae 100644
--- a/locales/ru.strings
+++ b/locales/ru.strings
@@ -232,6 +232,7 @@
"subscriptions" = "Подписки";
"join_community" = "Вступить в группу";
"leave_community" = "Выйти из группы";
+"check_community" = "Просмотр группы";
"min_6_community" = "Название должно быть не менее 6 символов";
"participants" = "Участники";
"groups" = "Группы";
@@ -249,6 +250,7 @@
"only_administrators" = "Только администраторы";
"website" = "Сайт";
"managed" = "Управляемые";
+"size" = "Размер";
"administrators_one" = "$1 администратор";
"administrators_few" = "$1 администратора";
@@ -286,12 +288,22 @@
"groups_many" = "$1 групп";
"groups_other" = "$1 групп";
+"groups_list_zero" = "Вы не состоите ни в одной группе";
+"groups_list_one" = "Вы состоите в одной группе";
+"groups_list_other" = "Вы состоите в $1 группах";
+
"meetings_zero" = "Ни одной встречи";
"meetings_one" = "Одна встреча";
"meetings_few" = "$1 встречи";
"meetings_many" = "$1 встреч";
"meetings_other" = "$1 встреч";
+"open_new_group" = "Открыть новую группу";
+"open_group_desc" = "Не можете найти нужную группу? Откройте свою...";
+"search_group" = "Поиск группы";
+"search_by_groups" = "Поиск по группам";
+"search_group_desc" = "Здесь Вы можете просмотреть существующие группы и выбрать группу себе по вкусу...";
+
/* Albums */
"create" = "Создать";