2022-04-24 08:06:45 +03:00
{var $instance_name = OPENVK_ROOT_CONF['openvk']['appearance']['name']}
2022-04-24 07:38:21 +03:00
{if !isset($parentModule) || substr($parentModule, 0, 21) === 'libchandler:absolute.'}
2022-01-09 08:53:26 +03:00
<!DOCTYPE html>
2022-04-24 07:38:21 +03:00
<html >
2020-06-07 19:04:43 +03:00
<head >
<title >
2021-12-01 16:19:37 +03:00
{ifset title}{include title} - {/ifset}{$instance_name}
2020-06-07 19:04:43 +03:00
</title>
<meta charset= "utf-8" />
<link rel= "shortcut icon" href= "/assets/packages/static/openvk/img/icon.ico" />
2021-12-01 16:19:37 +03:00
<meta name= "application-name" content= "{$instance_name}" />
2020-06-07 19:04:43 +03:00
<meta n:ifset= "$csrfToken" name= "csrf" value= "{$csrfToken}" />
2022-01-09 08:47:57 +03:00
2021-12-04 16:06:28 +03:00
<script src= "/language/{php echo getLanguage()}.js" crossorigin= "anonymous" > </script>
2022-01-09 08:47:57 +03:00
{script "js/node_modules/jquery/dist/jquery.min.js"}
2020-06-07 19:04:43 +03:00
{script "js/node_modules/umbrellajs/umbrella.min.js"}
2021-12-04 16:06:28 +03:00
{script "js/l10n.js"}
2020-06-07 19:04:43 +03:00
{script "js/openvk.cls.js"}
2022-01-09 08:47:57 +03:00
2022-10-09 11:34:57 +03:00
{css "js/node_modules/tippy.js/dist/backdrop.css"}
{css "js/node_modules/tippy.js/dist/border.css"}
{css "js/node_modules/tippy.js/dist/svg-arrow.css"}
{css "js/node_modules/tippy.js/themes/light.css"}
{script "js/node_modules/@popperjs/core/dist/umd/popper.min.js"}
{script "js/node_modules/tippy.js/dist/tippy-bundle.umd.min.js"}
{script "js/node_modules/handlebars/dist/handlebars.min.js"}
2022-05-08 13:06:26 +03:00
{if $isTimezoned == NULL}
2022-01-22 15:54:57 +03:00
{script "js/timezone.js"}
{/if}
2022-10-11 18:39:45 +03:00
{include "_includeCSS.xml"}
2022-01-09 08:47:57 +03:00
{ifset headIncludes}
{include headIncludes}
{/ifset}
2020-06-07 19:04:43 +03:00
</head>
<body >
<div id= "sudo-banner" n:if= "isset($thisUser) && $userTainted" >
<p >
Вы вошли как <b > {$thisUser->getCanonicalName()}</b> . Пожалуйста, уважайте
право на тайну переписки других людей и не злоупотребляйте подменой пользователя.
Нажмите <a href= "/setSID/unset?hash={rawurlencode($csrfToken)}" > здесь</a> , чтобы выйти.
</p>
</div>
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div n:if= "OPENVK_ROOT_CONF['openvk']['preferences']['bellsAndWhistles']['testLabel']" id= "test-label" > FOR TESTING PURPOSES ONLY</div>
2022-01-09 08:47:57 +03:00
<div class= "notifications_global_wrap" > </div>
2020-06-07 19:04:43 +03:00
<div class= "dimmer" > </div>
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div class= "toTop" >
2022-01-30 15:18:39 +03:00
⬆ {_to_top}
2020-06-07 19:04:43 +03:00
</div>
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div class= "layout" >
2020-06-11 23:21:49 +03:00
<div id= "xhead" class= "dm" > </div>
2022-03-21 16:00:01 +03:00
<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}" > {if $instance_name != OPENVK_DEFAULT_INSTANCE_NAME}{$instance_name}{/if}</a>
2022-01-31 14:45:53 +03:00
<div n:if= "isset($thisUser) ? (!$thisUser->isBanned() XOR !$thisUser->isActivated()) : true" class= "header_navigation" >
2020-06-07 19:04:43 +03:00
{ifset $thisUser}
2022-08-05 23:00:52 +03:00
{if $thisUser->isDeactivated()}
<div class= "link" >
<a href= "/logout?hash={urlencode($csrfToken)}" > {_header_log_out}</a>
</div>
{else}
<div class= "link" >
<a href= "/" > {_header_home}</a>
</div>
<div class= "link" >
<a href= "/search?type=groups" > {_header_groups}</a>
</div>
<div class= "link" >
<a href= "/search" > {_header_search}</a>
</div>
<div class= "link" >
<a href= "/invite" > {_header_invite}</a>
</div>
<div class= "link" >
<a href= "/support" > {_header_help} <b n:if= "$ticketAnsweredCount > 0" > ({$ticketAnsweredCount})</b> </a>
</div>
<div class= "link" >
<a href= "/logout?hash={urlencode($csrfToken)}" > {_header_log_out}</a>
</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;" title= "{_header_search} [Alt+Shift+F]" accesskey= "f" />
</form>
</div>
{/if}
2020-06-07 19:04:43 +03:00
{else}
<div class= "link" >
2022-01-09 08:47:57 +03:00
<a href= "/login" > {_header_login}</a>
2020-06-07 19:04:43 +03:00
</div>
2022-03-09 14:06:43 +03:00
<div class= "link" >
2022-01-09 08:47:57 +03:00
<a href= "/reg" > {_header_registration}</a>
2020-06-07 19:04:43 +03:00
</div>
<div class= "link" >
2022-01-09 08:47:57 +03:00
<a href= "/support" > {_header_help}</a>
2020-06-07 19:04:43 +03:00
</div>
{/ifset}
</div>
</div>
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div class= "sidebar" >
<div class= "navigation" >
2022-01-09 08:47:57 +03:00
{ifset $thisUser}
2022-08-05 23:00:52 +03:00
{if !$thisUser->isBanned() XOR !$thisUser->isActivated() XOR $thisUser->isDeactivated()}
2022-01-09 08:47:57 +03:00
<a href= "/edit" class= "link edit-button" > {_edit_button}</a>
2022-04-09 09:14:11 +03:00
<a href= "{$thisUser->getURL()}" class= "link" title= "{_my_page} [Alt+Shift+.]" accesskey= "." > {_my_page}</a>
2022-01-09 08:47:57 +03:00
<a href= "/friends{$thisUser->getId()}" class= "link" > {_my_friends}
<object type= "internal/link" n:if= "$thisUser->getFollowersCount() > 0" >
<a href= "/friends{$thisUser->getId()}?act=incoming" >
(<b > {$thisUser->getFollowersCount()}</b> )
</a>
</object>
2020-12-28 03:00:57 +03:00
</a>
2022-01-09 08:47:57 +03:00
<a n:if= "$thisUser->getLeftMenuItemStatus('photos')" href= "/albums{$thisUser->getId()}" class= "link" > {_my_photos}</a>
<a n:if= "$thisUser->getLeftMenuItemStatus('videos')" href= "/videos{$thisUser->getId()}" class= "link" > {_my_videos}</a>
<a n:if= "$thisUser->getLeftMenuItemStatus('messages')" href= "/im" class= "link" > {_my_messages}
<object type= "internal/link" n:if= "$thisUser->getUnreadMessagesCount() > 0" >
(<b > {$thisUser->getUnreadMessagesCount()}</b> )
</object>
</a>
<a n:if= "$thisUser->getLeftMenuItemStatus('notes')" href= "/notes{$thisUser->getId()}" class= "link" > {_my_notes}</a>
<a n:if= "$thisUser->getLeftMenuItemStatus('groups')" href= "/groups{$thisUser->getId()}" class= "link" > {_my_groups}</a>
2022-05-11 15:48:22 +03:00
<a n:if= "$thisUser->getLeftMenuItemStatus('news')" href= "/feed" class= "link" title= "{_my_feed} [Alt+Shift+,]" accesskey= "," > {_my_feed}</a>
2022-04-09 09:14:11 +03:00
<a href= "/notifications" class= "link" title= "{_my_feedback} [Alt+Shift+N]" accesskey= "n" > {_my_feedback}
2022-01-09 08:47:57 +03:00
{if $thisUser->getNotificationsCount() > 0}
(<b > {$thisUser->getNotificationsCount()}</b> )
{/if}
</a>
2022-08-20 21:32:17 +03:00
<a href= "/apps?act=installed" class= "link" > {_my_apps}</a>
2022-01-09 08:47:57 +03:00
<a href= "/settings" class= "link" > {_my_settings}</a>
2022-04-24 08:06:45 +03:00
{var $canAccessAdminPanel = $thisUser->getChandlerUser()->can("access")->model("admin")->whichBelongsTo(NULL)}
{var $canAccessHelpdesk = $thisUser->getChandlerUser()->can("write")->model('openvk\Web\Models\Entities\TicketReply')->whichBelongsTo(0)}
{var $menuLinksAvaiable = sizeof(OPENVK_ROOT_CONF['openvk']['preferences']['menu']['links']) > 0 & & $thisUser->getLeftMenuItemStatus('links')}
2022-01-09 08:47:57 +03:00
<div n:if= "$canAccessAdminPanel || $canAccessHelpdesk || $menuLinksAvaiable" class= "menu_divider" > </div>
2022-04-24 09:02:23 +03:00
<a href= "/admin" class= "link" n:if= "$canAccessAdminPanel" title= "{_admin} [Alt+Shift+A]" accesskey= "a" > {_admin}</a>
2022-01-09 08:47:57 +03:00
<a href= "/support/tickets" class= "link" n:if= "$canAccessHelpdesk" > Helpdesk
2021-12-05 14:54:39 +03:00
{if $helpdeskTicketNotAnsweredCount > 0}
2021-12-05 01:56:42 +03:00
(<b > {$helpdeskTicketNotAnsweredCount}</b> )
2021-12-04 23:15:13 +03:00
{/if}
</a>
2020-06-26 12:32:30 +03:00
2022-01-09 08:47:57 +03:00
<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>
2022-04-18 18:54:50 +03:00
2022-04-18 21:59:54 +03:00
<div n:if= "OPENVK_ROOT_CONF['openvk']['preferences']['commerce'] && $thisUser->getCoins() != 0" id= "votesBalance" >
2022-04-18 18:54:50 +03:00
{tr("you_still_have_x_points", $thisUser->getCoins())|noescape}
2022-04-18 21:59:54 +03:00
<br /> <br />
2022-04-18 18:54:50 +03:00
<a href= "/settings?act=finance" > {_top_up_your_account} » </a>
</div>
2022-01-09 08:47:57 +03:00
<a n:if= "OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['enable'] && $thisUser->getLeftMenuItemStatus('poster')" href= "{php echo OPENVK_ROOT_CONF['openvk']['preferences']['adPoster']['link']}" >
2022-06-20 06:39:25 +03:00
<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: 10px;" />
2022-01-09 08:47:57 +03:00
</a>
2022-08-13 13:21:20 +03:00
<div class= "floating_sidebar" >
<a class= "minilink" href= "/friends{$thisUser->getId()}" >
<object type= "internal/link" n:if= "$thisUser->getFollowersCount() > 0" >
<div class= "counter" >
+{$thisUser->getFollowersCount()}
</div>
</object>
<img src= "/assets/packages/static/openvk/img/friends.svg" >
</a>
<a class= "minilink" href= "/albums{$thisUser->getId()}" >
<img src= "/assets/packages/static/openvk/img/photos.svg" >
</a>
<a class= "minilink" href= "/im" >
<object type= "internal/link" n:if= "$thisUser->getUnreadMessagesCount() > 0" >
<div class= "counter" >
+{$thisUser->getUnreadMessagesCount()}
</div>
</object>
<img src= "/assets/packages/static/openvk/img/messages.svg" >
</a>
<a class= "minilink" href= "/groups{$thisUser->getId()}" >
<img src= "/assets/packages/static/openvk/img/groups.svg" >
</a>
<a class= "minilink" href= "/notifications" >
<object type= "internal/link" n:if= "$thisUser->getNotificationsCount() > 0" >
<div class= "counter" >
+{$thisUser->getNotificationsCount()}
</div>
</object>
<img src= "/assets/packages/static/openvk/img/feedback.svg" >
</a>
</div>
2022-01-31 14:45:53 +03:00
{elseif !$thisUser->isActivated()}
<a href= "/logout?hash={urlencode($csrfToken)}" class= "link" > {_menu_logout}</a>
2022-01-09 08:47:57 +03:00
{else}
2022-01-28 19:02:19 +03:00
<a href= "/support" class= "link" > {_menu_support}
{if $ticketAnsweredCount > 0}
(<b > {$ticketAnsweredCount}</b> )
{/if}
</a>
2022-01-09 08:47:57 +03:00
<a href= "/logout?hash={urlencode($csrfToken)}" class= "link" > {_menu_logout}</a>
{/if}
2020-06-07 19:04:43 +03:00
{else}
2022-01-09 08:47:57 +03:00
<form id= "fastLogin" action= "/login" method= "POST" enctype= "multipart/form-data" >
<label for= "login" > <span > {_email}:</span> </label>
<input id= "login" type= "text" name= "login" r e q u i r e d />
<label for= "password" > <span > {_password}:</span> </label>
<input id= "password" type= "password" name= "password" r e q u i r e d />
<input type= "hidden" name= "jReturnTo" value= "{$_SERVER['REQUEST_URI']}" />
<input type= "hidden" name= "hash" value= "{$csrfToken}" />
<input type= "submit" value= "{_log_in}" class= "button" style= "display: inline-block;" />
2022-03-09 14:06:43 +03:00
<a href= "/reg" class= "button" style= "display: inline-block;" > {_registration}</a> <br > <br >
2022-01-09 08:47:57 +03:00
<a href= "/restore" > {_forgot_password}</a>
</form>
{/ifset}
2020-06-07 19:04:43 +03:00
</div>
</div>
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div class= "page_body" >
<div id= "wrapH" >
<div id= "wrapHI" >
<div n : i f c o n t e n t class= "page_yellowheader" >
2022-01-09 08:47:57 +03:00
{include header}
2020-06-07 19:04:43 +03:00
</div>
</div>
</div>
2022-01-09 08:47:57 +03:00
{ifset wrap}
<div class= "msg msg_{$flashMessage->type}" n:ifset= "$flashMessage" >
<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" >
2020-06-07 19:04:43 +03:00
<b > {$flashMessage->title}</b> <br />
{$flashMessage->msg|noescape}
</div>
2022-01-09 08:47:57 +03:00
{include content}
2020-06-07 19:04:43 +03:00
</div>
2022-01-09 08:47:57 +03:00
</div>
</div>
</div>
{/ifset}
2020-06-07 19:04:43 +03:00
</div>
</div>
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div class= "page_footer" >
2022-04-24 08:06:45 +03:00
{var $dbVersion = \Chandler\Database\DatabaseConnection::i()->getConnection()->getPdo()->getAttribute(\PDO::ATTR_SERVER_VERSION)}
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
<div class= "navigation_footer" >
2022-01-03 18:31:55 +03:00
<a href= "/about" class= "link" > {_footer_about_instance}</a>
2020-06-07 19:04:43 +03:00
<a href= "/blog" class= "link" > {_footer_blog}</a>
<a href= "/support" class= "link" > {_footer_help}</a>
<a href= "/dev" target= "_blank" class= "link" > {_footer_developers}</a>
<a href= "/language" class= "link" > {_footer_choose_language}</a>
<a href= "/privacy" class= "link" > {_footer_privacy}</a>
</div>
2021-10-31 14:29:52 +03:00
<p > OpenVK <a href= "/about:openvk" > {php echo OPENVK_VERSION}</a> | PHP: {phpversion()} | DB: {$dbVersion}</p>
2022-02-06 12:47:14 +03:00
<p n : i f c o n t e n t >
2020-06-07 19:04:43 +03:00
{php echo OPENVK_ROOT_CONF["openvk"]["appearance"]["motd"]}
</p>
</div>
2022-01-09 08:47:57 +03:00
2022-05-09 16:01:37 +03:00
{include "components/cookies.xml"}
2021-10-15 23:05:27 +03:00
{script "js/node_modules/msgpack-lite/dist/msgpack.min.js"}
{script "js/node_modules/soundjs/lib/soundjs.min.js"}
2020-06-07 19:04:43 +03:00
{script "js/node_modules/ky/umd.js"}
{script "js/messagebox.js"}
2021-10-14 22:21:10 +03:00
{script "js/notifications.js"}
2020-06-07 19:04:43 +03:00
{script "js/scroll.js"}
{script "js/al_wall.js"}
{script "js/al_api.js"}
2022-10-09 11:34:57 +03:00
{script "js/al_mentions.js"}
2022-10-11 18:39:45 +03:00
{script "js/al_polls.js"}
2022-01-09 08:47:57 +03:00
2021-10-15 23:05:27 +03:00
{ifset $thisUser}
{script "js/al_notifs.js"}
{/ifset}
2022-01-09 08:47:57 +03:00
2022-01-06 02:39:43 +03:00
{if OPENVK_ROOT_CONF['openvk']['preferences']['bellsAndWhistles']['fartscroll']}
<script src= "https://unpkg.com/fartscroll@1.0.0/fartscroll.js" > </script>
<script >
fartscroll(400);
</script>
{/if}
2022-01-09 08:47:57 +03:00
<script n:if= "OPENVK_ROOT_CONF['openvk']['telemetry']['plausible']['enable']" a s y n c d e f e r 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>
2022-03-29 12:06:43 +03:00
<script n:if= "OPENVK_ROOT_CONF['openvk']['telemetry']['piwik']['enable']" >
{var $piwik = (object) OPENVK_ROOT_CONF['openvk']['telemetry']['piwik']}
//< ![CDATA[
(function(window,document,dataLayerName,id){
window[dataLayerName]=window[dataLayerName]||[],window[dataLayerName].push({ start:(new Date).getTime(),event:"stg.start" });var scripts=document.getElementsByTagName('script')[0],tags=document.createElement('script');
function stgCreateCookie(a,b,c){ var d="";if(c){ var e=new Date;e.setTime(e.getTime()+24*c*60*60*1e3),d=";expires="+e.toUTCString() }document.cookie=a+"="+b+d+";path=/" }
var isStgDebug=(window.location.href.match("stg_debug")||document.cookie.match("stg_debug"))&&!window.location.href.match("stg_disable_debug"); stgCreateCookie("stg_debug",isStgDebug?1:"",isStgDebug?14:-1);
var qP=[];dataLayerName!=="dataLayer"&&qP.push("data_layer_name="+dataLayerName),isStgDebug&&qP.push("stg_debug"); var qPString=qP.length>0?("?"+qP.join("&")):"";
tags.async=!0,tags.src={$piwik->container . "/"}+id+".js"+qPString,scripts.parentNode.insertBefore(tags,scripts);
!function(a,n,i){ a[n]=a[n]||{ };for(var c=0;c<i.length ; c + + ) ! f u n c t i o n ( i ) { a [ n ] [ i ] = a [ n ] [ i ] | | { } , a [ n ] [ i ] .api= a[n][i].api||function(){ v a r a= [].slice.call(arguments,0);"string"==typeof a [ 0 ] & & w i n d o w [ d a t a L a y e r N a m e ] . p u s h ( { e v e n t : n + " . " + i + " : " + a [ 0 ] , p a r a m e t e r s : [ ] . s l i c e . c a l l ( a r g u m e n t s , 1 ) } ) } } ( i [ c ] ) } ( w i n d o w , " p p m s " , [ " t m " , " c m " ] ) ;
})(window,document,{$piwik->layer}, {$piwik->site});
//]]>
</script>
2022-03-29 12:32:03 +03:00
<script n:if= "OPENVK_ROOT_CONF['openvk']['telemetry']['matomo']['enable']" >
{var $matomo = (object) OPENVK_ROOT_CONF['openvk']['telemetry']['matomo']}
//< ![CDATA[
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//" + {$matomo->container} + "/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', {$matomo->site}]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
//]]>
</script>
2022-01-09 08:47:57 +03:00
2021-10-07 11:48:55 +03:00
{ifset bodyScripts}
{include bodyScripts}
{/ifset}
2020-06-07 19:04:43 +03:00
</body>
</html>
2022-04-24 07:38:21 +03:00
{/if}
2020-06-07 19:04:43 +03:00
{if isset($parentModule) & & substr($parentModule, 0, 21) !== 'libchandler:absolute.'}
<!-- INCLUDING TEMPLATE FROM PARENTMODULE: {$parentModule} -->
2022-01-09 08:47:57 +03:00
2020-06-07 19:04:43 +03:00
{include content}
{/if}