replace subscription form with htmx implementation #58
					 4 αρχεία άλλαξαν με 41 προσθήκες και 44 διαγραφές
				
			
		replace subscription form with htmx implementation
				commit
				
					
					
						4fc84c1bca
					
				
			
		| 
						 | 
					@ -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>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Φόρτωση…
	
	Προσθήκη πίνακα
		Προσθήκη υπερσυνδέσμου
		
	
		Παράθεση σε νέο ζήτημα