feat: Add initial bulma version of adoption notice detail page

This commit is contained in:
moanos [he/him] 2025-04-07 21:30:14 +02:00
parent 388cc327be
commit e6a985ddfa
5 changed files with 166 additions and 10 deletions

View File

@ -12,12 +12,15 @@
<!-- Add additional CSS in static file -->
<link rel="stylesheet" href="{% static 'fellchensammlung/css/bulma-styles.css' %}">
<link rel="stylesheet" href="{% static 'fellchensammlung/css/bulma.min.css' %}">
<link rel="stylesheet" href="https://unpkg.com/photoswipe@5.2.2/dist/photoswipe.css">
<link href="{% static 'fontawesomefree/css/fontawesome.css' %}" rel="stylesheet" type="text/css">
<link href="{% static 'fontawesomefree/css/brands.css' %}" rel="stylesheet" type="text/css">
<link href="{% static 'fontawesomefree/css/solid.css' %}" rel="stylesheet" type="text/css">
<script src="{% static 'fellchensammlung/js/custom.js' %}"></script>
<script src="{% static 'fellchensammlung/js/toggles.js' %}"></script>
<script type="module" src="{% static 'fellchensammlung/js/photoswipe.js' %}"></script>
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'fellchensammlung/favicon/apple-touch-icon.png' %}">
<link rel="icon" type="image/png" sizes="32x32" href="{% static 'fellchensammlung/favicon/favicon-32x32.png' %}">

View File

@ -7,15 +7,15 @@
{% block content %}
<section class="section">
<div class="container">
<h1 class="title">
Hello World
</h1>
<p class="subtitle">
Notfellchen bald mit <strong>Bulma</strong>?
</p>
</div>
<div class="grid">
<div class="container">
<h1 class="title">
Hello World
</h1>
<p class="subtitle">
Notfellchen bald mit <strong>Bulma</strong>?
</p>
</div>
<div class="card">
<div class="card-image">
<figure class="image">

View File

@ -0,0 +1,125 @@
{% extends "fellchensammlung/base_bulma.html" %}
{% load custom_tags %}
{% load i18n %}
{% block title %}<title>{{ adoption_notice.name }}</title>{% endblock %}
{% block content %}
<div class="card">
<div class="card-header">
<h1 class="card-header-title is-1">{{ adoption_notice.name }}</h1>
</div>
<div class="card-content">
<div class="grid">
<div class="cell">
<!--- General Information --->
<div class="grid">
<div class="cell">
<h2><strong>{% translate "Ort" %}</strong></h2>
<p>{% if adoption_notice.location %}
{{ adoption_notice.location }}
{% else %}
{{ adoption_notice.location_string }}
{% endif %}</p>
</div>
{% if adoption_notice.organization %}
<div class="cell">
<h2 class="is-title-1">{% translate "Organisation" %}</h2>
<div>
<a href="{{ adoption_notice.organization.get_absolute_url }}">{{ adoption_notice.organization }}</a>
{% if adoption_notice.organization.trusted %}
<div class="tag"><i class="fa-solid fa-check"></i></div>
{% endif %}
</div>
</div>
{% endif %}
<div class="cell">
<h2>{% translate "Suchen seit" %}</h2>
<p>{{ adoption_notice.searching_since }}</p>
</div>
<div class="cell">
<h2>{% translate "Zuletzt aktualisiert" %}</h2>
<p>{{ adoption_notice.last_checked_hr }}</p>
</div>
<div class="cell">
<h2>{% translate "Weitere Informationen" %}</h2>
{% if adoption_notice.further_information %}
<form method="get" action="{% url 'external-site' %}">
<input type="hidden" name="url" value="{{ adoption_notice.further_information }}">
<button class="btn" type="submit" id="submit">
{{ adoption_notice.further_information | domain }} <i
class="fa-solid fa-arrow-up-right-from-square"></i>
</button>
</form>
{% else %}
-
{% endif %}
</div>
</div>
</div>
</div>
<hr>
<div class="grid">
<!--- Images --->
<div class="cell">
<h1>{% translate "Bilder" %}</h1>
<div class="grid">
{% for photo in adoption_notice.get_photos %}
<div class="cell" id="#my-gallery">
<img src="{{ MEDIA_URL }}/{{ photo.image }}" alt="{{ photo.alt_text }}">
</div>
{% endfor %}
</div>
</div>
<!--- Description --->
<div class="cell">
<div class="card">
<div class="card-header">
<h1>{% translate "Beschreibung" %}</h1>
</div>
<div class="card-content">
<p>{% if adoption_notice.description %}
{{ adoption_notice.description | render_markdown }}
{% else %}
{% translate "Keine Beschreibung angegeben" %}
{% endif %}
</p>
</div>
</div>
</div>
</div>
</div>r
<div class="card-footer">
{% if has_edit_permission %}
<div class="columns">
<div class="column">
<a class="button is-primary is-light"
href="{% url 'adoption-notice-add-photo' adoption_notice_id=adoption_notice.pk %}">
{% translate 'Foto hinzufügen' %}
</a>
</div>
<div class="column">
<a class="button is-primary"
href="{% url 'adoption-notice-edit' adoption_notice_id=adoption_notice.pk %}">
{% translate 'Bearbeiten' %}
</a>
</div>
</div>
{% endif %}
</div>
</div>
<div class="grid">
{% for animal in adoption_notice.animals %}
<div class="cell">
{% include "fellchensammlung/partials/partial-animal-card.html" %}
</div>
{% endfor %}
</div>
{% include "fellchensammlung/partials/partial-comment-section.html" %}
{% endblock %}

View File

@ -18,6 +18,7 @@ sitemaps = {
urlpatterns = [
path("", views.index, name="index"),
path("bulma/", views.index_bulma, name="index-bulma"),
path("rss/", LatestAdoptionNoticesFeed(), name="rss"),
path("metrics/", views.metrics, name="metrics"),
# ex: /animal/5/
@ -28,6 +29,7 @@ urlpatterns = [
path("tier/<int:animal_id>/add-photo", views.add_photo_to_animal, name="animal-add-photo"),
# ex: /adoption_notice/7/
path("vermittlung/<int:adoption_notice_id>/", views.adoption_notice_detail, name="adoption-notice-detail"),
path("bulma/vermittlung/<int:adoption_notice_id>/", views.adoption_notice_detail_bulma, name="adoption-notice-detail-bulma"),
# ex: /adoption_notice/7/edit
path("vermittlung/<int:adoption_notice_id>/edit", views.adoption_notice_edit, name="adoption-notice-edit"),
# ex: /vermittlung/5/add-photo

View File

@ -63,6 +63,22 @@ def index(request):
return render(request, 'fellchensammlung/index.html', context=context)
def index_bulma(request):
"""View function for home page of site."""
latest_adoption_list = AdoptionNotice.objects.filter(
adoptionnoticestatus__major_status=AdoptionNoticeStatus.ACTIVE).order_by("-created_at")
active_adoptions = [adoption for adoption in latest_adoption_list if adoption.is_active]
language_code = translation.get_language()
lang = Language.objects.get(languagecode=language_code)
active_announcements = Announcement.get_active_announcements(lang)
context = {"adoption_notices": active_adoptions[:5], "adoption_notices_map": active_adoptions,
"announcements": active_announcements}
Text.get_texts(["how_to", "introduction"], lang, context)
return render(request, 'fellchensammlung/bulma-index.html', context=context)
def change_language(request):
if request.method == 'POST':
language_code = request.POST.get('language')
@ -82,7 +98,7 @@ def change_language(request):
return render(request, 'fellchensammlung/index.html')
def adoption_notice_detail(request, adoption_notice_id):
def adoption_notice_detail(request, adoption_notice_id, template=None):
adoption_notice = AdoptionNotice.objects.get(id=adoption_notice_id)
if request.user.is_authenticated:
try:
@ -139,7 +155,17 @@ def adoption_notice_detail(request, adoption_notice_id):
comment_form = CommentForm(instance=adoption_notice)
context = {"adoption_notice": adoption_notice, "comment_form": comment_form, "user": request.user,
"has_edit_permission": has_edit_permission, "is_subscribed": is_subscribed}
return render(request, 'fellchensammlung/details/detail_adoption_notice.html', context=context)
print(f"{template=}")
if template is not None:
return render(request, template, context=context)
else:
print("dada")
return render(request, 'fellchensammlung/details/detail_adoption_notice.html', context=context)
def adoption_notice_detail_bulma(request, adoption_notice_id):
return adoption_notice_detail(request, adoption_notice_id,
template='fellchensammlung/details/bulma-detail-adoption-notice.html')
@login_required()