{** * Комментарий * * @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 * * @param string $classes Дополнительные классы * @param string $attributes Атрибуты * @param string $mods Модификаторы *} {* Название компонента *} {$component = 'ls-comment'} {component_define_params params=[ 'hookPrefix', 'dateReadLast', 'showPath', 'showReply', 'authorId', 'comment', 'useFavourite', 'useScroll', 'useVote', 'useEdit', 'mods', 'classes', 'attributes' ]} {* Переменные *} {$useEdit = $useEdit|default:true} {$hookPrefix = $hookPrefix|default:'comment'} {$isDeleted = $comment->getDelete()} {$user = $comment->getUser()} {$commentId = $comment->getId()} {$target = $comment->getTarget()} {* Получаем ссылку на комментарий *} {* TODO: Вынести в бэкенд *} {$permalink = ( Config::Get('module.comment.use_nested') ) ? "{router page='comments'}{$commentId}" : "{if $target}{$target->getUrl()}{/if}#comment{$commentId}"} {** * Добавляем модификаторы *} {* Комментарий с отрицательным рейтингом *} {if $useVote && $comment->isBad()} {$mods = "$mods bad"} {/if} {* Автор комментария является автором объекта к которому оставлен комментарий *} {if $authorId == $user->getId()} {$mods = "$mods author"} {/if} {* Комментарий удален *} {if $isDeleted} {$mods = "$mods deleted"} {* Комментарий текущего залогиненого пользователя *} {elseif $oUserCurrent && $comment->getUserId() == $oUserCurrent->getId()} {$mods = "$mods self"} {* Непрочитанный комментарий *} {elseif $dateReadLast && strtotime($dateReadLast) <= strtotime($comment->getDate())} {$mods = "$mods new"} {/if} {** * Комментарий * Атрибут id используется для ссылки на комментарий через хэш в урл (например #comment123) *}
{* @hook Начало комментария *} {hook run="{$hookPrefix}_comment_begin" params=$params} {* Путь до комментария *} {if $showPath}
{$target = $comment->getTarget()} {$target->getTitle()|escape} ({$target->getCountComment()})
{/if} {* Показываем удаленные комментарии только администраторам *} {if ! $isDeleted || ( $oUserCurrent && $oUserCurrent->isAdministrator() )} {* Аватар пользователя *} {$user->getDisplayName()} {* Избранное *} {if $oUserCurrent && $useFavourite} {component 'favourite' classes="{$component}-favourite js-comment-favourite" target=$comment} {/if} {* Информация *} {* Текст комментария *}
{* @hook Начало блока с содержимым комментария *} {hook run="{$hookPrefix}_content_begin" params=$params}
{$comment->getText()}
{* @hook Конец блока с содержимым комментария *} {hook run="{$hookPrefix}_content_end" params=$params}
{* Информация о редактировании *} {if $comment->getDateEdit()}
{$aLang.comments.comment.edit_info}: {date_format date=$comment->getDateEdit() hours_back="12" minutes_back="60" now="60" day="day H:i" format="j F Y, H:i"} {if $comment->getCountEdit() > 1} ({$comment->getCountEdit()} {$comment->getCountEdit()|declension:$aLang.common.times_declension}) {/if}
{/if} {* Действия *} {else} {$aLang.comments.comment.deleted} {/if} {* @hook Конец комментария *} {hook run="{$hookPrefix}_comment_end" params=$params}