Refactor question review and form templates to use innerHTML for HTMX swaps, enhancing dynamic content updates

This commit is contained in:
Ross
2025-10-22 21:32:57 +01:00
parent b417266e56
commit 55621b2dcc
5 changed files with 43 additions and 26 deletions
@@ -9,7 +9,7 @@
</div>
</div>
<div>
<button class="btn btn-sm btn-outline-secondary" hx-get="{% url app_name|add:':question_set_review' question.pk %}?edit=1" hx-target="#question-review-block" hx-swap="outerHTML">Edit</button>
<button class="btn btn-sm btn-outline-secondary" hx-get="{% url app_name|add:':question_set_review' question.pk %}?edit=1" hx-target="#question-review-block" hx-swap="innerHTML">Edit</button>
</div>
</div>
</div>
@@ -1,7 +1,7 @@
<form method="post"
hx-post="{% url app_name|add:':question_set_review' question.pk %}?edit=1"
hx-target="#question-review-block"
hx-swap="outerHTML"
hx-swap="innerHTML"
class="d-flex gap-2 align-items-start">
{% csrf_token %}
<div class="form-select-sm">
@@ -15,6 +15,6 @@
<input type="text" name="comment" class="form-control form-control-sm" placeholder="Comment (optional)" value="{% if latest %}{{ latest.comment }}{% endif %}">
<div>
<button class="btn btn-sm btn-primary" type="submit">Save</button>
<button class="btn btn-sm btn-outline-secondary" type="button" hx-get="{{ request.path }}" hx-target="#question-review-block" hx-swap="outerHTML">Cancel</button>
<button class="btn btn-sm btn-outline-secondary" type="button" hx-get="{{ request.path }}" hx-target="#question-review-block" hx-swap="innerHTML">Cancel</button>
</div>
</form>
+1
View File
@@ -26,6 +26,7 @@ class Category(models.Model):
return self.category
@reversion.register
class Question(QuestionBase):
title = models.CharField(max_length=200, help_text="Short title for question", blank=True, null=True)
stem = models.TextField(
+21 -12
View File
@@ -1,29 +1,38 @@
{% extends 'sbas/base.html' %}
{% block content %}
<div class="card mb-4">
<div class="card-body">
<div id="question-review-block" hx-get="{% url 'sbas:question_set_review' question.pk %}" hx-trigger="load" hx-swap="innerHTML">
{# Placeholder while HTMX fetches review/form #}
</div>
<div class="d-flex justify-content-between align-items-start mb-3 flex-column flex-md-row">
<div>
<h2 class="h4 mb-1">{{ question.title|default:"(No title set)" }}</h2>
<div class="text-muted small">Created: {{ question.created_date|date:"d/m/Y" }}</div>
</div>
{% load partials %}
{% partialdef links-partial %}
<div class="btn-group mt-3 mt-md-0" role="group" aria-label="Actions">
<a class="btn btn-sm btn-outline-primary" href="{% url 'sbas:question_update' question.id %}">Edit</a>
<a class="btn btn-sm btn-outline-secondary" href="{% url 'sbas:question_clone' question.id %}">Clone</a>
<a class="btn btn-sm btn-outline-danger" href="{% url 'sbas:question_delete' pk=question.pk %}">Delete</a>
<a class="btn btn-sm btn-outline-light" href="{% url 'admin:sbas_question_change' question.id %}">Admin</a>
<button class="btn btn-sm btn-outline-info" onclick="return window.create_popup_window('{% url 'feedback_create' question_type='sbas' pk=question.pk %}')">Add Note</button>
<button class="btn btn-sm btn-outline-success" hx-get="{% url 'sbas:question_set_review' question.pk %}?edit=1&new=1" hx-target="#question-review-block" hx-swap="outerHTML">Add Review</button>
<button class="btn btn-sm btn-outline-success" hx-get="{% url 'sbas:question_set_review' question.pk %}?edit=1&new=1" hx-target="#question-review-block" hx-swap="innerHTML">Add Review</button>
</div>
{% endpartialdef %}
{% block content %}
<div class="card mb-4">
<div class="card-body">
<div class="d-flex justify-content-between align-items-start mb-3 flex-column flex-md-row">
<div>
<h2 class="h4 mb-1">{{ question.title|default:"(No title set)" }}</h2>
<div class="text-muted small">Created: {{ question.created_date|date:"d/m/Y" }}</div>
</div>
{% partial links-partial %}
</div>
<div class="row">
<div class="col-12 col-lg-8">
<div class="mb-3">
<div>Review status:
<div id="question-review-block" hx-get="{% url 'sbas:question_set_review' question.pk %}" hx-trigger="load" hx-swap="innerHTML">
{# Placeholder while HTMX fetches review/form #}
</div>
</div>
{% autoescape off %}
<div class="card p-3 bg-body-secondary">{{ question.stem }}</div>
<ol class="abcde list-group list-group-numbered mt-3">
+18 -11
View File
@@ -1,23 +1,30 @@
{% extends "sbas/base.html" %}
{% load static %}
{% load partials %}
{% block js %}
<!--<script type="text/javascript" src="/admin/jsi18n/"></script>-->
<script type="text/javascript">
</script>
<script type="text/javascript">
</script>
{{ form.media }}
{{ form.media }}
{% endblock %}
{% block content %}
<h2>Submit Question</h2>
<form action="" method="post" enctype="multipart/form-data" id="anatomyquestion-form">
{% csrf_token %}
<div class="d-flex justify-content-between align-items-start mb-3 flex-column flex-md-row">
<div>
<h2>Submit Question</h2>
</div>
{% include "sbas/question_detail.html#links-partial" %}
</div>
<table>
{{ form.as_table }}
</table>
<input type="submit" class="submit-button" value="Submit" name="submit">
</form>
<form action="" method="post" enctype="multipart/form-data" id="anatomyquestion-form">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" class="submit-button" value="Submit" name="submit">
</form>
{% endblock %}