DEV: Template Simplification

This commit is contained in:
Evg 2022-01-27 20:59:03 +03:00
parent bb441a733c
commit 95adae6020
116 changed files with 779 additions and 2083 deletions

View file

@ -78,9 +78,9 @@ class LoginController extends MainController
return Tpl::agRender(
'/auth/login',
[
'meta' => meta($m, Translate::get('sign in'), Translate::get('info-login')),
'meta' => meta($m, Translate::get('sign.in'), Translate::get('info-login')),
'data' => [
'sheet' => 'sign in',
'sheet' => 'sign.in',
'type' => 'login',
]
]

View file

@ -226,7 +226,6 @@ function votes($user_id, $content, $type, $ind, $css = '', $block = '')
return $html;
}
// function votes($user_id, $content, $type, $ind, $css = '', $block = '')
function favorite($user_id, $content_id, $type, $favorite_tid, $ind, $css = '')
{
$html = '';
@ -250,7 +249,7 @@ function tabs_nav($name, $item, $user, array $pages = [])
foreach ($pages as $key => $page) {
$tl = $page['tl'] ?? null;
if ($user['trust_level'] >= $tl) {
$classes = 'mr20 gray-500 sky-500-hover';
$classes = 'mr20 gray-500';
$isActive = $page['id'] == $item ? $classes . ' sky-500 ' : $classes;
$isAria = $page['id'] == $item ? ' aria-current="page"' : '';
@ -260,20 +259,20 @@ function tabs_nav($name, $item, $user, array $pages = [])
}
}
} else {
$html = '<ul class="p0 mt10 list-none text-sm">';
$html = '<ul class="p0 m0 list-none text-sm">';
foreach ($pages as $key => $page) {
$tl = $page['tl'] ?? null;
if (!empty($page['hr'])) {
if ($user['id'] > 0) $html .= '<li><hr class="w-90"></li>';
} else {
if ($user['trust_level'] >= $tl) {
$classes = 'sky-500-hover dark-gray-200';
$classes = 'dark-gray-300';
$isActive = $page['id'] == $item ? $classes . ' sky-500 ' : $classes;
$isAria = $page['id'] == $item ? ' aria-current="page"' : '';
$html .= '<li><a ' . $isAria . ' class="' . $isActive . '" href="' . $page['url'] . '">
<i class="' . $page['icon'] . ' mr10 text-2xl"></i>
<span>' . $page['title'] . '</span></a></li>';
<span class="dark-gray-300">' . $page['title'] . '</span></a></li>';
}
}
}

View file

@ -94,7 +94,7 @@ $data = [
'parent' => 'Elternteil',
'edit topic' => 'Thema bearbeiten',
'authorization' => 'Genehmigung',
'sign in' => 'Anmelden',
'sign.in' => 'Anmelden',
'sign out' => 'Ausloggen',
'sign up' => 'Anmelden',
'advertising' => 'Werbung',

View file

@ -93,7 +93,7 @@ $data = [
'parent' => 'Parent',
'edit topic' => 'Edit topic',
'authorization' => 'Authorization',
'sign in' => 'Sign in',
'sign.in' => 'Sign in',
'sign out' => 'Sign out',
'sign up' => 'Sign up',
'advertising' => 'Advertising',

View file

@ -94,7 +94,7 @@ $data = [
'parent' => 'Parent',
'edit topic' => 'Edit topic',
'authorization' => 'Authorization',
'sign in' => 'Sign in',
'sign.in' => 'Sign in',
'sign out' => 'Sign out',
'sign up' => 'Sign up',
'advertising' => 'Advertising',

View file

@ -86,7 +86,7 @@ $data = [
'parent' => 'Părinte',
'edit topic' => 'Schimbați subiectul',
'authorization' => 'Autentificare',
'sign in' => 'Autentificare',
'sign.in' => 'Autentificare',
'sign out' => 'Ieși',
'sign up' => 'Inregistrare',
'advertising' => 'Publicitate',

View file

@ -65,7 +65,7 @@ $data = [
'parent' => 'Родитель',
'edit topic' => 'Изменим тему',
'authorization' => 'Авторизация',
'sign in' => 'Войти',
'sign.in' => 'Войти',
'sign out' => 'Выйти',
'sign up' => 'Регистрация',
'advertising' => 'Реклама',

View file

@ -93,7 +93,7 @@ $data = [
'parent' => '家長',
'edit topic' => '編輯主題',
'authorization' => '授權',
'sign in' => '登入',
'sign.in' => '登入',
'sign out' => '登出',
'sign up' => '註冊',
'advertising' => '廣告',

View file

@ -22,8 +22,8 @@
<label class="block mt20 mb5"><?= Translate::get('password'); ?></label>
<input type="password" placeholder="<?= Translate::get('enter your password'); ?>" name="password" class="w-100 h30 pl5">
</div>
<img class="mb5 right" src="<?= Config::get('meta.img_footer_url'); ?>">
<?= sumbit(Translate::get('sign in')); ?>
<img class="mb5 right" src="<?= Config::get('meta.img_footer_path'); ?>">
<?= sumbit(Translate::get('sign.in')); ?>
</form>
</main>

View file

@ -10,7 +10,7 @@ return [
'title' => 'Агути — сообщество (темы, блоги по интересам)',
'desc' => 'Темы по интересам, лента, блоги. Беседы, вопросы и ответы, интересные факты. Скрипты CMS и социальных сетей, Фреймворки. Скрипт агути.',
'img_path' => '/assets/images/agouti.webp',
'img_footer_url' => 'https://agouti.ru/assets/images/agouti_footer.gif',
'img_footer_path' => '/assets/images/agouti_footer.gif',
// Для главной - заголовок и текст баннера
// For the main page - the banner title and text

View file

@ -1,4 +1,4 @@
</div>
</container>
<footer class="w-100 mt15 p15 bg-zinc-800 clear">
<div class="col-span-12 max-width grid grid-cols-12 mr-auto">
<div class="text-sm mt5 mb5 gray-400 col-span-3">

View file

@ -45,4 +45,4 @@ $dark = Request::getCookie('dayNight') == 'dark' ? 'dark' : '';
</div>
</div>
</header>
<div class="max-width mr-auto grid grid-cols-12 gap-4 mb-gap-05 pr5 pl5">
<container>

View file

@ -20,8 +20,8 @@ class Catalog
}
// Лист сайтов по темам (сайты по "категориям")
public function sites($sheet)
{
public function index($sheet)
{
$slug = Request::get('slug');
$page = Request::getInt('page');
$page = $page == 0 ? 1 : $page;

View file

@ -1,25 +1,23 @@
<?= Tpl::insert('header', ['user' => $user, 'data' => $data, 'meta' => $meta]); ?>
<main class="col-span-12 mb-col-12">
<div class="pt5 mr15 pb5 ml15">
<?php if (UserData::checkAdmin()) { ?>
<a title="<?= Translate::get('deleted'); ?>" class="right mt5 ml15" href="<?= getUrlByName('web.deleted'); ?>">
<?= Translate::get('deleted'); ?>
</a>
<a title="<?= Translate::get('add'); ?>" class="right mt5" href="<?= getUrlByName('site.add'); ?>">
<i class="bi bi-plus-lg middle"></i>
</a>
<?php } ?>
<h1 class="mt0 mb10 text-2xl font-normal"><?= Translate::get('categories'); ?></h1>
</div>
<div class="flex mb20 pt10 pr15 pb10 pl15 bg-yellow-50 flex-auto">
<?php if (UserData::checkAdmin()) { ?>
<a class="right mt5 ml15" href="<?= getUrlByName('web.deleted'); ?>">
<?= Translate::get('deleted'); ?>
</a>
<a title="<?= Translate::get('add'); ?>" class="right mt5" href="<?= getUrlByName('site.add'); ?>">
<i class="bi bi-plus-lg middle"></i>
</a>
<?php } ?>
<h1 class="ml10"><?= Translate::get('categories'); ?></h1>
<div class="flex mb20 p15 bg-yellow-50 flex-auto">
<?php foreach (Config::get('web-root-categories') as $cat) { ?>
<div class="mr60">
<a class="pt5 pr10 mr60 dark-gray-300 underline-hover text-2xl block " title="<?= $cat['title']; ?>" href="<?= getUrlByName('web.topic', ['slug' => $cat['url']]); ?>">
<a class="pr10 mr60 dark-gray-300 underline-hover text-2xl block " href="<?= getUrlByName('web.topic', ['slug' => $cat['url']]); ?>">
<?= $cat['title']; ?>
</a>
<?php if (!empty($cat['sub'])) { ?>
<?php foreach ($cat['sub'] as $sub) { ?>
<a class="pr10 pb5 text-sm black inline" title="<?= $sub['title']; ?>" href="<?= getUrlByName('web.topic', ['slug' => $sub['url']]); ?>">
<a class="pr10 text-sm black inline" href="<?= getUrlByName('web.topic', ['slug' => $sub['url']]); ?>">
<?= $sub['title']; ?>
</a>
<?php } ?>
@ -30,7 +28,7 @@
</div>
<?php } ?>
</div>
<div class="ml15 flex justify-between flex-row items-center max-w780">
<div class="box-flex ml15 max-w780">
<div>
<?= num_word($data['count'], Translate::get('num-website'), false); ?>:
<?= $data['count']; ?>
@ -55,5 +53,5 @@
<?= pagination($data['pNum'], $data['pagesCount'], $data['sheet'], getUrlByName($data['sheet'])); ?>
</div>
</main>
</div>
</container>
<?= includeTemplate('/view/default/footer'); ?>

View file

@ -6,9 +6,7 @@
</div>
<div class="mr20 flex-auto">
<a class="dark-gray-300" href="<?= getUrlByName('web.website', ['slug' => $item['item_url_domain']]); ?>">
<h2 class="font-normal underline-hover text-2xl mt0 mb0">
<?= $item['item_title_url']; ?>
</h2>
<h2><?= $item['item_title_url']; ?></h2>
</a>
<div class="mt5 mb15 max-w640">
<?= $item['item_content_url']; ?>

View file

@ -1,21 +1,20 @@
<?= Tpl::insert('header', ['user' => $user, 'data' => $data, 'meta' => $meta]); ?>
<main class="col-span-12 mb-col-12">
<div class="pt5 mr15 pb5 ml15 text-sm">
<?php if (UserData::checkAdmin()) { ?>
<a title="<?= Translate::get('add'); ?>" class="right mt5" href="<?= getUrlByName('site.add'); ?>">
<i class="bi bi-plus-lg middle"></i>
</a>
<?php } ?>
<a class="gray" href="<?= getUrlByName('web'); ?>" class="text-sm gray-400"><?= Translate::get('websites'); ?></a>
<a href="<?= getUrlByName('web'); ?>" class="text-sm gray-400 ml10"><?= Translate::get('websites'); ?></a>
<?php if (!empty($data['high_topics'][0])) {
$site = $data['high_topics'][0]; ?>
<span class="gray mr5 ml5">/</span>
<a class="" href="<?= getUrlByName('web.topic', ['slug' => $site['facet_slug']]); ?>" title="<?= $site['facet_title']; ?>">
<a href="<?= getUrlByName('web.topic', ['slug' => $site['facet_slug']]); ?>">
<?= $site['facet_title']; ?>
</a>
<?php } ?>
<h1 class="mt0 mb5 text-2xl font-normal">
<h1 class="ml10">
<?= $data['topic']['facet_title']; ?>
<?php if (UserData::checkAdmin()) { ?>
<a class="text-sm ml5" href="<?= getUrlByName('topic.edit', ['id' => $data['topic']['facet_id']]); ?>">
@ -26,9 +25,8 @@
</a>
<?php } ?>
</h1>
</div>
<div class="mb20 pt10 pr15 pb10 pl15 bg-yellow-50 dark-bg-black">
<div class="mb20 p15 bg-yellow-50 dark-bg-black">
<?php if ($data['low_topics']) { ?>
<div class="grid grid-cols-3 gap-2 justify-between mb10">
<?php foreach ($data['low_topics'] as $lt) { ?>
@ -68,10 +66,12 @@
<?php } ?>
</div>
<div class="flex flex-row items-center justify-between pt5 mr15 pb5 ml15 w-90">
<p class="m0 text-xl lowercase"><?= num_word($data['count'], Translate::get('num-website'), true); ?></p>
<div class="box-flex ml15 max-w780">
<p class="m0 text-xl lowercase">
<?= num_word($data['count'], Translate::get('num-website'), true); ?>
</p>
<ul class="flex flex-row list-none m0 p0 center">
<?= tabs_nav(
$user['id'],
$data['sheet'],
@ -103,7 +103,7 @@
<?= pagination($data['pNum'], $data['pagesCount'], $data['sheet'], getUrlByName('web')); ?>
</div>
</main>
</div>
</container>
<div class="bg-white p15 mb-none">
<?= $data['topic']['facet_description']; ?>
</div>

View file

@ -9,7 +9,7 @@
<?= votes($user['id'], $data['item'], 'item', 'ps', 'text-2xl', 'block'); ?>
</div>
<h1 class="mt5 mb10 text-2xl font-normal"><?= $data['item']['item_title_url']; ?>
<h1><?= $data['item']['item_title_url']; ?>
<?php if ($user['trust_level'] == 5) { ?>
<a class="text-sm ml5" title="<?= Translate::get('edit'); ?>" href="<?= getUrlByName('web.edit', ['id' => $data['item']['item_id']]); ?>">
<i class="bi bi-pencil"></i>
@ -44,30 +44,30 @@
</div>
</div>
<?php if ($data['item']['item_is_soft'] == 1) { ?>
<h2 class="mb5 mb-mt-5 font-normal"><?= Translate::get('soft'); ?></h2>
<h3 class="mt5 mb10 font-normal"><?= $data['item']['item_title_soft']; ?></h3>
<h2><?= Translate::get('soft'); ?></h2>
<h3><?= $data['item']['item_title_soft']; ?></h3>
<div class="gray-600">
<?= $data['item']['item_content_soft']; ?>
</div>
<div class="mb5">
<p>
<i class="bi bi-github mr5"></i>
<a target="_blank" rel="nofollow noreferrer ugc" href="<?= $data['item']['item_github_url']; ?>">
<?= $data['item']['item_github_url']; ?>
</a>
</div>
</p>
<?php } ?>
<?php if ($data['related_posts']) { ?>
<div class="bg-white br-box-gray pt15">
<p>
<?= Tpl::insert('/_block/related-posts', ['related_posts' => $data['related_posts'], 'number' => true]); ?>
</div>
</p>
<?php } ?>
</div>
</main>
<aside class="col-span-3 relative mb-none">
<div class="bg-white br-rd5 br-box-gray box-shadow-all p15 mb15">
<box class="bg-white br-box-gray box-shadow-all">
<?php if ($data['similar']) { ?>
<div class="gray mb5"><?= Translate::get('recommended'); ?></div>
<h3 class="uppercase-box"><?= Translate::get('recommended'); ?></h3>
<?php foreach ($data['similar'] as $link) { ?>
<?= website_img($link['item_url_domain'], 'thumbs', $link['item_title_url'], 'mr5 w200 box-shadow'); ?>
<a class="inline mr20 mb15 block text-sm" href="<?= getUrlByName('web.website', ['slug' => $link['item_url_domain']]); ?>">
@ -77,8 +77,8 @@
<?php } else { ?>
....
<?php } ?>
</div>
<div class="bg-white br-rd5 br-box-gray box-shadow-all p15 mb15">
</box>
<box class="bg-white br-box-gray box-shadow-all">
<?php if ($data['high_leve']) { ?>
<div class="gray"><?= Translate::get('see more'); ?></div>
<?php foreach ($data['high_leve'] as $rl) { ?>
@ -91,7 +91,7 @@
<?php } else { ?>
....
<?php } ?>
</div>
</box>
</aside>
</div>
</container>
<?= includeTemplate('/view/default/footer'); ?>

View file

@ -45,11 +45,11 @@
<?= pagination($data['pNum'], $data['pagesCount'], $data['sheet'], '/admin/search'); ?>
<?php } else { ?>
<div class="mb20"><?= Translate::get('no.search.results'); ?></div>
<p><?= Translate::get('no.search.results'); ?></p>
<a class="mb20 block" href="/"><?= Translate::get('to main'); ?>...</a>
<?php } ?>
</main>
<div class="col-span-2 mb-none"></div>
</div>
<?= Tpl::insert('/_block/wide-footer'); ?>
<?= Tpl::insert('footer', ['user' => $user]); ?>

File diff suppressed because one or more lines are too long

View file

@ -1,8 +1,8 @@
<div class="mb10 mt15">
<fieldset>
<?php if (!empty($title)) { ?><div class="mb5"><?= $title; ?><sup class="red-500">*</sup></div><?php } ?>
<div id="ag-redactor" class="editorSection"><?php if (!empty($content)) { ?><?= $content; ?><?php } ?></div>
<input type="hidden" name="content" class="text">
</div>
</fieldset>
<?php $lang = $user['lang']; ?>
<script src="/assets/js/editor/i18n/<?= $lang; ?>.js" charset="utf-8"></script>

View file

@ -1,5 +1,5 @@
<div class="mb20">
<label class="block" for="about"><?= $title; ?></label>
<fieldset>
<label for="about"><?= $title; ?></label>
<textarea type="<?= $type; ?>" rows="4" <?php if (!empty($min)) { ?>minlength="<?= $min; ?>" <?php } ?> <?php if (!empty($max)) { ?>maxlength="<?= $max; ?>" <?php } ?> name="<?= $name; ?>"><?php if (!empty($content)) { ?><?= $content; ?><?php } ?></textarea>
<?php if (!empty($help)) { ?><div class="text-sm gray-400"><?= $help; ?></div><?php } ?>
</div>
</fieldset>

View file

@ -1,5 +1,5 @@
<div class="mb20 max-w640">
<label class="block" for="post_content"><?= Translate::get('type'); ?></label>
<fieldset>
<label for="post_content"><?= Translate::get('type'); ?></label>
<select class="h40" name="facet_type">
<?php foreach (Config::get('facets.facet_type') as $value) { ?>
<option <?php if ($value['value'] == $type) { ?>selected<?php } ?> value="<?= $value['value']; ?>">
@ -7,4 +7,4 @@
</option>
<?php } ?>
</select>
</div>
</fieldset>

View file

@ -3,13 +3,13 @@
<form id="add_comm" class="new_comment" action="/comment/create" accept-charset="UTF-8" method="post">
<?= csrf_field() ?>
<textarea rows="5" minlength="6" placeholder="<?= Translate::get('write-something'); ?>..." name="comment" id="comment"></textarea>
<div class="mb20">
<fieldset>
<input type="hidden" name="post_id" id="post_id" value="<?= $data['post_id']; ?>">
<input type="hidden" name="answer_id" id="answer_id" value="<?= $data['answer_id']; ?>">
<input type="hidden" name="comment_id" id="comment_id" value="<?= $data['comment_id']; ?>">
<?= sumbit(Translate::get('comment')); ?>
<span id="cancel_comment" class="text-sm inline ml5 gray"><?= Translate::get('cancel'); ?></span>
</div>
</fieldset>
</form>
<?php } else { ?>
<textarea rows="5" disabled="disabled" class="bg-gray-000" placeholder="<?= Translate::get('no-auth-comm'); ?>." name="content" id="content"></textarea>

View file

@ -3,12 +3,12 @@
<form id="add_comm" class="new_comment" action="/comment/edit" accept-charset="UTF-8" method="post">
<?= csrf_field() ?>
<textarea rows="5" minlength="6" name="comment" id="comment"><?= $data['comment_content']; ?></textarea>
<div class="mt5 mb20 max-w640">
<fieldset>
<input type="hidden" name="post_id" id="post_id" value="<?= $data['post_id']; ?>">
<input type="hidden" name="comment_id" id="comment_id" value="<?= $data['comment_id']; ?>">
<?= sumbit(Translate::get('edit')); ?>
<span id="cancel_comment" class="text-sm inline ml5 gray"><?= Translate::get('cancel'); ?></span>
</div>
</fieldset>
<div class="v-otsr"></div>
</form>
<?php } ?>

View file

@ -1,9 +1,9 @@
<?php foreach ($data as $fl) { ?>
<div class="mb20 max-w640">
<label class="block mb5" for="post_title"><?= $fl['title']; ?>
<fieldset>
<label for="post_title"><?= $fl['title']; ?>
<?php if (!empty($fl['red'])) { ?><sup class="red-500">*</sup><?php } ?>
</label>
<input class="w-100 h40 pl5"
<input
<?php if (!empty($fl['min'])) { ?>minlength="<?= $fl['min']; ?>" <?php } ?>
<?php if (!empty($fl['max'])) { ?>maxlength="<?= $fl['max']; ?>" <?php } ?>
<?php if (!empty($fl['id'])) { ?>id="<?= $fl['id']; ?>" <?php } ?>
@ -12,5 +12,5 @@
<?php if (!empty($fl['value'])) { ?>value="<?= $fl['value']; ?>" <?php } ?>
name="<?= $fl['name']; ?>">
<?php if (!empty($fl['help'])) { ?><div class="text-sm gray-400"><?= $fl['help']; ?></div><?php } ?>
</div>
</fieldset>
<?php } ?>

View file

@ -2,18 +2,15 @@
$checked = $value['checked'] ?? 0;
$help = $value['help'] ?? null;
?>
<div class="mb20 max-w640">
<label class="block mb5"><?= $value['title']; ?></label>
<label class="container-radio">
<input type="radio" name="<?= $value['name']; ?>" <?php if ($checked == 0) { ?>checked<?php } ?> value="0">
<span class="checkmark"></span>
<?= Translate::get('no'); ?>
</label>
<label class="container-radio">
<input type="radio" name="<?= $value['name']; ?>" <?php if ($checked == 1) { ?>checked<?php } ?> value="1">
<span class="checkmark"></span>
<fieldset>
<label><?= $value['title']; ?></label>
<input type="radio" name="<?= $value['name']; ?>" <?php if ($checked == 0) { ?>checked<?php } ?> value="0">
<span class="checkmark"></span>
<?= Translate::get('no'); ?>
<input type="radio" name="<?= $value['name']; ?>" <?php if ($checked == 1) { ?>checked<?php } ?> value="1">
<span class="checkmark"></span>
<?= Translate::get('yes'); ?>
</label>
<?php if ($help) { ?><div class="mt5 text-sm gray-400"><?= $help; ?></div><?php } ?>
</div>
</fieldset>
<?php } ?>

View file

@ -1,9 +1,7 @@
<div class="mb20 max-w640">
<label class="block">
<?= Translate::get('blog'); ?>
</label>
<fieldset>
<label><?= Translate::get('blog'); ?></label>
<input name="blog_select" id="blog_id">
</div>
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
let blog_search = async (props = {}) => {

View file

@ -1,8 +1,8 @@
<div class="mb20 max-w640">
<label class="block" for="post_content"><?= Translate::get('for'); ?> TL</label>
<fieldset>
<label for="post_content"><?= Translate::get('for'); ?> TL</label>
<select class="w-100 h30 bg-white br-box-gray" name="content_tl">
<?php for ($i = 0; $i <= $user['trust_level']; $i++) { ?>
<option <?php if ($data == $i) { ?>selected<?php } ?> value="<?= $i; ?>"><?= $i; ?></option>
<?php } ?>
</select>
</div>
</fieldset>

View file

@ -2,12 +2,10 @@
// Выбор детей в основной структуре
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= $title; ?>
</label>
<fieldset>
<label><?= $title; ?></label>
<input name="high_facet_id" id="high_facet_id">
</div>
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
var facet_search = async (props = {}) => {

View file

@ -2,12 +2,10 @@
// Связанные темы
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= $title; ?>
</label>
<fieldset>
<label><?= $title; ?></label>
<input name="facet_matching[]" id="facet_id_matching">
</div>
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
var facet_search = async (props = {}) => {

View file

@ -2,12 +2,10 @@
// Связанные посты
// Related posts
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= $title; ?>
</label>
<fieldset>
<label><?= $title; ?></label>
<input name="post_select[]" id="post_id">
</div>
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
document.addEventListener("DOMContentLoaded", async () => {

View file

@ -1,9 +1,7 @@
<div class="mb20 max-w640">
<label class="block">
<?= Translate::get('section'); ?>
</label>
<fieldset>
<label><?= Translate::get('section'); ?></label>
<input name="section_select" id="section_id">
</div>
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
let section_search = async (props = {}) => {

View file

@ -3,8 +3,8 @@
// $action (edit)
?>
<div class="mb20 max-w640">
<label class="block mb5">
<fieldset>
<label>
<?= Translate::get($type); ?> <?php if (!empty($red)) { ?><sup class="red-500">*</sup><?php } ?>
</label>
@ -13,7 +13,7 @@
<?php } ?>
<?php if (!empty($help)) { ?><div class="gray text-sm"><?= $help; ?>...</div><?php } ?>
</div>
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
var focus_search = async (props = {}) => {

View file

@ -1,8 +1,8 @@
<?php if ($uid['trust_level'] > 4) { ?>
<div class="mb20 max-w640">
<?= Translate::get('author'); ?>
<input name='user_id' id="user_id">
</div>
<fieldset>
<label><?= Translate::get('author'); ?></label>
<input name='user_id' id="user_id">
</fieldset>
<script nonce="<?= $_SERVER['nonce']; ?>">
const user_search = async (props = {}) => {

View file

@ -1,10 +1,10 @@
<div class="br-box-gray bg-blue-100 dark-bg-black dark-br-black gray dark-gray-300 p20 mb15 relative center br-rd5">
<box class="bg-blue-100 dark-bg-black gray dark-gray-300 center">
<?= Translate::get('not registered'); ?>?
<form action="<?= getUrlByName('register'); ?>" class="mt15 mb15 block">
<?= sumbit(Translate::get('create account')); ?>
</form>
<i class="bi bi-emoji-wink absolute right0 mr15 bottom0 mb5 text-3xl gray-400"></i>
<a class="mt15 mb0 gray lowercase block text-sm" href="<?= getUrlByName('login'); ?>">
<?= Translate::get('sign in'); ?>
<?= Translate::get('sign.in'); ?>
</a>
</div>
</box>

View file

@ -1,6 +1,6 @@
<?php if (!empty($related_posts)) { ?>
<div class="mb15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('related'); ?></h3>
<p>
<h3 class="uppercase-box"><?= Translate::get('related'); ?></h3>
<?php $num = 0; ?>
<?php foreach ($related_posts as $related) { ?>
<div class="mb10 flex">
@ -15,5 +15,5 @@
</a>
</div>
<?php } ?>
</div>
</p>
<?php } ?>

View file

@ -4,7 +4,7 @@
<?= $lang; ?>...
</div>
<?php } ?>
<div class="flex flex-row items-center justify-between bg-white br-rd5 br-box-gray p15 mt15">
<div class="box-flex bg-white br-box-gray p15">
<div class="text-sm">
<a class="inline gray-400" title="<?= Translate::get('help'); ?>" href="/info/<?= Config::get('facets.page-one'); ?>">
<?= Translate::get('help'); ?>

View file

@ -1,29 +1,27 @@
<div class="br-box-gray p15 mb15 br-rd5 bg-white text-sm">
<form class="" action="<?= getUrlByName('login'); ?>" method="post">
<form action="<?= getUrlByName('login'); ?>" method="post">
<?php csrf_field(); ?>
<div class="mb20">
<label for="email" class="block mb5">Email</label>
<input type="email" id="email" placeholder="<?= Translate::get('enter'); ?> e-mail" name="email" class="w-100 h30 pl5">
</div>
<div class="inputs relative mb20">
<label for="password" class="block mb5"><?= Translate::get('password'); ?></label>
<input type="password" id="password" placeholder="<?= Translate::get('enter your password'); ?>" name="password" class="password w-100 h30 pl5">
<span class="showPassword absolute gray-400 right5 text-xl"><i class="bi bi-eye"></i></span>
</div>
<div class="mb20 mb20 flex">
<input type="checkbox" class="left mr5" id="rememberme" name="rememberme" value="1">
<label id="rem-text" class="form-check-label" for="rememberme">
<span class="gray-600"><?= Translate::get('remember me'); ?></span>
<fieldset class="mt0">
<label for="email">Email</label>
<input type="email" id="email" placeholder="<?= Translate::get('enter'); ?> e-mail" name="email">
</fieldset>
<fieldset>
<label for="password"><?= Translate::get('password'); ?></label>
<input type="password" id="password" placeholder="<?= Translate::get('enter your password'); ?>" name="password">
<span class="showPassword absolute gray-400 right5 mt5 text-lg"><i class="bi bi-eye"></i></span>
</fieldset>
<fieldset class="flex items-center">
<input type="checkbox" id="rememberme" name="rememberme" value="1">
<label id="rem-text" class="mb0 ml5 gray-600" for="rememberme">
<?= Translate::get('remember me'); ?>
</label>
</div>
<div class="mb20">
<?= sumbit(Translate::get('sign in')); ?>
</div>
<div class="center gray-600">
</fieldset>
<fieldset>
<?= sumbit(Translate::get('sign.in')); ?>
</fieldset>
<fieldset class="gray-600 center">
<?= Translate::get('login-use-condition'); ?>
</div>
<div class="mt15 center">
<a class="gray-600" href="<?= getUrlByName('recover'); ?>"><?= Translate::get('forgot your password'); ?>?</a>
</div>
<a href="<?= getUrlByName('recover'); ?>"><?= Translate::get('forgot your password'); ?>?</a>
</fieldset>
</form>
</div>

View file

@ -1,6 +1,6 @@
<?php if ($data['user']['id'] != 1) { ?>
<div class="bg-white br-rd5 mb15 br-box-gray p15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('created by'); ?></h3>
<h3 class="uppercase-box"><?= Translate::get('created by'); ?></h3>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="/@<?= $data['user']['login']; ?>" title="<?= $data['user']['login']; ?>" >
<?= user_avatar_img($data['user']['avatar'], 'max', $data['user']['login'], 'w30 h30 mr10'); ?>
<?= $data['user']['login']; ?>

View file

@ -1,5 +1,5 @@
<div class="bg-white br-rd5 mb15 br-box-gray p15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get($lang); ?></h3>
<h3 class="uppercase-box"><?= Translate::get($lang); ?></h3>
<?php foreach ($data as $sub) { ?>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="<?= getUrlByName('topic', ['slug' => $sub['facet_slug']]); ?>" title="<?= $sub['facet_title']; ?>">
<?= facet_logo_img($sub['facet_img'], 'max', $sub['facet_title'], 'w30 h30 mr10 br-box-gray'); ?>

View file

@ -1,3 +1,4 @@
</container>
<footer class="w-100 mt15 p15 bg-zinc-800 clear">
<div class="col-span-12 max-width grid grid-cols-12 mr-auto">
<div class="col-span-3 left mb-none ml10">

View file

@ -1,7 +1,7 @@
<div class="col-span-2 mb-none"></div>
<main class="col-span-8 mb-col-12 bg-white br-rd5 br-box-gray p15 hidden">
<h1 class="mt0 mb10 text-2xl center font-normal"><?= Translate::get('authorization'); ?></h1>
<form class="max-w300 mb20 block" action="<?= getUrlByName('login'); ?>" method="post">
<h1 class="center"><?= Translate::get('authorization'); ?></h1>
<form class="max-w300" action="<?= getUrlByName('login'); ?>" method="post">
<?php csrf_field(); ?>
<?= Tpl::import('/_block/form/field-input', [
@ -14,29 +14,29 @@
]
]); ?>
<div class="inputs relative mb20">
<fieldset>
<label for="password" class="block mb5"><?= Translate::get('password'); ?></label>
<input type="password" name="password" class="password w-100 h40 pl5">
<span class="showPassword absolute gray-400 right5 bottom5 text-xl"><i class="bi bi-eye"></i></span>
</div>
</fieldset>
<div class="mb20">
<input type="checkbox" class="left mr5" id="rememberme" name="rememberme" value="1">
<label class="form-check-label" for="rememberme"><?= Translate::get('remember me'); ?></label>
</div>
<div class="mb20">
<?= sumbit(Translate::get('sign in')); ?>
<fieldset class="flex items-center">
<input type="checkbox" id="rememberme" name="rememberme" value="1">
<label for="rememberme" class="mb0 gray-600 ml5"><?= Translate::get('remember me'); ?></label>
</fieldset>
<p>
<?= sumbit(Translate::get('sign.in')); ?>
<?php if (Config::get('general.invite') == false) { ?>
<span class="mr5 ml5 text-sm"><a href="<?= getUrlByName('register'); ?>"><?= Translate::get('sign up'); ?></a></span>
<?php } ?>
<span class="mr5 ml5 text-sm"><a href="<?= getUrlByName('recover'); ?>"><?= Translate::get('forgot your password'); ?>?</a></span>
</div>
</p>
</form>
<?php if (Config::get('general.invite') == 1) { ?>
<?= Translate::get('no-invate-txt'); ?>
<?php } ?>
<div class="pt20 mb5 gray-600"><?= Translate::get('login-use-condition'); ?>.</div>
<div class="pt20 mb20 gray-600"><?= Translate::get('info-login'); ?></div>
<img class="right" alt="<?= Config::get('meta.name'); ?>" src="<?= Config::get('meta.img_footer_url'); ?>">
<p><?= Translate::get('login-use-condition'); ?>.</p>
<p><?= Translate::get('info-login'); ?></p>
<img class="right" alt="<?= Config::get('meta.name'); ?>" src="<?= Config::get('meta.img_footer_path'); ?>">
</main>

View file

@ -1,23 +1,23 @@
<main class="col-span-12 mb-col-12 bg-white br-rd5 br-box-gray pt5 pr15 pb5 pl15">
<h1 class="mt0 mb10 text-2xl center font-normal"><?= Translate::get('password recovery'); ?></h1>
<main class="col-span-12 mb-col-12 bg-white br-rd5 br-box-gray p15">
<h1 class="center"><?= Translate::get('password recovery'); ?></h1>
<div class="box wide">
<form class="" action="<?= getUrlByName('recover'); ?>/send/pass" method="post">
<?php csrf_field(); ?>
<div class="mb20">
<fieldset>
<label class="block" for="password">
<?= Translate::get('new password'); ?>
</label>
<input class="w-100 h30" type="password" name="password" id="password">
</div>
<div class="mb20">
</fieldset>
<p>
<input type="hidden" name="code" id="code" value="<?= $data['code']; ?>">
<input type="hidden" name="user_id" id="user_id" value="<?= $data['id']; ?>">
<?= sumbit(Translate::get('reset')); ?>
<?php if (Config::get('general.invite') == false) { ?>
<span class="mr5 ml5 text-sm"><a href="<?= getUrlByName('register'); ?>"><?= Translate::get('sign up'); ?></a></span>
<?php } ?>
<span class="mr5 ml5 text-sm"><a href="<?= getUrlByName('login'); ?>"><?= Translate::get('sign in'); ?></a></span>
</div>
<span class="mr5 ml5 text-sm"><a href="<?= getUrlByName('login'); ?>"><?= Translate::get('sign.in'); ?></a></span>
</p>
</form>
</div>
</main>

View file

@ -1,6 +1,6 @@
<div class="col-span-2 mb-none"></div>
<main class="col-span-8 mb-col-12 bg-white br-rd5 br-box-gray pt10 pr15 pb5 pl15">
<h1 class="mt0 mb10 text-2xl center font-normal"><?= Translate::get($data['sheet']); ?></h1>
<main class="col-span-8 mb-col-12 bg-white br-rd5 br-box-gray p15 hidden">
<h1 class="center"><?= Translate::get($data['sheet']); ?></h1>
<form class="form max-w300" action="<?= getUrlByName('recover'); ?>/send" method="post">
<?php csrf_field(); ?>
@ -17,15 +17,15 @@
<?= Tpl::import('/_block/captcha'); ?>
<div class="mb20">
<p>
<?= sumbit(Translate::get('reset')); ?>
<?php if (Config::get('general.invite') == false) { ?>
<span class="mr5 ml15 text-sm"><a href="<?= getUrlByName('register'); ?>"><?= Translate::get('sign up'); ?></a></span>
<?php } ?>
<span class="mr5 ml15 text-sm"><a href="<?= getUrlByName('login'); ?>"><?= Translate::get('sign in'); ?></a></span>
</div>
<span class="mr5 ml15 text-sm"><a href="<?= getUrlByName('login'); ?>"><?= Translate::get('sign.in'); ?></a></span>
</p>
</form>
<div class="pt20 mb5 gray-600"><?= Translate::get('login-use-condition'); ?>.</div>
<div class="pt20 mb20 gray-600"><?= Translate::get('info-recover'); ?></div>
<img class="right" alt="<?= Config::get('meta.name'); ?>" src="<?= Config::get('meta.img_footer_url'); ?>">
<p><?= Translate::get('login-use-condition'); ?>.</p>
<p><?= Translate::get('info-recover'); ?></p>
<img class="right" alt="<?= Config::get('meta.name'); ?>" src="<?= Config::get('meta.img_footer_path'); ?>">
</main>

View file

@ -1,6 +1,5 @@
<main class="col-span-12 mb-col-12 bg-white br-rd5 br-box-gray pt5 pr15 pb5 pl15">
<h1 class="mt0 mb10 text-2xl font-normal"><?= Translate::get('registration by invite'); ?></h1>
<div class="form">
<main class="col-span-12 mb-col-12 bg-white br-rd5 br-box-gray p15">
<h1><?= Translate::get('registration by invite'); ?></h1>
<form class="max-w300" action="<?= getUrlByName('register'); ?>/add" method="post">
<?php csrf_field(); ?>
@ -36,11 +35,10 @@
]
]); ?>
<div class="mb20">
<p>
<input type="hidden" name="invitation_code" id="invitation_code" value="<?= $data['invate']['invitation_code']; ?>">
<input type="hidden" name="invitation_id" id="invitation_id" value="<?= $data['invate']['uid']; ?>">
<?= sumbit(Translate::get('sign up')); ?>
</div>
</p>
</form>
</div>
</main>

View file

@ -1,6 +1,6 @@
<div class="col-span-2 mb-none"></div>
<main class="col-span-8 mb-col-12 bg-white br-rd5 br-box-gray hidden p15">
<h1 class="mt0 mb10 text-2xl center font-normal"><?= Translate::get($data['sheet']); ?></h1>
<main class="col-span-8 mb-col-12 bg-white br-rd5 br-box-gray p15 hidden">
<h1 class="center"><?= Translate::get($data['sheet']); ?></h1>
<form class="form max-w300 mb20 block" action="<?= getUrlByName('register'); ?>/add" method="post">
<?php csrf_field(); ?>
@ -39,12 +39,12 @@
<?= Tpl::import('/_block/captcha'); ?>
<div class="mb20">
<p>
<?= sumbit(Translate::get('sign up')); ?>
<span class="mr5 ml15 text-sm"><a href="<?= getUrlByName('login'); ?>"><?= Translate::get('sign in'); ?></a></span>
</div>
<span class="mr5 ml15 text-sm"><a href="<?= getUrlByName('login'); ?>"><?= Translate::get('sign.in'); ?></a></span>
</p>
</form>
<div class="pt20 mb5 gray-600"><?= Translate::get('login-use-condition'); ?>.</div>
<div class="pt20 mb20 gray-600"><?= Translate::get('info-security'); ?></div>
<img class="right" alt="<?= Config::get('meta.name'); ?>" src="<?= Config::get('meta.img_footer_url'); ?>">
<p><?= Translate::get('login-use-condition'); ?>.</p>
<p><?= Translate::get('info-security'); ?></p>
<img class="right" alt="<?= Config::get('meta.name'); ?>" src="<?= Config::get('meta.img_footer_path'); ?>">
</main>

View file

@ -155,7 +155,7 @@
<?php if (!empty($data['high_arr'])) { ?>
<div class="bg-white br-rd5 br-box-gray p15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('parents'); ?></h3>
<h3 class="uppercase-box"><?= Translate::get('parents'); ?></h3>
<?php foreach ($data['high_arr'] as $high) { ?>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="<?= getUrlByName('topic', ['slug' => $high['facet_slug']]); ?>">
<?= facet_logo_img($high['facet_img'], 'max', $high['facet_title'], 'w30 h30 mr10 br-box-gray'); ?>
@ -167,7 +167,7 @@
<?php if (!empty($data['low_arr'])) { ?>
<div class="bg-white br-rd5 br-box-gray p15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('children'); ?></h3>
<h3 class="uppercase-box"><?= Translate::get('children'); ?></h3>
<?php foreach ($data['low_arr'] as $sub) { ?>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="<?= getUrlByName('topic', ['slug' => $sub['facet_slug']]); ?>">
<?= facet_logo_img($sub['facet_img'], 'max', $sub['facet_title'], 'w30 h30 mr10 br-box-gray'); ?>
@ -220,7 +220,7 @@
<?php if (!empty($data['high_matching'])) { ?>
<div class="bg-white br-rd5 br-box-gray max-w780 p15 mb15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('bound (parents)'); ?></h3>
<h3 class="uppercase-box"><?= Translate::get('bound (parents)'); ?></h3>
<?php foreach ($data['high_matching'] as $low_mat) { ?>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="<?= getUrlByName('topic', ['slug' => $low_mat['facet_slug']]); ?>">
<?= facet_logo_img($low_mat['facet_img'], 'max', $low_mat['facet_title'], 'w30 h30 mr10 br-box-gray'); ?>

View file

@ -1,10 +1,8 @@
<?php if ($user['id'] == 0) { ?>
<div class="col-span-12 grid items-center grid-cols-12 mb5">
<div class="col-span-12 bg-white br-box-gray br-rd5 p20 center">
<h1 class="text-3xl mb-text-xl font-normal mt0 mb5"><?= Config::get('meta.banner_title'); ?></h1>
<div class="gray-600 mb5"><?= Config::get('meta.banner_desc'); ?>...</div>
</div>
</div>
<box class="col-span-12 bg-white br-box-gray center">
<h1><?= Config::get('meta.banner_title'); ?></h1>
<div class="mb5"><?= Config::get('meta.banner_desc'); ?>...</div>
</box>
<?php } ?>
<div class="col-span-2 justify-between mb-none">
@ -19,7 +17,7 @@
</div>
<main class="col-span-7 mb-col-12">
<div class="bg-white flex flex-row items-center justify-between br-box-gray br-rd5 p15 mb15">
<div class="box-flex bg-white p15">
<ul class="flex flex-row list-none m0 p0 center">
<?= tabs_nav(
@ -71,10 +69,8 @@
<?php } ?>
<?php if ($user['id'] > 0 && !empty($data['topics_user'])) { ?>
<div class="br-box-gray p15 mb15 br-rd5 bg-white text-sm">
<h3 class="uppercase lh1 text-sm gray-500 mt5 mb10 font-normal dark-gray-300">
<?= Translate::get('reading'); ?>
</h3>
<box class="br-box-gray bg-white text-sm">
<h3 class="uppercase-box"><?= Translate::get('reading'); ?></h3>
<?php
$my = [];
@ -98,7 +94,7 @@
$url = getUrlByName('blog', ['slug' => $topic['facet_slug']]);
}
?>
<div class="flex relative pt5 pb5 items-center justify-between hidden">
<div class="bax-flex mb10">
<a class="gray-600" href="<?= $url; ?>">
<?= facet_logo_img($topic['facet_img'], 'max', $topic['facet_title'], 'w30 h30 mr5'); ?>
<span class="ml5 middle dark-gray-300"><?= $topic['facet_title']; ?> <?= $blog; ?></span>
@ -115,9 +111,9 @@
<?= Translate::get('see more'); ?> <i class="bi bi-chevron-double-right middle"></i>
</a>
<?php } ?>
</div>
</box>
<?php } else { ?>
<div class="br-box-gray p15 mb15 br-rd5 bg-white text-sm">
<box class="br-box-gray bg-white text-sm">
<div class="uppercase gray mt5 mb5">
<?= Translate::get('topics'); ?>
</div>
@ -127,27 +123,25 @@
<span class="ml5"><?= $topic['name']; ?></span>
</a>
<?php } ?>
</div>
</box>
<?php } ?>
<div class="sticky top70">
<?php if (!empty($data['latest_answers'])) { ?>
<div class="last-comm br-box-gray p5 pr15 pb5 pl15 bg-white br-rd5">
<box class="br-box-gray bg-white">
<?php foreach ($data['latest_answers'] as $answer) { ?>
<div class="mt15 mr0 mb15 ml0 text-sm">
<div class="gray-400">
<?= user_avatar_img($answer['avatar'], 'small', $answer['login'], 'w20 h20 br-rd-50 mr5'); ?>
<span class="middle lowercase"><?= $answer['answer_date']; ?></span>
</div>
<a class="black dark-gray-300" href="<?= getUrlByName('post', ['id' => $answer['post_id'], 'slug' => $answer['post_slug']]); ?>#answer_<?= $answer['answer_id']; ?>">
<div class="mb15 text-sm gray-400">
<?= user_avatar_img($answer['avatar'], 'small', $answer['login'], 'w20 h20 br-rd-50 mr5'); ?>
<span class="middle lowercase"><?= $answer['answer_date']; ?></span>
<a class="black block dark-gray-300" href="<?= getUrlByName('post', ['id' => $answer['post_id'], 'slug' => $answer['post_slug']]); ?>#answer_<?= $answer['answer_id']; ?>">
<?= $answer['answer_content']; ?>...
</a>
</div>
<?php } ?>
</div>
</box>
<?php } ?>
<?= Tpl::import('/_block/sidebar/lang', ['lang' => []]); ?>
</div>
</aside>
</div>
</container>

View file

@ -134,7 +134,7 @@
'help' => Translate::get('necessarily'),
]); ?>
<?= sumbit(Translate::get('create')); ?>
<p><?= sumbit(Translate::get('create')); ?></p>
</form>
</div>
</main>

View file

@ -157,13 +157,13 @@
'help' => Translate::get('necessarily'),
]); ?>
<div class="mb20">
<p>
<?php if ($post['post_draft'] == 1) { ?>
<input type="hidden" name="draft" id="draft" value="1">
<?php } ?>
<input type="hidden" name="post_id" id="post_id" value="<?= $post['post_id']; ?>">
<?= sumbit(Translate::get('edit')); ?>
</div>
</p>
</form>
</div>
</main>

View file

@ -6,13 +6,13 @@
<?= Tpl::import('/_block/no-login-screensaver'); ?>
<?php } ?>
<?php $post_url = getUrlByName('post', ['id' => $post['post_id'], 'slug' => $post['post_slug']]); ?>
<div class="br-box-gray bg-white p20 mb15 br-rd5 article_<?= $post['post_id']; ?>">
<box class="br-box-gray bg-white article_<?= $post['post_id']; ?>">
<?php if ($data['sheet'] == 'subscribed') { ?>
<div data-id="<?= $post['post_id']; ?>" data-type="post" class="focus-id text-sm right">
<?= Translate::get('unsubscribe'); ?>
</div>
<?php } ?>
<div class="flex mb15 relative">
<div class="flex mb10 relative">
<div class="user-card" data-content_id="<?= $post['post_id']; ?>" data-user_id="<?= $post['id']; ?>">
<?= user_avatar_img($post['avatar'], 'max', $post['login'], 'w40 h40 br-rd-50 mr5'); ?>
<div id="content_<?= $post['post_id']; ?>" class="content_<?= $post['post_id']; ?>"></div>
@ -30,7 +30,7 @@
<div class="flex flex-row flex-auto">
<div class="w-auto mr20 mb-mr-5">
<a class="black dark-gray-300" href="<?= $post_url; ?>">
<h2 class="font-normal text-2xl mt0 mb0">
<h2 class="mb0">
<?= Tpl::import('/content/post/post-title', ['post' => $post]); ?>
</h2>
</a>
@ -80,7 +80,7 @@
<?= favorite($user['id'], $post['post_id'], 'post', $post['favorite_tid'], 'ps', ''); ?>
</div>
</div>
</div>
</box>
<?php } ?>
<?php } else { ?>
<?= Tpl::import('/_block/recommended-topics', ['data' => $data]); ?>

View file

@ -32,7 +32,7 @@
<?php } ?>
</div>
<h1 class="mb0 mt5 font-normal text-2xl">
<h1 class="mb0">
<?= Tpl::import('/content/post/post-title', ['post' => $post]); ?>
</h1>
<div class="text-sm lowercase flex gray-400">
@ -96,7 +96,7 @@
</div>
<?php } ?>
<?php if ($post['post_url_domain']) { ?>
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('source'); ?></h3>
<h3 class="uppercase-box"><?= Translate::get('source'); ?></h3>
<div class="italic m15 mb15 p10 text-sm bg-gray-100 table gray">
<div>
<i class="bi bi-link-45deg"></i>
@ -197,7 +197,7 @@
<?= Tpl::import('/_block/editor/editor', [
'user' => $user,
'height' => '250px',
'preview' => 'vertical',
'preview' => 'none',
]); ?>
<div class="clear pt5">
@ -233,9 +233,7 @@
<?php if (!empty($data['facets'])) { ?>
<div class="br-box-gray bg-white br-rd5 mb15 p15">
<h3 class="uppercase lh1 text-sm gray-500 mt5 mb10 font-normal dark-gray-300">
<?= Translate::get('topics'); ?>
</h3>
<h3 class="uppercase-box"><?= Translate::get('topics'); ?></h3>
<?php foreach ($data['facets'] as $topic) { ?>
<div class="mb10">
<?= facet_logo_img($topic['facet_img'], 'max', $topic['facet_title'], 'w30 h30 mr10 br-box-gray'); ?>
@ -270,7 +268,7 @@
</div>
<?php if ($data['recommend']) { ?>
<div class="br-box-gray bg-white br-rd5 mb15 sticky top70 p15">
<h3 class="uppercase mb10 mt0 font-light text-sm gray dark-gray-300"><?= Translate::get('recommended'); ?></h3>
<h3 class="uppercase-box"><?= Translate::get('recommended'); ?></h3>
<?php foreach ($data['recommend'] as $rec_post) { ?>
<div class="mb15 hidden flex text-sm">
<?php if ($rec_post['post_type'] == 'post') { ?>
@ -343,5 +341,4 @@
}));
<?php } ?>
</script>
</div>
<?= Tpl::import('/_block/wide-footer'); ?>

View file

@ -8,7 +8,7 @@
<input class="w-100 h30" type="text" name="invite" id="invite">
</div>
<div class="mb20">
<?= sumbit(Translate::get('sign in')); ?>
<?= sumbit(Translate::get('sign.in')); ?>
<span class="ml15 text-sm"><a href="<?= getUrlByName('recover'); ?>">
<?= Translate::get('forgot your password'); ?>?</a>
</span>

View file

@ -21,7 +21,7 @@ if ($profile['cover_art'] != 'cover_art.jpeg') {
</div>
<div class="flex">
<h1 class="text-2xl font-normal mb-block mt20 ml15 mb5 flex justify-between">
<h1 class="mb-block ml15 flex justify-between">
<?= $profile['login']; ?>
<?php if ($profile['name']) { ?> / <?= $profile['name']; ?><?php } ?>
<?php if ($profile['up_count'] > 0) { ?>
@ -82,6 +82,5 @@ if ($profile['cover_art'] != 'cover_art.jpeg') {
<?php } ?>
</div>
</div>
</div>

View file

@ -2,7 +2,7 @@
<div class="col-span-4 justify-between mb-none">
<div class="br-box-gray bg-white p15 mb15">
<box class="br-box-gray bg-white">
<blockquote class="ml0 mb10 max-w640 gray">
<?= $profile['about']; ?>...
</blockquote>
@ -13,20 +13,18 @@
<sup class="ml5"><?= Translate::get('tl' . $profile['trust_level'] . '.title'); ?></sup>
</span>
</div>
</div>
</box>
<?php if ($data['blogs']) { ?>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="m0 uppercase gray font-normal text-sm mb15">
<?= Translate::get('created by'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('created by'); ?></h3>
<?php foreach ($data['blogs'] as $blog) { ?>
<div class="w-100 mb-w-100 mb15 flex flex-row">
<a title="<?= $blog['facet_title']; ?>" class="mr10" href="<?= getUrlByName($blog['facet_type'], ['slug' => $blog['facet_slug']]); ?>">
<a class="mr10" href="<?= getUrlByName($blog['facet_type'], ['slug' => $blog['facet_slug']]); ?>">
<?= facet_logo_img($blog['facet_img'], 'max', $blog['facet_title'], 'w60 h60 br-box-gray br-rd-50'); ?>
</a>
<div class="ml5 w-100">
<a class="black" title="<?= $blog['facet_title']; ?>" href="<?= getUrlByName($blog['facet_type'], ['slug' => $blog['facet_slug']]); ?>">
<a class="black" href="<?= getUrlByName($blog['facet_type'], ['slug' => $blog['facet_slug']]); ?>">
<?= $blog['facet_title']; ?>
</a>
<div class="text-sm pr15 mb-pr-0 gray-400">
@ -43,15 +41,13 @@
</div>
</div>
<?php } ?>
</div>
</box>
<?php } ?>
<?php if ($profile['my_post'] != 0) { ?>
<?php $post = $data['post']; ?>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="m0 uppercase gray font-normal text-sm">
<?= Translate::get('selected post'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('selected post'); ?></h3>
<div class="mt5">
<a class="dark-gray-300" href="<?= getUrlByName('post', ['id' => $post['post_id'], 'slug' => $post['post_slug']]); ?>">
<?= $post['post_title']; ?>
@ -77,42 +73,36 @@
<?php } ?>
</div>
</div>
</div>
</box>
<?php } ?>
<?php if ($data['topics']) { ?>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="uppercase gray m0 font-normal text-sm mb5">
<?= Translate::get('is reading'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('is reading'); ?></h3>
<?php foreach ($data['topics'] as $topic) { ?>
<div class="mt5 mb5">
<a class="flex relative items-center pt5 pb5 hidden gray" href="<?= getUrlByName('topic', ['slug' => $topic['facet_slug']]); ?>" title="<?= $topic['facet_title']; ?>">
<a class="flex relative items-center pt5 pb5 hidden gray" href="<?= getUrlByName('topic', ['slug' => $topic['facet_slug']]); ?>">
<?= facet_logo_img($topic['facet_img'], 'small', $topic['facet_title'], 'w30 h30 mr10'); ?>
<span class="bar-name text-sm"><?= $topic['facet_title']; ?></span>
</a>
</div>
<?php } ?>
</div>
</box>
<?php } ?>
<?php if (!empty($data['participation'][0]['facet_id'])) { ?>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="m0 uppercase gray font-normal text-sm mb5">
<?= Translate::get('understands'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('understands'); ?></h3>
<?php foreach ($data['participation'] as $part) { ?>
<a class="bg-blue-100 bg-hover-green white-hover pt5 pr10 pb5 pl10 mb5 br-rd20 sky-500 inline text-sm" href="<?= getUrlByName('topic', ['slug' => $part['facet_slug']]); ?>">
<?= $part['facet_title']; ?>
</a>
<?php } ?>
</div>
</box>
<?php } ?>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="m0 uppercase gray font-normal text-sm">
<?= Translate::get('contacts'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('contacts'); ?></h3>
<?php foreach (Config::get('fields-profile') as $block) { ?>
<?php if ($profile[$block['title']]) { ?>
<div class="mt5">
@ -133,12 +123,10 @@
<?php } ?>
<?php } ?>
<?php } ?>
</div>
</box>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="m0 uppercase gray font-normal text-sm">
<?= Translate::get('badges'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('badges'); ?></h3>
<div class="m0 text-3xl">
<i title="<?= Translate::get('medal for registration'); ?>" class="bi bi-gift sky-500"></i>
<?php if ($profile['id'] < 50) { ?>
@ -148,13 +136,11 @@
<?= $badge['badge_icon']; ?>
<?php } ?>
</div>
</div>
</box>
<?php if (UserData::checkAdmin()) { ?>
<div class="br-box-gray bg-white p15 mb15">
<h3 class="m0 uppercase gray font-normal text-sm">
<?= Translate::get('admin'); ?>
</h3>
<box class="br-box-gray bg-white">
<h3 class="uppercase-box"><?= Translate::get('admin'); ?></h3>
<div class="mt5">
<?php if ($profile['trust_level'] != UserData::REGISTERED_ADMIN) { ?>
<?php if ($profile['ban_list'] == 1) { ?>
@ -187,6 +173,6 @@
<hr>
<span class="gray">id<?= $profile['id']; ?> | <?= $profile['email']; ?></span>
</div>
</div>
</box>
<?php } ?>
</div>

View file

@ -20,19 +20,19 @@
<form class="max-w640" action="<?= getUrlByName('setting.edit'); ?>" method="post" enctype="multipart/form-data">
<?php csrf_field(); ?>
<div class="mb20">
<fieldset>
<?= user_avatar_img($data['user']['avatar'], 'small', $data['user']['login'], 'mr5 ml5 ava'); ?>
<span class="mr5 ml5">
<a title="<?= Translate::get('profile'); ?>" href="/@<?= $user['login']; ?>">
<?= $data['user']['login']; ?>
</a>
</span>
</div>
</fieldset>
<div class="mb20">
<fieldset>
<span class="name gray">E-mail:</span>
<span class="mr5 ml5"><?= $data['user']['email']; ?></span>
</div>
</fieldset>
<?= Tpl::import(
'/_block/form/field-input',
@ -65,16 +65,14 @@
'user' => $user
]); ?>
<div id="box" class="mb20">
<fieldset id="box">
<label class="block" for="post_content"><?= Translate::get('color'); ?></label>
<input type="color" value="<?= $data['user']['color']; ?>" id="colorPicker">
<input type="hidden" name="color" value="<?= $data['user']['color']; ?>" id="color">
</div>
</fieldset>
<div class="mb20 max-w640">
<label class="block mb5" for="template">
<?= Translate::get('template'); ?>
</label>
<fieldset class="max-w640">
<label for="template"><?= Translate::get('template'); ?></label>
<select class="w-100 h30" name="template">
<?php foreach (Config::get('general.templates') as $tpl) { ?>
<option <?php if ($data['user']['template'] == $tpl) { ?>selected<?php } ?> value="<?= $tpl; ?>">
@ -82,10 +80,10 @@
</option>
<?php } ?>
</select>
</div>
</fieldset>
<div class="mb20 max-w640">
<label class="block mb5" for="post_content"><?= Translate::get('language'); ?></label>
<fieldset class="max-w640">
<label for="post_content"><?= Translate::get('language'); ?></label>
<select class="w-100 h30" name="lang">
<?php foreach (Config::get('general.languages') as $lang) { ?>
<option <?php if ($data['user']['lang'] == $lang) { ?>selected<?php } ?> value="<?= $lang; ?>">
@ -93,7 +91,7 @@
</option>
<?php } ?>
</select>
</div>
</fieldset>
<h3><?= Translate::get('contacts'); ?></h3>
<?php foreach (Config::get('fields-profile') as $block) { ?>

View file

@ -2,19 +2,4 @@
* Additional styles
*
* Дополнительные стили
*/
.tags-xs {
margin-right: 5px;
padding: 2px 6px 2px 6px;
border-bottom: 1px solid #bbbbbb;
background-color: #ececec;
color: #6b3e4a;
border-radius: 3px;
font-size: $fontSize-xs;
}
.tags-xs:hover {
color: #444;
background-color: #fff;
}
*/

View file

@ -316,4 +316,3 @@ img {
.table { display: table; }
.inline { display: inline-block; }
.list-none { list-style: none; }
.lh1 { line-height: 1; }

View file

@ -10,7 +10,14 @@
/* Resources used for Agouti design */
@import "basic.scss";
@import "inputs.scss";
@import "table.scss";
@import "button.scss";
@import "components.scss";
@import "dark.scss";
@import "media.scss";
@import "icons.scss";
@import "../custom.scss";

View file

@ -0,0 +1,55 @@
/*
* @button styles
*
* Кнопки
*/
/* Buttons */
.btn {
display: inline-block;
font-weight: 400;
color: #212529;
text-align: center;
vertical-align: middle;
background-color: transparent;
border: 1px solid transparent;
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.btn-small {
padding: 0.15rem 0.35rem;
font-size: 0.775rem;
}
.btn-primary {
color: $white;
background-color: #0085ee;
border-color: #0379d7;
}
.btn-outline-primary {
color: #0085ee;
background-color: $white;
border-color: #0085ee;
}
.btn-primary:hover,
.btn-primary:focus {
color: $white;
opacity: 0.8;
}
.btn-outline-primary:hover,
.btn-outline-primary:focus {
color: $white;
background-color: #0085ee;
border-color: #0379d7;
}
.fon-rgba {
background-color: rgba(0,0,0,.3);
padding: 1px 6px;
}

View file

@ -4,6 +4,55 @@
* Компоненты, основанные на базовом стиле Агути
*/
container {
display: grid;
gap: 1rem;
grid-template-columns: repeat(12, minmax(0, 1fr));
max-width: 1636px;
padding-left: 5px;
padding-right: 5px;
margin: 0 auto;
}
box {
border-radius: 5px;
padding: 15px;
margin-bottom: 15px;
overflow: hidden;
display: block;
}
.box-flex {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
border-radius: 5px;
margin-bottom: 15px;
}
.logo {
text-transform: uppercase;
font-size: 21px;
color: #222;
}
h1,
h2,
h3,
h4,
h5 {
font-weight: 400;
margin: 0 0 10px 0;
}
h3.uppercase-box {
color: #6b7280;
font-size: 0.875rem;
text-transform: uppercase;
line-height: 1;
}
code {
color: #9b4f5e;
background-color: #f5f2f0;
@ -29,259 +78,6 @@ hr {
height: 1px;
}
textarea {
width: 100%;
font-size: 16px;
padding: 1px 6px;
border: 1px solid $slate-300;
}
input, select {
border: 1px solid $slate-300;
font-size: 16px;
}
select { background-color: #fff; }
input:focus,
textarea:focus { border: 1px solid #9ccdf8; }
::placeholder { color: #919191; }
.shown_post img { width: 100%; }
.post-body.full img:hover { box-shadow: 0 1px 8px 0 rgb(0 0 0 / 20%); }
.post-body .post-img img { margin-top: 5px; }
.post-body.full img {
max-width: 100%;
display: block;
}
.answ-telo p img {
max-width: 99%;
max-height: 500px;
display: block;
}
.comment_subtree:target,
.comment_subtree.edit,
.answers_subtree:target,
.answers_subtree.edit {
background-clip: content-box;
background-color: lightyellow;
margin-top: -70px;
padding-top: 70px;
}
table {
margin-bottom: 1.5rem;
width: 100%;
border-collapse: collapse;
border-spacing: 0;
}
table td,
table th { font-size: 14px; }
table tr:nth-of-type(2n) { background-color: #f3f3f6; }
table thead th { border-bottom: 2px solid rgba(222, 226, 230, 0.5); }
td,
th { padding: 5px; }
.dark,
.dark.bg-gray-100 {
background-color: $neutral-900;
color: #ccc;
}
.dark .gray { color: #ccc; }
.dark .bg-yellow-100,
.dark .bg-white {
background-color: $zinc-800;
color: $white;
}
.dark input,
.dark select,
.dark textarea,
.dark blockquote,
.dark table tr:nth-of-type(2n) {
background-color: $neutral-900;
color: $white;
border: 1px solid $black;
}
.dark .dark-bg-black,
.dark .answers_subtree:target { background-color: $black; }
.dark .br-box-gray { border: 1px solid $black; }
.dark .dark-br-black { border: 1px solid $neutral-900; }
.dark .br-bottom-black { border-bottom: 1px solid $black; }
.dark .dark-gray-300 { color: $gray-300; }
.video-object {
width: 640px;
height: 360px;
}
.answ-telo .video-object {
width: 290px;
height: 160px;
}
.home-img,
.thumb {
width: 260px;
height: 130px;
object-fit: cover;
}
.preview .home-img { display: none; }
.up_down_btn {
bottom: 40px;
right: 10px;
line-height: 30px;
cursor: pointer;
}
.up_down_btn:hover {
text-decoration: none;
background-color: #e9ebec;
}
.up_down_btn-disabled {
cursor: default;
opacity: 0;
}
/* Buttons */
.btn {
display: inline-block;
font-weight: 400;
color: #212529;
text-align: center;
vertical-align: middle;
background-color: transparent;
border: 1px solid transparent;
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.btn-small {
padding: 0.15rem 0.35rem;
font-size: 0.775rem;
}
.btn-primary {
color: $white;
background-color: #0085ee;
border-color: #0379d7;
}
.btn-outline-primary {
color: #0085ee;
background-color: $white;
border-color: #0085ee;
}
.btn-primary:hover,
.btn-primary:focus {
color: $white;
opacity: 0.8;
}
.btn-outline-primary:hover,
.btn-outline-primary:focus {
color: $white;
background-color: #0085ee;
border-color: #0379d7;
}
.fon-rgba {
background-color: rgba(0,0,0,.3);
padding: 1px 6px;
}
/* Customize the label (the container) */
.container-radio {
display: block;
position: relative;
padding-left: 35px;
margin-bottom: 12px;
cursor: pointer;
font-size: 18px;
user-select: none;
}
.container-radio input {
position: absolute;
opacity: 0;
}
.checkmark {
position: absolute;
top: 0;
left: 0;
height: 25px;
width: 25px;
background-color: #eee;
border-radius: 50%;
}
.container-radio:hover input ~ .checkmark {
background-color: #ccc;
}
.container-radio input:checked ~ .checkmark {
background-color: #2196F3;
}
.checkmark:after {
content: "";
position: absolute;
display: none;
}
.container-radio input:checked ~ .checkmark:after {
display: block;
}
.container-radio .checkmark:after {
top: 9px;
left: 9px;
width: 8px;
height: 8px;
border-radius: 50%;
background-color: white;
}
/* Tags */
.tags-look .tagify__dropdown__item {
display: inline-block;
border-radius: 3px;
padding: 0.3em 0.5em;
border: 1px solid #ccc;
background-color: #f3f3f3;
margin: 0.2em;
font-size: 0.85em;
color: black;
transition: 0s;
}
.tags-look .tagify__dropdown__item--active {
color: black;
}
.tags-look .tagify__dropdown__item:hover {
background-color: lightyellow;
border-color: gold;
}
details {
border-radius: 0 0 3px 3px;
background-color: #f5f5fa;
@ -315,6 +111,112 @@ a:hover > img { opacity: 0.8; }
.underline-hover:hover { text-decoration: underline; }
.answ-telo p:first-child {margin-top: $px-five;}
.shown_post img { width: 100%; }
.post-body.full img:hover { box-shadow: 0 1px 8px 0 rgb(0 0 0 / 20%); }
.post-body .post-img img { margin-top: 5px; }
.post-body.full img {
max-width: 100%;
display: block;
}
.answ-telo p img {
max-width: 99%;
max-height: 500px;
display: block;
}
.comment_subtree:target,
.comment_subtree.edit,
.answers_subtree:target,
.answers_subtree.edit {
background-clip: content-box;
background-color: lightyellow;
margin-top: -70px;
padding-top: 70px;
}
.video-object {
width: 640px;
height: 360px;
}
.answ-telo .video-object {
width: 290px;
height: 160px;
}
.home-img,
.thumb {
width: 260px;
height: 130px;
object-fit: cover;
}
.preview .home-img { display: none; }
.up_down_btn {
bottom: 40px;
right: 10px;
line-height: 30px;
cursor: pointer;
background-color: #f3f4f6;
text-align: center;
position: fixed;
z-index: 50;
height: 30px;
width: 30px;
color: #374151;
border-radius: 3px;
}
.up_down_btn:hover {
text-decoration: none;
background-color: #e9ebec;
}
.up_down_btn-disabled {
cursor: default;
opacity: 0;
}
/* Tags */
.tags-look .tagify__dropdown__item {
display: inline-block;
border-radius: 3px;
padding: 0.3em 0.5em;
border: 1px solid #ccc;
background-color: #f3f3f3;
margin: 0.2em;
font-size: 0.85em;
color: black;
transition: 0s;
}
.tags-look .tagify__dropdown__item--active {
color: black;
}
.tags-look .tagify__dropdown__item:hover {
background-color: lightyellow;
border-color: gold;
}
.tags-xs {
margin-right: 5px;
padding: 2px 6px 2px 6px;
border-bottom: 1px solid #bbbbbb;
background-color: #ececec;
color: #6b3e4a;
border-radius: 3px;
font-size: $fontSize-xs;
}
.tags-xs:hover {
color: #444;
background-color: #fff;
}
/* qa */
.tags-sm {
margin-right: 5px;
@ -339,6 +241,8 @@ a:hover > img { opacity: 0.8; }
}
/* Drop-down menu and left nav */
menu { padding: 0px; }
nav > ul > li > a {
color: #9ca3af;
padding: 3px 10px;
@ -350,7 +254,8 @@ nav > ul > li > a {
ul > li > a span { color: #4b5563; }
ul > li > a:hover > span,
a.sky-500 span { color: #0ea5e9; }
ul > li > a:hover > i,
a.sky-500 span { color: #0ea5e9; }
/* Tippy.js - theme: light, */
.dark .tippy-box[data-theme~="light"] {

View file

@ -0,0 +1,37 @@
/*
* @dark styles
*
* Ночной режим
*/
.dark,
.dark.bg-gray-100 {
background-color: $neutral-900;
color: #ccc;
}
.dark .gray { color: #ccc; }
.dark .bg-yellow-100,
.dark .bg-white {
background-color: $zinc-800;
color: $white;
}
.dark input,
.dark select,
.dark textarea,
.dark blockquote,
.dark table tr:nth-of-type(2n) {
background-color: $neutral-900;
color: $white;
border: 1px solid $black;
}
.dark .dark-bg-black,
.dark .answers_subtree:target { background-color: $black; }
.dark .br-box-gray { border: 1px solid $black; }
.dark .dark-br-black { border: 1px solid $neutral-900; }
.dark .br-bottom-black { border-bottom: 1px solid $black; }
.dark .dark-gray-300 { color: $gray-300; }

View file

@ -0,0 +1,47 @@
/*
* @form styles
*
* Стили для форм
*/
textarea {
width: 100%;
font-size: 16px;
padding: 1px 6px;
border: 1px solid $slate-300;
}
input, select {
border: 1px solid $slate-300;
font-size: 16px;
}
fieldset input:not([type=radio]):not([type=checkbox]):not([type=range]) {
width: 100%;
min-height: 34px;
font-size: 16px;
padding-left: 5px;
}
fieldset {
margin: 0;
padding: 0;
border: 0;
position: relative;
}
fieldset {
margin-top: 15px;
}
select { background-color: #fff; }
input:focus,
textarea:focus { border: 1px solid #9ccdf8; }
label {
display: block;
margin-bottom: 5px;
}
::placeholder { color: #919191; }

View file

@ -40,6 +40,7 @@
.mb-none { display: none; }
.mb-block { display: block; }
.mb-absolute { position: absolute; }
.logo { font-size: 18px; }
.mb-video-object {
width: 280px;

View file

@ -0,0 +1,21 @@
/*
* @table styles
*
* Таблицы
*/
table {
margin-bottom: 1.5rem;
width: 100%;
border-collapse: collapse;
border-spacing: 0;
}
table td,
table th { font-size: 14px; }
table tr:nth-of-type(2n) { background-color: #f3f3f6; }
table thead th { border-bottom: 2px solid rgba(222, 226, 230, 0.5); }
td,
th { padding: 5px; }

View file

@ -1,4 +1,4 @@
<a class="up_down_btn fixed bg-gray-100 none w30 h30 z-50 br-rd3 center gray" title="<?= Translate::get('up'); ?>">&uarr;</a>
<a class="up_down_btn none" title="<?= Translate::get('up'); ?>">&uarr;</a>
<script src="/assets/js/sweetalert/sweetalert2.all.min.js"></script>
<script src="/assets/js/tippy/popper.min.js"></script>
@ -6,7 +6,6 @@
<script src="/assets/js/common.js"></script>
<?php if ($user['id'] > 0) { ?><script src="/assets/js/app.js"></script><?php } ?>
<?= getRequestResources()->getBottomStyles(); ?>
<?= getRequestResources()->getBottomScripts(); ?>

View file

@ -22,35 +22,32 @@
<body class="<?= $css; ?><?php if ($dark == 'dark') { ?> dark<?php } ?>">
<header class="bg-white box-shadow mt0 mb15 <?php if ($type != 'page') { ?>sticky top0<?php } ?> z-30">
<div class="col-span-12 mr-auto max-width w-100 pr10 pl10 h50 grid items-center flex justify-between">
<header class="bg-white box-shadow <?php if ($type != 'page') { ?>sticky top0<?php } ?> z-30">
<div class="box-flex max-width mr-auto pl10 pr10 h50">
<div class="flex items-center">
<ag-menu data-template="one" class="tippy pl0 pr10 none mb-block">
<menu data-template="one" class="tippy pl0 pr10 none mb-block">
<div class="relative w-auto">
<i class="bi bi-list gray-400 text-xl"></i>
</div>
</ag-menu>
<div id="one" style="display: none;" class="box-shadow2 z-40 bg-white br-rd3">
<nav>
<?= tabs_nav(
'menu',
$type,
$user,
$pages = Config::get('menu.mobile'),
); ?>
</nav>
</menu>
<div id="one" style="display: none;" class="box-shadow2 z-40 bg-white br-rd3">
<nav>
<?= tabs_nav(
'menu',
$type,
$user,
$pages = Config::get('menu.mobile'),
); ?>
</nav>
</div>
<div class="mr20 flex items-center">
<a title="<?= Translate::get('home'); ?>" class="text-2xl mb-text-xl sky-500-hover p5 black dark-gray-300 uppercase" href="/">
<?= Config::get('meta.name'); ?>
</a>
</div>
<a title="<?= Translate::get('home'); ?>" class="logo dark-gray-300 " href="/">
<?= Config::get('meta.name'); ?>
</a>
</div>
<?php if (Request::getUri() != getUrlByName('search')) { ?>
<div class="p5 ml30 mr20 relative mb-none w-100">
<form class="form" method="post" action="<?= getUrlByName('search'); ?>">
<input type="text" autocomplete="off" name="q" id="find" placeholder="<?= Translate::get('to find'); ?>" class="h30 bg-gray-100 p15 br-rd20 gray w-100">
<input type="text" autocomplete="off" name="q" id="find" placeholder="<?= Translate::get('to find'); ?>" class="bg-gray-100 br-rd20 pl15 w-100 h30 gray">
<input name="token" value="<?= csrf_token(); ?>" type="hidden">
<input name="url" value="<?= AG_PATH_FACETS_LOGOS; ?>" type="hidden">
</form>
@ -67,8 +64,8 @@
<?= Translate::get('sign up'); ?>
</a>
<?php } ?>
<a class="btn btn-outline-primary ml20" title="<?= Translate::get('sign in'); ?>" href="<?= getUrlByName('login'); ?>">
<?= Translate::get('sign in'); ?>
<a class="btn btn-outline-primary ml20" title="<?= Translate::get('sign.in'); ?>" href="<?= getUrlByName('login'); ?>">
<?= Translate::get('sign.in'); ?>
</a>
</div>
<?php } else { ?>
@ -94,11 +91,11 @@
<?php } ?>
</a>
<ag-menu data-template="two" class="tippy pr10 pl0 ml20 mb-ml-10">
<menu data-template="two" class="tippy ml20 mb-ml-10">
<div class="relative w-auto">
<?= user_avatar_img($user['avatar'], 'small', $user['login'], 'w30 h30 br-rd-50'); ?>
</div>
</ag-menu>
</menu>
<div id="two" style="display: none;" class="bg-white br-rd3">
<nav class="p0 pr20 m0">
<?= tabs_nav(
@ -115,5 +112,5 @@
<?php } ?>
</div>
</header>
<div class="max-width mr-auto grid grid-cols-12 gap-4 mb-gap-05 pr5 pl5">
<container>

View file

@ -1,4 +0,0 @@
<?php if (Config::get('general.captcha')) { ?>
<div class="g-recaptcha mb15" data-theme="light" data-size="normal" data-callback="captcha_ready" data-sitekey="<?= Config::get('general.public_key'); ?>"></div>
<script async defer src="https://www.google.com/recaptcha/api.js?hl=ru"></script>
<?php } ?>

View file

@ -1,191 +0,0 @@
<?php if (!empty($data['answers'])) { ?>
<div class="bg-white br-rd5 br-box-gray mt15 mb15 p15">
<h2 class="lowercase m0 mb15 text-2xl">
<?= num_word($post['amount_content'], Translate::get('num-answer'), true); ?>
</h2>
<?php $n = 0;
foreach ($data['answers'] as $answer) {
$n++;
$post_url = getUrlByName('post', ['id' => $post['post_id'], 'slug' => $post['post_slug']]);
?>
<div class="block-answer">
<?php if ($answer['answer_is_deleted'] == 0) { ?>
<?php if ($n != 1) { ?><div class="br-top-dotted mt10 mb10"></div><?php } ?>
<ol class="p0 m0 list-none">
<li class="answers_subtree" id="answer_<?= $answer['answer_id']; ?>">
<div class="answ-telo">
<div class="flex text-sm">
<a class="gray-600" href="/@<?= $answer['login']; ?>">
<?= user_avatar_img($answer['avatar'], 'small', $answer['login'], 'w20 h20'); ?>
<span class="mr5 ml5">
<?= $answer['login']; ?>
</span>
</a>
<?php if ($post['post_user_id'] == $answer['answer_user_id']) { ?>
<span class="sky-500 mr5 ml0"><i class="bi bi-mic text-sm"></i></span>
<?php } ?>
<span class="mr5 ml5 gray-400 lowercase">
<?= lang_date($answer['answer_date']); ?>
</span>
<?php if (empty($answer['edit'])) { ?>
<span class="mr5 ml10 gray-400">
(<?= Translate::get('ed'); ?>.)
</span>
<?php } ?>
<a rel="nofollow" class="gray-400 mr5 ml10" href="<?= $post_url; ?>#answer_<?= $answer['answer_id']; ?>"><i class="bi bi-hash"></i></a>
<?= Tpl::import('/_block/show-ip', ['ip' => $answer['answer_ip'], 'user' => $user, 'publ' => $answer['answer_published']]); ?>
</div>
<div class="m0 max-w780">
<?= $answer['answer_content'] ?>
</div>
</div>
<div class="flex text-sm">
<?= votes($user['id'], $answer, 'answer', 'ps', 'mr5'); ?>
<?php if ($post['post_closed'] == 0) { ?>
<?php if ($post['post_is_deleted'] == 0 || UserData::checkAdmin()) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-answer_id="<?= $answer['answer_id']; ?>" class="add-comment gray-500 mr5 ml10"><?= Translate::get('reply'); ?></a>
<?php } ?>
<?php } ?>
<?php if (accessСheck($answer, 'answer', $user, 1, 30) === true) { ?>
<?php if ($answer['answer_after'] == 0 || UserData::checkAdmin()) { ?>
<a class="editansw gray-500 mr10 ml10" href="/answer/edit/<?= $answer['answer_id']; ?>">
<?= Translate::get('edit'); ?>
</a>
<?php } ?>
<?php } ?>
<?php if ($user['trust_level'] == UserData::REGISTERED_ADMIN) { ?>
<a data-type="answer" data-id="<?= $answer['answer_id']; ?>" class="type-action gray-500 ml10 mr5">
<i title="<?= Translate::get('remove'); ?>" class="bi bi-trash"></i>
</a>
<?php } ?>
<?= favorite($user['id'], $answer['answer_id'], 'answer', $answer['favorite_tid'], 'ps', 'ml5'); ?>
<?php if ($user['id'] != $answer['answer_user_id'] && $user['trust_level'] > Config::get('trust-levels.tl_stop_report')) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-type="answer" data-content_id="<?= $answer['answer_id']; ?>" class="msg-flag gray-500 ml15">
<i title="<?= Translate::get('report'); ?>" class="bi bi-flag"></i>
</a>
<?php } ?>
</div>
<div id="answer_addentry<?= $answer['answer_id']; ?>" class="none"></div>
</li>
</ol>
<?php } else { ?>
<?php if ($user['trust_level'] == UserData::REGISTERED_ADMIN) { ?>
<ol class="bg-red-200 text-sm pr5 list-none">
<li class="comments_subtree" id="comment_<?= $answer['answer_id']; ?>">
<span class="comm-deletes nick">
<?= $answer['answer_content']; ?>
<?= Translate::get('answer'); ?> — <?= $answer['login']; ?>
<a data-type="answer" data-id="<?= $answer['answer_id']; ?>" class="type-action right">
<span><?= Translate::get('recover'); ?></span>
</a>
</span>
</li>
</ol>
<?php } else { ?>
<div class="gray m5 p5 text-sm">
~ <?= sprintf(Translate::get('content.deleted'), Translate::get('comment')); ?>
</div>
<?php } ?>
<?php } ?>
</div>
<?php foreach ($answer['comments'] as $comment) { ?>
<?php if ($comment['comment_is_deleted'] == 1) { ?>
<?php if (accessСheck($comment, 'comment', $user, 1, 30) === true) { ?>
<ol class="bg-red-200 text-sm list-none max-w780 <?php if ($comment['comment_comment_id'] > 0) { ?> ml30<?php } ?>">
<li class="pr5" id="comment_<?= $comment['comment_id']; ?>">
<span class="comm-deletes gray">
<?= Content::text($comment['comment_content'], 'line'); ?>
<?= $comment['login']; ?>
<a data-type="comment" data-id="<?= $comment['comment_id']; ?>" class="type-action right text-sm">
<?= Translate::get('recover'); ?>
</a>
</span>
</li>
</ol>
<?php } ?>
<?php } ?>
<?php if ($comment['comment_is_deleted'] == 0) { ?>
<ol class="pl15 pb0 mb0 list-none<?php if ($comment['comment_comment_id'] > 0) { ?> ml30<?php } ?>">
<li class="comment_subtree" id="comment_<?= $comment['comment_id']; ?>">
<div class="p5">
<div class="max-w780">
<div class="text-sm flex">
<a class="gray-600" href="/@<?= $comment['login']; ?>">
<?= user_avatar_img($comment['avatar'], 'small', $comment['login'], 'w20 h20'); ?>
<span class="mr5 ml5">
<?= $comment['login']; ?>
</span>
</a>
<?php if ($post['post_user_id'] == $comment['comment_user_id']) { ?>
<span class="sky-500 mr5"><i class="bi bi-mic text-sm"></i></span>
<?php } ?>
<span class="mr5 ml5 gray-400 lowercase">
<?= lang_date($comment['comment_date']); ?>
</span>
<?php if ($comment['comment_comment_id'] > 0) { ?>
<a class="gray-400 mr10 ml10" rel="nofollow" href="<?= $post_url; ?>#comment_<?= $comment['comment_comment_id']; ?>"><i class="bi bi-arrow-up"></i></a>
<?php } else { ?>
<a class="gray-400 mr10 ml10" rel="nofollow" href="<?= $post_url; ?>#answer_<?= $comment['comment_answer_id']; ?>"><i class="bi bi-arrow-up"></i></a>
<?php } ?>
<a class="gray-400 mr5 ml5" rel="nofollow" href="<?= $post_url; ?>#comment_<?= $comment['comment_id']; ?>"><i class="bi bi-hash"></i></a>
<?= Tpl::import('/_block/show-ip', ['ip' => $comment['comment_ip'], 'user' => $user, 'publ' => $comment['comment_published']]); ?>
</div>
<div class="mt5 mb10">
<?= Content::text($comment['comment_content'], 'line'); ?>
</div>
</div>
<div class="text-sm flex">
<?= votes($user['id'], $comment, 'comment', 'ps', 'mr5'); ?>
<?php if ($post['post_closed'] == 0) { ?>
<?php if ($post['post_is_deleted'] == 0 || UserData::checkAdmin()) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-answer_id="<?= $answer['answer_id']; ?>" data-comment_id="<?= $comment['comment_id']; ?>" class="add-comment-re gray mr5 ml10">
<?= Translate::get('reply'); ?>
</a>
<?php } ?>
<?php } ?>
<?php if (accessСheck($comment, 'comment', $user, 1, 30) === true) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-comment_id="<?= $comment['comment_id']; ?>" class="editcomm gray mr10 ml10">
<?= Translate::get('edit'); ?>
</a>
<a data-type="comment" data-id="<?= $comment['comment_id']; ?>" class="type-action gray mr5 ml5">
<?= Translate::get('remove'); ?>
</a>
<?php } ?>
<?php if ($user['id'] != $comment['comment_user_id'] && $user['trust_level'] > 0) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-type="comment" data-content_id="<?= $comment['comment_id']; ?>" class="msg-flag gray ml15">
<i title="<?= Translate::get('report'); ?>" class="bi bi-flag"></i>
</a>
<?php } ?>
</div>
</div>
<div id="comment_addentry<?= $comment['comment_id']; ?>" class="none"></div>
</li>
</ol>
<?php } ?>
<?php } ?>
<?php } ?>
</div>
<?php } else { ?>
<?php if ($post['post_closed'] != 1) { ?>
<?php if ($user['id'] > 0) { ?>
<?= no_content(Translate::get('no.comments'), 'bi bi-info-lg'); ?>
<?php } else { ?>
<?= no_content(Translate::get('no-auth-login'), 'bi bi-info-lg'); ?>
<?php } ?>
<?php } ?>
<?php } ?>

View file

@ -1,11 +0,0 @@
<?php if (!empty($data)) { ?>
<div class="uppercase mb5 mt5 text-sm"><?= Translate::get('domains'); ?></div>
<?php foreach ($data as $domain) { ?>
<a class="text-sm gray" href="<?= getUrlByName('domain', ['domain' => $domain['item_url_domain']]); ?>">
<i class="bi bi-link-45deg middle"></i> <?= $domain['item_url_domain']; ?>
<sup class="text-sm"><?= $domain['item_count']; ?></sup>
</a><br>
<?php } ?>
<?php } else { ?>
<p><?= Translate::get('no.content'); ?>...</p>
<?php } ?>

View file

@ -1,75 +0,0 @@
<div class="mb10 mt15">
<?php if (!empty($title)) { ?><div class="mb5"><?= $title; ?><sup class="red-500">*</sup></div><?php } ?>
<div id="ag-redactor" class="editorSection"><?php if (!empty($content)) { ?><?= $content; ?><?php } ?></div>
<input type="hidden" name="content" class="text">
</div>
<?php $lang = $user['lang']; ?>
<script src="/assets/js/editor/i18n/<?= $lang; ?>.js" charset="utf-8"></script>
<script nonce="<?= $_SERVER['nonce']; ?>">
document.addEventListener('DOMContentLoaded', function() {
toastui.Editor.setLanguage(['<?= $lang; ?>'], LANG);
let dark = document.querySelector('.bg-gray-100.dark');
let viewerEl = document.querySelector('.editorSection');
let body = viewerEl.innerHTML.trim();
body = body.replace(/&gt;/gi, ">");
if (viewerEl == null) {
return;
}
let previewStyle = '<?= $preview; ?>';
let height = '<?= $height; ?>';
if (window.innerWidth < 721) {
previewStyle = 'tab';
height = '200px';
}
const editor = new toastui.Editor({
el: viewerEl,
usageStatistics: false,
height: height,
initialEditType: '<?= Config::get('editor.initialEditType'); ?>', // wysiwyg | markdown
previewStyle: previewStyle,
hideModeSwitch: '<?= Config::get('editor.hideModeSwitch'); ?>', // true | false
initialValue: body,
theme: '<?= Request::getCookie('dayNight'); ?>',
language: '<?= $lang; ?>',
autofocus: false,
toolbarItems: [
['heading', 'bold', 'italic', 'strike'],
['hr', 'quote'],
['ul'],
['table', 'image', 'link'],
['code', 'codeblock'],
],
events: {
change: function() {
let text = editor.getMarkdown();
inputelement = document.querySelector('input.text');
inputelement.value = text;
},
},
hooks: {
addImageBlobHook: function(file, callback) {
const formData = new FormData()
formData.append('file', file, file.name)
let alt_text = document.getElementById("toastuiAltTextInput").value;
const ajax = new XMLHttpRequest()
ajax.open('POST', '/backend/upload/image', true)
ajax.send(formData)
ajax.onreadystatechange = function() {
if (ajax.readyState === 4) {
if ((ajax.status >= 200 && ajax.status < 300) || ajax.status === 304) {
callback(ajax.responseText, alt_text);
}
}
}
}
}
});
editor.getMarkdown();
});
</script>

View file

@ -1,5 +0,0 @@
<div class="mb20">
<label class="block" for="about"><?= $title; ?></label>
<textarea type="<?= $type; ?>" rows="4" <?php if (!empty($min)) { ?>minlength="<?= $min; ?>" <?php } ?> <?php if (!empty($max)) { ?>maxlength="<?= $max; ?>" <?php } ?> name="<?= $name; ?>"><?php if (!empty($content)) { ?><?= $content; ?><?php } ?></textarea>
<?php if (!empty($help)) { ?><div class="text-sm gray-400"><?= $help; ?></div><?php } ?>
</div>

View file

@ -1,45 +0,0 @@
<div class="mt5 mr0 mb5 ml0 justify-betwee">
<?php foreach ($facets as $key => $facet) { ?>
<div class="w-100 mb20 mb-w-100 flex flex-row">
<a title="<?= $facet['facet_title']; ?>" class="mr10" href="<?= getUrlByName($facet['facet_type'], ['slug' => $facet['facet_slug']]); ?>">
<?= facet_logo_img($facet['facet_img'], 'max', $facet['facet_title'], 'w60 h60 br-box-gray br-rd-50'); ?>
</a>
<div class="ml5 w-100">
<?php if ($user['id']) { ?>
<?php if ($facet['facet_user_id'] != $user['id']) { ?>
<?php if ($facet['signed_facet_id']) { ?>
<div data-id="<?= $facet['facet_id']; ?>" data-type="topic" class="focus-id right inline br-rd20 gray-400 center mr15">
<sup><?= Translate::get('unsubscribe'); ?></sup>
</div>
<?php } else { ?>
<div data-id="<?= $facet['facet_id']; ?>" data-type="topic" class="focus-id right inline br-rd20 sky-500 center mr15">
<sup><i class="bi bi-plus"></i> <?= Translate::get('read'); ?></sup>
</div>
<?php } ?>
<?php } ?>
<?php } ?>
<a class="black" title="<?= $facet['facet_title']; ?>" href="<?= getUrlByName($facet['facet_type'], ['slug' => $facet['facet_slug']]); ?>">
<?= $facet['facet_title']; ?>
</a>
<?php if ($user['id'] == $facet['facet_user_id']) { ?>
<i class="bi bi-mic sky-500 text-sm"></i>
<?php } ?>
<div class="text-sm pr15 mb-pr-0 gray-400">
<?= $facet['facet_short_description']; ?>
<div class="flex mt5 text-sm">
<i class="bi bi-journal mr5"></i>
<?= $facet['facet_count']; ?>
<?php if ($facet['facet_focus_count'] > 0) { ?>
<i class="bi bi-people ml15 mr5"></i>
<?= $facet['facet_focus_count']; ?>
<?php } ?>
</div>
</div>
</div>
</div>
<?php } ?>
</div>

View file

@ -1,10 +0,0 @@
<div class="mb20 max-w640">
<label class="block" for="post_content"><?= Translate::get('type'); ?></label>
<select class="h40" name="facet_type">
<?php foreach (Config::get('facets.facet_type') as $value) { ?>
<option <?php if ($value['value'] == $type) { ?>selected<?php } ?> value="<?= $value['value']; ?>">
<?= $value['title']; ?>
</option>
<?php } ?>
</select>
</div>

View file

@ -1,16 +0,0 @@
<?php if ($focus_users) { ?>
<div class="text-sm mt20 gray-600">
<div class="uppercase inline mr5"><?= Translate::get('reads'); ?>:</div>
<?php $n = 0;
foreach ($focus_users as $user) {
$n++; ?>
<a class="-mr-1" href="/@<?= $user['login']; ?>">
<?= user_avatar_img($user['avatar'], 'max', $user['login'], 'w30 h30 br-rd-50'); ?>
</a>
<?php } ?>
<?php if ($n > 5) { ?><span class="ml10">...</span><?php } ?>
<span class="focus-user gray-600 ml10">
<?= $topic_focus_count; ?>
</span>
</div>
<?php } ?>

View file

@ -1,19 +0,0 @@
<?php if (!$user['id']) { ?>
<a href="<?= getUrlByName('login'); ?>">
<div class="bg-sky-50 sky-500 bg-hover-gray br-sky-100 inline br-rd20 center pt5 pr15 pb5 pl15">
+ <?= Translate::get('read'); ?>
</div>
</a>
<?php } else { ?>
<?php if ($topic['facet_user_id'] != $user['id']) { ?>
<?php if ($topic_signed) { ?>
<div data-id="<?= $topic['facet_id']; ?>" data-type="topic" class="focus-id bg-gray-100 gray-400 br-gray-200 inline br-rd20 center pt5 pr15 pb5 pl15">
<?= Translate::get('unsubscribe'); ?>
</div>
<?php } else { ?>
<div data-id="<?= $topic['facet_id']; ?>" data-type="topic" class="focus-id bg-sky-50 sky-500 bg-hover-gray br-sky-100 inline br-rd20 center pt5 pr15 pb5 pl15">
+ <?= Translate::get('read'); ?>
</div>
<?php } ?>
<?php } ?>
<?php } ?>

View file

@ -1,40 +0,0 @@
<div class="flex flex-row flex-wrap mt15">
<?php foreach ($facets as $key => $facet) { ?>
<div class="w-50 mb20 mb-w-100 flex flex-row<?php if (($key + 1) % 2 == 0) { ?> pl20 mb-pl-0<?php } ?>">
<a title="<?= $facet['facet_title']; ?>" class="mr10" href="<?= getUrlByName($facet['facet_type'], ['slug' => $facet['facet_slug']]); ?>">
<?= facet_logo_img($facet['facet_img'], 'max', $facet['facet_title'], 'w50 h50 br-box-gray'); ?>
</a>
<div class="ml5 w-100">
<?php if ($user['id']) { ?>
<?php if ($facet['facet_user_id'] != $user['id']) { ?>
<?php if ($facet['signed_facet_id']) { ?>
<div data-id="<?= $facet['facet_id']; ?>" data-type="topic" class="focus-id right inline br-rd20 gray-400 center mr15">
<sup><?= Translate::get('unsubscribe'); ?></sup>
</div>
<?php } else { ?>
<div data-id="<?= $facet['facet_id']; ?>" data-type="topic" class="focus-id right inline br-rd20 sky-500 center mr15">
<sup><i class="bi bi-plus"></i> <?= Translate::get('read'); ?></sup>
</div>
<?php } ?>
<?php } ?>
<?php } ?>
<a class="black" title="<?= $facet['facet_title']; ?>" href="<?= getUrlByName($facet['facet_type'], ['slug' => $facet['facet_slug']]); ?>">
<?= $facet['facet_title']; ?>
</a>
<?php if ($user['id'] == $facet['facet_user_id']) { ?>
<i class="bi bi-mic sky-500 text-sm"></i>
<?php } ?>
<div class="text-sm mt5 pr15 mb-pr-0 gray-400">
<?= $facet['facet_short_description']; ?>
<sup class="flex justify-center right">
<i class="bi bi-journal mr5"></i>
<?= $facet['facet_count']; ?>
</sup>
</div>
</div>
</div>
<?php } ?>
</div>

View file

@ -1,23 +0,0 @@
<div class="cm_addentry max-w780 mt10">
<?php if ($user['id'] > 0) { ?>
<form id="add_comm" class="new_comment" action="/comment/create" accept-charset="UTF-8" method="post">
<?= csrf_field() ?>
<textarea rows="5" minlength="6" placeholder="<?= Translate::get('write-something'); ?>..." name="comment" id="comment"></textarea>
<div class="mb20">
<input type="hidden" name="post_id" id="post_id" value="<?= $data['post_id']; ?>">
<input type="hidden" name="answer_id" id="answer_id" value="<?= $data['answer_id']; ?>">
<input type="hidden" name="comment_id" id="comment_id" value="<?= $data['comment_id']; ?>">
<?= sumbit(Translate::get('comment')); ?>
<span id="cancel_comment" class="text-sm inline ml5 gray"><?= Translate::get('cancel'); ?></span>
</div>
</form>
<?php } else { ?>
<textarea rows="5" disabled="disabled" class="bg-gray-000" placeholder="<?= Translate::get('no-auth-comm'); ?>." name="content" id="content"></textarea>
<div>
<input type="hidden" name="post_id" id="post_id" value="<?= $data['post_id']; ?>">
<input type="hidden" name="answer_id" id="answer_id" value="<?= $data['answer_id']; ?>">
<?= sumbit(Translate::get('comment')); ?>
<span id="cancel_comment" class="text-sm inline ml5 gray"><?= Translate::get('cancel'); ?></span>
</div>
<?php } ?>
</div>

View file

@ -1,15 +0,0 @@
<div class="cm_addentry max-w780 mt10">
<?php if ($user['id'] > 0) { ?>
<form id="add_comm" class="new_comment" action="/comment/edit" accept-charset="UTF-8" method="post">
<?= csrf_field() ?>
<textarea rows="5" minlength="6" name="comment" id="comment"><?= $data['comment_content']; ?></textarea>
<div class="mt5 mb20 max-w640">
<input type="hidden" name="post_id" id="post_id" value="<?= $data['post_id']; ?>">
<input type="hidden" name="comment_id" id="comment_id" value="<?= $data['comment_id']; ?>">
<?= sumbit(Translate::get('edit')); ?>
<span id="cancel_comment" class="text-sm inline ml5 gray"><?= Translate::get('cancel'); ?></span>
</div>
<div class="v-otsr"></div>
</form>
<?php } ?>
</div>

View file

@ -1,16 +0,0 @@
<?php foreach ($data as $fl) { ?>
<div class="mb20 max-w640">
<label class="block mb5" for="post_title"><?= $fl['title']; ?>
<?php if (!empty($fl['red'])) { ?><sup class="red-500">*</sup><?php } ?>
</label>
<input class="w-100 h40 pl5"
<?php if (!empty($fl['min'])) { ?>minlength="<?= $fl['min']; ?>" <?php } ?>
<?php if (!empty($fl['max'])) { ?>maxlength="<?= $fl['max']; ?>" <?php } ?>
<?php if (!empty($fl['id'])) { ?>id="<?= $fl['id']; ?>" <?php } ?>
type="<?= $fl['type']; ?>"
<?php if (!empty($fl['required'])) { ?> required <?php } ?>
<?php if (!empty($fl['value'])) { ?>value="<?= $fl['value']; ?>" <?php } ?>
name="<?= $fl['name']; ?>">
<?php if (!empty($fl['help'])) { ?><div class="text-sm gray-400"><?= $fl['help']; ?></div><?php } ?>
</div>
<?php } ?>

View file

@ -1,19 +0,0 @@
<?php foreach ($data as $value) {
$checked = $value['checked'] ?? 0;
$help = $value['help'] ?? null;
?>
<div class="mb20 max-w640">
<label class="block mb5"><?= $value['title']; ?></label>
<label class="container-radio">
<input type="radio" name="<?= $value['name']; ?>" <?php if ($checked == 0) { ?>checked<?php } ?> value="0">
<span class="checkmark"></span>
<?= Translate::get('no'); ?>
</label>
<label class="container-radio">
<input type="radio" name="<?= $value['name']; ?>" <?php if ($checked == 1) { ?>checked<?php } ?> value="1">
<span class="checkmark"></span>
<?= Translate::get('yes'); ?>
</label>
<?php if ($help) { ?><div class="mt5 text-sm gray-400"><?= $help; ?></div><?php } ?>
</div>
<?php } ?>

View file

@ -1,64 +0,0 @@
<div class="mb20 max-w640">
<label class="block">
<?= Translate::get('blog'); ?>
</label>
<input name="blog_select" id="blog_id">
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
let blog_search = async (props = {}) => {
const settings = {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(props)
};
try {
const fetchResponse = await fetch('/search/blog', settings);
return await fetchResponse.json();
} catch (e) {
return e;
}
};
document.addEventListener("DOMContentLoaded", async () => {
let search_blog = await blog_search();
let input = document.querySelector('#blog_id');
let options = {
tagTextProp: "facet_title",
mode: "select",
maxTags: 1,
callbacks: {
"dropdown:show": async (e) => await blog_search(),
},
whitelist: search_blog,
}
let tagify = new Tagify(input, options);
<?php if ($action == 'edit') { ?>
<?php if (!empty($data['blog_arr'])) { ?>
tagify.addTags(JSON.parse('<?= json_encode($data['blog_arr']) ?>'))
<?php } ?>
<?php } else { ?>
<?php if (!empty($data['facets']['blog'])) { ?>
<?php $id = $data['facets']['blog']['facet_id'];
$title = $data['facets']['blog']['facet_title'];
?>
tagify.addTags([{
value: '<?= $id; ?>',
facet_title: '<?= $title; ?>'
}])
<?php } else { ?>
tagify.addTags([])
<?php } ?>
<?php } ?>
});
</script>

View file

@ -1,8 +0,0 @@
<div class="mb20 max-w640">
<label class="block" for="post_content"><?= Translate::get('for'); ?> TL</label>
<select class="w-100 h30 bg-white br-box-gray" name="content_tl">
<?php for ($i = 0; $i <= $user['trust_level']; $i++) { ?>
<option <?php if ($data == $i) { ?>selected<?php } ?> value="<?= $i; ?>"><?= $i; ?></option>
<?php } ?>
</select>
</div>

View file

@ -1,58 +0,0 @@
<?
// Выбор детей в основной структуре
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= $title; ?>
</label>
<input name="high_facet_id" id="high_facet_id">
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
var facet_search = async (props = {}) => {
var settings = {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(props)
};
try {
const fetchResponse = await fetch('/search/topic', settings);
return await fetchResponse.json();
} catch (e) {
return e;
}
};
document.addEventListener("DOMContentLoaded", async () => {
var search_facet = await facet_search();
var input = document.querySelector('#high_facet_id');
var options_post = {
tagTextProp: "facet_title",
// userInput: false, // <- отключим пользовательский ввод
skipInvalid: true, // <- не добавлять повтороно не допускаемые теги
enforceWhitelist: true, // <- добавлять только из белого списка
maxTags: 10, // <- ограничим выбор фасетов
callbacks: {
"dropdown:show": async (e) => await facet_search(),
},
whitelist: search_facet,
};
var tagify_post = new Tagify(input, options_post);
<?php if ($action == 'edit') { ?>
tagify_post.addTags(JSON.parse('<?= json_encode($data['low_arr']) ?>'))
<?php } ?>
});
</script>

View file

@ -1,58 +0,0 @@
<?
// Связанные темы
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= $title; ?>
</label>
<input name="facet_matching[]" id="facet_id_matching">
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
var facet_search = async (props = {}) => {
var settings = {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(props)
};
try {
const fetchResponse = await fetch('/search/topic', settings);
return await fetchResponse.json();
} catch (e) {
return e;
}
};
document.addEventListener("DOMContentLoaded", async () => {
var search_facet = await facet_search();
var input = document.querySelector('#facet_id_matching');
var options_post = {
tagTextProp: "facet_title",
// userInput: false, // <- отключим пользовательский ввод
skipInvalid: true, // <- не добавлять повтороно не допускаемые теги
enforceWhitelist: true, // <- добавлять только из белого списка
maxTags: 3, // <- ограничим выбор фасетов
callbacks: {
"dropdown:show": async (e) => await facet_search(),
},
whitelist: search_facet,
};
var tagify_post = new Tagify(input, options_post);
<?php if ($action == 'edit') { ?>
tagify_post.addTags(JSON.parse('<?= json_encode($data['low_matching']) ?>'))
<?php } ?>
});
</script>

View file

@ -1,50 +0,0 @@
<?
// Связанные посты
// Related posts
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= $title; ?>
</label>
<input name="post_select[]" id="post_id">
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
document.addEventListener("DOMContentLoaded", async () => {
var input = document.querySelector('#post_id');
let tagify_post = new Tagify(input, {
pattern: /.{3,}/,
// userInput: false, // <- отключим пользовательский ввод
skipInvalid: true, // <- не добавлять повтороно не допускаемые теги
enforceWhitelist: true, // <- добавлять только из белого списка
tagTextProp: "post_title",
<?php if ($action == 'edit') { ?>
whitelist: JSON.parse('<?= json_encode($data['post_arr']); ?>'),
<?php } ?>
maxTags: 3, // <- ограничим выбор фасетов
});
let abortCtrl; // за прерывание вызова
tagify_post.on('input', e => {
const term = e.detail.value.trim();
if (term.length < 3) return;
tagify_post.settings.whitelist.length = 0; // сбросим белый список
abortCtrl && abortCtrl.abort();
abortCtrl = new AbortController();
// покажем анимацию загрузки и скроем раскрывающийся список предложений
tagify_post.loading(true).dropdown.hide.call(tagify_post);
fetch(`/search/post/${encodeURIComponent(term)}`, {signal: abortCtrl.signal})
.then(r => r.json())
.then(list => {
console.log(list);
tagify_post.settings.whitelist.splice(0, list.length, ...list); // обновим массив бел. список на месте
tagify_post.loading(false).dropdown.show.call(tagify_post, term); // отобразим раскрывающийся список предложений
})
});
<?php if ($action == 'edit') { ?>
tagify_post.addTags(JSON.parse('<?= json_encode($data['post_arr']); ?>'));
<?php } ?>
});
</script>

View file

@ -1,54 +0,0 @@
<div class="mb20 max-w640">
<label class="block">
<?= Translate::get('section'); ?>
</label>
<input name="section_select" id="section_id">
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
let section_search = async (props = {}) => {
const settings = {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(props)
};
try {
const fetchResponse = await fetch('/search/section', settings);
return await fetchResponse.json();
} catch (e) {
return e;
}
};
document.addEventListener("DOMContentLoaded", async () => {
let search_section = await section_search();
let input = document.querySelector('#section_id');
let options = {
tagTextProp: "facet_title",
mode: "select",
maxTags: 1,
callbacks: {
"dropdown:show": async (e) => await blog_search(),
},
whitelist: search_section,
}
let tagify = new Tagify(input, options);
<?php if ($action == 'edit') { ?>
<?php if (!empty($data['section_arr'])) { ?>
tagify.addTags(JSON.parse('<?= json_encode($data['section_arr']) ?>'))
<?php } ?>
<?php } else { ?>
tagify.addTags([])
<?php } ?>
});
</script>

View file

@ -1,86 +0,0 @@
<?
// $type (topic | blog | user | trust level)
// $action (edit)
?>
<div class="mb20 max-w640">
<label class="block mb5">
<?= Translate::get($type); ?> <?php if (!empty($red)) { ?><sup class="red-500">*</sup><?php } ?>
</label>
<?php if ($action == 'edit' || $action == 'add') { ?>
<input name="facet_select[]" id="topic_id" required>
<?php } ?>
<?php if (!empty($help)) { ?><div class="gray text-sm"><?= $help; ?>...</div><?php } ?>
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
var focus_search = async (props = {}) => {
var settings = {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(props)
};
try {
const fetchResponse = await fetch('/search/<?= $type; ?>', settings);
return await fetchResponse.json();
} catch (e) {
return e;
}
};
document.addEventListener("DOMContentLoaded", async () => {
let search = await focus_search();
let input = document.querySelector('#topic_id');
let options = {
tagTextProp: "facet_title", // <- чтобы не переопределять title в запросах
// userInput: false, // <- отключим пользовательский ввод
skipInvalid: true, // <- не добавлять повтороно не допускаемые теги
enforceWhitelist: true, // <- добавлять только из белого списка
dropdown: {
maxItems: 7, // <- максимум показов фасетов
classname: "tags-look", // <- пользова. имя класса для этого раскр. списка, чтобы оно могло быть целевым
enabled: 0, // <- показывать предложения по фокусировке
closeOnSelect: false // <- не скрывайте раскрывающийся список "Предложения" после выбора элемента
},
maxTags: 3, // <- ограничим выбор фасетов
callbacks: {
"dropdown:show": async (e) => await focus_search(),
},
whitelist: search,
};
let tagify = new Tagify(input, options);
<?php if ($action == 'edit') { ?>
// tagify.addTags([{id:'20', value:'Веб-разработка'},{id:'43', value:'Новости и СМИ'},])
tagify.addTags(JSON.parse('<?= json_encode($data['topic_arr']) ?>'))
<?php } else { ?>
<?php if (!empty($data['topic'])) { ?>
<?php if ($data['topic']) {
$id = $data['topic']['facet_id'];
$title = $data['topic']['facet_title'];
?>
tagify.addTags([{
value: '<?= $id; ?>',
facet_title: '<?= $title; ?>'
}])
<?php } else { ?>
tagify.addTags([])
<?php } ?>
<?php } else { ?>
tagify.addTags([])
<?php } ?>
<?php } ?>
});
</script>

View file

@ -1,50 +0,0 @@
<?php if ($uid['trust_level'] > 4) { ?>
<div class="mb20 max-w640">
<?= Translate::get('author'); ?>
<input name='user_id' id="user_id">
</div>
<script nonce="<?= $_SERVER['nonce']; ?>">
const user_search = async (props = {}) => {
const settings = {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(props)
};
try {
const fetchResponse = await fetch('/search/user', settings);
return await fetchResponse.json();
} catch (e) {
return e;
}
};
document.addEventListener("DOMContentLoaded", async () => {
let search_user = await user_search();
let input = document.querySelector('#user_id');
let options = {
mode: "select",
maxTags: 1,
enforceWhitelist: true, // <- добавлять только из белого списка
callbacks: {
"dropdown:show": async (e) => await focus_search(),
},
whitelist: search_user,
};
tagify = new Tagify(input, options);
tagify.addTags([{
id: '<?= $user['id']; ?>',
value: '<?= $user['login']; ?>'
}])
});
</script>
<?php } ?>

View file

@ -1,10 +0,0 @@
<div class="br-box-gray bg-blue-100 dark-bg-black dark-br-black gray dark-gray-300 p20 mb15 mt15 relative center br-rd5">
<?= Translate::get('not registered'); ?>?
<form action="<?= getUrlByName('register'); ?>" class="mt15 mb15 block">
<?= sumbit(Translate::get('create account')); ?>
</form>
<i class="bi bi-emoji-wink absolute right0 mr15 bottom0 mb5 text-3xl gray-400"></i>
<a class="mt15 mb0 gray lowercase block text-sm" href="<?= getUrlByName('login'); ?>">
<?= Translate::get('sign in'); ?>
</a>
</div>

View file

@ -1,150 +0,0 @@
<?php if (!empty($data['answers'])) { ?>
<div class="bg-white br-rd5 br-box-gray p15">
<h2 class="lowercase m0 text-2xl">
<?= num_word($post['amount_content'], Translate::get('num-answer'), true); ?>
</h2>
<?php foreach ($data['answers'] as $answer) { ?>
<div class="block-answer">
<?php if ($answer['answer_is_deleted'] == 0) { ?>
<?php if ($user['id'] == $answer['answer_user_id']) { ?> <?php $otvet = 1; ?> <?php } ?>
<div class="br-top-dotted mb20"></div>
<ol class="p0 m0 list-none">
<li class="answers_subtree" id="answer_<?= $answer['answer_id']; ?>">
<div class="answ-telo hidden">
<div class="br-box-gray w110 br-rd3 right mt10 pt10 ml10 pb10 hidden center">
<?= user_avatar_img($answer['avatar'], 'max', $answer['login'], 'br-rd-50 w60 h60'); ?>
<div class="text-sm gray-600">
<?= lang_date($answer['answer_date']); ?>
<?php if (empty($answer['edit'])) { ?>
(<?= Translate::get('ed'); ?>.)
<?php } ?>
<?= Tpl::import('/_block/show-ip', ['ip' => $answer['answer_ip'], 'user' => $user, 'publ' => $answer['answer_published']]); ?>
</div>
<a class="qa-login" href="/@<?= $answer['login']; ?>"><?= $answer['login']; ?></a>
</div>
<?= $answer['answer_content'] ?>
</div>
<div class="flex text-sm">
<?= votes($user['id'], $answer, 'answer', 'ps', 'mr5'); ?>
<?php if ($user['trust_level'] >= Config::get('trust-levels.tl_add_comm_qa')) { ?>
<?php if ($post['post_closed'] == 0) { ?>
<?php if ($post['post_is_deleted'] == 0 || UserData::checkAdmin()) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-answer_id="<?= $answer['answer_id']; ?>" class="add-comment gray ml10"><?= Translate::get('reply'); ?></a>
<?php } ?>
<?php } ?>
<?php } ?>
<?php if (accessСheck($answer, 'answer', $user, 1, 30) === true) { ?>
<?php if ($user['id'] == $answer['answer_user_id'] || UserData::checkAdmin()) { ?>
<a class="editansw gray ml15 mr5" href="/answer/edit/<?= $answer['answer_id']; ?>">
<?= Translate::get('edit'); ?>
</a>
<?php } ?>
<?php } ?>
<?php if (UserData::checkAdmin()) { ?>
<a data-type="answer" data-id="<?= $answer['answer_id']; ?>" class="type-action gray ml15 mr5">
<i title="<?= Translate::get('remove'); ?>" class="bi bi-trash"></i>
</a>
<?php } ?>
<?= favorite($user['id'], $answer['answer_id'], 'answer', $answer['favorite_tid'], 'ps', 'ml5'); ?>
<?php if ($user['id'] != $answer['answer_user_id'] && $user['trust_level'] > Config::get('trust-levels.tl_stop_report')) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-type="answer" data-content_id="<?= $answer['answer_id']; ?>" class="msg-flag gray ml15">
<i title="<?= Translate::get('report'); ?>" class="bi bi-flag"></i>
</a>
<?php } ?>
</div>
<div id="answer_addentry<?= $answer['answer_id']; ?>" class="none"></div>
</li>
</ol>
<?php } ?>
</div>
<?php $n = 0;
foreach ($answer['comments'] as $comment) {
$n++; ?>
<?php if ($comment['comment_is_deleted'] == 0) { ?>
<div class="br-bottom<?php if ($n > 1) { ?> ml30<?php } ?>"></div>
<ol class="max-w780 list-none mb0 mt0">
<li class="comment_subtree" id="comment_<?= $comment['comment_id']; ?>">
<div class="text-sm pt5 pr5 pb5 pl5">
<?= $comment['comment_content'] ?>
<span class="gray">
<a class="gray" href="/@<?= $comment['login']; ?>"><?= $comment['login']; ?></a>
<span class="lowercase gray">
&nbsp; <?= lang_date($comment['comment_date']); ?>
</span>
<?= Tpl::import('/_block/show-ip', ['ip' => $comment['comment_ip'], 'user' => $user, 'publ' => $comment['comment_published']]); ?>
</span>
<?php if ($user['trust_level'] >= Config::get('trust-levels.tl_add_comm_qa')) { ?>
<?php if ($post['post_closed'] == 0) { ?>
<?php if ($post['post_is_deleted'] == 0 || UserData::checkAdmin()) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-answer_id="<?= $answer['answer_id']; ?>" data-comment_id="<?= $comment['comment_id']; ?>" class="add-comment-re gray ml5 mr5">
<?= Translate::get('reply'); ?>
</a>
<?php } ?>
<?php } ?>
<?php } ?>
<?php if (accessСheck($comment, 'comment', $user, 1, 30) === true) { ?>
<?php if ($user['id'] == $comment['comment_user_id'] || UserData::checkAdmin()) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-comment_id="<?= $comment['comment_id']; ?>" class="editcomm gray ml10 mr5">
<i title="<?= Translate::get('edit'); ?>" class="bi bi-pencil-square"></i>
</a>
<?php } ?>
<?php } ?>
<?php if (UserData::checkAdmin()) { ?>
<a data-type="comment" data-id="<?= $comment['comment_id']; ?>" class="type-action gray ml10">
<i title="<?= Translate::get('remove'); ?>" class="bi bi-trash"></i>
</a>
<?php } ?>
<?php if ($user['id'] != $comment['comment_user_id'] && $user['trust_level'] > 0) { ?>
<a data-post_id="<?= $post['post_id']; ?>" data-type="comment" data-content_id="<?= $comment['comment_id']; ?>" class="msg-flag gray ml5">
<?= Translate::get('report'); ?>
</a>
<?php } ?>
</div>
<div id="comment_addentry<?= $comment['comment_id']; ?>" class="none"></div>
</li>
</ol>
<?php } ?>
<?php } ?>
<?php } ?>
</div>
<?php } else { ?>
<?php if ($post['post_closed'] != 1) { ?>
<?= no_content(Translate::get('no.answers'), 'bi bi-info-lg'); ?>
<?php } ?>
<?php } ?>
<?php if (!empty($otvet)) { ?>
<?= no_content(Translate::get('you-question-no'), 'bi bi-info-lg'); ?>
<?php } else { ?>
<?php if ($user['id'] > 0) { ?>
<?php if ($post['post_feature'] == 1 && $post['post_draft'] == 0 && $post['post_closed'] == 0) { ?>
<form class="mb15" action="<?= getUrlByName('answer.create'); ?>" accept-charset="UTF-8" method="post">
<?= csrf_field() ?>
<?= Tpl::import('/_block/editor/editor', [
'height' => '250px',
'preview' => 'tab',
'user' => $user,
]); ?>
<div class="clear pt5">
<input type="hidden" name="post_id" value="<?= $post['post_id']; ?>">
<input type="hidden" name="answer_id" value="0">
<?= sumbit(Translate::get('reply')); ?>
</div>
</form>
<?php } ?>
<?php } ?>
<?php } ?>

View file

@ -1,22 +0,0 @@
<?php if (Request::getUri() == '/') { ?>
<a class="bg-blue-100 bg-hover-green white-hover flex justify-center pt5 pr10 pb5 pl10 br-rd5 p15 mb15 sky-500 text-sm" href="/topics">
<i class="bi bi-lightbulb middle mr5"></i>
<?= Translate::get('topic-subscription'); ?>
</a>
<div class="grid grid-cols-12 gap-4 mb-gap-05 pr10 pl10 justify-between">
<?php foreach ($data['topics'] as $topic) { ?>
<div class="col-span-6 br-box-gray p10">
<div data-id="<?= $topic['facet_id']; ?>" data-type="topic" class="focus-id right inline br-rd20 sky-500 center mr5">
<sup><i class="bi bi-plus"></i> <?= Translate::get('read'); ?></sup>
</div>
<a class="" title="<?= $topic['facet_title']; ?>" href="<?= getUrlByName('topic', ['slug' => $topic['facet_slug']]); ?>">
<?= facet_logo_img($topic['facet_img'], 'max', $topic['facet_title'], 'w30 h30 mr5'); ?>
<?= $topic['facet_title']; ?>
</a>
<div class="mt5 text-sm gray-600">
<?= $topic['facet_description']; ?>
</div>
</div>
<?php } ?>
</div>
<?php } ?>

View file

@ -1,19 +0,0 @@
<?php if (!empty($related_posts)) { ?>
<div class="mb15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('related'); ?></h3>
<?php $num = 0; ?>
<?php foreach ($related_posts as $related) { ?>
<div class="mb10 flex">
<?php if ($number == 'yes') { ?>
<?php $num++; ?>
<div class="flex justify-center bg-sky-50 w20 mr5 br-rd-50">
<span class="gray-400"><?= $num; ?></span>
</div>
<?php } ?>
<a href="<?= getUrlByName('post', ['id' => $related['id'], 'slug' => $related['post_slug']]); ?>">
<?= $related['value']; ?>
</a>
</div>
<?php } ?>
</div>
<?php } ?>

View file

@ -1,8 +0,0 @@
<?php if ($user['trust_level'] == UserData::REGISTERED_ADMIN) { ?>
<a class="gray-400 ml10" href="<?= getUrlByName('admin.logip', ['ip' => $ip]); ?>">
<?= $ip; ?>
</a>
<?php if ($publ == 0) { ?>
<span class="ml15 red-500 lowercase"><?= Translate::get('audits'); ?></span>
<?php } ?>
<?php } ?>

View file

@ -1,25 +0,0 @@
<aside class="col-span-3 relative br-rd5 mb-none">
<?php if (!empty($lang)) { ?>
<div class="bg-white p15 br-box-gray box-shadow-all">
<?= $lang; ?>...
</div>
<?php } ?>
<div class="flex flex-row items-center justify-between bg-white br-rd5 br-box-gray p15 mt15 box-shadow-all">
<div class="text-sm">
<a class="inline gray-400" title="<?= Translate::get('help'); ?>" href="/info/<?= Config::get('facets.page-one'); ?>">
<?= Translate::get('help'); ?>
</a>
</div>
<div class="text-sm">
<a rel="nofollow noopener" class="gray-400 right" title="DISCORD" href="https://discord.gg/dw47aNx5nU">
<i class="bi bi-discord middle text-xl"></i>
</a>
<a rel="nofollow noopener" class="gray-400 text-xl right ml15 mr15" title="Vkontakte" href="https://vk.com/agouti">
VK
</a>
<a rel="nofollow noopener" class="gray-400 right" title="GitHub" href="https://github.com/agoutiDev/agouti">
<i class="bi bi-github middle text-xl"></i>
</a>
</div>
</div>
</aside>

View file

@ -1,29 +0,0 @@
<div class="br-box-gray p15 mb15 br-rd5 bg-white text-sm">
<form class="" action="<?= getUrlByName('login'); ?>" method="post">
<?php csrf_field(); ?>
<div class="mb20">
<label for="email" class="block mb5">Email</label>
<input type="email" id="email" placeholder="<?= Translate::get('enter'); ?> e-mail" name="email" class="w-100 h30 pl5">
</div>
<div class="inputs relative mb20">
<label for="password" class="block mb5"><?= Translate::get('password'); ?></label>
<input type="password" id="password" placeholder="<?= Translate::get('enter your password'); ?>" name="password" class="password w-100 h30 pl5">
<span class="showPassword absolute gray-400 right5 text-xl"><i class="bi bi-eye"></i></span>
</div>
<div class="mb20 mb20 flex">
<input type="checkbox" class="left mr5" id="rememberme" name="rememberme" value="1">
<label id="rem-text" class="form-check-label" for="rememberme">
<span class="gray-600"><?= Translate::get('remember me'); ?></span>
</label>
</div>
<div class="mb20">
<?= sumbit(Translate::get('sign in')); ?>
</div>
<div class="center gray-600">
<?= Translate::get('login-use-condition'); ?>
</div>
<div class="mt15 center">
<a class="gray-600" href="<?= getUrlByName('recover'); ?>"><?= Translate::get('forgot your password'); ?>?</a>
</div>
</form>
</div>

View file

@ -1,30 +0,0 @@
<?php if ($data['user']['id'] != 1) { ?>
<div class="bg-white br-rd5 mb15 br-box-gray p15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get('created by'); ?></h3>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="/@<?= $data['user']['login']; ?>" title="<?= $data['user']['login']; ?>" >
<?= user_avatar_img($data['user']['avatar'], 'max', $data['user']['login'], 'w30 h30 mr10'); ?>
<?= $data['user']['login']; ?>
</a>
</div>
<?php } ?>
<?php if ($data['facet']['facet_is_web'] == 1) { ?>
<div class="bg-white br-rd5 mb15 br-box-gray box-shadow-all p15">
<a class="green-600" href="<?= getUrlByName('web.topic', ['slug' => $data['facet']['facet_slug']]); ?>">
<i class="bi bi-link-45deg text-2xl middle"></i>
<?= Translate::get('related sites'); ?>
</a>
</div>
<?php } ?>
<?php if (!empty($data['high_topics'])) { ?>
<?= Tpl::import('/_block/sidebar/topic_block', ['data' => $data['high_topics'], 'lang' => 'upper']); ?>
<?php } ?>
<?php if (!empty($data['low_topics'])) { ?>
<?= Tpl::import('/_block/sidebar/topic_block', ['data' => $data['low_topics'], 'lang' => 'subtopics']); ?>
<?php } ?>
<?php if (!empty($data['low_matching'])) { ?>
<?= Tpl::import('/_block/sidebar/topic_block', ['data' => $data['low_matching'], 'lang' => 'related']); ?>
<?php } ?>

View file

@ -1,9 +0,0 @@
<div class="bg-white br-rd5 mb15 br-box-gray box-shadow-all p15">
<h3 class="uppercase mb5 mt0 font-light text-sm gray"><?= Translate::get($lang); ?></h3>
<?php foreach ($data as $sub) { ?>
<a class="flex relative pt5 pb5 items-center hidden gray-600" href="<?= getUrlByName('topic', ['slug' => $sub['facet_slug']]); ?>" title="<?= $sub['facet_title']; ?>">
<?= facet_logo_img($sub['facet_img'], 'max', $sub['facet_title'], 'w30 h30 mr10 br-box-gray'); ?>
<?= $sub['facet_title']; ?>
</a>
<?php } ?>
</div>

View file

@ -1,49 +0,0 @@
<footer class="w-100 mt15 p15 bg-zinc-800 clear">
<div class="col-span-12 max-width grid grid-cols-12 mr-auto">
<div class="col-span-3 left mb-none ml10">
<h4 class="mt5 mb5 uppercase font-light white"><?= Translate::get('info'); ?></h4>
<a class="table gray-400 gray-hover text-sm mb5" title="<?= Translate::get('all domains'); ?>" href="<?= getUrlByName('web'); ?>">
<?= Translate::get('domains'); ?>
</a>
<a class="table gray-400 gray-hover text-sm mb5" title="<?= Translate::get('topics'); ?>" href="<?= getUrlByName('topics'); ?>">
<?= Translate::get('topics'); ?>
</a>
<a class="table gray-400 gray-hover text-sm" title="<?= Translate::get('users'); ?>" href="<?= getUrlByName('users.all'); ?>">
<?= Translate::get('users'); ?>
</a>
</div>
<div class="col-span-3 mb-none">
<h4 class="mt5 mb5 uppercase font-light white"><?= Translate::get('other'); ?></h4>
<a class="table gray-400 gray-hover text-sm mb5" title="<?= Translate::get('all answers'); ?>" href="<?= getUrlByName('answers'); ?>">
<?= Translate::get('answers'); ?>
</a>
<a class="table gray-400 gray-hover text-sm mb5" title="<?= Translate::get('all comments'); ?>" href="<?= getUrlByName('comments'); ?>">
<?= Translate::get('comments'); ?>
</a>
</div>
<div class="col-span-3">
<h4 class="mt5 mb5 uppercase font-light white"><?= Translate::get('help'); ?></h4>
<a class="table gray-400 gray-hover text-sm mb5" title="<?= Translate::get('info'); ?>" href="/info/<?= Config::get('facets.page-one'); ?>">
<?= Translate::get('info'); ?>
</a>
<a class="table gray-400 gray-hover text-sm" title="<?= Translate::get('privacy'); ?>" href="/info/<?= Config::get('facets.page-two'); ?>">
<?= Translate::get('privacy'); ?>
</a>
</div>
<div class="col-span-3 mb-col-12">
<h4 class="mt5 mb5 uppercase font-light white"><?= Translate::get('social networks'); ?></h4>
<a rel="nofollow noopener" class="gray-400 gray-hover inline mr10" title="DISCORD" href="https://discord.gg/dw47aNx5nU">
<i class="bi bi-discord text-2xl"></i>
</a>
<a rel="nofollow noopener" class="gray-400 gray-hover inline text-2xl" title="Vkontakte" href="https://vk.com/agouti">
VK
</a>
<a rel="nofollow noopener" class="gray-400 gray-hover inline ml10" title="GitHub" href="https://github.com/agoutiDev/agouti">
<i class="bi bi-github text-2xl"></i>
</a>
<div class="text-sm mt5 mb5 gray-400">
Agouti &copy; <?= date('Y'); ?> — <?= Translate::get('community'); ?>
</div>
</div>
</div>
</footer>

View file

@ -1,27 +0,0 @@
<?php if ($data['writers']) { ?>
<div class="bg-white br-rd5 br-box-gray p15">
<?php foreach ($data['writers'] as $writer) { ?>
<div class="flex br-bottom">
<div class="mr15 mt10">
<?= $writer['sum']; ?>
<span class="block gray lowercase"><?= Translate::get('views'); ?></span>
</div>
<div class="p15">
<?= user_avatar_img($writer['avatar'], 'max', $writer['login'], 'w50 h50'); ?>
</div>
<div class="mt10">
<a href="/@<?= $writer['login']; ?>"><?= $writer['login']; ?></a>
<div class="mr13 gray-600 mr15">
<?php if ($writer['about']) { ?>
<?= $writer['about']; ?>
<?php } else { ?>
...
<?php } ?>
</div>
</div>
</div>
<?php } ?>
</div>
<?php } else { ?>
<?= no_content(Translate::get('no'), 'bi bi-info-lg'); ?>
<?php } ?>

Some files were not shown because too many files have changed in this diff Show more