Files
comment/templates/comments_tree.tpl

304 lines
14 KiB
Smarty
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{if $display_comments==1}
{* ===================================================================== *}
{* ПРОВЕРКА ПРАВ НА ЧТЕНИЕ *}
{* ===================================================================== *}
{if $no_read_permission == 1}
<div class="alert alert-warning" role="alert">{#COMMENT_READ_FALSE#}</div>
{else}
{* ===================================================================== *}
{* БЛОК КОММЕНТАРИЕВ *}
{* ===================================================================== *}
<h3 class="mb-3">
{#COMMENT_SITE_TITLE#}
{if $closed==1 && $smarty.const.UGROUP!=1}
<span class="badge bg-secondary ms-2">{#COMMENT_SITE_CLOSED#}</span>
{/if}
</h3>
<div class="d-flex mb-4 align-items-center">
{* Кнопка "Добавить комментарий" - ведет к якорю формы *}
<a href="#end" class="btn btn-sm btn-outline-primary">
<i class="bi bi-plus-circle me-1"></i> {#COMMENT_SITE_ADD#}
</a>
{if $smarty.const.UGROUP==1}
{* Кнопки управления комментированием для Администратора *}
{if $closed==1}
<a id="mod_comment_open" href="javascript:void(0);" class="btn btn-sm btn-outline-success ms-3">
<i class="bi bi-lock-fill me-1"></i> {#COMMENT_SITE_OPEN#}
</a>
{else}
<a id="mod_comment_close" href="javascript:void(0);" class="btn btn-sm btn-outline-danger ms-3">
<i class="bi bi-unlock-fill me-1"></i> {#COMMENT_SITE_CLOSE#}
</a>
{/if}
{/if}
</div>
{if isset($comments[0])}
<div class="comments-list" id="comments_list">
{include file="$subtpl" subcomments=$comments[0]}
</div>
{/if}
<a id="end"></a>
{* ===================================================================== *}
{* ФОРМА ДОБАВЛЕНИЯ КОММЕНТАРИЯ *}
{* ===================================================================== *}
<div class="mt-5">
{if $closed==1 && $smarty.const.UGROUP!=1}
<div class="alert alert-info">{#COMMENT_NEW_CLOSED#}</div>
{elseif $cancomment!=1 && $smarty.const.UGROUP!=1}
<div class="alert alert-info">{#COMMENT_NEW_FALSE#}</div>
{else}
<div id="mod_comment_new" class="card shadow-sm">
<div class="card-header bg-light">
<h4 class="mb-0">{#COMMENT_NEW_TITLE#}</h4>
</div>
<div class="card-body p-4" id="forms">
<form method="post" action="{$ABS_PATH}" enctype="multipart/form-data">
<fieldset>
<legend class="d-none">Форма добавления комментария</legend>
{* Блок для имени и email *}
{if $smarty.session.user_group != '2'}
{* АВТОРИЗОВАННЫЙ ПОЛЬЗОВАТЕЛЬ *}
<div class="row mb-3">
<div class="col-md-6 mb-3 mb-md-0">
<label for="in_author_name_display" class="form-label">{#COMMENT_YOUR_NAME#}</label>
<input type="text" id="in_author_name_display" class="form-control" value="{$smarty.session.user_name|default:''|escape|stripslashes}" readonly />
</div>
<div class="col-md-6">
<label for="in_author_email_display" class="form-label">{#COMMENT_YOUR_EMAIL#}</label>
<input type="email" id="in_author_email_display" class="form-control" value="{$smarty.session.user_email|default:''|escape|stripslashes}" readonly />
</div>
</div>
<input name="comment_author_name" type="hidden" id="in_author_name" value="{$smarty.session.user_name|default:''|escape|stripslashes}" />
<input name="comment_author_email" type="hidden" id="in_author_email" value="{$smarty.session.user_email|default:''|escape|stripslashes}" />
{else}
{* ГОСТЬ *}
<div class="row mb-3">
<div class="col-md-6 mb-3 mb-md-0">
<label for="in_author_name" class="form-label">{#COMMENT_YOUR_NAME#}*</label>
<input name="comment_author_name" type="text" id="in_author_name" class="form-control" placeholder="{#COMMENT_YOUR_NAME#}" value="{$smarty.request.comment_author_name|default:''|escape|stripslashes}" />
</div>
<div class="col-md-6">
<label for="in_author_email" class="form-label">{#COMMENT_YOUR_EMAIL#}*</label>
<input name="comment_author_email" type="email" id="in_author_email" class="form-control" placeholder="{#COMMENT_YOUR_EMAIL#}" value="{$smarty.request.comment_author_email|default:''|escape|stripslashes}" />
</div>
</div>
{/if}
{* ДИНАМИЧЕСКИЕ ПОЛЯ (Field 1 и Field 2) *}
<div class="row mb-3">
{if $comment_show_f1 == 1}
<div class="col-md-6 mb-3 mb-md-0">
<label for="in_author_website" class="form-label">
{$comment_name_f1|default:#COMMENT_YOUR_SITE#} {if $comment_req_f1 == 1}*{else}(необязательно){/if}
</label>
<input name="comment_author_website" type="text" id="in_author_website" class="form-control" placeholder="{$comment_name_f1|default:#COMMENT_YOUR_SITE#}" value="{$smarty.request.comment_author_website|default:''|escape|stripslashes}" />
</div>
{/if}
{if $comment_show_f2 == 1}
<div class="col-md-6">
<label for="in_author_city" class="form-label">
{$comment_name_f2|default:#COMMENT_YOUR_FROM#} {if $comment_req_f2 == 1}*{else}(необязательно){/if}
</label>
<input name="comment_author_city" type="text" id="in_author_city" class="form-control" placeholder="{$comment_name_f2|default:#COMMENT_YOUR_FROM#}" value="{$smarty.request.comment_author_city|default:''|escape|stripslashes}" />
</div>
{/if}
</div>
{* Текст комментария *}
<div class="mb-3">
<label for="in_message" class="form-label">{#COMMENT_YOUR_TEXT#}*</label>
<textarea rows="8" name="comment_text" id="in_message" class="form-control" placeholder="{#COMMENT_YOUR_TEXT#}"></textarea>
</div>
{* --- ВНЕДРЕНИЕ: ВЫБОР РЕЙТИНГА АВТОРОМ С ПРОВЕРКОЙ НАСТРОЙКИ --- *}
{if $comment_show_user_rating == 1}
{* Показываем только если не гость ИЛИ если гостям разрешено в настройках *}
{if $smarty.session.user_group != '2' || $comment_rating_anon_set == 1}
<div class="mb-3">
<label class="form-label d-block small fw-bold text-muted text-uppercase mb-1">Оцените материал:</label>
<div class="d-flex align-items-center">
<div id="user_rating_stars" class="fs-4" style="color: #ffc107; display: inline-block;">
<i class="star-choice bi bi-star" data-value="1" title="Ужасно" style="cursor: pointer;"></i>
<i class="star-choice bi bi-star" data-value="2" title="Плохо" style="cursor: pointer;"></i>
<i class="star-choice bi bi-star" data-value="3" title="Нормально" style="cursor: pointer;"></i>
<i class="star-choice bi bi-star" data-value="4" title="Хорошо" style="cursor: pointer;"></i>
<i class="star-choice bi bi-star" data-value="5" title="Отлично" style="cursor: pointer;"></i>
</div>
<a href="javascript:void(0);" id="reset_stars" class="ms-3 text-decoration-none small text-muted" title="Убрать оценку">
<i class="bi bi-x-circle"></i> Сбросить
</a>
</div>
{* Скрытое поле, куда JS запишет выбранное число *}
<input name="comment_user_rating" type="hidden" id="comment_user_rating" value="0" />
</div>
{/if}
{/if}
{* --- КОНЕЦ ВНЕДРЕНИЯ --- *}
{* Оставшиеся символы *}
<p class="text-end text-muted small">
{#COMMENT_CHARS_LEFT#} <span class="charsLeft fw-bold" id="charsLeft_new"></span>
</p>
{* Блок загрузки изображения *}
{if $comment_allow_files == 1}
{* ПРОВЕРКА: Разрешено ли текущему пользователю загружать файлы *}
{if $smarty.session.user_group != '2' || $comment_allow_files_anon == 1}
<div class="mb-3">
<label for="comment_image" class="form-label text-muted small">
<i class="bi bi-camera me-1"></i> Прикрепить изображение (JPG, PNG, GIF)
</label>
<input type="file" name="comment_image" id="comment_image" class="form-control form-control-sm" accept="image/*">
{* Контейнер для превью *}
<div id="image_preview_wrapper" class="mt-2 d-none position-relative" style="width: fit-content;">
<img id="image_preview_img" src="#" alt="Предпросмотр" class="img-thumbnail" style="max-height: 120px;">
<button type="button" id="remove_image_btn" class="btn btn-danger btn-sm position-absolute top-0 end-0"
style="padding: 0 5px; margin: 2px;" title="Удалить фото">
<i class="bi bi-x-lg"></i>
</button>
</div>
{* --- НОВОЕ: ИНДИКАТОР ЗАГРУЗКИ (PROGRESS BAR) --- *}
<div id="upload_progress_container" class="mt-2 d-none">
<div class="progress" style="height: 8px;">
<div id="upload_progress_bar" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" style="width: 0%"></div>
</div>
<div id="upload_status_text" class="small text-muted mt-1">Загрузка: 0%</div>
</div>
{* --- КОНЕЦ ИНДИКАТОРА --- *}
<div id="file_error" class="text-danger small mt-1 d-none"></div>
</div>
{/if}
{/if}
{* CAPTCHA *}
{if $im}
<div class="row mb-3 align-items-center">
<div class="col-md-4">
<label for="securecode" class="form-label">{#COMMENT_FORM_CODE#}</label>
<div id="captcha_block">
<span id="captcha" class="d-block mb-1">
<img src="{$ABS_PATH}inc/captcha.php" alt="{#COMMENT_FORM_CODE#}" class="img-fluid border rounded" style="cursor: pointer;" width="120" height="60" border="0" />
</span>
<a href="javascript:void(0);" id="reload_captcha" class="small text-decoration-none text-muted">
<i class="bi bi-arrow-clockwise"></i> {if #COMMENT_RELOAD_CODE#}{#COMMENT_RELOAD_CODE#}{else}Обновить код{/if}
</a>
</div>
</div>
<div class="col-md-8">
<label for="securecode" class="form-label">{#COMMENT_FORM_CODE_ENTER#}*</label>
<input name="securecode" type="text" id="securecode" maxlength="10" class="form-control" placeholder="{#COMMENT_FORM_CODE_ENTER#}" />
</div>
</div>
{/if}
{* Кнопки отправки *}
<div class="mt-4">
<button type="submit" class="btn btn-success me-2">
<i class="bi bi-send-fill me-1"></i> {#COMMENT_BUTTON_ADD#}
</button>
<button type="reset" id="buttonReset" class="btn btn-secondary">
<i class="bi bi-x-circle me-1"></i> Сбросить
</button>
</div>
{* Скрытые поля *}
<input name="module" type="hidden" value="comment" />
<input name="action" type="hidden" value="comment" />
<input name="sub" type="hidden" value="send" />
<input name="doc_id" type="hidden" value="{$smarty.request.id|escape}" />
<input name="parent_id" id="parent_id" type="hidden" value="" />
<input name="page" type="hidden" value="{$page}" />
</fieldset>
</form>
</div>
</div>
{/if}
</div>
{if $page_nav}
<div class="page_navigation_box mt-4">
<nav aria-label="Comment Page Navigation">{$page_nav}</nav>
</div>
{/if}
{* Модальное окно удаления *}
<div class="modal fade" id="deleteCommentModal" tabindex="-1" aria-labelledby="deleteCommentModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-danger text-white">
<h5 class="modal-title" id="deleteCommentModalLabel">Подтверждение действия</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Закрыть"></button>
</div>
<div class="modal-body">
Вы уверены, что хотите **удалить этот комментарий**?
Это действие необратимо.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
<button type="button" class="btn btn-danger" id="confirmDeleteButton">Удалить комментарий</button>
</div>
</div>
</div>
</div>
{* ПЕРЕМЕННЫЕ JAVASCRIPT *}
<script type="text/javascript">
var COMMENT_SITE_CLOSE = '{#COMMENT_SITE_CLOSE#}';
var COMMENT_SITE_OPEN = '{#COMMENT_SITE_OPEN#}';
var COMMENT_LOCK_LINK = '{#COMMENT_LOCK_LINK#}';
var COMMENT_EDIT_LINK = '{#COMMENT_EDIT_LINK#}';
var COMMENT_EDIT_TITLE = '{#COMMENT_EDIT_TITLE#}';
var COMMENT_UNLOCK_LINK = '{#COMMENT_UNLOCK_LINK#}';
var COMMENT_ERROR_AUTHOR = '{#COMMENT_ERROR_AUTHOR#}';
var COMMENT_ERROR_EMAIL = '{#COMMENT_ERROR_EMAIL#}';
var COMMENT_ERROR_TEXT = '{#COMMENT_ERROR_TEXT#}';
var COMMENT_ERROR_CAPTCHA = '{#COMMENT_ERROR_CAPTCHA#}';
var COMMENT_BUTTON_EDIT = '{#COMMENT_BUTTON_EDIT#}';
var COMMENT_BUTTON_CANCEL = '{#COMMENT_BUTTON_CANCEL#}';
var COMMENT_CHARS_LEFT = '{#COMMENT_CHARS_LEFT#}';
var COMMENT_DATE_TIME_FORMAT = '{#COMMENT_DATE_TIME_FORMAT#}';
var COMMENT_TEXT_CHANGED = '{#COMMENT_TEXT_CHANGED#}';
var COMMENT_WRONG_CODE = '{#COMMENT_WRONG_CODE#}';
var REQ_F1 = '{$comment_req_f1}';
var REQ_F2 = '{$comment_req_f2}';
var NAME_F1 = '{$comment_name_f1|default:#COMMENT_YOUR_SITE#}';
var NAME_F2 = '{$comment_name_f2|default:#COMMENT_YOUR_FROM#}';
var UGROUP = '{$smarty.const.UGROUP}';
var IS_IM = '{$im}';
var DOC_ID = '{$doc_id}';
var MAX_CHARS = '{$comment_max_chars}';
var aveabspath = '{$ABS_PATH}';
// Глобальная переменная для JS
var SHOW_USER_RATING = '{$comment_show_user_rating|default:0}';
var RATING_ANON_SET = '{$comment_rating_anon_set|default:0}';
// ДОБАВЛЕНО: Настройка прав на загрузку для JS
var ALLOW_FILES_ANON = '{$comment_allow_files_anon|default:0}';
</script>
<script src="{$ABS_PATH}modules/comment/js/comment.js" type="text/javascript"></script>
<style>
.fade-out { opacity: 0; transition: opacity 0.5s ease; }
.italic { font-style: italic; }
</style>
{/if}
{/if}