278 lines
13 KiB
Smarty
278 lines
13 KiB
Smarty
{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>
|
||
|
||
{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}
|
||
|
||
<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>
|
||
|
||
{* --- ВНЕДРЕНИЕ: ВЫБОР РЕЙТИНГА (ДОБАВЛЕН ID rating_wrapper) --- *}
|
||
{if $comment_show_user_rating == 1}
|
||
{if $smarty.session.user_group != '2' || $comment_rating_anon_set == 1}
|
||
<div class="mb-3" id="rating_wrapper">
|
||
<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>
|
||
<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 mb-1">
|
||
<span class="text-muted small"><i class="bi bi-paperclip me-1"></i> Прикрепить файлы</span>
|
||
</label>
|
||
|
||
<div class="small text-muted mb-2">
|
||
Разрешены: <span class="fw-bold">{$comment_allowed_extensions|default:'jpg, png, gif'}</span>.
|
||
Макс. размер: <span class="fw-bold">{$comment_max_file_size|default:'2048'} Кб</span>.
|
||
</div>
|
||
|
||
{* Ключевое изменение: name="comment_image[]" и атрибут multiple *}
|
||
<input type="file" name="comment_image[]" id="comment_image" class="form-control form-control-sm" multiple>
|
||
|
||
{* Контейнер для нескольких превью *}
|
||
<div id="image_preview_wrapper" class="mt-2 d-flex flex-wrap gap-2 d-none">
|
||
{* Сюда JS будет добавлять превью *}
|
||
</div>
|
||
|
||
<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>
|
||
<div id="file_error" class="text-danger small mt-1 d-none"></div>
|
||
</div>
|
||
{/if}
|
||
{/if}
|
||
|
||
{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> Обновить код</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">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-header bg-danger text-white">
|
||
<h5 class="modal-title">Подтверждение удаления</h5>
|
||
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></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>
|
||
|
||
<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}';
|
||
|
||
// --- ОБНОВЛЕННЫЕ ПЕРЕМЕННЫЕ ---
|
||
var SHOW_USER_RATING = '{$comment_show_user_rating|default:0}';
|
||
var SHOW_USER_RATING_REPLIES = '{$comment_show_user_rating_replies|default:0}';
|
||
var RATING_ANON_SET = '{$comment_rating_anon_set|default:0}';
|
||
var ALLOW_FILES_ANON = '{$comment_allow_files_anon|default:0}';
|
||
// --- ПЕРЕМЕННЫЕ ДЛЯ ВАЛИДАЦИИ ФАЙЛОВ ---
|
||
var ALLOWED_EXTENSIONS = '{$comment_allowed_extensions|default:"jpg,jpeg,png,gif"}';
|
||
var MAX_FILE_SIZE_KB = '{$comment_max_file_size|default:2048}';
|
||
</script>
|
||
<script src="{$ABS_PATH}modules/comment/js/comment.js" type="text/javascript"></script>
|
||
|
||
{/if}
|
||
{/if} |