replace subscription form with htmx implementation
Αυτό το commit περιλαμβάνεται σε:
γονέας
f1d4b97e19
commit
4fc84c1bca
4 αρχεία άλλαξαν με 41 προσθήκες και 44 διαγραφές
|
@ -6,46 +6,31 @@ date: 2013-05-01
|
||||||
category_title: Μέλη
|
category_title: Μέλη
|
||||||
---
|
---
|
||||||
|
|
||||||
<form id="subscriptionemail">
|
|
||||||
<p> Παρακαλούμε συμπληρώστε την παρακάτω φόρμα, για να ενημερωθείτε για τυχόν Ταμειακές Εκκρεμότητες σας, μέσω e-mail :</p>
|
|
||||||
<br>
|
|
||||||
<label for="email">Πληκτολογίστε το email σας (όπως το είχατε δώσει κατά την εγγραφή σας): </label><input type="text" name="email" /> <br/>
|
|
||||||
<br>
|
|
||||||
<p>Εισάγετε τα ψηφία της επόμενης Εικόνας Ελέγχου :</p>
|
|
||||||
<p><img id=captchaimage src="" alt="Captcha"></p>
|
|
||||||
<input type="hidden" id=captchahidden name=Id value="">
|
|
||||||
<input name=Solution id=solution></br>
|
|
||||||
<br>
|
|
||||||
<input type="submit" value="Υποβολή"/>
|
|
||||||
<div id="response"></div>
|
|
||||||
</form>
|
|
||||||
<script>
|
|
||||||
async function captchaid() {
|
|
||||||
await fetch('/api/captcha/')
|
|
||||||
.then(response => response.text())
|
|
||||||
.then(id => {
|
|
||||||
console.log("id="+id);
|
|
||||||
document.getElementById('captchahidden').value = id.toString();
|
|
||||||
document.getElementById('captchaimage').src = '/api/captcha/'+id.toString()+'/captcha.png'; });
|
|
||||||
};
|
|
||||||
|
|
||||||
captchaid();
|
<!-- htmx -->
|
||||||
subscriptionemail.onsubmit = async (e) => {
|
<script src="/static/js/htmx.min.js"></script>
|
||||||
e.preventDefault();
|
<script src="/static/js/ext/json-enc.js"></script>
|
||||||
var form = document.querySelector("#subscriptionemail");
|
|
||||||
data = {
|
<form id="subscriptionform" hx-post="/api/sendSubscriptionEmail" hx-ext='json-enc'>
|
||||||
email : form.querySelector('input[name="email"]').value,
|
<p> Παρακαλούμε συμπληρώστε την παρακάτω φόρμα, για να ενημερωθείτε για τυχόν Ταμειακές Εκκρεμότητες σας, μέσω e-mail</p>
|
||||||
id : form.querySelector('input[name="Id"]').value,
|
<div class="col-sm-10">
|
||||||
solution : form.querySelector('input[name="Solution"]').value
|
<label class="form-label">Πληκτολογήστε το email σας (όπως το είχατε δώσει κατά την εγγραφή σας)</label>
|
||||||
}
|
<input type="email" name="email" class="form-control" placeholder="username@hellug.gr">
|
||||||
let response = await fetch('/api/sendSubscriptionEmail', {
|
</div>
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
<div class="mb-3">
|
||||||
'Content-Type': 'application/json',
|
<label class="form-label">Εισάγετε τα ψηφία της επόμενης Εικόνας Ελέγχου :
|
||||||
},
|
<div hx-get="/api/captcha/?htmx=1" hx-trigger="load" hx-swap="innerhtml" hx-target="#captcha">
|
||||||
body: JSON.stringify(data),
|
<div id="captcha">
|
||||||
})
|
<img class="htmx-indicator" src="" alt="Φορτώνει..">
|
||||||
let text = await response.text();
|
<input type="hidden" name=Id value="">
|
||||||
document.querySelector("#response").innerHTML = text;
|
</div>
|
||||||
};
|
</div>
|
||||||
</script>
|
</label>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<input name=Solution id=solution class="form-control" id="exampleFormControlInput1">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-primary">Υποβολή</button>
|
||||||
|
<div hx-target="#subscriptionform" hx-swap="innerHTML"></div>
|
||||||
|
</form>
|
||||||
|
|
12
static/static/js/ext/json-enc.js
Κανονικό αρχείο
12
static/static/js/ext/json-enc.js
Κανονικό αρχείο
|
@ -0,0 +1,12 @@
|
||||||
|
htmx.defineExtension('json-enc', {
|
||||||
|
onEvent: function (name, evt) {
|
||||||
|
if (name === "htmx:configRequest") {
|
||||||
|
evt.detail.headers['Content-Type'] = "application/json";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
encodeParameters : function(xhr, parameters, elt) {
|
||||||
|
xhr.overrideMimeType('text/json');
|
||||||
|
return (JSON.stringify(parameters));
|
||||||
|
}
|
||||||
|
});
|
2
static/static/js/htmx.min.js
εξωτερικό
2
static/static/js/htmx.min.js
εξωτερικό
Το diff αρχείων καταστέλλεται επειδή μία ή περισσότερες γραμμές είναι πολύ μεγάλες
|
@ -48,4 +48,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.navbar-collapse -->
|
</div><!-- /.navbar-collapse -->
|
||||||
</nav>
|
</nav>
|
||||||
<header>
|
</header>
|
||||||
|
|
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα