2014-06-11 11:58:32 +03:00
|
|
|
|
{**
|
|
|
|
|
* Комментарий
|
|
|
|
|
*
|
2014-11-06 18:51:24 +02:00
|
|
|
|
* @param object $comment Комментарий
|
|
|
|
|
* @param boolean $useVote (true) Показывать или нет голосование
|
|
|
|
|
* @param boolean $useFavourite
|
|
|
|
|
* @param boolean $useScroll
|
|
|
|
|
* @param boolean $showReply (true) Показывать или нет кнопку Ответить
|
|
|
|
|
* @param integer $authorId
|
|
|
|
|
* @param string $authorText
|
|
|
|
|
* @param string $dateReadLast
|
2014-06-11 11:58:32 +03:00
|
|
|
|
*
|
2014-10-18 09:07:45 +03:00
|
|
|
|
* @param string $classes Дополнительные классы
|
|
|
|
|
* @param string $attributes Атрибуты
|
|
|
|
|
* @param string $mods Модификаторы
|
2014-06-11 11:58:32 +03:00
|
|
|
|
*}
|
|
|
|
|
|
|
|
|
|
{* Название компонента *}
|
2015-05-07 15:45:21 +03:00
|
|
|
|
{$component = 'ls-comment'}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{component_define_params params=[ 'dateReadLast', 'showPath', 'showReply', 'authorId', 'comment', 'useFavourite', 'useScroll', 'useVote', 'useEdit', 'mods', 'classes', 'attributes' ]}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{* Переменные *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{$useEdit = $useEdit|default:true}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
|
|
|
|
|
{$isDeleted = $comment->getDelete()}
|
|
|
|
|
{$user = $comment->getUser()}
|
|
|
|
|
{$commentId = $comment->getId()}
|
|
|
|
|
{$target = $comment->getTarget()}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{* Получаем ссылку на комментарий *}
|
|
|
|
|
{* TODO: Вынести в бэкенд *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{$permalink = ( Config::Get('module.comment.use_nested') ) ? "{router page='comments'}{$commentId}" : "{if $target}{$target->getUrl()}{/if}#comment{$commentId}"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{**
|
|
|
|
|
* Добавляем модификаторы
|
|
|
|
|
*}
|
|
|
|
|
|
|
|
|
|
{* Комментарий с отрицательным рейтингом *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $useVote && $comment->isBad()}
|
2014-10-18 09:07:45 +03:00
|
|
|
|
{$mods = "$mods bad"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Автор комментария является автором объекта к которому оставлен комментарий *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $authorId == $user->getId()}
|
2014-10-18 09:07:45 +03:00
|
|
|
|
{$mods = "$mods author"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Комментарий удален *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{if $isDeleted}
|
2014-10-18 09:07:45 +03:00
|
|
|
|
{$mods = "$mods deleted"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{* Комментарий текущего залогиненого пользователя *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{elseif $oUserCurrent && $comment->getUserId() == $oUserCurrent->getId()}
|
2014-10-18 09:07:45 +03:00
|
|
|
|
{$mods = "$mods self"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{* Непрочитанный комментарий *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{elseif $dateReadLast && strtotime($dateReadLast) <= strtotime($comment->getDate())}
|
2014-10-18 09:07:45 +03:00
|
|
|
|
{$mods = "$mods new"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{**
|
|
|
|
|
* Комментарий
|
2014-11-06 18:51:24 +02:00
|
|
|
|
* Атрибут id используется для ссылки на комментарий через хэш в урл (например #comment123)
|
2014-06-11 11:58:32 +03:00
|
|
|
|
*}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
<section class = "{$component} {cmods name=$component mods=$mods} {$classes} open js-comment"
|
2014-11-06 18:51:24 +02:00
|
|
|
|
id = "comment{$commentId}"
|
|
|
|
|
data-id = "{$commentId}"
|
2015-01-27 15:25:52 +02:00
|
|
|
|
data-parent-id = "{$comment->getPid()}"
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{cattr list=$attributes}>
|
2015-06-11 19:41:06 +03:00
|
|
|
|
{* @hook Начало комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_comment_begin' params=$params}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
2015-10-23 19:15:33 +03:00
|
|
|
|
{* Путь до комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $showPath}
|
2015-10-23 19:15:33 +03:00
|
|
|
|
<div class="{$component}-path">
|
2015-11-04 13:42:40 +02:00
|
|
|
|
{$target = $comment->getTarget()}
|
2015-10-23 19:15:33 +03:00
|
|
|
|
|
2015-11-04 13:42:40 +02:00
|
|
|
|
<a href="{$target->getUrl()}" class="{$component}-path-target">{$target->getTitle()|escape}</a>
|
|
|
|
|
<a href="{$target->getUrl()}#comments" class="{$component}-path-comments">({$target->getCountComment()})</a>
|
2015-10-23 19:15:33 +03:00
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
|
|
|
|
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{* Показываем удаленные комментарии только администраторам *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{if ! $isDeleted || ( $oUserCurrent && $oUserCurrent->isAdministrator() )}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{* Аватар пользователя *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
<a href="{$user->getUserWebPath()}" class="{$component}-avatar">
|
|
|
|
|
<img src="{$user->getProfileAvatarPath(64)}" alt="{$user->getDisplayName()}" />
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</a>
|
|
|
|
|
|
2015-10-23 19:15:33 +03:00
|
|
|
|
{* Избранное *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $oUserCurrent && $useFavourite}
|
2015-10-23 19:15:33 +03:00
|
|
|
|
{component 'favourite' classes="{$component}-favourite js-comment-favourite" target=$comment}
|
|
|
|
|
{/if}
|
|
|
|
|
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{* Информация *}
|
2015-10-28 13:00:45 +02:00
|
|
|
|
<ul class="{$component}-info ls-clearfix">
|
2015-06-11 19:41:06 +03:00
|
|
|
|
{* @hook Начало блока с информацией *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_info_begin' params=$params}
|
2015-06-11 19:41:06 +03:00
|
|
|
|
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{* Автор комментария *}
|
2016-07-15 08:17:53 +03:00
|
|
|
|
{component 'comment.info-item'
|
|
|
|
|
classes="{$component}-username"
|
|
|
|
|
link=[ url => $user->getUserWebPath() ]
|
|
|
|
|
text=$user->getDisplayName()}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{* Дата добавления комментария *}
|
|
|
|
|
{* Так же является ссылкой на комментарий *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
<li class="{$component}-date">
|
|
|
|
|
<a href="{$permalink}" title="{$aLang.comments.comment.url}">
|
2014-12-17 10:48:59 +02:00
|
|
|
|
<time datetime="{date_format date=$comment->getDate() format='c'}" title="{date_format date=$comment->getDate() format="j F Y, H:i"}">
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{date_format date=$comment->getDate() hours_back="12" minutes_back="60" now="60" day="day H:i" format="j F Y, H:i"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</time>
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
{* Прокрутка к родительскому комментарию *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $useScroll|default:true}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{if $comment->getPid()}
|
2016-07-15 08:17:53 +03:00
|
|
|
|
<li class="{$component}-scroll-to {$component}-scroll-to-parent js-comment-scroll-to-parent"
|
|
|
|
|
title="{$aLang.comments.comment.scroll_to_parent}">↑</li>
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Прокрутка к дочернему комментарию *}
|
2016-07-15 08:17:53 +03:00
|
|
|
|
<li class="{$component}-scroll-to {$component}-scroll-to-child js-comment-scroll-to-child"
|
|
|
|
|
title="{$aLang.comments.comment.scroll_to_child}">↓</li>
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Голосование *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $useVote}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
<li>
|
|
|
|
|
{* Блокируем голосование для гостей или если залогиненый пользователь является автором комментария*}
|
2015-01-03 10:19:49 +02:00
|
|
|
|
{component 'vote'
|
2015-05-07 15:45:21 +03:00
|
|
|
|
classes = "{$component}-vote js-comment-vote"
|
2015-01-27 15:25:52 +02:00
|
|
|
|
target = $comment
|
|
|
|
|
isLocked = ($oUserCurrent && $oUserCurrent->getId() == $user->getId()) || strtotime($comment->getDate()) < $smarty.now - Config::Get('acl.vote.comment.limit_time')}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</li>
|
|
|
|
|
{/if}
|
|
|
|
|
|
2015-06-11 19:41:06 +03:00
|
|
|
|
{* @hook Конец блока с информацией *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_info_end' params=$params}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
{* Текст комментария *}
|
2015-06-11 19:41:06 +03:00
|
|
|
|
<div class="{$component}-content">
|
|
|
|
|
{* @hook Начало блока с содержимым комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_content_begin' params=$params}
|
2015-06-11 19:41:06 +03:00
|
|
|
|
|
|
|
|
|
<div class="{$component}-text ls-text">
|
|
|
|
|
{$comment->getText()}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{* @hook Конец блока с содержимым комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_content_end' params=$params}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{* Информация о редактировании *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{if $comment->getDateEdit()}
|
|
|
|
|
<div class="{$component}-edit-info">
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{$aLang.comments.comment.edit_info}:
|
|
|
|
|
|
2015-05-07 15:45:21 +03:00
|
|
|
|
<span class="{$component}-edit-info-time js-comment-edit-time">
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{date_format date=$comment->getDateEdit() hours_back="12" minutes_back="60" now="60" day="day H:i" format="j F Y, H:i"}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</span>
|
|
|
|
|
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{if $comment->getCountEdit() > 1}
|
|
|
|
|
({$comment->getCountEdit()} {$comment->getCountEdit()|declension:$aLang.common.times_declension})
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Действия *}
|
2015-10-28 13:00:45 +02:00
|
|
|
|
<ul class="{$component}-actions ls-clearfix">
|
2015-06-11 19:41:06 +03:00
|
|
|
|
{* @hook Начало списка экшенов комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_actions_begin' params=$params}
|
2015-06-11 19:41:06 +03:00
|
|
|
|
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{* Ответить *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $oUserCurrent && ! $isDeleted && $showReply|default:true}
|
2017-01-26 16:35:10 +02:00
|
|
|
|
{component 'comment.actions-item'
|
|
|
|
|
link=[ classes => 'js-comment-reply', attributes => [ 'data-id' => $commentId ] ]
|
|
|
|
|
text=$aLang.comments.comment.reply}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Сворачивание *}
|
2017-01-26 16:35:10 +02:00
|
|
|
|
{component 'comment.actions-item'
|
2017-01-26 16:39:13 +02:00
|
|
|
|
classes="{$component}-fold open"
|
|
|
|
|
link=[ classes => 'js-comment-fold', attributes => [ 'data-id' => $commentId ] ]
|
2017-01-26 16:35:10 +02:00
|
|
|
|
text=$aLang.comments.folding.fold}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
|
|
|
|
|
{* Редактировать *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{if $useEdit && $oUserCurrent && $comment->IsAllowEdit()}
|
2017-01-26 16:35:10 +02:00
|
|
|
|
{capture assign="ls_comment_edit_text"}
|
|
|
|
|
{$aLang.common.edit}
|
|
|
|
|
|
|
|
|
|
{* Отображение времени отведенного для редактирования *}
|
|
|
|
|
{* Используется плагин jquery.timers *}
|
|
|
|
|
{if $comment->getEditTimeRemaining()}
|
|
|
|
|
(<span class="js-comment-update-timer" data-seconds="{$comment->getEditTimeRemaining()}">...</span>)
|
|
|
|
|
{/if}
|
|
|
|
|
{/capture}
|
|
|
|
|
|
|
|
|
|
{component 'comment.actions-item'
|
|
|
|
|
link=[ classes => 'js-comment-update', attributes => [ 'data-id' => $commentId ] ]
|
|
|
|
|
text=$ls_comment_edit_text}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{* Удалить *}
|
2014-11-06 18:51:24 +02:00
|
|
|
|
{if $oUserCurrent && $comment->IsAllowDelete()}
|
2016-07-15 08:17:53 +03:00
|
|
|
|
{component 'comment.actions-item'
|
|
|
|
|
link=[ classes => 'js-comment-remove', attributes => [ 'data-id' => $commentId ] ]
|
|
|
|
|
text=(( $isDeleted ) ? $aLang.comments.comment.restore : $aLang.common.remove)}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
{/if}
|
2015-06-11 19:41:06 +03:00
|
|
|
|
|
|
|
|
|
{* @hook Конец списка экшенов комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_actions_end' params=$params}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</ul>
|
|
|
|
|
{else}
|
|
|
|
|
{$aLang.comments.comment.deleted}
|
|
|
|
|
{/if}
|
2015-06-11 19:41:06 +03:00
|
|
|
|
|
|
|
|
|
{* @hook Конец комментария *}
|
2016-04-07 12:40:28 +03:00
|
|
|
|
{hook run='comment_comment_end' params=$params}
|
2014-06-11 11:58:32 +03:00
|
|
|
|
</section>
|