Global: Some fixes

I corrected the layout and tabulation a bit and put the QA Team back in the OpenVK version description.
This commit is contained in:
Ilya Prokopenko 2022-01-09 08:47:57 +03:00
parent 70dd7e3773
commit 3b1d85d64f
No known key found for this signature in database
GPG key ID: 7736BBBB05F14A56
3 changed files with 193 additions and 219 deletions

View file

@ -1,24 +1,26 @@
{var instance_name = OPENVK_ROOT_CONF['openvk']['appearance']['name']}
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Произошёл троллинг... | OpenVK</title> <title>An error occurred - {$instance_name}</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" /> <meta name="viewport" content="width=device-width, user-scalable=no" />
<style> <style>
@keyframes gradient { @keyframes gradient {
0% { 0% {
background-position:0% 50% background-position: 0% 50%;
} }
50% { 50% {
background-position:100% 50% background-position: 100% 50%;
} }
100% { 100% {
background-position:0% 50% background-position: 0% 50%;
} }
} }
body { body {
background: linear-gradient(-30deg, #2b2b2b, #f479ff); background: linear-gradient(-30deg, #2b2b2b, #f479ff);
color: #fff; color: #fff;
@ -27,25 +29,25 @@
animation: gradient 30s ease-in-out infinite; animation: gradient 30s ease-in-out infinite;
background-size: 400% 400%; background-size: 400% 400%;
} }
#error { #error {
width: 35rem; width: 35rem;
max-width: 85vw; max-width: 85vw;
} }
main { main {
display: flex; display: flex;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center; align-items: center;
height: 97vh; height: 97vh;
} }
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
main { main {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
} }
main > p:first-of-type { main > p:first-of-type {
display: none; display: none;
} }
@ -56,7 +58,7 @@
<!-- OpenVK ERROR REPORT: --> <!-- OpenVK ERROR REPORT: -->
<!-- HTTP {$code} --> <!-- HTTP {$code} -->
<!-- {$msg} --> <!-- {$msg} -->
<main> <main>
<p>{$desc}</p> <p>{$desc}</p>
<a href="/"><img src="/assets/packages/static/openvk/img/oof.apng" alt="Ouch" id="error" /></a> <a href="/"><img src="/assets/packages/static/openvk/img/oof.apng" alt="Ouch" id="error" /></a>

View file

@ -1,5 +1,6 @@
{var instance_name = OPENVK_ROOT_CONF['openvk']['appearance']['name']} {var instance_name = OPENVK_ROOT_CONF['openvk']['appearance']['name']}
<!DOCTYPE html n:if="!isset($parentModule) || substr($parentModule, 0, 21) === 'libchandler:absolute.'">
<html n:if="!isset($parentModule) || substr($parentModule, 0, 21) === 'libchandler:absolute.'"> <html n:if="!isset($parentModule) || substr($parentModule, 0, 21) === 'libchandler:absolute.'">
<head> <head>
<title> <title>
@ -9,28 +10,31 @@
<link rel="shortcut icon" href="/assets/packages/static/openvk/img/icon.ico" /> <link rel="shortcut icon" href="/assets/packages/static/openvk/img/icon.ico" />
<meta name="application-name" content="{$instance_name}" /> <meta name="application-name" content="{$instance_name}" />
<meta n:ifset="$csrfToken" name="csrf" value="{$csrfToken}" /> <meta n:ifset="$csrfToken" name="csrf" value="{$csrfToken}" />
<script src="/language/{php echo getLanguage()}.js" crossorigin="anonymous"></script> <script src="/language/{php echo getLanguage()}.js" crossorigin="anonymous"></script>
{script "js/node_modules/jquery/dist/jquery.min.js"} {script "js/node_modules/jquery/dist/jquery.min.js"}
{script "js/node_modules/umbrellajs/umbrella.min.js"} {script "js/node_modules/umbrellajs/umbrella.min.js"}
{script "js/l10n.js"} {script "js/l10n.js"}
{script "js/openvk.cls.js"} {script "js/openvk.cls.js"}
{ifset $thisUser} {ifset $thisUser}
{if $thisUser->getNsfwTolerance() < 2} {if $thisUser->getNsfwTolerance() < 2}
{css "css/nsfw-posts.css"} {css "css/nsfw-posts.css"}
{/if} {/if}
{if $theme !== null} {if $theme !== null}
{if $theme->inheritDefault()} {if $theme->inheritDefault()}
{css "css/style.css"} {css "css/style.css"}
{css "css/dialog.css"} {css "css/dialog.css"}
{css "css/notifications.css"} {css "css/notifications.css"}
{if $isXmas} {if $isXmas}
{css "css/xmas.css"} {css "css/xmas.css"}
{/if} {/if}
{/if} {/if}
<link rel="stylesheet" href="/themepack/{$theme->getId()}/{$theme->getVersion()}/stylesheet/styles.css" /> <link rel="stylesheet" href="/themepack/{$theme->getId()}/{$theme->getVersion()}/stylesheet/styles.css" />
{if $isXmas} {if $isXmas}
<link rel="stylesheet" href="/themepack/{$theme->getId()}/{$theme->getVersion()}/resource/xmas.css" /> <link rel="stylesheet" href="/themepack/{$theme->getId()}/{$theme->getVersion()}/resource/xmas.css" />
{/if} {/if}
@ -38,34 +42,37 @@
{css "css/style.css"} {css "css/style.css"}
{css "css/dialog.css"} {css "css/dialog.css"}
{css "css/notifications.css"} {css "css/notifications.css"}
{if $isXmas} {if $isXmas}
{css "css/xmas.css"} {css "css/xmas.css"}
{/if} {/if}
{/if} {/if}
{if $thisUser->getStyleAvatar() == 1} {if $thisUser->getStyleAvatar() == 1}
{css "css/avatar.1.css"} {css "css/avatar.1.css"}
{/if} {/if}
{if $thisUser->getStyleAvatar() == 2} {if $thisUser->getStyleAvatar() == 2}
{css "css/avatar.2.css"} {css "css/avatar.2.css"}
{/if} {/if}
{if $thisUser->hasMicroblogEnabled() == 1} {if $thisUser->hasMicroblogEnabled() == 1}
{css "css/microblog.css"} {css "css/microblog.css"}
{/if} {/if}
{else} {else}
{css "css/style.css"} {css "css/style.css"}
{css "css/dialog.css"} {css "css/dialog.css"}
{css "css/nsfw-posts.css"} {css "css/nsfw-posts.css"}
{css "css/notifications.css"} {css "css/notifications.css"}
{if $isXmas} {if $isXmas}
{css "css/xmas.css"} {css "css/xmas.css"}
{/if} {/if}
{/ifset} {/ifset}
{ifset headIncludes}{include headIncludes}{/ifset} {ifset headIncludes}
{include headIncludes}
{/ifset}
</head> </head>
<body> <body>
<div id="sudo-banner" n:if="isset($thisUser) && $userTainted"> <div id="sudo-banner" n:if="isset($thisUser) && $userTainted">
@ -75,197 +82,167 @@
Нажмите <a href="/setSID/unset?hash={rawurlencode($csrfToken)}">здесь</a>, чтобы выйти. Нажмите <a href="/setSID/unset?hash={rawurlencode($csrfToken)}">здесь</a>, чтобы выйти.
</p> </p>
</div> </div>
<div n:if="OPENVK_ROOT_CONF['openvk']['preferences']['bellsAndWhistles']['testLabel']" id="test-label">FOR TESTING PURPOSES ONLY</div> <div n:if="OPENVK_ROOT_CONF['openvk']['preferences']['bellsAndWhistles']['testLabel']" id="test-label">FOR TESTING PURPOSES ONLY</div>
<div class="notifications_global_wrap"></div>
<div class="notifications_global_wrap"></div>
<div class="dimmer"></div> <div class="dimmer"></div>
<div class="toTop"> <div class="toTop">
⬆ Вверх ⬆ Вверх
</div> </div>
<div class="layout"> <div class="layout">
<div id="xhead" class="dm"></div> <div id="xhead" class="dm"></div>
<div class="page_header {if $instance_name != OPENVK_DEFAULT_INSTANCE_NAME}page_custom_header{/if}"> <div class="page_header {if $instance_name != OPENVK_DEFAULT_INSTANCE_NAME}page_custom_header{/if}">
<a href="/" class="home_button {if $instance_name != OPENVK_DEFAULT_INSTANCE_NAME}home_button_custom{/if}" title="{$instance_name}">{$instance_name}</a> <a href="/" class="home_button {if $instance_name != OPENVK_DEFAULT_INSTANCE_NAME}home_button_custom{/if}" title="{$instance_name}">{$instance_name}</a>
<div n:if="isset($thisUser) ? !$thisUser->isBanned() : true" class="header_navigation"> <div n:if="isset($thisUser) ? !$thisUser->isBanned() : true" class="header_navigation">
{ifset $thisUser} {ifset $thisUser}
<div class="link"> <div class="link">
<a href="/">{_"header_home"}</a> <a href="/">{_header_home}</a>
</div> </div>
<div class="link"> <div class="link">
<a href="/search?type=groups">{_"header_groups"}</a> <a href="/search?type=groups">{_header_groups}</a>
</div> </div>
<div class="link"> <div class="link">
<a href="/search">{_"header_search"}</a> <a href="/search">{_header_search}</a>
</div> </div>
<div class="link"> <div class="link">
<a href="/invite"> <a href="/invite">{_header_invite}</a>
{_"header_invite"} </div>
</a> <div class="link">
</div> <a href="/support">{_header_help} <b n:if="$ticketAnsweredCount > 0">({$ticketAnsweredCount})</b></a>
<div class="link"> </div>
<a href="/support"> <div class="link">
{_"header_help"} <a href="/logout?hash={urlencode($csrfToken)}">{_header_log_out}</a>
<b n:if="$ticketAnsweredCount > 0">({$ticketAnsweredCount})</b> </div>
</a> <div class="link">
</div> <form action="/search" method="get">
<div class="link"> <input type="search" name="query" placeholder="{_header_search}" style="height: 20px;background: url('/assets/packages/static/openvk/img/search_icon.png') no-repeat 3px 4px; background-color: #fff; padding-left: 18px;width: 120px;" />
<a href="/logout?hash={urlencode($csrfToken)}">{_"header_log_out"}</a> </form>
</div> </div>
<div class="link">
<form action="/search" method="get">
<input type="search" name="query" placeholder="{_"header_search"}" style="height: 20px;background: url('/assets/packages/static/openvk/img/search_icon.png') no-repeat 3px 4px; background-color: #fff; padding-left: 18px;width: 120px;" />
</form>
</div>
{else} {else}
<div class="link"> <div class="link">
<a href="/login">{_"header_login"}</a> <a href="/login">{_header_login}</a>
</div> </div>
<div n:if="OPENVK_ROOT_CONF['openvk']['preferences']['registration']['enable']" class="link"> <div n:if="OPENVK_ROOT_CONF['openvk']['preferences']['registration']['enable']" class="link">
<a href="/reg">{_"header_registration"}</a> <a href="/reg">{_header_registration}</a>
</div> </div>
<div class="link"> <div class="link">
<a href="/support">{_"header_help"}</a> <a href="/support">{_header_help}</a>
</div> </div>
{/ifset} {/ifset}
</div> </div>
</div> </div>
<div class="sidebar"> <div class="sidebar">
<div class="navigation"> <div class="navigation">
{ifset $thisUser} {ifset $thisUser}
{if !$thisUser->isBanned()} {if !$thisUser->isBanned()}
<a href="/edit" class="link edit-button">{_"edit_button"}</a> <a href="/edit" class="link edit-button">{_edit_button}</a>
<a href="{$thisUser->getURL()}" class="link">{_"my_page"}</a> <a href="{$thisUser->getURL()}" class="link">{_my_page}</a>
<a href="/friends{$thisUser->getId()}" class="link">{_"my_friends"} <a href="/friends{$thisUser->getId()}" class="link">{_my_friends}
{if $thisUser->getFollowersCount() > 0} <object type="internal/link" n:if="$thisUser->getFollowersCount() > 0">
<object type="internal/link"> <a href="/friends{$thisUser->getId()}?act=incoming">
<a href="/friends{$thisUser->getId()}?act=incoming"> (<b>{$thisUser->getFollowersCount()}</b>)
(<b>{$thisUser->getFollowersCount()}</b>) </a>
</object>
</a> </a>
</object> <a n:if="$thisUser->getLeftMenuItemStatus('photos')" href="/albums{$thisUser->getId()}" class="link">{_my_photos}</a>
{/if}</a> <a n:if="$thisUser->getLeftMenuItemStatus('videos')" href="/videos{$thisUser->getId()}" class="link">{_my_videos}</a>
<a n:if="$thisUser->getLeftMenuItemStatus('photos')" href="/albums{$thisUser->getId()}" class="link">{_"my_photos"}</a> <a n:if="$thisUser->getLeftMenuItemStatus('messages')" href="/im" class="link">{_my_messages}
<a n:if="$thisUser->getLeftMenuItemStatus('videos')" href="/videos{$thisUser->getId()}" class="link">{_"my_videos"}</a> <object type="internal/link" n:if="$thisUser->getUnreadMessagesCount() > 0">
<a n:if="$thisUser->getLeftMenuItemStatus('messages')" href="/im" class="link">{_"my_messages"} (<b>{$thisUser->getUnreadMessagesCount()}</b>)
{if $thisUser->getUnreadMessagesCount() > 0} </object>
<object type="internal/link"> </a>
(<b>{$thisUser->getUnreadMessagesCount()}</b>) <a n:if="$thisUser->getLeftMenuItemStatus('notes')" href="/notes{$thisUser->getId()}" class="link">{_my_notes}</a>
</object> <a n:if="$thisUser->getLeftMenuItemStatus('groups')" href="/groups{$thisUser->getId()}" class="link">{_my_groups}</a>
<a n:if="$thisUser->getLeftMenuItemStatus('news')" href="/feed" class="link">{_my_feed}</a>
{/if} <a href="/notifications" class="link">{_my_feedback}
</a> {if $thisUser->getNotificationsCount() > 0}
<a n:if="$thisUser->getLeftMenuItemStatus('notes')" href="/notes{$thisUser->getId()}" class="link">{_"my_notes"}</a> (<b>{$thisUser->getNotificationsCount()}</b>)
<a n:if="$thisUser->getLeftMenuItemStatus('groups')" href="/groups{$thisUser->getId()}" class="link">{_"my_groups"}</a> {/if}
<a n:if="$thisUser->getLeftMenuItemStatus('news')" href="/feed" class="link">{_"my_feed"}</a> </a>
<a href="/notifications" class="link">{_my_feedback} <a href="/settings" class="link">{_my_settings}</a>
{if $thisUser->getNotificationsCount() > 0}
(<b>{$thisUser->getNotificationsCount()}</b>) {var canAccessAdminPanel = $thisUser->getChandlerUser()->can("access")->model("admin")->whichBelongsTo(NULL)}
{/if} {var canAccessHelpdesk = $thisUser->getChandlerUser()->can("write")->model('openvk\Web\Models\Entities\TicketReply')->whichBelongsTo(0)}
</a> {var menuLinksAvaiable = sizeof(OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links']) > 0 && $thisUser->getLeftMenuItemStatus('links')}
<a href="/settings" class="link">{_"my_settings"}</a> <div n:if="$canAccessAdminPanel || $canAccessHelpdesk || $menuLinksAvaiable" class="menu_divider"></div>
{var canAccessAdminPanel = $thisUser->getChandlerUser()->can("access")->model("admin")->whichBelongsTo(NULL)} <a href="/admin" class="link" n:if="$canAccessAdminPanel">Админ-панель</a>
{var canAccessHelpdesk = $thisUser->getChandlerUser()->can("write")->model('openvk\Web\Models\Entities\TicketReply')->whichBelongsTo(0)} <a href="/support/tickets" class="link" n:if="$canAccessHelpdesk">Helpdesk
{var menuLinksAvaiable = sizeof(OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links']) > 0 && $thisUser->getLeftMenuItemStatus('links')}
<div n:if="$canAccessAdminPanel || $canAccessHelpdesk || $menuLinksAvaiable" class="menu_divider"></div>
{if $canAccessAdminPanel}
<a href="/admin" class="link">Админ-панель</a>
{/if}
{if $canAccessHelpdesk}
<a href="/support/tickets" class="link">Helpdesk
{if $helpdeskTicketNotAnsweredCount > 0} {if $helpdeskTicketNotAnsweredCount > 0}
(<b>{$helpdeskTicketNotAnsweredCount}</b>) (<b>{$helpdeskTicketNotAnsweredCount}</b>)
{/if} {/if}
</a> </a>
{/if}
<a
n:if="$thisUser->getLeftMenuItemStatus('links')"
n:foreach="OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links'] as $menuItem"
href="{$menuItem['url']}"
target="_blank"
class="link">{strpos($menuItem["name"], "@") === 0 ? tr(substr($menuItem["name"], 1)) : $menuItem["name"]}</a>
<div id="_groupListPinnedGroups">
<div n:if="$thisUser->getPinnedClubCount() > 0" class="menu_divider"></div>
<a
n:foreach="$thisUser->getPinnedClubs() as $club"
href="{$club->getURL()}"
class="link group_link">{$club->getName()}</a>
</div> <a n:if="$thisUser->getLeftMenuItemStatus('links')" n:foreach="OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links'] as $menuItem" href="{$menuItem['url']}" target="_blank" class="link">{strpos($menuItem["name"], "@") === 0 ? tr(substr($menuItem["name"], 1)) : $menuItem["name"]}</a>
<a
n:if="OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['enable'] && $thisUser->getLeftMenuItemStatus('poster')" <div id="_groupListPinnedGroups">
href="{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['link']}" > <div n:if="$thisUser->getPinnedClubCount() > 0" class="menu_divider"></div>
<img <a n:foreach="$thisUser->getPinnedClubs() as $club" href="{$club->getURL()}" class="link group_link">{$club->getName()}</a>
src="{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['src']}" </div>
alt="{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['caption']}" <a n:if="OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['enable'] && $thisUser->getLeftMenuItemStatus('poster')" href="{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['link']}" >
class="psa-poster" <img src="{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['src']}" alt="{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['caption']}" class="psa-poster" style="max-width: 100%; margin-top: 50px;" />
style="max-width: 100%; margin-top: 50px;" /> </a>
</a> {else}
<a href="/support" class="link">{_menu_support}</a>
<a href="/logout?hash={urlencode($csrfToken)}" class="link">{_menu_logout}</a>
{/if}
{else} {else}
<a href="/support" class="link">{_"menu_support"}</a> <form id="fastLogin" action="/login" method="POST" enctype="multipart/form-data">
<a href="/logout?hash={urlencode($csrfToken)}" class="link">{_"menu_logout"}</a> <label for="login"><span>{_email}:</span></label>
{/if} <input id="login" type="text" name="login" required />
{else} <label for="password"><span>{_password}:</span></label>
<form id="fastLogin" action="/login" method="POST" enctype="multipart/form-data"> <input id="password" type="password" name="password" required />
<label for="login"><span>{_"email"}:</span></label> <input type="hidden" name="jReturnTo" value="{$_SERVER['REQUEST_URI']}" />
<input id="login" type="text" name="login" required /> <input type="hidden" name="hash" value="{$csrfToken}" />
<label for="password"><span>{_"password"}:</span></label> <input type="submit" value="{_log_in}" class="button" style="display: inline-block;" />
<input id="password" type="password" name="password" required /> <a n:if="OPENVK_ROOT_CONF['openvk']['preferences']['registration']['enable']" href="/reg" class="button" style="display: inline-block;">{_registration}</a><br><br>
<input type="hidden" name="jReturnTo" value="{$_SERVER['REQUEST_URI']}" /> <a href="/restore">{_forgot_password}</a>
<input type="hidden" name="hash" value="{$csrfToken}" /> </form>
<input type="submit" value="{_'log_in'}" class="button" style="display: inline-block;" /> {/ifset}
<a n:if="OPENVK_ROOT_CONF['openvk']['preferences']['registration']['enable']" href="/reg" class="button" style="display: inline-block;" >{_registration}</a><br><br>
<a href="/restore">{_"forgot_password"}</a>
</form>
{/ifset}
</div> </div>
</div> </div>
<div class="page_body"> <div class="page_body">
<div id="wrapH"> <div id="wrapH">
<div id="wrapHI"> <div id="wrapHI">
<div n:ifcontent class="page_yellowheader"> <div n:ifcontent class="page_yellowheader">
{include header} {include header}
</div> </div>
</div> </div>
</div> </div>
{ifset wrap} {ifset wrap}
{ifset $flashMessage} <div class="msg msg_{$flashMessage->type}" n:ifset="$flashMessage">
<div class="msg msg_{$flashMessage->type}"> <b>{$flashMessage->title}</b><br/>
{$flashMessage->msg|noescape}
</div>
{include wrap}
{else}
<div class="wrap2">
<div class="wrap1">
<div id="auth" class="page-wrap">
<div class="page_content">
<div class="msg msg_{$flashMessage->type}" n:ifset="$flashMessage">
<b>{$flashMessage->title}</b><br/> <b>{$flashMessage->title}</b><br/>
{$flashMessage->msg|noescape} {$flashMessage->msg|noescape}
</div> </div>
{/ifset}
{include content}
{include wrap}
{else}
<div class="wrap2">
<div class="wrap1">
<div id="auth" class="page-wrap">
<div class="page_content">
{ifset $flashMessage}
<div class="msg msg_{$flashMessage->type}">
<b>{$flashMessage->title}</b><br/>
{$flashMessage->msg|noescape}
</div>
{/ifset}
{include content}
</div>
</div>
</div>
</div> </div>
{/ifset} </div>
</div>
</div>
{/ifset}
</div> </div>
</div> </div>
<div class="page_footer"> <div class="page_footer">
{var dbVersion = \Chandler\Database\DatabaseConnection::i()->getConnection()->getPdo()->getAttribute(\PDO::ATTR_SERVER_VERSION)} {var dbVersion = \Chandler\Database\DatabaseConnection::i()->getConnection()->getPdo()->getAttribute(\PDO::ATTR_SERVER_VERSION)}
<div class="navigation_footer"> <div class="navigation_footer">
<a href="/about" class="link">{_footer_about_instance}</a> <a href="/about" class="link">{_footer_about_instance}</a>
<a href="/blog" class="link">{_footer_blog}</a> <a href="/blog" class="link">{_footer_blog}</a>
@ -279,7 +256,7 @@
{php echo OPENVK_ROOT_CONF["openvk"]["appearance"]["motd"]} {php echo OPENVK_ROOT_CONF["openvk"]["appearance"]["motd"]}
</p> </p>
</div> </div>
{script "js/node_modules/msgpack-lite/dist/msgpack.min.js"} {script "js/node_modules/msgpack-lite/dist/msgpack.min.js"}
{script "js/node_modules/soundjs/lib/soundjs.min.js"} {script "js/node_modules/soundjs/lib/soundjs.min.js"}
{script "js/node_modules/ky/umd.js"} {script "js/node_modules/ky/umd.js"}
@ -288,22 +265,20 @@
{script "js/scroll.js"} {script "js/scroll.js"}
{script "js/al_wall.js"} {script "js/al_wall.js"}
{script "js/al_api.js"} {script "js/al_api.js"}
{ifset $thisUser} {ifset $thisUser}
{script "js/al_notifs.js"} {script "js/al_notifs.js"}
{/ifset} {/ifset}
{if OPENVK_ROOT_CONF['openvk']['preferences']['bellsAndWhistles']['fartscroll']} {if OPENVK_ROOT_CONF['openvk']['preferences']['bellsAndWhistles']['fartscroll']}
<script src="https://unpkg.com/fartscroll@1.0.0/fartscroll.js"></script> <script src="https://unpkg.com/fartscroll@1.0.0/fartscroll.js"></script>
<script> <script>
fartscroll(400); fartscroll(400);
</script> </script>
{/if} {/if}
<script n:if="OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['enable']" <script n:if="OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['enable']" async defer data-domain="{php echo OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['domain']}" src="{php echo OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['server']}js/plausible.js"></script>
async defer data-domain="{php echo OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['domain']}"
src="{php echo OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['server']}js/plausible.js"></script>
{ifset bodyScripts} {ifset bodyScripts}
{include bodyScripts} {include bodyScripts}
{/ifset} {/ifset}
@ -312,6 +287,6 @@
{if isset($parentModule) && substr($parentModule, 0, 21) !== 'libchandler:absolute.'} {if isset($parentModule) && substr($parentModule, 0, 21) !== 'libchandler:absolute.'}
<!-- INCLUDING TEMPLATE FROM PARENTMODULE: {$parentModule} --> <!-- INCLUDING TEMPLATE FROM PARENTMODULE: {$parentModule} -->
{include content} {include content}
{/if} {/if}

View file

@ -28,8 +28,7 @@
text-align: center !important; text-align: center !important;
} }
td, td, th {
th {
border: 1px solid #666; border: 1px solid #666;
vertical-align: baseline; vertical-align: baseline;
padding: 4px 5px; padding: 4px 5px;
@ -62,7 +61,7 @@
.h { .h {
background-color: #13599f; background-color: #13599f;
font-weight: bold; font-weight: bold;
color: #fff color: #fff;
} }
.v { .v {
@ -90,7 +89,7 @@
height: 1px; height: 1px;
} }
</style> </style>
<div class="center"> <div class="center">
<table> <table>
<tbody> <tbody>
@ -102,7 +101,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<table> <table>
<tbody> <tbody>
<tr> <tr>
@ -127,22 +126,22 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<table> <table>
<tbody> <tbody>
<tr class="v"> <tr class="v">
<td> <td>
This program makes use of the Chandler open-source web application server:<br/> This program makes use of the Chandler open-source web application server:<br/>
libchandler {=CHANDLER_VER} by rem-pai libchandler {=CHANDLER_VER} by Celestora
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<hr/> <hr/>
<h1>Configuration</h1> <h1>Configuration</h1>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -313,13 +312,13 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<hr/> <hr/>
<h1>Extensions</h1> <h1>Extensions</h1>
<h2>Core</h2> <h2>Core</h2>
<table> <table>
<tbody> <tbody>
<tr> <tr>
@ -332,13 +331,13 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
{* TODO: add hook to let extensions to register themselves here *} {* TODO: add hook to let extensions to register themselves here *}
<hr/> <hr/>
<h1>Themepacks</h1> <h1>Themepacks</h1>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -362,7 +361,7 @@
Default OpenVK look and feel. Default OpenVK look and feel.
</td> </td>
<td class="v"> <td class="v">
Vladimir Barinov, Konstantin Kichulkin and Daniil Myslivets Vladimir Barinov, Konstantin Kichulkin and Daniel Myslivets
</td> </td>
</tr> </tr>
<tr n:foreach="$themes as $theme"> <tr n:foreach="$themes as $theme">
@ -384,11 +383,11 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<hr/> <hr/>
<h1>OpenVK Credits</h1> <h1>OpenVK Credits</h1>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -396,14 +395,14 @@
</tr> </tr>
<tr> <tr>
<td class="e"> <td class="e">
Vladimir Barinov (veselcraft), Alexandra Katunina (rem-pai), Konstantin Kichulkin (kosfurler), Vladimir Barinov (veselcraft), Celestora, Konstantin Kichulkin (kosfurler),
Nikita Volkov (sup_ban), Daniel Myslivets (myslivets), Alexander Kotov (l-lacker), Nikita Volkov (sup_ban), Daniel Myslivets, Alexander Kotov (l-lacker),
Alexey Assemblerov (BiosNod), Ilya Prokopenko (dsrev) and Maxim Leshchenko (maksales / maksalees) Alexey Assemblerov (BiosNod), Ilya Prokopenko (dsrev) and Maxim Leshchenko (maksales / maksalees)
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -417,7 +416,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -443,7 +442,7 @@
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -459,7 +458,7 @@
</tr> </tr>
<tr> <tr>
<td class="e">Initial hosting</td> <td class="e">Initial hosting</td>
<td class="v">Ilya Prokopenko (dsrev) and Alexandra Katunina (rem-pai)</td> <td class="v">Ilya Prokopenko (dsrev) and Celestora</td>
</tr> </tr>
<tr> <tr>
<td class="e">Initial bug-tracker hosting</td> <td class="e">Initial bug-tracker hosting</td>
@ -467,27 +466,23 @@
</tr> </tr>
<tr> <tr>
<td class="e">Images</td> <td class="e">Images</td>
<td class="v">Vladimir Barinov (veselcraft), Konstantin Kichulkin (kosfurler) and Daniil Myslivets (myslivets)</td> <td class="v">Vladimir Barinov (veselcraft), Konstantin Kichulkin (kosfurler) and Daniel Myslivets</td>
</tr> </tr>
<tr> <tr>
<td class="e">Illustrations</td> <td class="e">Illustrations</td>
<td class="v">Ash Defenders</td> <td class="v">Ash Defenders, Polina Katunina (RousPhaul)</td>
</tr>
<tr>
<td class="e">Soundtrack</td>
<td class="v">Ash Defenders</td>
</tr> </tr>
<tr> <tr>
<td class="e">Best barmaid</td> <td class="e">Best barmaid</td>
<td class="v">Jill</td> <td class="v">Jill</td> {* I can agree ~~ dsrev *}
</tr> </tr>
<tr> <tr>
<td class="e">Helpdesk implementation</td> <td class="e">Initial Helpdesk implementation</td>
<td class="v">Nikita Volkov (sup_ban)</td> <td class="v">Nikita Volkov (sup_ban)</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<table> <table>
<tbody> <tbody>
<tr class="h"> <tr class="h">
@ -495,17 +490,19 @@
</tr> </tr>
<tr class="e"> <tr class="e">
<td> <td>
Vladimir Lapskiy (0x7d5), Alexander Minkin (WerySkok), Polina Katunina (RousPhaul), kovaltim, Vladimir Lapskiy (0x7d5), Alexander Minkin (WerySkok), Polina Katunina (RousPhaul), veth,
Egor Shevchenko, Dmitriy Daemon and Ilya Prokopenko (dsrev). Egor Shevchenko, Vadim Korovin (yuni), Ash Defenders,
Pavel Silaev, Dmitriy Daemon, Ilya Prokopenko (dsrev),
cmed404 and unknown tester, who disappeared shortly after trying to upload post with cat.
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<hr/> <hr/>
<h1>OpenVK License</h1> <h1>OpenVK License</h1>
<table> <table>
<tbody> <tbody>
<tr class="v"> <tr class="v">