Initial commit - developer skin
|
@ -0,0 +1,21 @@
|
|||
{**
|
||||
* Админка
|
||||
*
|
||||
* @param boolean $availableAdminPlugin
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{lang 'admin.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'nav'
|
||||
name = 'admin'
|
||||
mods = 'stacked pills'
|
||||
items = [
|
||||
[ 'name' => 'user', 'url' => "{router page='admin/plugins'}?plugin=admin&action=activate&security_ls_key={$LIVESTREET_SECURITY_KEY}", 'text' => {lang 'admin.install_plugin_admin'}, is_enabled => $availableAdminPlugin ],
|
||||
[ 'name' => 'plugins', 'url' => "{router page='admin'}plugins/", 'text' => {lang 'admin.items.plugins'} ]
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Плагины
|
||||
*
|
||||
* @param array $plugins Список плагинов
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.admin.tpl'}
|
||||
|
||||
{block 'layout_admin_page_title'}
|
||||
{lang 'admin.items.plugins'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'admin' template='plugins' plugins=$plugins}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Уведомление об успешной регистрации
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.registration.notices.success_activate}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
<a href="{router page='/'}">{$aLang.common.site_go_main}</a>
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Просьба перейти по ссылке отправленной на емэйл для активации аккаунта
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.registration.confirm.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{$aLang.auth.registration.confirm.text}<br /><br />
|
||||
|
||||
<a href="{router page='/'}">{$aLang.common.site_go_main}</a>
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Регистрация через инвайт
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.invite.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'auth' template='invite'}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Страница входа
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.login.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'auth' template='login' showExtra=true}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Форма запроса повторной активации аккаунта
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.reactivation.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'auth' template='reactivation'}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Регистрация
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.registration.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'auth' template='registration'}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Форма восстановления пароля
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.reset.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'auth' template='reset'}
|
||||
{/block}
|
|
@ -0,0 +1,14 @@
|
|||
{**
|
||||
* Восстановление пароля.
|
||||
* Пароль отправлен на емэйл пользователя.
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.auth.reset.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{$aLang.auth.reset.notices.success_send_password}
|
||||
{/block}
|
|
@ -0,0 +1,28 @@
|
|||
{**
|
||||
* Создание блога
|
||||
*
|
||||
* @param array $blogCategories Список категорий блогов
|
||||
* @param object $blogEdit Блог, передается в случае если блог редактируется
|
||||
*
|
||||
* TODO: Вынести 'rangelength' в конфиг
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{if $sEvent == 'edit'}
|
||||
{$sNav = 'blog.edit'}
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{if $sEvent == 'add'}
|
||||
{$aLang.blog.add.title}
|
||||
{else}
|
||||
{$aLang.blog.admin.title}: <a href="{$blogEdit->getUrlFull()}">{$blogEdit->getTitle()|escape}</a>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'blog' template='add' blog=$blogEdit}
|
||||
{/block}
|
|
@ -0,0 +1,21 @@
|
|||
{**
|
||||
* Управление пользователями блога
|
||||
*
|
||||
* @param object $blogEdit Блог
|
||||
* @param array $blogUsers Список пользователей блога
|
||||
* @param array $blogUsersInvited Список приглашенных пользователей, передается в случае если блог закрытый
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'blog.edit'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.blog.admin.title}: <a href="{$blogEdit->getUrlFull()}">{$blogEdit->getTitle()|escape}</a>
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'blog' template='admin' users=$blogUsers pagination=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,40 @@
|
|||
{**
|
||||
* Блог
|
||||
*
|
||||
* @param object $blog Блог
|
||||
* @param boolean $isPrivateBlog Закрытый блог или нет
|
||||
* @param array $topics Список топиков
|
||||
* @param array $paging Пагинация
|
||||
* @param string $periodSelectCurrent
|
||||
* @param string $periodSelectRoot
|
||||
* @param array $blogUsers Читатели блога
|
||||
* @param array $blogModerators Модераторы блога
|
||||
* @param array $blogAdministrators Администраторы блога
|
||||
* @param integer $countBlogUsers Кол-во читателей
|
||||
* @param integer $countBlogModerators Кол-во модераторов
|
||||
* @param integer $countBlogAdministrators Кол-во администраторов
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'topics.sub'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content_header'}
|
||||
{component 'blog' blog=$blog blogs=$blogs}
|
||||
|
||||
{$smarty.block.parent}
|
||||
|
||||
{* Сообщение для забаненного пользователя *}
|
||||
{if $blogUserCurrent and $blogUserCurrent->getIsBanned()}
|
||||
{component 'alert' text=$aLang.blog.alerts.banned mods='error'}
|
||||
{/if}
|
||||
|
||||
{* Список топиков *}
|
||||
{if $isPrivateBlog}
|
||||
{component 'alert' text=$aLang.blog.alerts.private mods='error'}
|
||||
{else}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,18 @@
|
|||
{**
|
||||
* Список топиков
|
||||
*
|
||||
* @param array $topics
|
||||
* @param array $paging
|
||||
* @param string $periodSelectCurrent
|
||||
* @param string $periodSelectRoot
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'topics'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,42 @@
|
|||
{**
|
||||
* Топик
|
||||
*
|
||||
* @param object $topic
|
||||
* @param array $comments
|
||||
* @param integer $lastCommentId
|
||||
* @param array $pagingComments
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{* Топик *}
|
||||
{component 'topic' template='topic-type' topic=$topic}
|
||||
|
||||
{* Комментарии *}
|
||||
{component 'comment' template='comments'
|
||||
comments = $comments
|
||||
count = $topic->getCountComment()
|
||||
classes = 'js-topic-comments'
|
||||
attributes = [ 'id' => 'comments' ]
|
||||
targetId = $topic->getId()
|
||||
targetType = 'topic'
|
||||
authorId = $topic->getUserId()
|
||||
authorText = $aLang.topic.author
|
||||
dateReadLast = $topic->getDateRead()
|
||||
forbidAdd = $topic->getForbidComment()
|
||||
forbidText = $aLang.topic.comments.notices.not_allowed
|
||||
useSubscribe = true
|
||||
isSubscribed = $topic->getSubscribeNewComment() && $topic->getSubscribeNewComment()->getStatus()
|
||||
lastCommentId = $lastCommentId
|
||||
pagination = [
|
||||
total => +$pagingComments.iCountPage,
|
||||
current => +$pagingComments.iCurrentPage,
|
||||
url => "{$pagingComments.sGetParams}{($pagingComments.sGetParams) ? '&' : '?'}cmtpage=__page__"
|
||||
]
|
||||
commentParams = [
|
||||
useVote => true,
|
||||
useEdit => true,
|
||||
useFavourite => true
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,19 @@
|
|||
{**
|
||||
* Список пользователей которые подключены к блогу
|
||||
*
|
||||
* @param object $blog
|
||||
* @param array $blogUsers
|
||||
* @param integer $countBlogUsers
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.blog.users.readers_all} ({$countBlogUsers}):
|
||||
<a href="{$blog->getUrlFull()}">{$blog->getTitle()|escape}</a>
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'user' template='list' users=$blogUsers pagination=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,38 @@
|
|||
{**
|
||||
* Список блогов
|
||||
*
|
||||
* @param array $blogs
|
||||
* @param integer $searchCount
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sMenuHeadItemSelect = 'blogs'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.blog.blogs}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'blog' template='search-form'}
|
||||
|
||||
{* Сортировка *}
|
||||
{component 'sort' template='ajax'
|
||||
classes = 'js-search-sort js-search-sort-menu'
|
||||
text = $aLang.blog.sort.by_users
|
||||
items = [
|
||||
[ name => 'blog_count_user', text => $aLang.blog.sort.by_users ],
|
||||
[ name => 'blog_count_topic', text => $aLang.blog.sort.by_topics ],
|
||||
[ name => 'blog_title', text => $aLang.sort.by_title ]
|
||||
]}
|
||||
|
||||
{* Список блогов *}
|
||||
<div class="js-search-ajax-blog">
|
||||
<h3 class="h3 js-blog-list-search-title" style="display: none"></h3>
|
||||
|
||||
{component 'blog' template='list' blogs=$blogs useMore=true}
|
||||
</div>
|
||||
{/block}
|
|
@ -0,0 +1,28 @@
|
|||
{**
|
||||
* Создание/редактирование топика
|
||||
*
|
||||
* @parama object $topicEdit
|
||||
* @parama string $topicType
|
||||
* @parama array $blogsAllow
|
||||
* @parama integer $blogId
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{if $sEvent == 'add'}
|
||||
{$sNav = 'create'}
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{if $sEvent == 'add'}
|
||||
{$aLang.topic.add.title.add}
|
||||
{else}
|
||||
{$aLang.topic.add.title.edit}
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'topic' template='add-type' topic=$topicEdit type=$topicType blogs=$blogsAllow blogId=$blogId skipBlogs=$skipBlogs}
|
||||
{/block}
|
|
@ -0,0 +1,20 @@
|
|||
{**
|
||||
* Черновики
|
||||
*
|
||||
* @parama array $topics
|
||||
* @parama array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'create'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.topic.add.title.add}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,23 @@
|
|||
{**
|
||||
* Страница вывода ошибок
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$layoutShowSystemMessages = false}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{if $aMsgError[0].title}
|
||||
{$aLang.common.error.error}: <span>{$aMsgError[0].title}</span>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
<p>{$aMsgError[0].msg}</p>
|
||||
<p>
|
||||
<a href="javascript:history.go(-1);">{$aLang.common.site_history_back}</a>,
|
||||
<a href="{router page='/'}">{$aLang.common.site_go_main}</a>
|
||||
</p>
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Главная
|
||||
*
|
||||
* @parama array $topics
|
||||
* @parama array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'topics'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,36 @@
|
|||
{**
|
||||
* Список всех пользователей
|
||||
*
|
||||
* @param array $users
|
||||
* @param integer $searchCount
|
||||
* @param array $countriesUsed
|
||||
* @param array $paging
|
||||
* @param array $usersStat
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.user.users}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'user' template='search-form'}
|
||||
|
||||
{* Сортировка *}
|
||||
{component 'sort' template='ajax'
|
||||
classes = 'js-search-sort js-search-sort-menu'
|
||||
text = $aLang.sort.by_rating
|
||||
items = [
|
||||
[ name => 'user_rating', text => $aLang.sort.by_rating, order => 'asc' ],
|
||||
[ name => 'user_login', text => $aLang.sort.by_login ],
|
||||
[ name => 'user_date_register', text => $aLang.sort.by_date_registration ]
|
||||
]}
|
||||
|
||||
{* Список пользователей *}
|
||||
<div class="js-search-ajax-users">
|
||||
<h3 class="h3 js-user-list-search-title" style="display: none"></h3>
|
||||
|
||||
{component 'user' template='list' users=$users useMore=true}
|
||||
</div>
|
||||
{/block}
|
|
@ -0,0 +1,20 @@
|
|||
{**
|
||||
* Активность пользователя
|
||||
*
|
||||
* @param array $activityEvents
|
||||
* @param integer $activityEventsAllCount
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='activity.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'activity'
|
||||
events = $activityEvents
|
||||
count = $activityEventsAllCount
|
||||
targetId = $oUserProfile->getId()
|
||||
classes = 'js-activity--user'}
|
||||
{/block}
|
|
@ -0,0 +1,17 @@
|
|||
{**
|
||||
* Список комментариев созданных пользователем
|
||||
*
|
||||
* @param array $comments
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='user.publications.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{include 'navs/nav.user.created.tpl'}
|
||||
{component 'comment' template='list' comments=$comments paging=$paging classes='js-topic-comments-list'}
|
||||
{/block}
|
|
@ -0,0 +1,17 @@
|
|||
{**
|
||||
* Список заметок созданных пользователем
|
||||
*
|
||||
* @param array $notesUsers
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang 'user.publications.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{include 'navs/nav.user.created.tpl'}
|
||||
{component 'user' template='list' users=$notesUsers pagination=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,17 @@
|
|||
{**
|
||||
* Список топиков созданных пользователем
|
||||
*
|
||||
* @param array $topics
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='user.publications.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{include 'navs/nav.user.created.tpl'}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,17 @@
|
|||
{**
|
||||
* Избранные комментарии пользователя
|
||||
*
|
||||
* @param array $comments
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='user.favourites.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{include 'navs/nav.user.favourite.tpl'}
|
||||
{component 'comment' template='list' comments=$comments paging=$paging classes='js-topic-comments-list'}
|
||||
{/block}
|
|
@ -0,0 +1,27 @@
|
|||
{**
|
||||
* Избранные топики пользователя
|
||||
*
|
||||
* @param array $topics
|
||||
* @param array $paging
|
||||
* @param array $activeFavouriteTag
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='user.favourites.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{include 'navs/nav.user.favourite.tpl'}
|
||||
|
||||
{* Блок с тегами избранного *}
|
||||
{if $oUserCurrent && $oUserCurrent->getId() == $oUserProfile->getId()}
|
||||
{insert name='block' block='tagsPersonalTopic' params=[
|
||||
'user' => $oUserProfile,
|
||||
'activeTag' => $activeFavouriteTag
|
||||
]}
|
||||
{/if}
|
||||
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Список друзей
|
||||
*
|
||||
* @param array $friends
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='user.friends.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'user' template='list' users=$friends pagination=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,25 @@
|
|||
{**
|
||||
* Профиль пользователя с информацией о нем
|
||||
*
|
||||
* @param array usersInvited
|
||||
* @param object invitedByUser
|
||||
* @param array blogsJoined
|
||||
* @param array blogsModerate
|
||||
* @param array blogsAdminister
|
||||
* @param array blogsCreated
|
||||
* @param array usersFriend
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'user' template='info'
|
||||
user = $oUserProfile
|
||||
friends = $userFriends
|
||||
usersInvited = $usersInvited
|
||||
invitedByUser = $invitedByUser
|
||||
blogsJoined = $blogsJoined
|
||||
blogsAdminister = $blogsAdminister
|
||||
blogsModerate = $blogsModerate
|
||||
blogsCreated = $blogsCreated}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Стена
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.tpl'}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{lang name='wall.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{insert name='block' block='wall' params=[
|
||||
'classes' => 'js-wall-default',
|
||||
'user_id' => $oUserProfile->getId()
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<channel>
|
||||
<title>{$aChannel.title}</title>
|
||||
<link>{$aChannel.link}</link>
|
||||
<atom:link href="{$PATH_WEB_CURRENT}/" rel="self" type="application/rss+xml" />
|
||||
<description><![CDATA[{$aChannel.description}]]></description>
|
||||
<language>{$aChannel.language}</language>
|
||||
<managingEditor>{$aChannel.managingEditor} ({Router::GetPath('/')})</managingEditor>
|
||||
<webMaster>{$aChannel.managingEditor} ({Router::GetPath('/')})</webMaster>
|
||||
<copyright>{Router::GetPath('/')}</copyright>
|
||||
<generator>{$aChannel.generator}</generator>
|
||||
|
||||
{foreach $aItems as $item}
|
||||
<item>
|
||||
<title>{$item.title|escape:'html'}</title>
|
||||
<guid isPermaLink="true">{$item.guid}</guid>
|
||||
<link>{$item.link}</link>
|
||||
<dc:creator>{$item.author}</dc:creator>
|
||||
<description><![CDATA[{$item.description}]]></description>
|
||||
<pubDate>{date_format date=$item.pubDate format="r"}</pubDate>
|
||||
<category>{$item.category|replace:',':'</category>
|
||||
<category>'}</category>
|
||||
</item>
|
||||
{/foreach}
|
||||
</channel>
|
||||
</rss>
|
|
@ -0,0 +1,32 @@
|
|||
{**
|
||||
* Страница с формой поиска
|
||||
*
|
||||
* @param array resultItems
|
||||
* @param array paging
|
||||
* @param array searchType
|
||||
* @param array query
|
||||
* @param array typeCounts
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.search.search}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'search' template='main' searchType=$searchType}
|
||||
{include 'navs/nav.search.tpl'}
|
||||
|
||||
{if $resultItems}
|
||||
{if $searchType == 'topics'}
|
||||
{component 'topic' template='list' topics=$resultItems paging=$paging}
|
||||
{elseif $searchType == 'comments'}
|
||||
{component 'comment' template='list' comments=$resultItems paging=$paging}
|
||||
{else}
|
||||
{hook run='search_result' type=$searchType}
|
||||
{/if}
|
||||
{elseif $_aRequest.q}
|
||||
{component 'blankslate' text=$aLang.search.alerts.empty}
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,18 @@
|
|||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
||||
<ShortName>{Config::Get('view.name')}</ShortName>
|
||||
<Description>{$sHtmlTitle}</Description>
|
||||
<Contact>{Config::Get('sys.mail.from_email')}</Contact>
|
||||
<Url type="text/html" template="{router page='search/topics'}?q={literal}{searchTerms}{/literal}" />
|
||||
<LongName>{$sHtmlDescription}</LongName>
|
||||
<Image height="64" width="64" type="image/png">{Config::Get('path.skin.assets.web')}/images/favicons/opensearch.png</Image>
|
||||
<Image height="16" width="16" type="image/vnd.microsoft.icon">{Config::Get('path.skin.assets.web')}/images/favicons/favicon.ico</Image>
|
||||
<Developer>{Config::Get('view.name')} ({Router::GetPath('/')})</Developer>
|
||||
<Attribution>
|
||||
© «{Config::Get('view.name')}»
|
||||
</Attribution>
|
||||
<SyndicationRight>open</SyndicationRight>
|
||||
<AdultContent>false</AdultContent>
|
||||
<Language>ru-ru</Language>
|
||||
<OutputEncoding>UTF-8</OutputEncoding>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
</OpenSearchDescription>
|
|
@ -0,0 +1,14 @@
|
|||
{**
|
||||
* Уведомления о смене емэйла
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$layoutShowSystemMessages = false}
|
||||
{$layoutShowSidebar = false}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{$sText}
|
||||
{/block}
|
|
@ -0,0 +1,9 @@
|
|||
{**
|
||||
* Настройки аккаунта (емэйл, пароль)
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.settings.tpl'}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'user' template='settings/account' user=$oUserCurrent}
|
||||
{/block}
|
|
@ -0,0 +1,9 @@
|
|||
{**
|
||||
* Управление инвайтами
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.settings.tpl'}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'user' template='settings/invite' user=$oUserCurrent}
|
||||
{/block}
|
|
@ -0,0 +1,9 @@
|
|||
{**
|
||||
* Основные настройки профиля
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.settings.tpl'}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'user' template='settings/profile' user=$oUserCurrent}
|
||||
{/block}
|
|
@ -0,0 +1,9 @@
|
|||
{**
|
||||
* Настройка уведомлений
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.settings.tpl'}
|
||||
|
||||
{block 'layout_content' append}
|
||||
{component 'user' template='settings/tuning' user=$oUserCurrent}
|
||||
{/block}
|
|
@ -0,0 +1,20 @@
|
|||
{**
|
||||
* Вся активность
|
||||
*
|
||||
* @param array $activityEvents
|
||||
* @param integer $activityEventsAllCount
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'activity'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.activity.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'activity' events=$activityEvents count=$activityEventsAllCount classes='js-activity--all'}
|
||||
{/block}
|
|
@ -0,0 +1,20 @@
|
|||
{**
|
||||
* Настраиваемая, персональная страница активности
|
||||
*
|
||||
* @param array $activityEvents
|
||||
* @param integer $activityEventsAllCount
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'activity'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.activity.title}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'activity' events=$activityEvents count=$activityEventsAllCount classes='js-activity--personal'}
|
||||
{/block}
|
|
@ -0,0 +1,18 @@
|
|||
{**
|
||||
* Поиск по тегам
|
||||
*
|
||||
* @param array $topics
|
||||
* @param array $paging
|
||||
* @param string $tag
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
{lang 'tags.search.title'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'tags' template='search-form'}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,9 @@
|
|||
{**
|
||||
* Создание личного сообщения
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'talk' template='add'}
|
||||
{/block}
|
|
@ -0,0 +1,11 @@
|
|||
{**
|
||||
* Черный список
|
||||
*
|
||||
* @param array $talkBlacklistUsers
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'talk' template='blacklist' users=$talkBlacklistUsers}
|
||||
{/block}
|
|
@ -0,0 +1,12 @@
|
|||
{**
|
||||
* Список избранных сообщений
|
||||
*
|
||||
* @param array $talks
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'talk' template='list.tpl' talks=$talks paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Список сообщений
|
||||
*
|
||||
* @param array $talks
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'talk' template='search-form'}
|
||||
{component 'talk' template='list' talks=$talks paging=$paging selectable=true}
|
||||
{/block}
|
|
@ -0,0 +1,17 @@
|
|||
{**
|
||||
* Диалог
|
||||
*
|
||||
* @param object $talk
|
||||
* @param array $comments
|
||||
* @param integer $lastCommentId
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'talk'
|
||||
talk = $talk
|
||||
comments = $comments
|
||||
lastCommentId = $lastCommentId
|
||||
activeParticipantsCount = $activeParticipantsCount}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Лента пользователя
|
||||
*
|
||||
* @param array $topics
|
||||
* @param array $paging
|
||||
*}
|
||||
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'topics'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{component 'topic' template='list' topics=$topics paging=$paging}
|
||||
{/block}
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
* Сетка
|
||||
*
|
||||
* @license GNU General Public License, version 2
|
||||
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
||||
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Сетка
|
||||
*/
|
||||
.layout-container {
|
||||
margin: 0 auto;
|
||||
padding: 0 50px;
|
||||
}
|
||||
.layout-content {
|
||||
background: #fff;
|
||||
padding: 40px !important;
|
||||
}
|
||||
.layout-nav .ls-nav.ls-nav--main {
|
||||
margin: 0 auto;
|
||||
}
|
||||
.layout-footer {
|
||||
padding: 20px 0 50px;
|
||||
color: #777;
|
||||
position: relative;
|
||||
}
|
||||
.layout-container.layout-no-sidebar .layout-content {
|
||||
width: 100%;
|
||||
margin-right: 0;
|
||||
}
|
||||
.layout-sidebar {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.layout-sidebar .ls-block {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 999px) {
|
||||
.layout-content { width: 100% !important; margin-bottom: 30px; padding: 15px !important; }
|
||||
.layout-sidebar { width: 100% !important; margin-bottom: 30px; padding: 0; }
|
||||
|
||||
.ls-toolbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media (max-width: 480px) {
|
||||
.layout-container {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Главное меню
|
||||
*/
|
||||
.layout-nav {
|
||||
padding: 0 50px;
|
||||
margin-bottom: 10px;
|
||||
background: #222;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.layout-nav {
|
||||
padding: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Шапка сайта
|
||||
*/
|
||||
.ls-jumbotron {
|
||||
background-image: url(../images/header.jpg);
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
/**
|
||||
* Стили для печати
|
||||
*
|
||||
* @license GNU General Public License, version 2
|
||||
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
||||
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
||||
*/
|
||||
|
||||
@media print {
|
||||
@page { margin: 0.5cm; }
|
||||
|
||||
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; }
|
||||
|
||||
body, .text { font-size: 14pt; }
|
||||
|
||||
a, a:visited { text-decoration: underline; }
|
||||
|
||||
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
||||
thead { display: table-header-group; }
|
||||
tr, img { page-break-inside: avoid; }
|
||||
img { max-width: 100% !important; }
|
||||
|
||||
h1 { font-size: 30pt !important; }
|
||||
h4 { font-size: 26pt !important; }
|
||||
h5 { font-size: 23pt !important; }
|
||||
h6 { font-size: 20pt !important; }
|
||||
p, h3, h4, h5 { orphans: 3; widows: 3; }
|
||||
h3, h4, h5 { page-break-after: avoid; }
|
||||
|
||||
#header, #userbar, #nav, #sidebar, #footer, #comments, .toolbar, .nav-filter-wrapper,
|
||||
.topic-footer, .stat-performance, .actions, .reply-header { display: none !important; }
|
||||
|
||||
#wrapper { -webkit-box-shadow: none; box-shadow: none; border: 0; padding: 0; }
|
||||
#content { width: 100%; margin: 0; }
|
||||
|
||||
.topic { margin-bottom: 100px; }
|
||||
}
|
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 98 KiB |
|
@ -0,0 +1,642 @@
|
|||
/**
|
||||
* Инициализации модулей
|
||||
*
|
||||
* @license GNU General Public License, version 2
|
||||
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
||||
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
||||
*/
|
||||
|
||||
jQuery(document).ready(function($){
|
||||
// Хук начала инициализации javascript-составляющих шаблона
|
||||
ls.hook.run('ls_template_init_start',[],window);
|
||||
|
||||
$('html').removeClass('no-js');
|
||||
|
||||
/**
|
||||
* Иниц-ия модулей ядра
|
||||
*/
|
||||
ls.init({
|
||||
production: false
|
||||
});
|
||||
|
||||
ls.dev.init();
|
||||
|
||||
|
||||
/**
|
||||
* IE
|
||||
*/
|
||||
if ( $( 'html' ).hasClass( 'oldie' ) ) {
|
||||
// Эмуляция placeholder'ов в IE
|
||||
$( 'input[type=text], textarea' ).placeholder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Form validate
|
||||
* Валидатор нужно иниц-ть до иниц-ии аякс форм, чтобы избежать валидации аякс-полей после сабмита формы
|
||||
*/
|
||||
$('.js-form-validate').parsley();
|
||||
|
||||
|
||||
/**
|
||||
* Подтверждение удаления
|
||||
*/
|
||||
$('.js-confirm-remove-default').livequery(function () {
|
||||
$(this).lsConfirm({
|
||||
message: ls.lang.get('common.remove_confirm')
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Notification
|
||||
*/
|
||||
ls.notification.init();
|
||||
|
||||
|
||||
/**
|
||||
* Actionbar
|
||||
*/
|
||||
$('.js-user-list-modal-actionbar').livequery(function () {
|
||||
$( this ).lsActionbarItemSelect({
|
||||
selectors: {
|
||||
target_item: '.js-user-list-select .js-user-list-small-item'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Modals
|
||||
*/
|
||||
$('.js-modal-default').lsModal();
|
||||
$('.js-modal-toggle-default').lsModalToggle();
|
||||
|
||||
|
||||
/**
|
||||
* Details
|
||||
*/
|
||||
$('.js-details-default').lsDetails();
|
||||
|
||||
|
||||
/**
|
||||
* Dropdowns
|
||||
*/
|
||||
$('.js-dropdown-default').livequery(function () {
|
||||
$(this).lsDropdown();
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Fields
|
||||
*/
|
||||
$('.js-field-geo-default').lsFieldGeo({
|
||||
urls: {
|
||||
regions: aRouter.ajax + 'geo/get/regions/',
|
||||
cities: aRouter.ajax + 'geo/get/cities/'
|
||||
}
|
||||
});
|
||||
|
||||
$('.js-field-date-default').livequery(function () {
|
||||
$(this).lsFieldDate({
|
||||
language: LANGUAGE
|
||||
});
|
||||
});
|
||||
|
||||
$('.js-field-time-default').livequery(function () {
|
||||
$(this).lsFieldTime();
|
||||
});
|
||||
|
||||
$('[data-type=captcha]').livequery(function () {
|
||||
$(this).lsCaptcha();
|
||||
});
|
||||
|
||||
$('[data-type=recaptcha]').livequery(function () {
|
||||
$(this).lsReCaptcha({
|
||||
key: ls.registry.get('recaptcha.site_key')
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Alerts
|
||||
*/
|
||||
$('.js-alert').lsAlert();
|
||||
|
||||
|
||||
/**
|
||||
* Tooltips
|
||||
*/
|
||||
$('.js-tooltip').lsTooltip();
|
||||
|
||||
$('.js-popover-default').lsTooltip({
|
||||
useAttrTitle: false,
|
||||
trigger: 'click',
|
||||
classes: 'tooltip-light'
|
||||
});
|
||||
|
||||
if (ls.registry.get('block_stream_show_tip')) {
|
||||
$('.js-title-comment, .js-title-topic').livequery(function () {
|
||||
$(this).lsTooltip({
|
||||
position: {
|
||||
my: "right center",
|
||||
at: "left left"
|
||||
},
|
||||
show: {
|
||||
delay: 1500
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Autocomplete
|
||||
*/
|
||||
$( '.autocomplete-tags' ).lsAutocomplete({
|
||||
multiple: false,
|
||||
urls: {
|
||||
load: aRouter.ajax + 'autocompleter/tag/'
|
||||
}
|
||||
});
|
||||
|
||||
$( '.autocomplete-tags-sep' ).lsAutocomplete({
|
||||
multiple: true,
|
||||
urls: {
|
||||
load: aRouter.ajax + 'autocompleter/tag/'
|
||||
}
|
||||
});
|
||||
|
||||
$( '.autocomplete-users' ).lsAutocomplete({
|
||||
multiple: false,
|
||||
urls: {
|
||||
load: aRouter.ajax + 'autocompleter/user/'
|
||||
}
|
||||
});
|
||||
|
||||
$( '.autocomplete-users-sep' ).lsAutocomplete({
|
||||
multiple: true,
|
||||
urls: {
|
||||
load: aRouter.ajax + 'autocompleter/user/'
|
||||
}
|
||||
});
|
||||
|
||||
$('.autocomplete-property-tags').each(function(k,v){
|
||||
$(v).lsAutocomplete({
|
||||
multiple: false,
|
||||
urls: {
|
||||
load: aRouter.ajax + 'property/tags/autocompleter/'
|
||||
},
|
||||
params: {
|
||||
property_id: $(v).data('propertyId')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('.autocomplete-property-tags-sep').each(function(k,v){
|
||||
$(v).lsAutocomplete({
|
||||
multiple: true,
|
||||
urls: {
|
||||
load: aRouter.ajax + 'property/tags/autocompleter/'
|
||||
},
|
||||
params: {
|
||||
property_id: $(v).data('propertyId')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Code highlight
|
||||
*/
|
||||
$( 'pre code' ).lsHighlighter();
|
||||
|
||||
|
||||
/**
|
||||
* Blocks
|
||||
*/
|
||||
$( '.js-block-default' ).lsBlock();
|
||||
|
||||
|
||||
/**
|
||||
* Активность
|
||||
*/
|
||||
$('.js-activity--all').lsActivity({ urls: { more: aRouter.stream + 'get_more_all' } });
|
||||
$('.js-activity--user').lsActivity({ urls: { more: aRouter.stream + 'get_more_user' } });
|
||||
$('.js-activity--personal').lsActivity({
|
||||
urls: {
|
||||
more: aRouter.stream + 'get_more_personal'
|
||||
},
|
||||
create: function() {
|
||||
// Настройки активности
|
||||
$('.js-activity-settings').lsActivitySettings({
|
||||
urls: {
|
||||
toggle_type: aRouter.stream + 'switchEventType'
|
||||
}
|
||||
});
|
||||
|
||||
// Добавление пользователей в персональную активность
|
||||
$('.js-activity-users').lsUserListAdd({
|
||||
urls: {
|
||||
add: aRouter.stream + 'ajaxadduser',
|
||||
remove: aRouter.stream + 'ajaxremoveuser',
|
||||
list: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Лента
|
||||
*/
|
||||
// Блоги
|
||||
$('.js-feed-blogs').lsFeedBlogs({
|
||||
urls: {
|
||||
subscribe: aRouter.feed + 'subscribe',
|
||||
unsubscribe: aRouter.feed + 'unsubscribe'
|
||||
}
|
||||
});
|
||||
|
||||
// Добавление пользователей в свою ленту
|
||||
$('.js-feed-users').lsUserListAdd({
|
||||
urls: {
|
||||
add: aRouter.feed + 'ajaxadduser',
|
||||
remove: aRouter.feed + 'unsubscribe',
|
||||
list: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Auth
|
||||
*/
|
||||
ls.auth.init();
|
||||
|
||||
// Поиск
|
||||
$( '.js-search-ajax-users' ).lsSearchAjax({
|
||||
urls: {
|
||||
search: aRouter.people + 'ajax-search/'
|
||||
},
|
||||
i18n: {
|
||||
title: ls.lang.get( 'user.search.result_title' )
|
||||
},
|
||||
selectors: {
|
||||
list: '.js-more-users-container',
|
||||
more: '.js-more-search',
|
||||
title: '@.js-user-list-search-title'
|
||||
},
|
||||
filters : [
|
||||
{
|
||||
type: 'text',
|
||||
name: 'sText',
|
||||
selector: '.js-search-text-main'
|
||||
},
|
||||
{
|
||||
type: 'radio',
|
||||
name: 'sex',
|
||||
selector: '.js-search-ajax-user-sex'
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
name: 'is_online',
|
||||
selector: '.js-search-ajax-user-online'
|
||||
},
|
||||
{
|
||||
type: 'sort',
|
||||
name: 'sort_by',
|
||||
selector: '.js-search-sort-menu li'
|
||||
},
|
||||
{
|
||||
type: 'select',
|
||||
name: 'country',
|
||||
selector: '.js-field-geo-country'
|
||||
},
|
||||
{
|
||||
type: 'select',
|
||||
name: 'region',
|
||||
selector: '.js-field-geo-region'
|
||||
},
|
||||
{
|
||||
type: 'select',
|
||||
name: 'city',
|
||||
selector: '.js-field-geo-city'
|
||||
}
|
||||
],
|
||||
afterupdate: function ( event, data ) {
|
||||
data.context.getElement( 'more' ).lsMore( 'option', 'params.next_page', 2 );
|
||||
}
|
||||
});
|
||||
|
||||
// Добавление пользователя в свою активность
|
||||
$('.js-user-follow').lsUserFollow({
|
||||
urls: {
|
||||
follow: aRouter['stream'] + 'ajaxadduser/',
|
||||
unfollow: aRouter['stream'] + 'ajaxremoveuser/'
|
||||
}
|
||||
});
|
||||
|
||||
// Добавление пользователя в друзья
|
||||
$('.js-user-friend').lsUserFriend({
|
||||
urls: {
|
||||
add: aRouter.profile + 'ajaxfriendadd/',
|
||||
remove: aRouter.profile + 'ajaxfrienddelete/',
|
||||
accept: aRouter.profile + 'ajaxfriendaccept/',
|
||||
modal: aRouter.profile + 'ajax-modal-add-friend'
|
||||
}
|
||||
});
|
||||
|
||||
// Жалоба
|
||||
$('.js-user-report').lsReport({
|
||||
urls: {
|
||||
modal: aRouter.profile + 'ajax-modal-complaint',
|
||||
add: aRouter.profile + 'ajax-complaint-add'
|
||||
}
|
||||
});
|
||||
|
||||
// Управление кастомными полями
|
||||
$( '.js-user-fields' ).lsUserFields();
|
||||
|
||||
// Фото пользователя
|
||||
$( '.js-user-photo' ).lsPhoto({
|
||||
urls: {
|
||||
upload: aRouter.settings + 'ajax-upload-photo',
|
||||
remove: aRouter.settings + 'ajax-remove-photo',
|
||||
crop_photo: aRouter.settings + 'ajax-modal-crop-photo',
|
||||
crop_avatar: aRouter.settings + 'ajax-modal-crop-avatar',
|
||||
save_photo: aRouter.settings + 'ajax-crop-photo',
|
||||
save_avatar: aRouter.settings + 'ajax-change-avatar',
|
||||
cancel_photo: aRouter.settings + 'ajax-crop-cancel-photo'
|
||||
},
|
||||
changeavatar: function ( event, _this, avatars ) {
|
||||
$( '.js-user-profile-avatar, .js-wall-entry[data-user-id=' + _this.option( 'params.user_id' ) + '] .comment-avatar img' ).attr( 'src', avatars[ '64crop' ] + '?' + Math.random() );
|
||||
$( '.nav-item--userbar-username img' ).attr( 'src', avatars[ '24crop' ] + '?' + Math.random() );
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Talk
|
||||
*/
|
||||
|
||||
$('.js-talk-list').lsTalkList();
|
||||
|
||||
// Выбор получателей в форме добавления
|
||||
$('.js-talk-add-user-choose').lsUserFieldChoose({
|
||||
urls: {
|
||||
modal: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
|
||||
// Форма поиска
|
||||
$('.js-talk-search-form').lsDetails();
|
||||
|
||||
// Добавление диалога в избранное
|
||||
$('.js-favourite-talk').lsFavourite({
|
||||
urls: {
|
||||
toggle: aRouter['ajax'] + 'favourite/talk/'
|
||||
}
|
||||
});
|
||||
|
||||
// Добавление в избранное на странице диалога
|
||||
$('.js-talk-message-root-favourite').on('click', function (event) {
|
||||
if (event.target == event.currentTarget) {
|
||||
$(this).find('.js-favourite-talk').lsFavourite('toggle');
|
||||
}
|
||||
});
|
||||
|
||||
// Комментарии
|
||||
$('.js-comments-talk').lsComments({
|
||||
urls: {
|
||||
add: aRouter['talk'] + 'ajaxaddcomment/',
|
||||
load: aRouter['talk'] + 'ajaxresponsecomment/'
|
||||
}
|
||||
});
|
||||
|
||||
// Управление участниками личного сообщения
|
||||
$('.js-message-users').lsTalkUsers();
|
||||
|
||||
// Черный список
|
||||
$('.js-user-list-add-blacklist').lsUserListAdd({
|
||||
urls: {
|
||||
add: aRouter['talk'] + 'ajaxaddtoblacklist/',
|
||||
remove: aRouter['talk'] + 'ajaxdeletefromblacklist/',
|
||||
list: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Poll
|
||||
*/
|
||||
$('.js-poll').lsPoll();
|
||||
$('.js-poll-manage').lsPollManage({
|
||||
max: ls.registry.get('poll_max_answers')
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* User Note
|
||||
*/
|
||||
$('.js-user-note').livequery(function () {
|
||||
$(this).lsNote({
|
||||
urls: {
|
||||
save: aRouter['profile'] + 'ajax-note-save/',
|
||||
remove: aRouter['profile'] + 'ajax-note-remove/'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Editor
|
||||
*/
|
||||
$( '.js-editor-default' ).lsEditor();
|
||||
|
||||
|
||||
/**
|
||||
* Blog
|
||||
*/
|
||||
|
||||
// Форма добавления блога
|
||||
$('.js-blog-add').lsBlogAdd();
|
||||
|
||||
// Приглашение пользователей в блог
|
||||
$('.js-user-list-add-blog-invite').lsBlogInvites();
|
||||
|
||||
// Вступить/покинуть блог (список блогов)
|
||||
$( '.js-blog-join' ).livequery(function() {
|
||||
$( this ).lsBlogJoin({
|
||||
urls: {
|
||||
toggle: aRouter.blog + 'ajaxblogjoin'
|
||||
},
|
||||
classes: {
|
||||
loading: ls.options.classes.states.loading
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Вступить/покинуть блог (страница блога)
|
||||
$( '.js-blog-profile-join' ).lsBlogJoin({
|
||||
urls: {
|
||||
toggle: aRouter.blog + 'ajaxblogjoin'
|
||||
},
|
||||
selectors: {
|
||||
text: 'a'
|
||||
},
|
||||
classes: {
|
||||
active: 'active'
|
||||
}
|
||||
});
|
||||
|
||||
// Поиск
|
||||
$( '.js-search-ajax-blog' ).lsSearchAjax({
|
||||
urls: {
|
||||
search: aRouter.blogs + 'ajax-search/'
|
||||
},
|
||||
i18n: {
|
||||
title: ls.lang.get( 'blog.search.result_title' )
|
||||
},
|
||||
selectors: {
|
||||
list: '.js-more-blogs-container',
|
||||
more: '.js-more-search',
|
||||
title: '@.js-blog-list-search-title'
|
||||
},
|
||||
filters : [
|
||||
{
|
||||
type: 'text',
|
||||
name: 'sText',
|
||||
selector: '.js-search-text-main'
|
||||
},
|
||||
{
|
||||
type: 'radio',
|
||||
name: 'type',
|
||||
selector: '.js-search-ajax-blog-type'
|
||||
},
|
||||
{
|
||||
type: 'radio',
|
||||
name: 'relation',
|
||||
selector: '.js-search-ajax-blog-relation'
|
||||
},
|
||||
{
|
||||
type: 'list',
|
||||
name: 'category',
|
||||
selector: '#js-search-ajax-blog-category li'
|
||||
},
|
||||
{
|
||||
type: 'sort',
|
||||
name: 'sort_by',
|
||||
selector: '.js-search-sort-menu li'
|
||||
}
|
||||
],
|
||||
afterupdate: function ( event, data ) {
|
||||
data.context.getElement( 'more' ).lsMore( 'option', 'params.next_page', 2 );
|
||||
}
|
||||
});
|
||||
|
||||
// Аватар блога
|
||||
$( '.js-blog-avatar' ).lsPhoto({
|
||||
urls: {
|
||||
upload: aRouter.blog + 'ajax/upload-avatar',
|
||||
remove: aRouter.blog + 'ajax/remove-avatar',
|
||||
crop_photo: aRouter.blog + 'ajax/modal-crop-avatar',
|
||||
save_photo: aRouter.blog + 'ajax/crop-avatar',
|
||||
cancel_photo: aRouter.blog + 'ajax/crop-cancel-avatar'
|
||||
},
|
||||
use_avatar: false,
|
||||
crop_photo: {
|
||||
minSize: [ 100, 100 ],
|
||||
usePreview: true
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Topic
|
||||
*/
|
||||
$( '.js-topic' ).lsTopic();
|
||||
|
||||
// Форма добавления
|
||||
$( '#topic-add-form' ).lsTopicAdd({
|
||||
max_blog_count: ls.registry.get('topic_max_blog_count')
|
||||
});
|
||||
|
||||
// Пагинация
|
||||
$('.js-pagination-topics').lsPagination({
|
||||
hash: {
|
||||
next: 'goTopic=first',
|
||||
prev: 'goTopic=last'
|
||||
}
|
||||
});
|
||||
|
||||
// Комментарии
|
||||
$('.js-topic-comments, .js-topic-comments-list').lsComments({
|
||||
urls: {
|
||||
add: aRouter['blog'] + 'ajaxaddcomment/',
|
||||
load: aRouter['blog'] + 'ajaxresponsecomment/'
|
||||
},
|
||||
show_form: ls.registry.get('comment_show_form')
|
||||
});
|
||||
|
||||
// Кнопка обновления комментариев
|
||||
// TODO: Fix init
|
||||
$('.js-comments-toolbar').lsCommentsToolbar({
|
||||
comments: $('.js-topic-comments, .js-comments-talk')
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Теги
|
||||
*/
|
||||
|
||||
// Облако тегов избранного
|
||||
$('.js-tags-favourite-cloud').lsDetails();
|
||||
|
||||
// Поиск по тегам
|
||||
$('.js-tag-search-form').submit(function() {
|
||||
var val = $(this).find('.js-tag-search').val();
|
||||
|
||||
if ( val ) {
|
||||
window.location = aRouter['tag'] + encodeURIComponent( val ) + '/';
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Стена
|
||||
*/
|
||||
$('.js-wall-default').lsWall({
|
||||
urls: {
|
||||
add: aRouter.ajax + 'wall/add/',
|
||||
remove: aRouter.ajax + 'wall/remove/',
|
||||
load: aRouter.ajax + 'wall/load/',
|
||||
load_comments: aRouter.ajax + 'wall/load-comments/'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Лайтбокс
|
||||
*/
|
||||
$('a.js-lbx').lsLightbox({ width:"100%", height:"100%" });
|
||||
|
||||
|
||||
/**
|
||||
* Toolbar
|
||||
*/
|
||||
$('.js-toolbar-default').lsToolbar({
|
||||
target: '.layout-wrapper',
|
||||
offsetX: 10
|
||||
});
|
||||
$('.js-toolbar-scrollup').lsToolbarScrollUp();
|
||||
$('.js-toolbar-topics').lsToolbarTopics();
|
||||
|
||||
|
||||
/**
|
||||
* Fotorama
|
||||
*/
|
||||
$( '.fotorama' ).livequery(function() {
|
||||
$( this ).lsSlider();
|
||||
});
|
||||
|
||||
// Хук конца инициализации javascript-составляющих шаблона
|
||||
ls.hook.run('ls_template_init_end',[],window);
|
||||
});
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Приглашение в закрытый блог
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.blog_invite_new.text' params=[
|
||||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'blog_url' => $oBlog->getUrlFull(),
|
||||
'blog_name' => $oBlog->getTitle()|escape,
|
||||
'invite_url' => $sPath
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Оповещение о новом комментарии в топике
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.comment_new.text' params=[
|
||||
'user_url' => $oUserComment->getUserWebPath(),
|
||||
'user_name' => $oUserComment->getDisplayName(),
|
||||
'topic_name' => $oTopic->getTitle()|escape,
|
||||
'comment_url' => "{if Config::Get('module.comment.nested_per_page')}{router page='comments'}{else}{$oTopic->getUrl()}#comment{/if}{$oComment->getId()}",
|
||||
'comment_text' => "{if Config::Get('sys.mail.include_comment')}{lang name='emails.common.comment_text'}:<br><em>{$oComment->getText()}</em>{/if}",
|
||||
'unsubscribe' => "{if $sSubscribeKey}<br><br>{lang name='emails.comment_new.unsubscribe' unsubscribe_url="{router page='subscribe'}unsubscribe/{$sSubscribeKey}/"}{/if}"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Оповещение об ответе на комментарий
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.comment_reply.text' params=[
|
||||
'user_url' => $oUserComment->getUserWebPath(),
|
||||
'user_name' => $oUserComment->getDisplayName(),
|
||||
'topic_name' => $oTopic->getTitle()|escape,
|
||||
'comment_url' => "{if Config::Get('module.comment.nested_per_page')}{router page='comments'}{else}{$oTopic->getUrl()}#comment{/if}{$oComment->getId()}",
|
||||
'comment_text' => "{if Config::Get('sys.mail.include_comment')}{lang name='emails.common.comment_text'}:<br><em>{$oComment->getText()}</em>{/if}"
|
||||
]}
|
||||
{/block}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{**
|
||||
* Приглашение на сайт
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.invite.text' params=[
|
||||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'website_url' => Router::GetPath('/'),
|
||||
'website_name' => Config::Get('view.name'),
|
||||
'invite_code' => $sRefCode,
|
||||
'ref_link' => $sRefLink,
|
||||
'login_url' => {router page='auth/login'}
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Повторная активация
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.reactivation.text' params=[
|
||||
'website_url' => Router::GetPath('/'),
|
||||
'website_name' => Config::Get('view.name'),
|
||||
'activation_url' => "{router page='auth'}activate/{$oUser->getActivateKey()}/"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,14 @@
|
|||
{**
|
||||
* Регистрация
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.registration.text' params=[
|
||||
'website_url' => Router::GetPath('/'),
|
||||
'website_name' => Config::Get('view.name'),
|
||||
'user_name' => $oUser->getLogin(),
|
||||
'user_password' => $sPassword
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Подтверждение регистрации
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.registration_activate.text' params=[
|
||||
'website_url' => Router::GetPath('/'),
|
||||
'website_name' => Config::Get('view.name'),
|
||||
'user_name' => $oUser->getLogin(),
|
||||
'user_password' => $sPassword,
|
||||
'activation_url' => "{router page='auth'}activate/{$oUser->getActivateKey()}/"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Смена пароля
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.reminder_code.text' params=[
|
||||
'website_url' => Router::GetPath('/'),
|
||||
'website_name' => Config::Get('view.name'),
|
||||
'recover_url' => "{router page='auth'}password-reset/{$oReminder->getCode()}/"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,11 @@
|
|||
{**
|
||||
* Новый пароль
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.reminder_password.text' params=[
|
||||
'password' => $sNewPassword
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Оповещение о новом сообщении в диалоге
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.talk_comment_new.text' params=[
|
||||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'talk_name' => $oTalk->getTitle()|escape,
|
||||
'message_url' => "{router page='talk'}read/{$oTalk->getId()}/#comment{$oTalkComment->getId()}",
|
||||
'message_text' => "{if Config::Get('sys.mail.include_comment')}{lang name='emails.common.comment_text'}:<br><em>{$oTalkComment->getText()}</em>{/if}"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Оповещение о новом сообщении
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.talk_new.text' params=[
|
||||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'talk_name' => $oTalk->getTitle()|escape,
|
||||
'talk_url' => "{router page='talk'}read/{$oTalk->getId()}/",
|
||||
'talk_text' => "{if Config::Get('sys.mail.include_talk')}{lang name='emails.common.comment_text'}:<br><em>{$oTalk->getText()}</em>{/if}"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Оповещение о новом топике
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.topic_new.text' params=[
|
||||
'user_url' => $oUserTopic->getUserWebPath(),
|
||||
'user_name' => $oUserTopic->getDisplayName(),
|
||||
'blog_name' => $oBlog->getTitle()|escape,
|
||||
'topic_url' => $oTopic->getUrl(),
|
||||
'topic_name' => $oTopic->getTitle()|escape
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Смена почты
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.user_changemail.text' params=[
|
||||
'user_url' => $oUser->getUserWebPath(),
|
||||
'user_name' => $oUser->getDisplayName(),
|
||||
'mail_old' => $oChangemail->getMailFrom(),
|
||||
'mail_new' => $oChangemail->getMailTo(),
|
||||
'change_url' => "{router page='profile'}changemail/confirm-from/{$oChangemail->getCodeFrom()}/"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Смена почты
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.user_changemail.text' params=[
|
||||
'user_url' => $oUser->getUserWebPath(),
|
||||
'user_name' => $oUser->getDisplayName(),
|
||||
'mail_old' => $oChangemail->getMailFrom(),
|
||||
'mail_new' => $oChangemail->getMailTo(),
|
||||
'change_url' => "{router page='profile'}changemail/confirm-to/{$oChangemail->getCodeTo()}/"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Жалоба
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.user_complaint.text' params=[
|
||||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'user_target_url' => $oUserTarget->getUserWebPath(),
|
||||
'user_target_name' => $oUserTarget->getDisplayName(),
|
||||
'complaint_title' => $oComplaint->getTypeTitle(),
|
||||
'complaint_text' => "{if $oComplaint->getText()}{lang name='emails.user_changemail.more'}:<br>{$oComplaint->getText()}{/if}"
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,14 @@
|
|||
{**
|
||||
* Заявка в друзья
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.user_friend_new.text' params=[
|
||||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'text' => $sText,
|
||||
'url' => $sPath
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,14 @@
|
|||
{**
|
||||
* Новое сообщение на стене
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.wall_new.text' params=[
|
||||
'user_url' => $oUser->getUserWebPath(),
|
||||
'user_name' => $oUser->getDisplayName(),
|
||||
'wall_url' => "{$oUserWall->getUserWebPath()}wall/",
|
||||
'message_text' => $oWall->getText()
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Ответ на сообщение на стене
|
||||
*}
|
||||
|
||||
{extends 'Component@email.email'}
|
||||
|
||||
{block 'content'}
|
||||
{lang name='emails.wall_reply.text' params=[
|
||||
'user_url' => $oUser->getUserWebPath(),
|
||||
'user_name' => $oUser->getDisplayName(),
|
||||
'wall_url' => "{$oUserWall->getUserWebPath()}wall/",
|
||||
'message_parent_text' => $oWallParent->getText(),
|
||||
'message_text' => $oWall->getText()
|
||||
]}
|
||||
{/block}
|
|
@ -0,0 +1,11 @@
|
|||
{**
|
||||
* Базовый шаблон админки
|
||||
*}
|
||||
|
||||
{extends './layout.base.tpl'}
|
||||
|
||||
{block 'layout_page_title'}
|
||||
<a href="{router page='admin'}">{lang 'admin.title'}</a>
|
||||
<span>»</span>
|
||||
{block 'layout_admin_page_title'}{/block}
|
||||
{/block}
|
|
@ -0,0 +1,181 @@
|
|||
{**
|
||||
* Основной лэйаут
|
||||
*
|
||||
* @param boolean $layoutShowSidebar Показывать сайдбар или нет, сайдбар не будет выводится если он не содержит блоков
|
||||
* @param string $layoutNavContent Название навигации
|
||||
* @param string $layoutNavContentPath Кастомный путь до навигации контента
|
||||
* @param string $layoutShowSystemMessages Показывать системные уведомления или нет
|
||||
*}
|
||||
|
||||
{extends 'Component@layout.layout'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$layoutShowSidebar = $layoutShowSidebar|default:true}
|
||||
{$layoutShowSystemMessages = $layoutShowSystemMessages|default:true}
|
||||
{/block}
|
||||
|
||||
{block 'layout_head_styles' append}
|
||||
<link href='//fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
|
||||
{/block}
|
||||
|
||||
{block 'layout_head' append}
|
||||
{* Получаем блоки для вывода в сайдбаре *}
|
||||
{if $layoutShowSidebar}
|
||||
{show_blocks group='right' assign=layoutSidebarBlocks}
|
||||
|
||||
{$layoutSidebarBlocks = trim( $layoutSidebarBlocks )}
|
||||
{$layoutShowSidebar = !!$layoutSidebarBlocks}
|
||||
{/if}
|
||||
|
||||
<script>
|
||||
ls.lang.load({json var = $aLangJs});
|
||||
ls.registry.set({json var = $aVarsJs});
|
||||
</script>
|
||||
|
||||
{**
|
||||
* Тип сетки сайта
|
||||
*}
|
||||
{if {Config::Get('view.grid.type')} == 'fluid'}
|
||||
<style>
|
||||
.layout-userbar,
|
||||
.layout-nav .ls-nav--main,
|
||||
.layout-header .ls-jumbotron-inner,
|
||||
.layout-container {
|
||||
min-width: {Config::Get('view.grid.fluid_min_width')};
|
||||
max-width: {Config::Get('view.grid.fluid_max_width')};
|
||||
}
|
||||
</style>
|
||||
{else}
|
||||
<style>
|
||||
.layout-userbar,
|
||||
.layout-nav .ls-nav--main,
|
||||
.layout-header .ls-jumbotron-inner,
|
||||
.layout-container { width: {Config::Get('view.grid.fixed_width')}; }
|
||||
</style>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_body'}
|
||||
{**
|
||||
* Юзербар
|
||||
*}
|
||||
{component 'userbar'}
|
||||
|
||||
|
||||
{**
|
||||
* Шапка
|
||||
*}
|
||||
{if Config::Get( 'view.layout_show_banner' )}
|
||||
{component 'jumbotron'
|
||||
title = Config::Get('view.name')
|
||||
subtitle = Config::Get('view.description')
|
||||
titleUrl = {router page='/'}
|
||||
classes = 'layout-header'}
|
||||
{/if}
|
||||
|
||||
|
||||
{**
|
||||
* Основная навигация
|
||||
*}
|
||||
<nav class="ls-grid-row layout-nav">
|
||||
{include 'navs/nav.main.tpl'}
|
||||
</nav>
|
||||
|
||||
|
||||
{**
|
||||
* Основной контэйнер
|
||||
*}
|
||||
<div id="container" class="ls-grid-row layout-container {hook run='container_class'} {if $layoutShowSidebar}layout-has-sidebar{else}layout-no-sidebar{/if}">
|
||||
{* Вспомогательный контейнер-обертка *}
|
||||
<div class="ls-grid-row layout-wrapper" class="{hook run='wrapper_class'}">
|
||||
{**
|
||||
* Контент
|
||||
*}
|
||||
<div class="ls-grid-col ls-grid-col-8 layout-content"
|
||||
role="main"
|
||||
{if $sMenuItemSelect == 'profile'}itemscope itemtype="http://data-vocabulary.org/Person"{/if}>
|
||||
|
||||
{hook run='content_begin'}
|
||||
|
||||
{* Основной заголовок страницы *}
|
||||
{block 'layout_page_title' hide}
|
||||
<h2 class="page-header">
|
||||
{$smarty.block.child}
|
||||
</h2>
|
||||
{/block}
|
||||
|
||||
{block 'layout_content_header'}
|
||||
{* Навигация *}
|
||||
{if $sNav}
|
||||
{if in_array($sNav, $aMenuContainers)}
|
||||
{$_navContent = $aMenuFetch.$sNav}
|
||||
{else}
|
||||
{include "{$sNavPath}navs/nav.$sNav.tpl" assign=_navContent}
|
||||
{/if}
|
||||
|
||||
{* Проверяем наличие вывода на случай если меню с одним пунктом автоматом скрывается *}
|
||||
{if $_navContent|strip:''}
|
||||
<div class="ls-nav-group">
|
||||
{$_navContent}
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
{* Системные сообщения *}
|
||||
{if $layoutShowSystemMessages}
|
||||
{if $aMsgError}
|
||||
{component 'alert' text=$aMsgError mods='error' close=true}
|
||||
{/if}
|
||||
|
||||
{if $aMsgNotice}
|
||||
{component 'alert' text=$aMsgNotice close=true}
|
||||
{/if}
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block 'layout_content'}{/block}
|
||||
|
||||
{hook run='content_end'}
|
||||
</div>
|
||||
|
||||
{**
|
||||
* Сайдбар
|
||||
* Показываем сайдбар
|
||||
*}
|
||||
{if $layoutShowSidebar}
|
||||
<aside class="ls-grid-col ls-grid-col-4 layout-sidebar" role="complementary">
|
||||
{$layoutSidebarBlocks}
|
||||
</aside>
|
||||
{/if}
|
||||
</div> {* /wrapper *}
|
||||
|
||||
|
||||
{* Подвал *}
|
||||
<footer class="ls-grid-row layout-footer">
|
||||
{block 'layout_footer'}
|
||||
{hook run='footer_begin'}
|
||||
{hook run='copyright'}
|
||||
{hook run='footer_end'}
|
||||
{/block}
|
||||
</footer>
|
||||
</div> {* /container *}
|
||||
|
||||
|
||||
{* Подключение модальных окон *}
|
||||
{if $oUserCurrent}
|
||||
{component 'tags-personal' template='modal'}
|
||||
{else}
|
||||
{component 'auth' template='modal'}
|
||||
{/if}
|
||||
|
||||
|
||||
{**
|
||||
* Тулбар
|
||||
* Добавление кнопок в тулбар
|
||||
*}
|
||||
{add_block group='toolbar' name='component@admin.toolbar.admin' priority=100}
|
||||
{add_block group='toolbar' name='component@toolbar-scrollup.toolbar.scrollup' priority=-100}
|
||||
|
||||
{* Подключение тулбара *}
|
||||
{component 'toolbar' classes='js-toolbar-default' items={show_blocks group='toolbar'}}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Базовый шаблон личных сообщений
|
||||
*}
|
||||
|
||||
{extends './layout.user.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'messages'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{$aLang.talk.title}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Базовый шаблон настроек пользователя
|
||||
*}
|
||||
|
||||
{extends './layout.user.tpl'}
|
||||
|
||||
{block 'layout_options' append}
|
||||
{$sNav = 'settings'}
|
||||
{/block}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{$aLang.user.settings.title}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Базовый шаблон профиля пользователя
|
||||
*}
|
||||
|
||||
{extends './layout.base.tpl'}
|
||||
|
||||
{block 'layout_content_header' prepend}
|
||||
{component 'user' template='header' user=$oUserProfile}
|
||||
|
||||
<h3 class="profile-page-header">
|
||||
{block 'layout_user_page_title'}{/block}
|
||||
</h3>
|
||||
{/block}
|
|
@ -0,0 +1,12 @@
|
|||
{**
|
||||
* Навигация на странице активности
|
||||
*}
|
||||
|
||||
{component 'nav'
|
||||
name = 'activity'
|
||||
activeItem = $sMenuItemSelect
|
||||
mods = 'pills'
|
||||
items = [
|
||||
[ 'name' => 'user', 'url' => "{router page='stream'}personal/", 'text' => $aLang.activity.nav.personal, 'is_enabled' => !! $oUserCurrent ],
|
||||
[ 'name' => 'all', 'url' => "{router page='stream'}all/", 'text' => $aLang.activity.nav.all ]
|
||||
]}
|
|
@ -0,0 +1,12 @@
|
|||
{**
|
||||
* Навгиация редактирования блога
|
||||
*}
|
||||
|
||||
{component 'nav'
|
||||
name = 'blog_edit'
|
||||
activeItem = $sMenuItemSelect
|
||||
mods = 'pills'
|
||||
items = [
|
||||
[ 'name' => 'profile', 'url' => "{router page='blog'}edit/{$blogEdit->getId()}/", 'text' => $aLang.blog.admin.nav.profile ],
|
||||
[ 'name' => 'admin', 'url' => "{router page='blog'}admin/{$blogEdit->getId()}/", 'text' => $aLang.blog.admin.nav.users ]
|
||||
]}
|
|
@ -0,0 +1,26 @@
|
|||
{**
|
||||
* Навгиация создания топика
|
||||
*}
|
||||
|
||||
{$items = []}
|
||||
|
||||
{* Формируем список пунктов *}
|
||||
{$topicTypes = $LS->Topic_GetTopicTypes()}
|
||||
|
||||
{foreach $topicTypes as $type}
|
||||
{$items[] = [ 'name' => $type->getCode(), 'url' => $type->getUrlForAdd(), 'text' => $type->getName() ]}
|
||||
{/foreach}
|
||||
|
||||
{* Пункт "Черновики" *}
|
||||
{$items[] = [
|
||||
'name' => 'drafts',
|
||||
'url' => "{router page='content'}drafts/",
|
||||
'text' => $aLang.topic.drafts,
|
||||
'count' => $iUserCurrentCountTopicDraft
|
||||
]}
|
||||
|
||||
{component 'nav'
|
||||
name = 'create'
|
||||
activeItem = $sMenuSubItemSelect
|
||||
mods = 'pills'
|
||||
items = $items}
|
|
@ -0,0 +1,6 @@
|
|||
{component 'nav' name='main' activeItem=$sMenuHeadItemSelect mods='main' items=[
|
||||
[ 'text' => $aLang.topic.topics, 'url' => {router page='/'}, 'name' => 'blog' ],
|
||||
[ 'text' => $aLang.blog.blogs, 'url' => {router page='blogs'}, 'name' => 'blogs' ],
|
||||
[ 'text' => $aLang.user.users, 'url' => {router page='people'}, 'name' => 'people' ],
|
||||
[ 'text' => $aLang.activity.title, 'url' => {router page='stream'}, 'name' => 'stream' ]
|
||||
]}
|
|
@ -0,0 +1,15 @@
|
|||
{**
|
||||
* Навигация на странице личных сообщений
|
||||
*}
|
||||
|
||||
{component 'nav'
|
||||
name = 'talk'
|
||||
activeItem = $sMenuSubItemSelect
|
||||
mods = 'pills'
|
||||
items = [
|
||||
[ 'name' => 'inbox', 'url' => "{router page='talk'}", 'text' => $aLang.talk.nav.inbox ],
|
||||
[ 'name' => 'new', 'url' => "{router page='talk'}inbox/new/", 'text' => $aLang.talk.nav.new, 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $iUserCurrentCountTalkNew ],
|
||||
[ 'name' => 'add', 'url' => "{router page='talk'}add/", 'text' => $aLang.talk.nav.add ],
|
||||
[ 'name' => 'favourites', 'url' => "{router page='talk'}favourites/", 'text' => $aLang.talk.nav.favourites, 'count' => $iCountTalkFavourite ],
|
||||
[ 'name' => 'blacklist', 'url' => "{router page='talk'}blacklist/", 'text' => $aLang.talk.nav.blacklist ]
|
||||
]}
|
|
@ -0,0 +1,12 @@
|
|||
{**
|
||||
* Навигация по результатам поиска
|
||||
*}
|
||||
|
||||
{component 'nav'
|
||||
name = 'search'
|
||||
activeItem = $searchType
|
||||
mods = 'pills'
|
||||
items = [
|
||||
[ 'name' => 'topics', 'url' => "{router page='search/topics'}?q={$_aRequest.q}", 'text' => $aLang.search.result.topics, 'count' => $typeCounts.topics ],
|
||||
[ 'name' => 'comments', 'url' => "{router page='search/comments'}?q={$_aRequest.q}", 'text' => $aLang.search.result.comments, 'count' => $typeCounts.comments ]
|
||||
]}
|
|
@ -0,0 +1,14 @@
|
|||
{**
|
||||
* Навигация на странице настроек
|
||||
*}
|
||||
|
||||
{component 'nav'
|
||||
name = 'settings'
|
||||
activeItem = $sMenuSubItemSelect
|
||||
mods = 'pills'
|
||||
items = [
|
||||
[ 'url' => "{router page='settings'}profile/", 'text' => {lang name='user.settings.nav.profile'}, 'name' => 'profile' ],
|
||||
[ 'url' => "{router page='settings'}account/", 'text' => {lang name='user.settings.nav.account'}, 'name' => 'account' ],
|
||||
[ 'url' => "{router page='settings'}tuning/", 'text' => {lang name='user.settings.nav.tuning'}, 'name' => 'tuning' ],
|
||||
[ 'url' => "{router page='settings'}invite/", 'text' => {lang name='user.settings.nav.invites'}, 'name' => 'invite' ]
|
||||
]}
|