some updates

This commit is contained in:
themohooks 2025-02-25 23:02:27 +03:00
parent 31ae91a71e
commit e2f2452623
6 changed files with 276 additions and 106 deletions

View file

@ -22,14 +22,6 @@ $(document).ready(function()
});
$(window).on('load resize', function()
{
var list = $('#idx-regions-list');
var h = list.closest('table').height() - list.position().top + 40;
list.css('height', h + 'px');
});
$('#loadmore').on('click', LoadRecentPhotos).click();
$('#newrand' ).on('click', LoadRandomPhotos).click();
@ -71,25 +63,6 @@ $(document).ready(function()
});
$('#loginbtn').on('click', function()
{
var username = $('#username').val().trim();
var password = $('#password').val().trim();
if (username != '' && username != '')
{
$('#loginbtn').prop('disabled', true).val(_text['IX_LOGGING']);
$.post('/api.php?action=check-login', { username: username, password: password, remember: $('#remember').is('checked') }, function(r)
{
if (r == 0)
$('#loginform').submit();
else window.location.reload();
})
.fail(function(jx) { if (jx.responseText != '') alert(jx.responseText); });
}
});
$('#mobile-menu').on('click', function()
{

12
views/pages/@footer.latte Normal file
View file

@ -0,0 +1,12 @@
{block footer}
<td class="footer">
<p>Aloha, Hawaii! | PHP {phpversion()} | MySQL {$mysqlversion} | Версия {$lastcommit}</p>
<b><a href="/">Главная</a> &nbsp; &nbsp; <a href="/lk/">Личный кабинет</a> &nbsp; &nbsp; <a href="/rules">Правила</a> &nbsp; &nbsp; <a href="/about">О сервере</a></b><br>
</td>
{/block}

125
views/pages/@head.latte Normal file
View file

@ -0,0 +1,125 @@
{block head}
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=1000,user-scalable=yes">
<title>j</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=PT+Sans+Narrow:wght@400;700&amp;display=swap" rel="stylesheet">
<link rel="stylesheet" href="/static/css/fontawesome/css/all.min.css">
<link rel="stylesheet" href="/static/css/style.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/desktop.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/trans.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/photo.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/notie.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/comments.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/map.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<link rel="stylesheet" href="/static/css/jquery-ui-1.8.20.custom.css{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}">
<script src="/static/js/jquery.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/jquery.form.min.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/core.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/index.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/jquery-ui.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/selector.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/selector2.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/imageupload.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/progress.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/notie.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/photo.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/comments.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/newcore.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/act.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/core_lk.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<script src="/static/js/tablesort.js{if $ngallery['root']['cloudflare-caching'] === true}?{time()}{/if}"></script>
<link href='https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css' rel='stylesheet'>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<div class="progress-container fixed-top">
<span class="progress-bard"></span>
</div>
<style>
.progress-container {
width: 100%;
background:linear-gradient(rgba(0,0,0,0.2),rgba(0,0,0,0.2)) var(--theme-bg-color);
height: 5px;
display: block;
}
@media screen and (max-width: 768px) {
:root {
--bckgr: -1500px 0;
--bckgr2: 1500px 0;
}
}
@media screen and (min-width: 768px) {
:root {
--bckgr: -3500px 0;
--bckgr2: 3500px 0;
}
}
@-webkit-keyframes bg-move {
0% { background-position: var(--bckgr); }
100% { background-position: var(--bckgr2); }
}
@keyframes bg-move {
0% { background-position: var(--bckgr); }
100% { background-position: var(--bckgr2); }
}
.progress-bard {
background-color: #fff;
width: 0%;
display: block;
height: inherit;
transition: width 0.6s ease;
background-image: linear-gradient(270deg, rgba(100, 181, 239, 0) 48.44%, var(--theme-bg-hover-color) 75.52%, rgba(100, 181, 239, 0) 100%);
background-repeat: no-repeat;
animation: bg-move linear 2s infinite;
}
</style>
<script>
notie.setOptions({
transitionCurve: 'cubic-bezier(0.2, 0, 0.2, 1)'
});
var Notify = {
noty: function(status, text) {
if (status == 'danger') status = 'error';
return notie.alert({ type: status, text: text })
},
}
function scrollProgressBarWidth(number) {
var getMax = function() {
return $(document).height() - $(window).height();
};
var progressBar = $(".progress-bard"),
max = getMax(),
value,
width;
var setWidth = function() {
progressBar.css({
width: number + '%'
});
};
setWidth();
}
function escapeHtml(text) {
var map = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#039;'
};
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
</script>
{/block}

110
views/pages/@layout.latte Normal file
View file

@ -0,0 +1,110 @@
<!DOCTYPE html>
<html lang="ru">
<head>
{include "@head.latte"}
</head>
<body>
<div id="backgr"></div>
<table class="tmain">
<tr>
<td class="mm-bar">
{if explode('/', $_SERVER['REQUEST_URI'])[1] === 'photo'}
<a id="title-small" href="/"><img src="{$ngallery['root']['logo']}">{$ngallery['root']['title']}</a>
{/if}
<ul class="mm mm-level-1">
<li><a href="#" onclick="return false" class="mm-item"><span class="mm-label">Дополнительно</span></a>
<div>
<ul class="mm-level-2">
<li><a href="/news.php" class="mm-item"><span class="mm-label">Новости и хронология</span></a></li>
<li><a href="/misc/" class="mm-item"><span class="mm-label">Разные фотогалереи</span></a></li>
<li><a href="/voting.php" class="mm-item"><span class="mm-label">Фотоконкурс</span></a></li>
<li><a href="/news2.php" class="mm-item"><span class="mm-label">Новости сайта</span></a></li>
<li><a href="/links.php" class="mm-item"><span class="mm-label">Ссылки</span></a></li>
</ul>
</div>
</li>
<li><a href="/comments" class="mm-item"><span class="mm-label">Комментарии</span></a></li>
<li><a href="#" onclick="return false" class="mm-item"><span class="mm-label">Обновления</span><?=$nonrw?></a>
<div>
<ul class="mm-level-2">
<li><a href="/update.php?time=24" class="mm-item"><span class="mm-label">Новые фотографии</span></a></li>
<li><a href="/feed" class="mm-item"><span class="mm-label">Лента обновлений</span></a></li>
<li><a href="/fav_authors" class="mm-item"><span class="mm-label">Фотографии избранных авторов</span><?=$nonrw?></a></li>
<li><a href="/update.php" class="mm-item"><span class="mm-label">Архив обновлений по датам</span></a></li>
</ul>
</div>
</li>
<li><a href="/help/" class="mm-item"><span class="mm-label">Помощь</span></a>
<div>
<ul class="mm-level-2">
<li><a href="/rules/" class="mm-item"><span class="mm-label">Правила сайта</span></a></li>
<li><a href="/rules/pub/" class="mm-item"><span class="mm-label">Критерии отбора фотографий</span></a></li>
<li><a href="/rules/photo/" class="mm-item"><span class="mm-label">Правила подписи фотографий</span></a></li>
<li><a href="/rules/video/" class="mm-item"><span class="mm-label">Правила видеокаталога</span></a></li>
</ul>
</div>
</li>
<li><a href="/search.php" class="mm-item"><span class="mm-label">Поиск</span></a>
<div>
<ul class="mm-level-2">
<li><a href="/search.php" class="mm-item"><span class="mm-label">Поиск фотографий</span></a></li>
<li><a href="/vsearch.php" class="mm-item"><span class="mm-label">Поиск ТС</span></a></li>
<li><a href="/csearch.php" class="mm-item"><span class="mm-label">Поиск комментариев</span></a></li>
<li><a href="/authors.php" class="mm-item"><span class="mm-label">Поиск авторов</span></a></li>
</ul>
</div>
</li>
{if App\Services\Auth::userid() <= 0}
<li class="mm-pad-right"><a href="/login" class="mm-item"><span class="mm-icon"><i class="fas fa-xs fa-address-card"></i></span><span class="mm-label">Войти</span></a></li>
<li><a href="/register" class="mm-item"><span class="mm-icon"><i class="fas fa-xs fa-user"></i></span><span class="mm-label">Регистрация</span></a></li>
{else}
<li class="mm-pad-right mm-wide">
<a href="/author/{$user_id}/" class="mm-item"><span class="mm-icon"><i class="fas fa-xs fa-user"></i></span><span class="mm-label">{$user->i('username')}</span>{if $nonreviewedimgs > 0 && $user->i('admin') > 0}<span class="mm-notify notify-count">{$nonreviewedimgs}</span>{/if}</a>
<div>
<ul class="mm-level-2">
<li><a href="/lk/" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-info-circle"></i></span><span class="mm-label">Общая информация</span></a></li>
{if $user->i('admin') > 0}
<li><a href="/admin" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-info-circle"></i></span><span class="mm-label">Admin</span><?=$nonr?></a></li>
{/if}
{if $ngallery['root']['registration']['emailverify'] != true || $user->i('status') != 3}
<li><a href="/lk/upload" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-plus-square"></i></span><span class="mm-label"><b>Предложить медиа</b></span></a></li>
{/if}
<li><a href="/lk/history" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-images"></i></span><span class="mm-label">Журнал</span></a></li>
<li><a href="/lk/konkurs.php" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-compass"></i></span><span class="mm-label">Конкурс</span></a></li>
<li><a href="/vehicle/edit" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-folder-plus"></i></span><span class="mm-label"><b>Правка БД</b></span></a></li>
<li><a href="/lk/ticket.php" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-question-circle"></i></span><span class="mm-label">Мои заявки</span></a></li>
<li><a href="/lk/profile" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-cog"></i></span><span class="mm-label">Настройки профиля</span></a></li>
<li><a href="/search?id={$user_id}" class="mm-item"><span class="mm-icon"><i class="far fa-sm fa-fw fa-images"></i></span><span class="mm-label">Мои фотографии</span></a></li>
<li><a href="/fav" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-star"></i></span><span class="mm-label">Избранные снимки</span></a></li>
<li><a href="/logout" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-sign-out-alt"></i></span><span class="mm-label">Выход</span></a></li>
</ul>
</div>
</li>
<li class="mm-wide">
<a href="/messages" class="mm-item"><span class="mm-icon"><i class="fas fa-xs fa-message"></i></span></a>
</li>
{/if}
</ul>
</td>
</tr>
{if explode('/', $_SERVER['REQUEST_URI'])[1] != 'photo'}
<tr>
<td><a href="/" id="title"><img style="width: <?=$width?>;" src="{$ngallery['root']['logo']}" alt="{$ngallery['root']['title']}"><span>{$ngallery['root']['title']}</span></a></td>
</tr>
{/if}
<td class="main">
{block content}{/block}
</td>
<tr>
{include "@footer.latte"}
</tr>
</table>
</body>
</html>

View file

@ -1,79 +0,0 @@
<?php
use \App\Services\{Auth, DB, Date};
use \App\Models\User;
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/LoadHead.php'); ?>
</head>
<body>
<div id="backgr"></div>
<table class="tmain">
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?>
<tr>
<td class="main">
<h1>О сервере <b><?= NGALLERY['root']['title'] ?></b></h1>
<p><?=NGALLERY['root']['description']?></p>
<table width="100%">
<div class="p20">
<h4><img src="/static/img/go-home.png">Общая информация</h4>
<ul class="straight">
<li>Зарегистрировано пользователей: <b><?=DB::query('SELECT COUNT(*) FROM users')[0]['COUNT(*)'];?></b></li>
<li>Опубликовано фотографий: <b><?=DB::query('SELECT COUNT(*) FROM photos WHERE moderated=1')[0]['COUNT(*)'];?></b></li>
<li>Пользователей онлайн: <b><?=DB::query('SELECT COUNT(*) FROM users WHERE online>=:time-300 ORDER BY online DESC', array(':time'=>time()))[0]['COUNT(*)'];?></b></li>
</ul>
</div>
<div class="p20">
<h4><img src="/static/img/220.ico">Администраторы</h4>
<ul style="list-style: none; margin: 0; padding: 0;">
<?php
$admins = DB::query('SELECT * FROM users WHERE admin=1');
foreach ($admins as $a) {
echo '<li><b><a href="/author/'.$a['id'].'/"><img onerror="this.src = `/static/img/avatar.png`; this.onerror = null;" src="'.$a['photourl'].'" width="32" style="border-radius: 3px; margin-right: 5px;">'.htmlspecialchars($a['username']).'</a></b></li>';
}
?>
</ul>
</div>
<div class="p20">
<h4><img src="/static/img/248.ico">Фотомодераторы</h4>
<ul style="list-style: none; margin: 0; padding: 0;">
<?php
$admins = DB::query('SELECT * FROM users WHERE admin=2');
foreach ($admins as $a) {
echo '<li><b><a href="/author/'.$a['id'].'/"><img onerror="this.src = `/static/img/avatar.png`; this.onerror = null;" src="'.$a['photourl'].'" width="32" style="border-radius: 3px; margin-right: 5px;">'.htmlspecialchars($a['username']).'</a></b></li>';
}
?>
</ul>
</div>
<div class="p20">
<h4><img src="/static/img/152.ico">Модераторы</h4>
<ul style="list-style: none; margin: 0; padding: 0;">
<?php
$admins = DB::query('SELECT * FROM users WHERE admin=3');
foreach ($admins as $a) {
echo '<li><b><a href="/author/'.$a['id'].'/"><img onerror="this.src = `/static/img/avatar.png`; this.onerror = null;" src="'.$a['photourl'].'" width="32" style="border-radius: 3px; margin-right: 5px;">'.htmlspecialchars($a['username']).'</a></b></li>';
}
?>
</ul>
</div>
</table>
</td>
</tr>
<tr>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Footer.php'); ?>
</tr>
</table>
</body>
</html>

View file

@ -0,0 +1,29 @@
<!DOCTYPE html><!-- "' --></textarea></script></style></pre></xmp></a></audio></button></canvas></datalist></details></dialog></iframe></listing></meter></noembed></noframes></noscript></optgroup></option></progress></rp></select></table></template></title></video>
<meta charset="utf-8">
<meta name=robots content=noindex>
<title>Server Error</title>
<style>
@import url("https://rsms.me/inter/inter.css");
body {
font-family: Inter !important;
}
#tracy-error { all: initial; position: absolute; top: 0; left: 0; right: 0; height: 70vh; min-height: 400px; display: flex; align-items: center; justify-content: center; z-index: 1000 }
#tracy-error div { all: initial; max-width: 550px; background: white; color: #333; display: block }
#tracy-error h1 { all: initial; font-family: Inter !important; font-size: 50px; font-weight: 700; display: block; margin: 40px }
#tracy-error p { all: initial; font-family: Inter !important; margin: 40px; display: block }
#tracy-error pre { all: initial; font-family: Inter !important; margin: 40px; display: block }
#tracy-error small { color: gray }
#tracy-error small span { color: silver }
</style>
<div id=tracy-error>
<div>
<h1>Not Found</h1>
<p>The requested page not found on server.</p><br>
<pre>{$_SERVER['REQUEST_URI']}</pre>
</div>
</div>