{% 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>
{% 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 oldComments = list.querySelectorAll('li[id^="comment"]');
								oldComments.forEach(function(li){ li.remove(); });
	
								var temp = document.createElement('div'); temp.innerHTML = html || '';
								var items = temp.querySelectorAll('li[id^="comment"]');
								items.forEach(function(li){
									if(!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 %}
