c1aac7ecac
Co-authored-by: Cursor <cursoragent@cursor.com>
101 lines
3.9 KiB
HTML
101 lines
3.9 KiB
HTML
{% extends "base.html" %}
|
||
{% from "macros.html" import format_size %}
|
||
|
||
{% block title %}Личный кабинет — PhotoHost{% endblock %}
|
||
|
||
{% block content %}
|
||
<section class="page-header">
|
||
<div class="container">
|
||
<h1 class="page-header__title">Личный кабинет</h1>
|
||
<p class="page-header__subtitle">Привет, {{ current_user.username }}! Управляйте своими фотографиями.</p>
|
||
<div class="page-header__actions">
|
||
<a href="{{ url_for('folders.list_folders') }}" class="btn btn--primary">Мои папки</a>
|
||
<a href="{{ url_for('cabinet.profile') }}" class="btn btn--ghost">Настройки профиля</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
{% include "partials/alerts.html" %}
|
||
|
||
<section class="stats-bar">
|
||
<div class="container stats">
|
||
<div class="stat-card">
|
||
<span class="stat-card__value">{{ total_photos }}</span>
|
||
<span class="stat-card__label">ваших фото</span>
|
||
</div>
|
||
<div class="stat-card">
|
||
<span class="stat-card__value">{{ format_size(total_size) }}</span>
|
||
<span class="stat-card__label">занято места</span>
|
||
</div>
|
||
<div class="stat-card">
|
||
<span class="stat-card__value">до {{ max_upload_mb }} МБ</span>
|
||
<span class="stat-card__label">на файл</span>
|
||
</div>
|
||
</div>
|
||
{% if quota %}
|
||
<div class="container quota-bar-wrap">
|
||
<div class="quota-bar">
|
||
<div class="quota-bar__header">
|
||
<span>Квота: {{ quota.group.name if quota.group else 'Пользователи' }}</span>
|
||
<span>
|
||
{{ format_size(quota.used) }}
|
||
{% if not quota.unlimited %}
|
||
/ {{ quota.group.disk_quota_mb }} МБ
|
||
{% else %}
|
||
/ без лимита
|
||
{% endif %}
|
||
</span>
|
||
</div>
|
||
{% if not quota.unlimited %}
|
||
<div class="quota-bar__track">
|
||
<div class="quota-bar__fill {% if quota.percent > 90 %}quota-bar__fill--warn{% endif %}" style="width: {{ quota.percent }}%"></div>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
</section>
|
||
|
||
<section id="upload" class="upload-section">
|
||
<div class="container">
|
||
<h2 class="section-title">Загрузить фото</h2>
|
||
{% with folder_id=None, max_bulk_upload=max_bulk_upload %}
|
||
{% include "partials/upload_form.html" %}
|
||
{% endwith %}
|
||
</div>
|
||
</section>
|
||
|
||
{% if folders %}
|
||
<section class="gallery-section">
|
||
<div class="container">
|
||
<div class="gallery-header">
|
||
<h2 class="section-title">Недавние папки</h2>
|
||
<a href="{{ url_for('folders.list_folders') }}" class="btn btn--ghost btn--sm">Все папки</a>
|
||
</div>
|
||
<div class="folder-grid">
|
||
{% for folder in folders %}
|
||
<article class="folder-card">
|
||
<div class="folder-card__icon">📁</div>
|
||
<h3 class="folder-card__title">{{ folder.name }}</h3>
|
||
<p class="folder-card__meta">{{ folder.photo_count }} фото</p>
|
||
<a href="{{ url_for('folders.view_folder', folder_id=folder.id) }}" class="btn btn--ghost btn--sm">Открыть</a>
|
||
</article>
|
||
{% endfor %}
|
||
</div>
|
||
</div>
|
||
</section>
|
||
{% endif %}
|
||
|
||
<section class="gallery-section">
|
||
<div class="container">
|
||
<div class="gallery-header">
|
||
<h2 class="section-title">Мои фото</h2>
|
||
<span class="gallery-count">{{ total_photos }} фото</span>
|
||
</div>
|
||
{% with photos=photos, empty_title='У вас пока нет фото', empty_text='Загрузите первое изображение выше' %}
|
||
{% include "partials/photo_gallery.html" %}
|
||
{% endwith %}
|
||
</div>
|
||
</section>
|
||
{% endblock %}
|