{% extends 'nav.html.twig' %}
{% block content %}
{% if is_granted('ROLE_ADMIN') or is_granted('ROLE_MODERATOR')%}
<section style="padding-top: 4.4rem">
<div id="addCost" style="display: block;" onclick="showAddNewPostModal()" class="d-flex text-body-secondary border-bottom">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-plus-square" viewBox="0 0 16 16">
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"></path>
<path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"></path>
</svg>
</div>
</section>
{% endif %}
<div class="container" style="padding: 50px 0 0 0">
{% for post in posts %}
{% if loop.first %}
<div class="p-4 p-md-5 mb-4 text-white rounded bg-dark">
<div class="col-md-6 px-0">
<h1 class="display-4 fst-italic">{{ post.title }}</h1>
<p class="lead my-3">
{% if post.content | length > 150 %}
{{ post.content | slice (0, 150) ~ '...' }}
{% else %}
{{ post.content }}
{% endif %}
</p>
<p class="lead mb-0"><a href="/blog/singlePost/{{ post.id }}" class="text-white fw-bold stretched-link">Продолжить чтение...</a></p>
</div>
</div>
{% else %}
{% if loop.index == 2 %}
<div class="row mb-2">
{% endif %}
<div class="col-md-6" style="flex: 0 0 auto; width: 50%">
<div class="row g-0 border rounded overflow-hidden flex-md-row mb-4 h-md-250 position-relative" style="height: 250px; box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important; overflow: hidden">
<div class="col p-4 d-flex flex-column position-static" style="flex: 1 0 0; margin-top: 0">
<h3 class="mb-0">{{ post.title }}</h3>
<div class="mb-1 text-muted">{{ post.createdAt|date('d.m.y') }}</div>
<p class="card-text mb-auto">
{% if post.content | length > 100 %}
{{ post.content | slice (0, 100) ~ '...' }}
{% else %}
{{ post.content }}
{% endif %}
</p>
<a href="/blog/singlePost/{{ post.id }}" class="stretched-link">Продолжить чтение</a>
</div>
{% if post.imagePath is not null %}
<div class="col-auto d-none d-lg-block" style="flex: 0 0 auto; width: auto; margin-top: 0; padding-right: 0">
<img class="d-block img-fluid" width="200" height="250" style="object-fit: cover; height: 250px" src="/assets/images/{{ post.imagePath }}" alt="image">
</div>
{% endif %}
</div>
</div>
{% if loop.last %}
</div>
{% endif %}
{% endif %}
{% endfor %}
</div>
<div class="modal fade bd-example-modal-lg" id="addPostModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" style="max-width: 1000px">
<div class="modal-content" id="addPostModalContent" style="top: 100px;">
</div>
</div>
</div>
{% endblock %}
{% block pagescripts %}
<script>
/**
* Отправляет запрос на сервер, получает форму создания нового поста и помещает эту форму в модальное окно
*/
function showAddNewPostModal() {
let url = '/blog/addNewPost';
let modal = document.getElementById('addPostModalContent');
$('#addPostModal').on('hidden.bs.modal', function () {
closeModal();
});
sendGetRequest(url)
.then(function (response) {
modal.innerHTML = response;
openModal();
checkFilesCountEvent();
});
}
/**
* Отправляет заполненную форму на сервер
*/
function submitAddPostForm() {
event.preventDefault();
let form = document.getElementById('blogAddPostForm');
let formData = new FormData(form);
let url = '/blog/addNewPost';
sendPostRequest(url, formData)
.then(function () {
showSuccessAlert('Пост успешно добавлен');
location.reload()
});
}
/**
* Проверяет количество файлов загруженных в форму
*/
function checkFilesCountEvent() {
let input = document.getElementById('myInput');
let currentFile = null;
input.addEventListener('change', function() {
if (input.files.length > 0) {
if (currentFile) {
currentFile = null;
}
currentFile = input.files[0];
}
});
}
/**
* Открывает модальное окно
*/
function openModal() {
$('#addPostModal').modal('show');
}
/**
* Закрывает модальное окно
*/
function closeModal() {
$('#addPostModal').modal('hide');
}
</script>
{% endblock %}