| {% extends "base.html" %} |
|
|
| {% block title %}Home - Galeri Angkatan{% endblock %} |
|
|
| {% block content %} |
| <div class="row"> |
| <div class="col-12"> |
| <h1 class="text-center mb-4">Galeri Foto Angkatan</h1> |
| </div> |
| </div> |
|
|
| |
| {% if trending %} |
| <div class="row mb-5"> |
| <div class="col-12"> |
| <h2 class="mb-3"> |
| <i class="bi bi-fire text-danger"></i> Trending Photos |
| </h2> |
| </div> |
| {% for photo in trending %} |
| <div class="col-md-4 mb-4"> |
| <div class="card trending-card h-100"> |
| <div class="position-relative"> |
| <img src="{{ url_for('static', filename='uploads/' + photo.filename) }}" |
| class="card-img-top" alt="{{ photo.caption }}"> |
| <div class="trending-badge"> |
| <i class="bi bi-fire"></i> #{{ loop.index }} |
| </div> |
| </div> |
| <div class="card-body"> |
| <p class="card-text">{{ photo.caption or 'Foto angkatan' }}</p> |
| <div class="d-flex justify-content-between align-items-center"> |
| <small class="text-muted"> |
| <i class="bi bi-heart-fill text-danger"></i> {{ photo.likes_count }} likes |
| </small> |
| <small class="text-muted"> |
| <i class="bi bi-calendar"></i> {{ photo.upload_date.strftime('%d/%m/%Y') }} |
| </small> |
| </div> |
| </div> |
| </div> |
| </div> |
| {% endfor %} |
| </div> |
| {% endif %} |
|
|
| |
| <div class="row"> |
| <div class="col-12"> |
| <h2 class="mb-3">Semua Foto</h2> |
| </div> |
| |
| <div id="photos-container" class="row"> |
| {% for photo in photos.items %} |
| <div class="col-md-4 col-sm-6 mb-4 photo-item" data-photo-id="{{ photo.id }}"> |
| <div class="card photo-card h-100"> |
| <img src="{{ url_for('static', filename='uploads/' + photo.filename) }}" |
| class="card-img-top" alt="{{ photo.caption }}"> |
| <div class="card-body"> |
| <p class="card-text">{{ photo.caption or 'Foto angkatan' }}</p> |
| <div class="d-flex justify-content-between align-items-center mb-2"> |
| <small class="text-muted"> |
| <i class="bi bi-person-circle"></i> {{ photo.uploader.username }} |
| </small> |
| <small class="text-muted"> |
| <i class="bi bi-calendar"></i> {{ photo.upload_date.strftime('%d/%m/%Y') }} |
| </small> |
| </div> |
| <div class="d-flex justify-content-between align-items-center"> |
| <button class="btn btn-outline-danger btn-sm like-btn" data-photo-id="{{ photo.id }}"> |
| <i class="bi bi-heart{% if current_user.is_authenticated and photo.likes|selectattr('user_id', 'equalto', current_user.id)|list %}-fill{% endif %}"></i> |
| <span class="likes-count">{{ photo.likes_count }}</span> |
| </button> |
| <a href="{{ url_for('download_photo', photo_id=photo.id) }}" class="btn btn-outline-primary btn-sm"> |
| <i class="bi bi-download"></i> Download |
| </a> |
| </div> |
| </div> |
| </div> |
| </div> |
| {% endfor %} |
| </div> |
| |
| |
| {% if photos.pages > 1 %} |
| <div class="col-12"> |
| <nav aria-label="Page navigation"> |
| <ul class="pagination justify-content-center"> |
| {% if photos.has_prev %} |
| <li class="page-item"> |
| <a class="page-link" href="{{ url_for('index', page=photos.prev_num) }}">Previous</a> |
| </li> |
| {% endif %} |
| |
| {% for page_num in photos.iter_pages(left_edge=1, right_edge=1, left_current=2, right_current=2) %} |
| {% if page_num %} |
| <li class="page-item {% if page_num == photos.page %}active{% endif %}"> |
| <a class="page-link" href="{{ url_for('index', page=page_num) }}">{{ page_num }}</a> |
| </li> |
| {% else %} |
| <li class="page-item disabled"><span class="page-link">...</span></li> |
| {% endif %} |
| {% endfor %} |
| |
| {% if photos.has_next %} |
| <li class="page-item"> |
| <a class="page-link" href="{{ url_for('index', page=photos.next_num) }}">Next</a> |
| </li> |
| {% endif %} |
| </ul> |
| </nav> |
| </div> |
| {% endif %} |
| </div> |
| {% endblock %} |