Admin: Localization & fixing tabs (#407)

This commit is contained in:
Ilya Prokopenko 2022-04-24 13:02:23 +07:00 committed by GitHub
parent c1d7b49dda
commit e6c14c2eeb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 495 additions and 459 deletions

View file

@ -23,7 +23,7 @@ final class AdminPresenter extends OpenVKPresenter
private function warnIfNoCommerce(): void private function warnIfNoCommerce(): void
{ {
if(!OPENVK_ROOT_CONF["openvk"]["preferences"]["commerce"]) if(!OPENVK_ROOT_CONF["openvk"]["preferences"]["commerce"])
$this->flash("warn", "Коммерция отключена системным администратором", "Настройки ваучеров и подарков будут сохранены, но не будут оказывать никакого влияния."); $this->flash("warn", tr("admin_commerce_disabled"), tr("admin_commerce_disabled_desc"));
} }
private function searchResults(object $repo, &$count) private function searchResults(object $repo, &$count)

View file

@ -173,7 +173,7 @@
{var $canAccessHelpdesk = $thisUser->getChandlerUser()->can("write")->model('openvk\Web\Models\Entities\TicketReply')->whichBelongsTo(0)} {var $canAccessHelpdesk = $thisUser->getChandlerUser()->can("write")->model('openvk\Web\Models\Entities\TicketReply')->whichBelongsTo(0)}
{var $menuLinksAvaiable = sizeof(OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links']) > 0 && $thisUser->getLeftMenuItemStatus('links')} {var $menuLinksAvaiable = sizeof(OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links']) > 0 && $thisUser->getLeftMenuItemStatus('links')}
<div n:if="$canAccessAdminPanel || $canAccessHelpdesk || $menuLinksAvaiable" class="menu_divider"></div> <div n:if="$canAccessAdminPanel || $canAccessHelpdesk || $menuLinksAvaiable" class="menu_divider"></div>
<a href="/admin" class="link" n:if="$canAccessAdminPanel" title="Админ-панель [Alt+Shift+A]" accesskey="a">Админ-панель</a> <a href="/admin" class="link" n:if="$canAccessAdminPanel" title="{_admin} [Alt+Shift+A]" accesskey="a">{_admin}</a>
<a href="/support/tickets" class="link" n:if="$canAccessHelpdesk">Helpdesk <a href="/support/tickets" class="link" n:if="$canAccessHelpdesk">Helpdesk
{if $helpdeskTicketNotAnsweredCount > 0} {if $helpdeskTicketNotAnsweredCount > 0}
(<b>{$helpdeskTicketNotAnsweredCount}</b>) (<b>{$helpdeskTicketNotAnsweredCount}</b>)

View file

@ -1,3 +1,4 @@
{var $instance_name = OPENVK_ROOT_CONF['openvk']['appearance']['name']}
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head> <head>
@ -6,7 +7,7 @@
{var $css = file_get_contents(OPENVK_ROOT . "/Web/static/js/node_modules/@atlassian/aui/dist/aui/aui-prototyping.css")} {var $css = file_get_contents(OPENVK_ROOT . "/Web/static/js/node_modules/@atlassian/aui/dist/aui/aui-prototyping.css")}
{str_replace("fonts/", "/assets/packages/static/openvk/js/node_modules/@atlassian/aui/dist/aui/fonts/", $css)|noescape} {str_replace("fonts/", "/assets/packages/static/openvk/js/node_modules/@atlassian/aui/dist/aui/fonts/", $css)|noescape}
</style> </style>
<title>{include title} - Админ-панель {=OPENVK_ROOT_CONF['openvk']['appearance']['name']}</title> <title>{include title} - {_admin} {$instance_name}</title>
</head> </head>
<body> <body>
<div id="page"> <div id="page">
@ -16,22 +17,14 @@
<div class="aui-header-primary"> <div class="aui-header-primary">
<h1 id="logo" class="aui-header-logo aui-header-logo-textonly"> <h1 id="logo" class="aui-header-logo aui-header-logo-textonly">
<a href="/admin"> <a href="/admin">
<span class="aui-header-logo-device">{=OPENVK_ROOT_CONF['openvk']['appearance']['name']}</span> <span class="aui-header-logo-device">{$instance_name}</span>
</a> </a>
</h1> </h1>
</div> </div>
<div n:if="$search ?? false" class="aui-header-secondary"> <div n:if="$search ?? false" class="aui-header-secondary">
<ul class="aui-nav"> <ul class="aui-nav">
<form class="aui-quicksearch dont-default-focus ajs-dirty-warning-exempt"> <form class="aui-quicksearch dont-default-focus ajs-dirty-warning-exempt">
<input <input id="quickSearchInput" autocomplete="off" class="search" type="text" placeholder="{include searchTitle}" value="{$_GET['q'] ?? ''}" name="q" accesskey="Q" />
id="quickSearchInput"
autocomplete="off"
class="search"
type="text"
placeholder="{include searchTitle}"
value="{$_GET['q'] ?? ''}"
name="q"
accesskey="Q" />
<input type="hidden" value=1 name=p /> <input type="hidden" value=1 name=p />
</form> </form>
</ul> </ul>
@ -46,83 +39,64 @@
<div class="aui-navgroup-inner"> <div class="aui-navgroup-inner">
<div class="aui-navgroup-primary"> <div class="aui-navgroup-primary">
<div class="aui-nav-heading"> <div class="aui-nav-heading">
<strong>Обзор</strong> <strong>{_admin_overview}</strong>
</div> </div>
<ul class="aui-nav"> <ul class="aui-nav">
<li> <li>
<a href="/admin"> <a href="/admin">{_admin_overview_summary}</a>
Сводка
</a>
</li> </li>
</ul> </ul>
<div class="aui-nav-heading"> <div class="aui-nav-heading">
<strong>Пользовательский контент</strong> <strong>{_admin_content}</strong>
</div> </div>
<ul class="aui-nav"> <ul class="aui-nav">
<li> <li>
<a href="/admin/users"> <a href="/admin/users">{_users}</a>
Пользователи
</a>
</li> </li>
<li> <li>
<a href="/admin/clubs"> <a href="/admin/clubs">{_groups}</a>
Группы
</a>
</li> </li>
</ul> </ul>
<div class="aui-nav-heading"> <div class="aui-nav-heading">
<strong>Платные услуги</strong> <strong>{_admin_services}</strong>
</div> </div>
<ul class="aui-nav"> <ul class="aui-nav">
<li> <li>
<a href="/admin/vouchers"> <a href="/admin/vouchers">{_vouchers}</a>
{_vouchers}
</a>
</li> </li>
<li> <li>
<a href="/admin/gifts"> <a href="/admin/gifts">{_gifts}</a>
Подарки
</a>
</li> </li>
</ul> </ul>
<div class="aui-nav-heading"> <div class="aui-nav-heading">
<strong>Настройки</strong> <strong>{_admin_settings}</strong>
</div> </div>
<ul class="aui-nav"> <ul class="aui-nav">
<li> <li>
<a href="/admin/settings/tuning"> <a href="/admin/settings/tuning">{_admin_settings_tuning}</a>
Общие
</a>
</li> </li>
<li> <li>
<a href="/admin/settings/appearance"> <a href="/admin/settings/appearance">{_admin_settings_appearance}</a>
Внешний вид
</a>
</li> </li>
<li> <li>
<a href="/admin/settings/security"> <a href="/admin/settings/security">{_admin_settings_security}</a>
Безопасность
</a>
</li> </li>
<li> <li>
<a href="/admin/settings/integrations"> <a href="/admin/settings/integrations">{_admin_settings_integrations}</a>
Интеграции
</a>
</li> </li>
<li> <li>
<a href="/admin/settings/system"> <a href="/admin/settings/system">{_admin_settings_system}</a>
Система
</a>
</li> </li>
</ul> </ul>
<div class="aui-nav-heading"> <div class="aui-nav-heading">
<strong>Об OpenVK</strong> <strong>{_admin_about}</strong>
</div> </div>
<ul class="aui-nav"> <ul class="aui-nav">
<li> <li>
<a href="/about:openvk"> <a href="/about:openvk">{_admin_about_version}</a>
Версия </li>
</a> <li>
<a href="/about">{_admin_about_instance}</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -1,41 +1,35 @@
{extends "@layout.xml"} {extends "@layout.xml"}
{block title} {block title}
Редактировать {$club->getCanonicalName()} {_edit} {$club->getCanonicalName()}
{/block} {/block}
{block heading} {block heading}
{$club->getCanonicalName()} {$club->getCanonicalName()}
{/block} {/block}
{block content} {block content}
{var $isMain = $mode === 'main'} {var $isMain = $mode === 'main'}
{var $isBan = $mode === 'ban'} {var $isBan = $mode === 'ban'}
{var $isFollowers = $mode === 'followers'} {var $isFollowers = $mode === 'followers'}
{if $isMain} {if $isMain}
<div class="aui-tabs horizontal-tabs">
<!-- This main block --> <nav class="aui-navgroup aui-navgroup-horizontal">
<div class="aui-tabs horizontal-tabs">
<nav class="aui-navgroup aui-navgroup-horizontal">
<div class="aui-navgroup-inner"> <div class="aui-navgroup-inner">
<div class="aui-navgroup-primary"> <div class="aui-navgroup-primary">
<ul class="aui-nav"> <ul class="aui-nav">
<li class="aui-nav-selected"><a href="?act=main">Главное</a></li> <li class="aui-nav-selected"><a href="?act=main">{_admin_tab_main}</a></li>
<li><a href="?act=ban">Бан</a></li> <li><a href="?act=ban">{_admin_tab_ban}</a></li>
<li><a href="?act=followers">Участники</a></li> <li><a href="?act=followers">{_admin_tab_followers}</a></li>
</ul> </ul>
</div> </div>
</div> </div>
</nav> </nav>
<form class="aui" method="POST"> <form class="aui" method="POST">
<div class="field-group"> <div class="field-group">
<label for="avatar"> <label for="avatar">{_avatar}</label>
Аватарка
</label>
<span id="avatar" class="aui-avatar aui-avatar-project aui-avatar-xlarge"> <span id="avatar" class="aui-avatar aui-avatar-project aui-avatar-xlarge">
<span class="aui-avatar-inner"> <span class="aui-avatar-inner">
<img src="{$club->getAvatarUrl('tiny')}" style="object-fit: cover;"></img> <img src="{$club->getAvatarUrl('tiny')}" style="object-fit: cover;"></img>
@ -43,134 +37,110 @@
</span> </span>
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="id"> <label for="id">ID</label>
ID
</label>
<input class="text medium-field" type="number" id="id" disabled value="{$club->getId()}" /> <input class="text medium-field" type="number" id="id" disabled value="{$club->getId()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="id_owner"> <label for="id_owner">{_admin_ownerid}</label>
ID владельца
</label>
<input class="text medium-field" type="text" id="id_owner" name="id_owner" value="{$club->getOwner()->getId()}" /> <input class="text medium-field" type="text" id="id_owner" name="id_owner" value="{$club->getOwner()->getId()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="name"> <label for="name">{_admin_title}</label>
Название
</label>
<input class="text medium-field" type="text" id="name" name="name" value="{$club->getName()}" /> <input class="text medium-field" type="text" id="name" name="name" value="{$club->getName()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="about"> <label for="about">{_admin_description}</label>
Описание
</label>
<input class="text medium-field" type="text" id="about" name="about" value="{$club->getDescription()}" /> <input class="text medium-field" type="text" id="about" name="about" value="{$club->getDescription()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="shortcode"> <label for="shortcode">{_admin_shortcode}</label>
Адрес
</label>
<input class="text medium-field" type="text" id="shortcode" name="shortcode" value="{$club->getShortCode()}" /> <input class="text medium-field" type="text" id="shortcode" name="shortcode" value="{$club->getShortCode()}" />
</div> </div>
<br/> <br/>
<div class="group"> <div class="group">
<input class="toggle-large" type="checkbox" id="verify" name="verify" value="1" {if $club->isVerified()} checked {/if} /> <input class="toggle-large" type="checkbox" id="verify" name="verify" value="1" {if $club->isVerified()} checked {/if} />
<label for="verify"> <label for="verify">{_admin_verification}</label>
Верификация
</label>
</div> </div>
<div class="group"> <div class="group">
<input class="toggle-large" type="checkbox" id="hide_from_global_feed" name="hide_from_global_feed" value="1" {if $club->isHideFromGlobalFeedEnabled()} checked {/if} /> <input class="toggle-large" type="checkbox" id="hide_from_global_feed" name="hide_from_global_feed" value="1" {if $club->isHideFromGlobalFeedEnabled()} checked {/if} />
<label for="hide_from_global_feed"> <label for="hide_from_global_feed">{_admin_club_excludeglobalfeed}</label>
Не отображать записи в глобальной ленте
</label>
</div> </div>
<hr/> <hr/>
<div class="buttons-container"> <div class="buttons-container">
<div class="buttons"> <div class="buttons">
<input type="hidden" name="hash" value="{$csrfToken}" /> <input type="hidden" name="hash" value="{$csrfToken}" />
<input class="button submit" type="submit" value="Сохранить"> <input class="button submit" type="submit" value="{_save}">
</div> </div>
</div> </div>
</form> </form>
</div> </div>
{/if} {/if}
{if $isBan} {if $isBan}
<div class="aui-tabs horizontal-tabs">
<!-- This ban block --> <nav class="aui-navgroup aui-navgroup-horizontal">
<div class="aui-tabs horizontal-tabs">
<nav class="aui-navgroup aui-navgroup-horizontal">
<div class="aui-navgroup-inner"> <div class="aui-navgroup-inner">
<div class="aui-navgroup-primary"> <div class="aui-navgroup-primary">
<ul class="aui-nav"> <ul class="aui-nav">
<li><a href="?act=main">Главное</a></li> <li><a href="?act=main">{_admin_tab_main}</a></li>
<li class="aui-nav-selected"><a href="?act=ban">Бан</a></li> <li class="aui-nav-selected"><a href="?act=ban">{_admin_tab_ban}</a></li>
<li><a href="?act=followers">Участники</a></li> <li><a href="?act=followers">{_admin_tab_followers}</a></li>
</ul> </ul>
</div> </div>
</div> </div>
</nav> </nav>
<form class="aui" method="POST"> <form class="aui" method="POST">
<div class="field-group"> <div class="field-group">
<label for="ban_reason"> <label for="ban_reason">{_admin_banreason}</label>
Причина бана
</label>
<input class="text" type="text" id="text-input" name="ban_reason" value="{$club->getBanReason()}" /> <input class="text" type="text" id="text-input" name="ban_reason" value="{$club->getBanReason()}" />
</div> </div>
<hr/> <hr/>
<div class="buttons-container"> <div class="buttons-container">
<div class="buttons"> <div class="buttons">
<input type="hidden" name="hash" value="{$csrfToken}" /> <input type="hidden" name="hash" value="{$csrfToken}" />
<input class="button submit" type="submit" value="Сохранить"> <input class="button submit" type="submit" value="{_save}">
</div> </div>
</div> </div>
</form> </form>
</div> </div>
{/if} {/if}
{if $isFollowers} {if $isFollowers}
{var $followers = iterator_to_array($followers)}
<!-- This followers block --> <div class="aui-tabs horizontal-tabs">
<nav class="aui-navgroup aui-navgroup-horizontal">
{var $followers = iterator_to_array($followers)}
<div class="aui-tabs horizontal-tabs">
<nav class="aui-navgroup aui-navgroup-horizontal">
<div class="aui-navgroup-inner"> <div class="aui-navgroup-inner">
<div class="aui-navgroup-primary"> <div class="aui-navgroup-primary">
<ul class="aui-nav"> <ul class="aui-nav">
<li><a href="?act=main">Главное</a></li> <li><a href="?act=main">{_admin_tab_main}</a></li>
<li><a href="?act=ban">Бан</a></li> <li><a href="?act=ban">{_admin_tab_ban}</a></li>
<li class="aui-nav-selected"><a href="?act=followers">Участники</a></li> <li class="aui-nav-selected"><a href="?act=followers">{_admin_tab_followers}</a></li>
</ul> </ul>
</div> </div>
</div> </div>
</nav> </nav>
<table rules="none" class="aui aui-table-list"> <table rules="none" class="aui aui-table-list">
<tbody> <tbody>
<tr n:foreach="$followers as $follower"> <tr n:foreach="$followers as $follower">
<td>{$follower->getId()}</td> <td>{$follower->getId()}</td>
<td> <td>
<span class="aui-avatar aui-avatar-xsmall"> <span class="aui-avatar aui-avatar-xsmall">
<span class="aui-avatar-inner"> <span class="aui-avatar-inner">
<img src="{$follower->getAvatarUrl('miniscule')}" alt="{$follower->getCanonicalName()}" role="presentation" /> <img src="{$follower->getAvatarUrl()}" alt="{$follower->getCanonicalName()}" role="presentation" />
</span> </span>
</span> </span>
<a href="{$follower->getURL()}">{$follower->getCanonicalName()}</a> <a href="{$follower->getURL()}">{$follower->getCanonicalName()}</a>
<span n:if="$follower->isBanned()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed"> <span n:if="$follower->isBanned()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed">{_admin_banned}</span>
заблокирован
</span>
</td> </td>
<td>{$follower->isFemale() ? "Женский" : "Мужской"}</td> <td>{$follower->isFemale() ? tr("female") : tr("male")}</td>
<td>{$follower->getShortCode() ?? "(отсутствует)"}</td> <td>{$follower->getShortCode() ?? "(" . tr("none") . ")"}</td>
<td>{$follower->getRegistrationTime()}</td> <td>{$follower->getRegistrationTime()}</td>
<td> <td>
<a class="aui-button aui-button-primary" href="/admin/users/id{$follower->getId()}"> <a class="aui-button aui-button-primary" href="/admin/users/id{$follower->getId()}">
<span class="aui-icon aui-icon-small aui-iconfont-new-edit">Редактировать</span> <span class="aui-icon aui-icon-small aui-iconfont-new-edit">{_edit}</span>
</a> </a>
</td> </td>
</tr> </tr>
@ -179,13 +149,9 @@
<div align="right"> <div align="right">
{var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + $amount) < $count} {var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + $amount) < $count}
<a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}"> <a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">«</a>
⭁ туда <a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">»</a>
</a>
<a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">
⭇ сюда
</a>
</div> </div>
</div> </div>
{/if} {/if}
{/block} {/block}

View file

@ -2,14 +2,16 @@
{var $search = true} {var $search = true}
{block title} {block title}
Группы {_admin_club_search}
{/block} {/block}
{block heading} {block heading}
Бутылки {_groups}
{/block} {/block}
{block searchTitle}Поиск бутылок{/block} {block searchTitle}
{include title}
{/block}
{block content} {block content}
{var $clubs = iterator_to_array($clubs)} {var $clubs = iterator_to_array($clubs)}
@ -18,12 +20,12 @@
<table class="aui aui-table-list"> <table class="aui aui-table-list">
<thead> <thead>
<tr> <tr>
<th>#</th> <th>ID</th>
<th>Имя</th> <th>{_admin_title}</th>
<th>Автор</th> <th>{_admin_author}</th>
<th>Описание</th> <th>{_admin_description}</th>
<th>Короткий адрес</th> <th>{_admin_shortcode}</th>
<th>Действия</th> <th>{_admin_actions}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -49,11 +51,11 @@
<a href="{$user->getURL()}">{$user->getCanonicalName()}</a> <a href="{$user->getURL()}">{$user->getCanonicalName()}</a>
</td> </td>
<td>{$club->getDescription() ?? "(не указано)"}</td> <td>{$club->getDescription() ?? "(" . tr("none") . ")"}</td>
<td>{$club->getShortCode()}</td> <td>{$club->getShortCode()}</td>
<td> <td>
<a class="aui-button aui-button-primary" href="/admin/clubs/id{$club->getId()}"> <a class="aui-button aui-button-primary" href="/admin/clubs/id{$club->getId()}">
<span class="aui-icon aui-icon-small aui-iconfont-new-edit">Редактировать</span> <span class="aui-icon aui-icon-small aui-iconfont-new-edit">{_edit}</span>
</a> </a>
</td> </td>
</tr> </tr>
@ -63,11 +65,7 @@
<div align="right"> <div align="right">
{var $isLast = ((10 * (($_GET['p'] ?? 1) - 1)) + $amount) < $count} {var $isLast = ((10 * (($_GET['p'] ?? 1) - 1)) + $amount) < $count}
<a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}"> <a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">&laquo;</a>
⭁ туда <a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">&raquo;</a>
</a>
<a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">
⭇ сюда
</a>
</div> </div>
{/block} {/block}

View file

@ -2,9 +2,9 @@
{block title} {block title}
{if $form->id === 0} {if $form->id === 0}
Новый подарок {_admin_newgift}
{else} {else}
Подарок "{$form->name}" {_gift} "{$form->name}"
{/if} {/if}
{/block} {/block}
@ -16,7 +16,7 @@
<form class="aui" method="POST" enctype="multipart/form-data"> <form class="aui" method="POST" enctype="multipart/form-data">
<div class="field-group"> <div class="field-group">
<label for="avatar"> <label for="avatar">
Изображение {_admin_image}
<span n:if="$form->id === 0" class="aui-icon icon-required"></span> <span n:if="$form->id === 0" class="aui-icon icon-required"></span>
</label> </label>
{if $form->id === 0} {if $form->id === 0}
@ -29,43 +29,39 @@
</span> </span>
<input style="display: none;" id="picInput" type="file" name="pic" accept="image/jpeg,image/png,image/gif,image/webp" /> <input style="display: none;" id="picInput" type="file" name="pic" accept="image/jpeg,image/png,image/gif,image/webp" />
<div class="description"> <div class="description">
<a id="picChange" href="javascript:false">Заменить изображение?</a> <a id="picChange" href="javascript:false">{_admin_image_replace}</a>
</div> </div>
{/if} {/if}
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="id"> <label for="id">ID</label>
ID
</label>
<input class="text long-field" type="number" id="id" disabled="disabled" value="{$form->id}" /> <input class="text long-field" type="number" id="id" disabled="disabled" value="{$form->id}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="putin"> <label for="usages">{_admin_uses}</label>
Использований <input class="text long-field" type="number" id="usages" disabled="disabled" value="{$form->usages}" />
</label>
<input class="text long-field" type="number" id="putin" disabled="disabled" value="{$form->usages}" />
<div n:if="$form->usages > 0" class="description"> <div n:if="$form->usages > 0" class="description">
<a href="javascript:$('#putin').value(0);">Обнулить?</a> <a href="javascript:$('#usages').value(0);">{_admin_uses_reset}</a>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="name"> <label for="name">
Внутренее имя {_admin_name}
<span class="aui-icon icon-required"></span> <span class="aui-icon icon-required"></span>
</label> </label>
<input class="text long-field" type="text" id="name" name="name" value="{$form->name}" /> <input class="text long-field" type="text" id="name" name="name" value="{$form->name}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="price"> <label for="price">
Цена {_admin_price}
<span class="aui-icon icon-required"></span> <span class="aui-icon icon-required"></span>
</label> </label>
<input class="text long-field" type="number" id="price" name="price" min="0" value="{$form->price}" /> <input class="text long-field" type="number" id="price" name="price" min="0" value="{$form->price}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="limit"> <label for="limit">
Ограничение {_admin_limits}
<span class="aui-icon icon-required"></span> <span class="aui-icon icon-required"></span>
</label> </label>
<input class="text long-field" type="number" min="-1" id="limit" name="limit" value="{$form->limit}" /> <input class="text long-field" type="number" min="-1" id="limit" name="limit" value="{$form->limit}" />
@ -76,7 +72,7 @@
<input n:attr="disabled => $form->id === 0, checked => $form->id === 0" class="checkbox" type="checkbox" name="reset_limit" id="reset_limit" /> <input n:attr="disabled => $form->id === 0, checked => $form->id === 0" class="checkbox" type="checkbox" name="reset_limit" id="reset_limit" />
<span class="aui-form-glyph"></span> <span class="aui-form-glyph"></span>
<label for="reset_limit">Сбросить счётчик ограничений</label> <label for="reset_limit">{_admin_limits_reset}</label>
</div> </div>
</fieldset> </fieldset>

View file

@ -1,7 +1,7 @@
{extends "@layout.xml"} {extends "@layout.xml"}
{block title} {block title}
Наборы подарков {_admin_giftsets}
{/block} {/block}
{block headingWrap} {block headingWrap}
@ -9,7 +9,7 @@
{_create} {_create}
</a> </a>
<h1>Наборы подарков</h1> <h1>{_admin_giftsets}</h1>
{/block} {/block}
{block content} {block content}
@ -27,12 +27,11 @@
</td> </td>
<td style="vertical-align: middle; text-align: right;"> <td style="vertical-align: middle; text-align: right;">
<a class="aui-button aui-button-primary" href="/admin/gifts/{$cat->getSlug()}.{$cat->getId()}.meta"> <a class="aui-button aui-button-primary" href="/admin/gifts/{$cat->getSlug()}.{$cat->getId()}.meta">
<span class="aui-icon aui-icon-small aui-iconfont-new-edit">Редактировать</span> <span class="aui-icon aui-icon-small aui-iconfont-new-edit">{_edit}</span>
</a> </a>
<a class="aui-button" href="/admin/gifts/{$cat->getSlug()}.{$cat->getId()}/"> <a class="aui-button" href="/admin/gifts/{$cat->getSlug()}.{$cat->getId()}/">
<span class="aui-icon aui-icon-small aui-iconfont-gallery">Открыть</span> <span class="aui-icon aui-icon-small aui-iconfont-gallery">{_admin_open}</span>
Открыть
</a> </a>
</td> </td>
</tr> </tr>
@ -40,17 +39,13 @@
</table> </table>
{else} {else}
<center> <center>
<p>Наборов подарков нету. Чтобы создать подарок, создайте набор.</p> <p>{_admin_giftsets_none}</p>
</center> </center>
{/if} {/if}
<div align="right"> <div align="right">
{var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + sizeof($categories)) < $count} {var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + sizeof($categories)) < $count}
<a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?act={$act}&p={($_GET['p'] ?? 1) - 1}"> <a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?act={$act}&p={($_GET['p'] ?? 1) - 1}">&laquo;</a>
⭁ туда <a n:if="$isLast" class="aui-button" href="?act={$act}&p={($_GET['p'] ?? 1) + 1}">&raquo;</a>
</a>
<a n:if="$isLast" class="aui-button" href="?act={$act}&p={($_GET['p'] ?? 1) + 1}">
⭇ сюда
</a>
</div> </div>
{/block} {/block}

View file

@ -2,7 +2,7 @@
{block title} {block title}
{if $form->id === 0} {if $form->id === 0}
Создать набор подарков {_admin_giftsets_create}
{else} {else}
{$form->languages["master"]->name} {$form->languages["master"]->name}
{/if} {/if}
@ -14,7 +14,7 @@
{block content} {block content}
<form class="aui" method="POST"> <form class="aui" method="POST">
<h3>Общие настройки</h3> <h3>{_admin_commonsettings}</h3>
<fieldset> <fieldset>
<div class="field-group"> <div class="field-group">
<label for="id"> <label for="id">
@ -24,37 +24,37 @@
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="name_master"> <label for="name_master">
Наименование {_admin_name}
<span class="aui-icon icon-required"></span> <span class="aui-icon icon-required"></span>
</label> </label>
<input class="text long-field" type="text" id="name_master" name="name_master" value="{$form->languages['master']->name}" /> <input class="text long-field" type="text" id="name_master" name="name_master" value="{$form->languages['master']->name}" />
<div class="description">Внутреннее название набора, которое будет использоваться, если не удаётся найти название на языке пользователя.</div> <div class="description">{_admin_giftsets_title}</div>
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="description_master"> <label for="description_master">
Описание {_admin_description}
<span class="aui-icon icon-required"></span> <span class="aui-icon icon-required"></span>
</label> </label>
<input class="text long-field" type="text" id="description_master" name="description_master" value="{$form->languages['master']->description}" /> <input class="text long-field" type="text" id="description_master" name="description_master" value="{$form->languages['master']->description}" />
<div class="description">Внутреннее описание набора, которое будет использоваться, если не удаётся найти название на языке пользователя.</div> <div class="description">{_admin_giftsets_description}</div>
</div> </div>
</fieldset> </fieldset>
<h3>Языко-зависимые настройки</h3> <h3>{_admin_langsettings}</h3>
<fieldset> <fieldset>
{foreach $form->languages as $locale => $data} {foreach $form->languages as $locale => $data}
{continueIf $locale === "master"} {continueIf $locale === "master"}
<div class="field-group"> <div class="field-group">
<label for="name_{$locale}"> <label for="name_{$locale}">
Наименование {_admin_name}
<img src="/assets/packages/static/openvk/img/flags/{$locale}.gif" alt="{$locale}" /> <img src="/assets/packages/static/openvk/img/flags/{$locale}.gif" alt="{$locale}" />
</label> </label>
<input class="text long-field" type="text" id="name_{$locale}" name="name_{$locale}" value="{$data->name}" /> <input class="text long-field" type="text" id="name_{$locale}" name="name_{$locale}" value="{$data->name}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="description_{$locale}"> <label for="description_{$locale}">
Описание {_admin_description}
<img src="/assets/packages/static/openvk/img/flags/{$locale}.gif" alt="{$locale}" /> <img src="/assets/packages/static/openvk/img/flags/{$locale}.gif" alt="{$locale}" />
</label> </label>
<input class="text long-field" type="text" id="description_{$locale}" name="description_{$locale}" value="{$data->description}" /> <input class="text long-field" type="text" id="description_{$locale}" name="description_{$locale}" value="{$data->description}" />

View file

@ -9,7 +9,7 @@
{_create} {_create}
</a> </a>
<h1>Набор "{$cat->getName()}"</h1> <h1>{_admin_giftset} "{$cat->getName()}"</h1>
{/block} {/block}
{block content} {block content}
@ -32,11 +32,11 @@
<td style="vertical-align: middle;"> <td style="vertical-align: middle;">
{$gift->getName()} {$gift->getName()}
<span n:if="$gift->isFree()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-success"> <span n:if="$gift->isFree()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-success">
бесплатный {_admin_price_free}
</span> </span>
</td> </td>
<td style="vertical-align: middle;"> <td style="vertical-align: middle;">
{$gift->getPrice()} голосов {tr("points_amount", $gift->getPrice())}
</td> </td>
<td style="vertical-align: middle;"> <td style="vertical-align: middle;">
{$gift->getUsages()} раз {$gift->getUsages()} раз
@ -72,11 +72,8 @@
<div align="right"> <div align="right">
{var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + sizeof($gifts)) < $count} {var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + sizeof($gifts)) < $count}
<a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">
⭁ туда <a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">&laquo;</a>
</a> <a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">&raquo;</a>
<a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">
⭇ сюда
</a>
</div> </div>
{/block} {/block}

View file

@ -1,13 +1,13 @@
{extends "@layout.xml"} {extends "@layout.xml"}
{block title} {block title}
Сводка {_admin_overview_summary}
{/block} {/block}
{block heading} {block heading}
Сводка {_admin_overview_summary}
{/block} {/block}
{block content} {block content}
Да! ┬─┬︵/(.□.)╯
{/block} {/block}

View file

@ -1,7 +1,7 @@
{extends "@layout.xml"} {extends "@layout.xml"}
{block title} {block title}
Редактировать {$user->getCanonicalName()} {_edit} {$user->getCanonicalName()}
{/block} {/block}
{block heading} {block heading}
@ -12,9 +12,7 @@
<div class="aui-tabs horizontal-tabs"> <div class="aui-tabs horizontal-tabs">
<form class="aui" method="POST"> <form class="aui" method="POST">
<div class="field-group"> <div class="field-group">
<label for="avatar"> <label for="avatar">{_avatar}</label>
Аватарка
</label>
<span id="avatar" class="aui-avatar aui-avatar-project aui-avatar-xlarge"> <span id="avatar" class="aui-avatar aui-avatar-project aui-avatar-xlarge">
<span class="aui-avatar-inner"> <span class="aui-avatar-inner">
<img src="{$user->getAvatarUrl('tiny')}" style="object-fit: cover;"></img> <img src="{$user->getAvatarUrl('tiny')}" style="object-fit: cover;"></img>
@ -22,83 +20,60 @@
</span> </span>
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="id"> <label for="id">ID</label>
ID
</label>
<input class="text medium-field" type="number" id="id" disabled value="{$user->getId()}" /> <input class="text medium-field" type="number" id="id" disabled value="{$user->getId()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="guid"> <label for="guid">GUID</label>
GUID
</label>
<input class="text medium-field" id="guid" disabled value="{$user->getChandlerUser()->getId()}" /> <input class="text medium-field" id="guid" disabled value="{$user->getChandlerUser()->getId()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="registration_ip"> <label for="registration_ip">{_admin_first_known_ip}</label>
Первый IP <input class="text medium-field" id="guid" disabled value="{$user->getRegistrationIP()}" />
</label>
<input class="text medium-field" id="registration_ip" disabled value="{$user->getRegistrationIP()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="first_name"> <label for="first_name">{_name}</label>
Имя
</label>
<input class="text medium-field" type="text" id="first_name" name="first_name" value="{$user->getFirstName()}" /> <input class="text medium-field" type="text" id="first_name" name="first_name" value="{$user->getFirstName()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="last_name"> <label for="last_name">{_surname}</label>
Фамилия
</label>
<input class="text medium-field" type="text" id="last_name" name="last_name" value="{$user->getLastName()}" /> <input class="text medium-field" type="text" id="last_name" name="last_name" value="{$user->getLastName()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="nickname"> <label for="nickname">{_nickname}</label>
Никнейм
</label>
<input class="text medium-field" type="text" id="nickname" name="nickname" value="{$user->getPseudo()}" /> <input class="text medium-field" type="text" id="nickname" name="nickname" value="{$user->getPseudo()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="status"> <label for="status">{_status}</label>
Статус
</label>
<input class="text medium-field" type="text" id="status" name="status" value="{$user->getStatus()}" /> <input class="text medium-field" type="text" id="status" name="status" value="{$user->getStatus()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="email"> <label for="email">E-Mail</label>
E-Mail
</label>
<input class="text medium-field" type="email" id="email" name="email" value="{$user->getEmail()}" /> <input class="text medium-field" type="email" id="email" name="email" value="{$user->getEmail()}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="shortcode"> <label for="shortcode">{_admin_shortcode}</label>
Адрес страницы
</label>
<input class="text medium-field" type="text" id="shortcode" name="shortcode" value="{$user->getShortCode()}" /> <input class="text medium-field" type="text" id="shortcode" name="shortcode" value="{$user->getShortCode()}" />
</div> </div>
<hr> <hr>
<div class="field-group"> <div class="field-group">
<label for="city"> <label for="city">{_admin_verification}</label>
Верификация
</label>
<input class="toggle-large" type="checkbox" id="verify" name="verify" value="1" {if $user->isVerified()} checked {/if} /> <input class="toggle-large" type="checkbox" id="verify" name="verify" value="1" {if $user->isVerified()} checked {/if} />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="city"> <label for="city">{_admin_user_online}</label>
Онлайн статус
</label>
<select name="online" class="select"> <select name="online" class="select">
<option value="0" {if $user->onlineStatus() > 2}selected{/if}>По-умолчанию</option> <option value="0" {if $user->onlineStatus() > 2}selected{/if}>{_admin_user_online_default}</option>
<option value="1" {if $user->onlineStatus() == 1}selected{/if}>Инкогнито</option> <option value="1" {if $user->onlineStatus() == 1}selected{/if}>{_admin_user_online_incognite}</option>
<option value="2" {if $user->onlineStatus() == 2}selected{/if}>Юзер умер</option> <option value="2" {if $user->onlineStatus() == 2}selected{/if}>{_admin_user_online_deceased}</option>
</select> </select>
</div> </div>
<div class="buttons-container"> <div class="buttons-container">
<div class="buttons"> <div class="buttons">
<input type="hidden" name="hash" value="{$csrfToken}" /> <input type="hidden" name="hash" value="{$csrfToken}" />
<input class="button submit" type="submit" value="Сохранить"> <input class="button submit" type="submit" value="{_save}">
</div> </div>
</div> </div>
</form> </form>
</div> </div>
{/block} {/block}

View file

@ -2,14 +2,16 @@
{var $search = true} {var $search = true}
{block title} {block title}
Пользователи {_admin_user_search}
{/block} {/block}
{block heading} {block heading}
Пиздюки {_users}
{/block} {/block}
{block searchTitle}Поиск пиздюков{/block} {block searchTitle}
{include title}
{/block}
{block content} {block content}
{var $users = iterator_to_array($users)} {var $users = iterator_to_array($users)}
@ -18,12 +20,12 @@
<table class="aui aui-table-list"> <table class="aui aui-table-list">
<thead> <thead>
<tr> <tr>
<th>#</th> <th>ID</th>
<th>Имя</th> <th>{_admin_name}</th>
<th>Пол</th> <th>{_gender}</th>
<th>Короткий адрес</th> <th>{_admin_shortcode}</th>
<th>Дата регистрации</th> <th>{_registration_date}</th>
<th>Действия</th> <th>{_admin_actions}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -38,20 +40,18 @@
<a href="{$user->getURL()}">{$user->getCanonicalName()}</a> <a href="{$user->getURL()}">{$user->getCanonicalName()}</a>
<span n:if="$user->isBanned()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed"> <span n:if="$user->isBanned()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed">{_admin_banned}</span>
заблокирован
</span>
</td> </td>
<td>{$user->isFemale() ? "Женский" : "Мужской"}</td> <td>{$user->isFemale() ? tr("female") : tr("male")}</td>
<td>{$user->getShortCode() ?? "(отсутствует)"}</td> <td>{$user->getShortCode() ?? "(" . tr("none") . ")"}</td>
<td>{$user->getRegistrationTime()}</td> <td>{$user->getRegistrationTime()}</td>
<td> <td>
<a class="aui-button aui-button-primary" href="/admin/users/id{$user->getId()}"> <a class="aui-button aui-button-primary" href="/admin/users/id{$user->getId()}">
<span class="aui-icon aui-icon-small aui-iconfont-new-edit">Редактировать</span> <span class="aui-icon aui-icon-small aui-iconfont-new-edit">{_edit}</span>
</a> </a>
{if $thisUser->getChandlerUser()->can("substitute")->model('openvk\Web\Models\Entities\User')->whichBelongsTo(0)} {if $thisUser->getChandlerUser()->can("substitute")->model('openvk\Web\Models\Entities\User')->whichBelongsTo(0)}
<a class="aui-button" href="/setSID/{$user->getChandlerUser()->getId()}?hash={rawurlencode($csrfToken)}"> <a class="aui-button" href="/setSID/{$user->getChandlerUser()->getId()}?hash={rawurlencode($csrfToken)}">
<span class="aui-icon aui-icon-small aui-iconfont-sign-in">Войти как</span> <span class="aui-icon aui-icon-small aui-iconfont-sign-in">{_admin_loginas}</span>
</a> </a>
{/if} {/if}
</td> </td>
@ -62,11 +62,7 @@
<div align="right"> <div align="right">
{var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + $amount) < $count} {var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + $amount) < $count}
<a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}"> <a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">&laquo;</a>
⭁ туда <a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">&raquo;</a>
</a>
<a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">
⭇ сюда
</a>
</div> </div>
{/block} {/block}

View file

@ -5,45 +5,36 @@
{/block} {/block}
{block heading} {block heading}
{_edit} {$form->token ?? "undefined"} {_edit} #{$form->token ?? "undefined"}
{/block} {/block}
{block content} {block content}
<div style="margin: 8px -8px;" class="aui-tabs horizontal-tabs"> <div style="margin: 8px -8px;" class="aui-tabs horizontal-tabs">
<ul class="tabs-menu"> <ul class="tabs-menu">
<li class="menu-item active-tab"> <li class="menu-item active-tab">
<a href="#info">Информация</a> <a href="#info">{_admin_tab_main}</a>
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="#activators">{_voucher_activators}</a> <a href="#activators">{_voucher_activators}</a>
</li> </li>
</ul> </ul>
<div class="tabs-pane active-pane" id="info"> <div class="tabs-pane active-pane" id="info">
<form class="aui" method="POST"> <form class="aui" method="POST">
<div class="field-group"> <div class="field-group">
<label for="id"> <label for="id">ID</label>
ID
</label>
<input class="text long-field" type="number" id="id" name="id" disabled value="{$form->id}" /> <input class="text long-field" type="number" id="id" name="id" disabled value="{$form->id}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="token"> <label for="token">{_admin_voucher_serial}</label>
Серийный номер
</label>
<input class="text long-field" type="text" id="token" name="token" value="{$form->token}" /> <input class="text long-field" type="text" id="token" name="token" value="{$form->token}" />
<div class="description">Номер состоит из 24 символов, если формат неправильный или поле не заполнено, будет назначен автоматически.</div> <div class="description">{_admin_voucher_serial_desc}</div>
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="coins"> <label for="coins">{_admin_voucher_coins}</label>
Количество голосов
</label>
<input class="text long-field" type="number" min="0" id="coins" name="coins" value="{$form->coins}" /> <input class="text long-field" type="number" min="0" id="coins" name="coins" value="{$form->coins}" />
</div> </div>
<div class="field-group"> <div class="field-group">
<label for="rating"> <label for="rating">{_admin_voucher_rating}</label>
Количество рейтинга
</label>
<input class="text long-field" type="number" min="0" id="rating" name="rating" value="{$form->rating}" /> <input class="text long-field" type="number" min="0" id="rating" name="rating" value="{$form->rating}" />
</div> </div>
<div class="field-group"> <div class="field-group">
@ -55,7 +46,7 @@
{/if} {/if}
</label> </label>
<input class="text long-field" type="number" min="-1" id="usages" name="usages" value="{$form->usages}" /> <input class="text long-field" type="number" min="-1" id="usages" name="usages" value="{$form->usages}" />
<div class="description">Количество аккаунтов, которые могут использовать ваучер. Если написать -1, будет Infinity.</div> <div class="description">{_admin_voucher_usages_desc}</div>
</div> </div>
<div class="buttons-container"> <div class="buttons-container">
@ -66,7 +57,6 @@
</div> </div>
</form> </form>
</div> </div>
<div class="tabs-pane" id="activators"> <div class="tabs-pane" id="activators">
<table rules="none" class="aui aui-table-list"> <table rules="none" class="aui aui-table-list">
<tbody> <tbody>
@ -80,9 +70,7 @@
<a href="{$user->getURL()}">{$user->getCanonicalName()}</a> <a href="{$user->getURL()}">{$user->getCanonicalName()}</a>
<span n:if="$user->isBanned()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed"> <span n:if="$user->isBanned()" class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed">{_admin_banned}</span>
заблокирован
</span>
</td> </td>
</tr> </tr>
</tbody> </tbody>

View file

@ -16,13 +16,13 @@
<table class="aui aui-table-list"> <table class="aui aui-table-list">
<thead> <thead>
<tr> <tr>
<th>#</th> <th>ID</th>
<th>Серийный номер</th> <th>{_admin_voucher_serial}</th>
<th>Голоса</th> <th>{_coins}</th>
<th>Рейгтинг</th> <th>{_admin_voucher_rating}</th>
<th>Осталось использований</th> <th>{_usages_left}</th>
<th>Состояние</th> <th>{_admin_voucher_status}</th>
<th>Действия</th> <th>{_admin_actions}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -34,14 +34,14 @@
<td>{$voucher->getRemainingUsages() === INF ? "∞" : $voucher->getRemainingUsages()}</td> <td>{$voucher->getRemainingUsages() === INF ? "∞" : $voucher->getRemainingUsages()}</td>
<td> <td>
{if $voucher->isExpired()} {if $voucher->isExpired()}
<span class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed">закончился</span> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-removed">{_admin_voucher_status_closed}</span>
{else} {else}
<span class="aui-lozenge aui-lozenge-subtle aui-lozenge-success">активен</span> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-success">{_admin_voucher_status_opened}</span>
{/if} {/if}
</td> </td>
<td> <td>
<a class="aui-button aui-button-primary" href="/admin/vouchers/id{$voucher->getId()}"> <a class="aui-button aui-button-primary" href="/admin/vouchers/id{$voucher->getId()}">
<span class="aui-icon aui-icon-small aui-iconfont-new-edit">Редактировать</span> <span class="aui-icon aui-icon-small aui-iconfont-new-edit">{_edit}</span>
</a> </a>
</td> </td>
</tr> </tr>
@ -51,11 +51,8 @@
<div align="right"> <div align="right">
{var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + sizeof($vouchers)) < $count} {var $isLast = ((20 * (($_GET['p'] ?? 1) - 1)) + sizeof($vouchers)) < $count}
<a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">
⭁ туда <a n:if="($_GET['p'] ?? 1) > 1" class="aui-button" href="?p={($_GET['p'] ?? 1) - 1}">&laquo;</a>
</a> <a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">&raquo;</a>
<a n:if="$isLast" class="aui-button" href="?p={($_GET['p'] ?? 1) + 1}">
⭇ сюда
</a>
</div> </div>
{/block} {/block}

View file

@ -842,6 +842,84 @@
"ban_in_support_user_action" = "Ban in support"; "ban_in_support_user_action" = "Ban in support";
"unban_in_support_user_action" = "Unban in support"; "unban_in_support_user_action" = "Unban in support";
/* Admin panel */
"admin" = "Admin panel";
"admin_ownerid" = "Owner ID";
"admin_author" = "Author";
"admin_name" = "Name";
"admin_title" = "Title";
"admin_description" = "Description";
"admin_first_known_ip" = "First known IP";
"admin_shortcode" = "Short code";
"admin_verification" = "Verification";
"admin_banreason" = "Ban reason";
"admin_banned" = "banned";
"admin_gender" = "Gender";
"admin_registrationdate" = "Registration date";
"admin_actions" = "Actions";
"admin_image" = "Image";
"admin_image_replace" = "Replace the image?";
"admin_uses" = "Uses";
"admin_uses_reset" = "Reset the number of uses?";
"admin_limits" = "Limits";
"admin_limits_reset" = "Reset the number of limits";
"admin_open" = "Open";
"admin_loginas" = "Login as...";
"admin_commonsettings" = "Common settings";
"admin_langsettings" = "Language-dependent settings";
"admin_tab_main" = "General";
"admin_tab_ban" = "Ban";
"admin_tab_followers" = "Followers";
"admin_overview" = "Overview";
"admin_overview_summary" = "Summary";
"admin_content" = "User-generated content";
"admin_user_search" = "Search for users";
"admin_user_online" = "Online status";
"admin_user_online_default" = "Default";
"admin_user_online_incognito" = "Incognito";
"admin_user_online_deceased" = "Deceased";
"admin_club_search" = "Search for groups";
"admin_club_excludeglobalfeed" = "Do not display posts in the global feed";
"admin_services" = "Paid services";
"admin_newgift" = "New gift";
"admin_price" = "Price";
"admin_giftset" = "Gift set";
"admin_giftsets" = "Gift sets";
"admin_giftsets_none" = "There are no gift sets. Create a set to create a gift.";
"admin_giftsets_create" = "Create a gift set";
"admin_giftsets_title" = "The internal name of the set, which will be used if no name can be found in the user's language.";
"admin_giftsets_description" = "The internal description of the set, which will be used if no name can be found in the user's language.";
"admin_price_free" = "free";
"admin_voucher_rating" = "Rating";
"admin_voucher_serial" = "Serial number";
"admin_voucher_serial_desc" = "The number consists of 24 characters. If the format is incorrect or the field is not filled in, it will be assigned automatically.";
"admin_voucher_coins" = "Number of votes";
"admin_voucher_rating" = "Number of rating";
"admin_voucher_usages_desc" = "The number of accounts that can use the voucher. If you type -1, it will be infinity.";
"admin_voucher_status" = "Status";
"admin_voucher_status_opened" = "active";
"admin_voucher_status_closed" = "closed";
"admin_settings" = "Settings";
"admin_settings_tuning" = "General";
"admin_settings_appearance" = "Appearance";
"admin_settings_security" = "Security";
"admin_settings_integrations" = "Integrations";
"admin_settings_system" = "System";
"admin_about" = "About OpenVK";
"admin_about_version" = "Version";
"admin_about_instance" = "Instance";
"admin_commerce_disabled" = "Commerce has been disabled by the system administrator";
"admin_commerce_disabled_desc" = "The voucher and gift settings will be saved, but will have no effect.";
/* Paginator (deprecated) */ /* Paginator (deprecated) */
"paginator_back" = "Back"; "paginator_back" = "Back";

View file

@ -885,6 +885,82 @@
"ban_in_support_user_action" = "Заблокировать в поддержке"; "ban_in_support_user_action" = "Заблокировать в поддержке";
"unban_in_support_user_action" = "Разблокировать в поддержке"; "unban_in_support_user_action" = "Разблокировать в поддержке";
/* Admin panel */
"admin" = "Админ-панель";
"admin_ownerid" = "ID владельца";
"admin_author" = "Автор";
"admin_name" = "Имя";
"admin_title" = "Название";
"admin_description" = "Описание";
"admin_first_known_ip" = "Первый IP";
"admin_shortcode" = "Короткий адрес";
"admin_verification" = "Верификация";
"admin_banreason" = "Причина блокировки";
"admin_banned" = "заблокирован";
"admin_actions" = "Действия";
"admin_image" = "Изображение";
"admin_image_replace" = "Заменить изображение?";
"admin_uses" = "Использований";
"admin_uses_reset" = "Сбросить количество использований?";
"admin_limits" = "Ограничения";
"admin_limits_reset" = "Сбросить количество ограничений";
"admin_open" = "Открыть";
"admin_loginas" = "Войти как...";
"admin_commonsettings" = "Общие настройки";
"admin_langsettings" = "Языко-зависимые настройки";
"admin_tab_main" = "Главное";
"admin_tab_ban" = "Блокировка";
"admin_tab_followers" = "Участники";
"admin_overview" = "Обзор";
"admin_overview_summary" = "Сводка";
"admin_content" = "Пользовательский контент";
"admin_user_search" = "Поиск пользователей";
"admin_user_online" = "Онлайн статус";
"admin_user_online_default" = "По-умолчанию";
"admin_user_online_incognito" = "Инкогнито";
"admin_user_online_deceased" = "Покойник";
"admin_club_search" = "Поиск групп";
"admin_club_excludeglobalfeed" = "Не отображать записи в глобальной ленте";
"admin_services" = "Платные услуги";
"admin_newgift" = "Новый подарок";
"admin_price" = "Цена";
"admin_giftset" = "Набор подарков";
"admin_giftsets" = "Наборы подарков";
"admin_giftsets_none" = "Нет наборов подарков. Создайте набор, чтобы создать подарок.";
"admin_giftsets_create" = "Создать набор подарков";
"admin_giftsets_title" = "Внутреннее название набора, которое будет использоваться, если не удаётся найти название на языке пользователя.";
"admin_giftsets_description" = "Внутреннее описание набора, которое будет использоваться, если не удаётся найти название на языке пользователя.";
"admin_price_free" = "бесплатный";
"admin_voucher_rating" = "Рейтинг";
"admin_voucher_serial" = "Серийный номер";
"admin_voucher_serial_desc" = "Номер состоит из 24 символов. Если формат неправильный или поле не заполнено, будет назначен автоматически.";
"admin_voucher_coins" = "Количество голосов";
"admin_voucher_rating" = "Количество рейтинга";
"admin_voucher_usages_desc" = "Количество аккаунтов, которые могут использовать ваучер. Если написать -1, будет бесконечность.";
"admin_voucher_status" = "Состояние";
"admin_voucher_status_opened" = "активен";
"admin_voucher_status_closed" = "закончился";
"admin_settings" = "Настройки";
"admin_settings_tuning" = "Общее";
"admin_settings_appearance" = "Внешний вид";
"admin_settings_security" = "Безопасность";
"admin_settings_integrations" = "Интеграции";
"admin_settings_system" = "Система";
"admin_about" = "Об OpenVK";
"admin_about_version" = "Версия";
"admin_about_instance" = "Инстанция";
"admin_commerce_disabled" = "Коммерция отключена системным администратором";
"admin_commerce_disabled_desc" = "Настройки ваучеров и подарков будут сохранены, но не будут оказывать никакого влияния.";
/* Paginator (deprecated) */ /* Paginator (deprecated) */
"paginator_back" = "Назад"; "paginator_back" = "Назад";