| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- div(class="admin-blog")
- div(class="admin-blog__header")
- h1(class="admin-blog__title") Управление блогом
- button(
- @click="showArticleModal = true"
- class="admin-blog__add-btn"
- ) Новая статья
-
- div(class="admin-blog__content")
- div(class="admin-blog__filters")
- div(class="admin-blog__filter-group")
- label(class="admin-blog__label") Поиск
- input(
- v-model="searchQuery"
- type="text"
- class="admin-blog__input"
- placeholder="Поиск по заголовку..."
- )
-
- div(class="admin-blog__filter-group")
- label(class="admin-blog__label") Статус
- select(v-model="selectedStatus" class="admin-blog__select")
- option(value="") Все
- option(value="published") Опубликованные
- option(value="draft") Черновики
-
- div(class="admin-blog__list")
- div(
- v-for="article in filteredArticles"
- :key="article._id"
- class="admin-blog__item"
- )
- div(class="admin-blog__item-content")
- div(class="admin-blog__item-image")
- img(
- v-if="article.image"
- :src="article.image"
- :alt="article.title"
- class="admin-blog__image"
- )
- div(v-else class="admin-blog__no-image") Нет изображения
-
- div(class="admin-blog__item-info")
- h3(class="admin-blog__item-title") {{ article.title }}
- p(class="admin-blog__item-excerpt") {{ article.excerpt || 'Без описания' }}
- div(class="admin-blog__item-meta")
- span(class="admin-blog__item-date") {{ formatDate(article.createdAt) }}
- span(class="admin-blog__item-author") {{ article.author || 'Автор не указан' }}
- span(
- :class="getStatusClass(article.published)"
- ) {{ article.published ? 'Опубликовано' : 'Черновик' }}
-
- div(class="admin-blog__item-actions")
- button(
- @click="editArticle(article)"
- class="admin-blog__btn admin-blog__btn--edit"
- ) Редактировать
- button(
- @click="toggleArticleStatus(article)"
- :class="getToggleBtnClass(article.published)"
- ) {{ article.published ? 'В черновик' : 'Опубликовать' }}
- button(
- @click="deleteArticle(article._id)"
- class="admin-blog__btn admin-blog__btn--delete"
- ) Удалить
-
- // Модальное окно статьи
- div(v-if="showArticleModal" class="admin-blog__modal")
- div(class="admin-blog__modal-content")
- h3(class="admin-blog__modal-title") {{ editingArticle ? 'Редактирование' : 'Создание' }} статьи
-
- div(class="admin-blog__modal-form")
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") Заголовок
- input(
- v-model="articleForm.title"
- type="text"
- class="admin-blog__input"
- placeholder="Введите заголовок статьи"
- )
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") URL slug
- input(
- v-model="articleForm.slug"
- type="text"
- class="admin-blog__input"
- placeholder="url-slug"
- )
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") Краткое описание
- textarea(
- v-model="articleForm.excerpt"
- class="admin-blog__textarea"
- placeholder="Краткое описание статьи"
- rows="3"
- )
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") Ссылка на изображение
- input(
- v-model="articleForm.image"
- type="text"
- class="admin-blog__input"
- placeholder="https://example.com/image.jpg"
- )
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") Автор
- input(
- v-model="articleForm.author"
- type="text"
- class="admin-blog__input"
- placeholder="Имя автора"
- )
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") Содержание (Markdown)
- textarea(
- v-model="articleForm.content"
- class="admin-blog__textarea admin-blog__textarea--content"
- placeholder="Напишите содержание статьи в формате Markdown..."
- rows="10"
- )
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__checkbox-label")
- input(
- v-model="articleForm.published"
- type="checkbox"
- class="admin-blog__checkbox"
- )
- span Опубликовать сразу
-
- div(class="admin-blog__form-group")
- label(class="admin-blog__label") Домены
- div(class="admin-blog__domains-list")
- label(
- v-for="domain in availableDomains"
- :key="domain._id"
- class="admin-blog__domain-label"
- )
- input(
- type="checkbox"
- :value="domain.domain"
- v-model="articleForm.domains"
- class="admin-blog__domain-checkbox"
- )
- span {{ domain.domain }}
-
- div(class="admin-blog__modal-actions")
- button(
- @click="saveArticle"
- class="admin-blog__btn admin-blog__btn--primary"
- ) {{ editingArticle ? 'Обновить' : 'Создать' }}
- button(
- @click="showArticleModal = false"
- class="admin-blog__btn admin-blog__btn--secondary"
- ) Отмена
|