{% if is_external %}
	<article class="full-post">
		<h1 class="title">
			<a href="{{ link }}">{{ title }}</a>
		</h1>
		<p><br/>
			{% if entries %}
				{{ lang['comments:external.title'] }}
			{% endif %}
		</p>
	</article>
{% endif %}
<div class="comments" id="comments">
	<ul id="comments_list">
		<div id="new_comments_rev"></div>
		{{ entries|raw }}
		<div id="new_comments"></div>
	</ul>
</div>
{# Вынесено в отдельный шаблон comments.pagination.tpl. Если нужен кастом - переопределите его в теме. #}
{% if pagination and pagination.total > 1 %}
	<div class="pagination" id="comments_pagination">
		<ul>
			{# Ссылка «предыдущая» #}
			{% if pagination.prev.exists %}
				<li class="page-prev">
					<a href="{{ pagination.prev.url }}" rel="prev" aria-label="Previous" data-page="{{ pagination.prev.num }}">‹</a>
				</li>
			{% endif %}
			{# Основные элементы #}
			{% for p in pagination.pages %}
				{% if p.type == 'dots' %}
					<li class="page-dots">
						<span>...</span>
					</li>
				{% elseif p.type == 'current' %}
					<li class="page-current active">
						<span data-page="{{ p.num }}">{{ p.num }}</span>
					</li>
				{% elseif p.type == 'link' %}
					<li class="page-item">
						<a href="{{ p.url }}" data-page="{{ p.num }}">{{ p.num }}</a>
					</li>
				{% endif %}
			{% endfor %}
			{# Ссылка «следующая» #}
			{% if pagination.next.exists %}
				<li class="page-next">
					<a href="{{ pagination.next.url }}" rel="next" aria-label="Next" data-page="{{ pagination.next.num }}">›</a>
				</li>
			{% endif %}
		</ul>
	</div>
{% elseif more_comments %}
	{# Fallback: если по какой-то причине нет структуры, но есть готовый HTML #}
	<div class="pagination" id="comments_pagination">
		<ul>{{ more_comments|raw }}</ul>
	</div>
{% endif %}
{{ form|raw }}
{% if regonly %}
	<div class="alert alert-info">
		{{ lang['comments:alert.regonly']|raw }}
	</div>
{% endif %}
{% if commforbidden %}
	<div class="alert alert-info">
		{{ lang['comments:alert.forbidden'] }}
	</div>
{% endif %}
{% if not is_external %}
	<script>
		// Встроенная пагинация комментариев (AJAX подгрузка страниц внутри новости)
				// Inline версия скрипта (внешний файл дал 403). Повторная инициализация предотвращается.
				if(!window.__commentsPaginationInit){
					window.__commentsPaginationInit = true;
					(function(){
						var root = document;
						function findPagination(){ return root.getElementById('comments_pagination'); }
						function insertComments(html){
							var list = root.getElementById('comments_list'); if(!list){ return; }
							var anchorBottom = root.getElementById('new_comments');
							if(!anchorBottom){ anchorBottom = document.createElement('div'); anchorBottom.id='new_comments'; list.appendChild(anchorBottom); }
							var temp = document.createElement('div'); temp.innerHTML = html || '';
							var items = temp.querySelectorAll('li[id^="comment"]');
							items.forEach(function(li){
								if(!li.id){ return; }
								if(root.getElementById(li.id)){ return; }
								list.insertBefore(li, anchorBottom);
							});
						}
						function replacePagination(html){
							var pag = findPagination(); if(!pag){ return; }
							if(html && /id=["']comments_pagination["']/.test(html)){
								pag.outerHTML = html;
							} else {
								pag.innerHTML = html || '';
							}
						}
						function onClick(e){
							var a = e.target.closest ? e.target.closest('#comments_pagination a') : null;
							if(!a){ return; }
							// Отключаем обычный переход
							e.preventDefault();
							// Если активная или loading - игнор
							var liParent = a.closest('li');
							if((liParent && liParent.classList.contains('active')) || a.classList.contains('loading')){ return; }
							var url = a.getAttribute('href'); if(!url){ return; }
							var originalHTML = a.innerHTML; a.classList.add('loading'); a.innerHTML='⏳';
							url += (url.indexOf('?') >= 0 ? '&' : '?') + 'ajax=1&embedded=1';
							fetch(url, {headers:{'X-Requested-With':'XMLHttpRequest'}})
								.then(function(r){ return r.json(); })
								.then(function(data){
									if(!data || !data.status){ return; }
									insertComments(data.entries || '');
									replacePagination(data.pagination || '');
								})
								.finally(function(){ a.classList.remove('loading'); a.innerHTML = originalHTML; });
						}
						root.addEventListener('click', onClick, false);
					})();
				}
				</script>
				{% endif %}
