From e2f2452623fc9c43f938b8370da46f991a8ee742 Mon Sep 17 00:00:00 2001 From: themohooks <81331307+themohooks@users.noreply.github.com> Date: Tue, 25 Feb 2025 23:02:27 +0300 Subject: [PATCH] some updates --- static/js/index.js | 27 -------- views/pages/@footer.latte | 12 ++++ views/pages/@head.latte | 125 +++++++++++++++++++++++++++++++++++ views/pages/@layout.latte | 110 ++++++++++++++++++++++++++++++ views/pages/About.php | 79 ---------------------- views/pages/Errors/404.latte | 29 ++++++++ 6 files changed, 276 insertions(+), 106 deletions(-) create mode 100644 views/pages/@footer.latte create mode 100644 views/pages/@head.latte create mode 100644 views/pages/@layout.latte delete mode 100644 views/pages/About.php create mode 100644 views/pages/Errors/404.latte diff --git a/static/js/index.js b/static/js/index.js index dba393c..7fdc917 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -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() { diff --git a/views/pages/@footer.latte b/views/pages/@footer.latte new file mode 100644 index 0000000..f339f0c --- /dev/null +++ b/views/pages/@footer.latte @@ -0,0 +1,12 @@ +{block footer} + +<td class="footer"> + <p>Aloha, Hawaii! | PHP {phpversion()} | MySQL {$mysqlversion} | Версия {$lastcommit}</p> + <b><a href="/">Главная</a> <a href="/lk/">Личный кабинет</a> <a href="/rules">Правила</a> <a href="/about">О сервере</a></b><br> + + + + + </td> + +{/block} \ No newline at end of file diff --git a/views/pages/@head.latte b/views/pages/@head.latte new file mode 100644 index 0000000..fcda323 --- /dev/null +++ b/views/pages/@head.latte @@ -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&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 = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + return text.replace(/[&<>"']/g, function(m) { return map[m]; }); + } +</script> +{/block} diff --git a/views/pages/@layout.latte b/views/pages/@layout.latte new file mode 100644 index 0000000..275643c --- /dev/null +++ b/views/pages/@layout.latte @@ -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> diff --git a/views/pages/About.php b/views/pages/About.php deleted file mode 100644 index 3bdb905..0000000 --- a/views/pages/About.php +++ /dev/null @@ -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> \ No newline at end of file diff --git a/views/pages/Errors/404.latte b/views/pages/Errors/404.latte new file mode 100644 index 0000000..e704989 --- /dev/null +++ b/views/pages/Errors/404.latte @@ -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> \ No newline at end of file