{% load static %}
{% block content %}
+
+
<div class="row">
<div class="col-12 col-md-12 col-lg-12">
<h1 class="line-listini"><i class="fa-solid fa-route clr-listini mr-2" aria-hidden="true"></i> Dettaglio percorso </h1>
-
- <!-- Campo di ricerca -->
- <div class="form-group">
- <input type="text" id="search-filter" class="form-control" placeholder="Cerca tra i percorsi">
- </div>
-
<div class="card">
<div class="card-header">
<h4 class="clr-config">I tuoi percorsi</h4>
</div>
<div class="card-body">
- <div class="row" id="paid-routes">
- {% for percorso_pagato in list_pagati %}
- <div class="card p-3 route__filter" style="width: 18rem;">
- <img class="card-img-top" src="{% static 'assets/img/logo.png' %}">
- <div class="card-body">
- <h5 class="card-title route__text">{{ percorso_pagato.nome}}</h5>
- <p class="card-text route__text">{{ percorso_pagato.descrizione }}</p>
- </div>
- <div class="card-footer">
- <div class="d-flex justify-content-between">
- <h4>{{ percorso_pagato.prezzo|floatformat:2 }} €</h4>
- </div>
- </div>
- <a href="{% url 'sistema:percorso_info' percorso_pagato.pk %}" class="btn btn-warning rounded-4">Dettaglio percorso</a>
- </div>
- {% empty %}
- <p>Non possiedi ancora alcun Percorso.</p>
- {% endfor %}
+ <div class="row">
+
</div>
</div>
</div>
<h4 class="clr-config">Percorsi che puoi acquistare</h4>
</div>
<div class="card-body">
- <div class="row" id="available-routes">
+ <div class="row">
{% for percorso in list_percorsi %}
- <div class="card p-3 route__filter" style="width: 18rem;">
+ <div class="card" style="width: 18rem;">
{% if percorso.icona %}
<img class="card-img-top" src="/media/{{ percorso.icona }}">
{% else %}
<img class="card-img-top" src="{% static 'assets/img/logo.png' %}">
{% endif %}
<div class="card-body">
- <h5 class="card-title route__text">{{ percorso.nome}}</h5>
- <p class="card-text route__text">{{ percorso.descrizione }}</p>
+ <h5 class="card-title">{{ percorso.nome}}</h5>
+ <p class="card-text">{{ percorso.descrizione }}</p>
</div>
- <div class="card-footer p-3">
+ <div class="card-footer">
<div class="d-flex justify-content-between">
<h4>{{ percorso.prezzo|floatformat:2 }} €</h4>
- <a href="{% url 'pagamenti:checkout' percorso.pk %}" class="btn btn-success">Acquista ora</a>
+ <a href="#" class="btn btn-success">Compralo subito</a>
</div>
</div>
- <a href="{% url 'sistema:percorso_info' percorso.pk %}" class="btn btn-warning rounded-4">Dettaglio percorso</a>
+ <a href="{% url 'sistema:percorso_info' percorso.pk %}" class="stretched-link"></a>
</div>
- {% empty %}
- <p>Non ci sono percorsi disponibili per l'acquisto.</p>
{% endfor %}
</div>
</div>
-<script>
-document.addEventListener('DOMContentLoaded', () => {
- // Assicurati che il DOM sia completamente caricato prima di eseguire il codice
- const input = document.getElementById('search-filter');
-
- // Verifica che l'elemento di input esista nel DOM
- if (input) {
- // Aggiungi un listener sull'input per avviare la ricerca durante la digitazione
- input.addEventListener('input', search);
- } else {
- // Se non viene trovato, segnala in console
- console.error("Input non trovato");
- }
-});
-
-const search = (e) => {
- // Ottieni il valore attuale dell'input e convertilo in minuscolo
- const inputValue = e.target.value.toLowerCase();
-
- // Seleziona i contenitori delle card per i percorsi pagati e disponibili
- const paidRoutesContainer = document.getElementById('paid-routes');
- const availableRoutesContainer = document.getElementById('available-routes');
-
- // Verifica che i contenitori esistano prima di procedere
- if (!paidRoutesContainer || !availableRoutesContainer) {
- console.error("Contenitori di percorsi non trovati");
- return;
- }
-
- // Seleziona le card individuali delle due sezioni
- const paidRoutes = [...paidRoutesContainer.getElementsByClassName('route__filter')];
- const availableRoutes = [...availableRoutesContainer.getElementsByClassName('route__filter')];
-
- // Funzione per filtrare le card in base al testo di ricerca
- const filterCards = (routes) => {
- for (let i = 0; i < routes.length; i++) {
- // Prendi il testo da h5 (titolo) e p (descrizione)
- let searchTerm = [...routes[i].querySelectorAll("h5.card-title, p.card-text")];
- searchTerm = searchTerm.map(item => item.innerHTML.toLowerCase());
-
- // Verifica se l'input di ricerca è contenuto nel titolo o nella descrizione della card
- if (searchTerm.map(text => text.includes(inputValue)).some(val => val)) {
- // Mostra la card se il testo combacia
- routes[i].style.display = 'block';
- } else {
- // Nascondi la card se il testo non combacia
- routes[i].style.display = 'none';
- }
- }
- }
-
- // Applica il filtro alle due sezioni
- filterCards(paidRoutes);
- filterCards(availableRoutes);
-}
-</script>
+
+
+<!--vincenzo-->
+<!--<div class="row">-->
+<!-- <div class="col-12 col-md-12 col-lg-12">-->
+<!-- <h1 class="line-listini"><i class="fa-solid fa-route clr-listini mr-2" aria-hidden="true"></i> Dettaglio percorso </h1>-->
+
+<!-- <!– Campo di ricerca –>-->
+<!-- <div class="form-group">-->
+<!-- <input type="text" id="search-filter" class="form-control" placeholder="Cerca tra i percorsi">-->
+<!-- </div>-->
+
+<!-- <div class="card">-->
+<!-- <div class="card-header">-->
+<!-- <h4 class="clr-config">I tuoi percorsi</h4>-->
+<!-- </div>-->
+
+<!-- <div class="card-body">-->
+<!-- <div class="row" id="paid-routes">-->
+<!-- {% for percorso_pagato in list_pagati %}-->
+<!-- <div class="card p-3 route__filter" style="width: 18rem;">-->
+<!-- <img class="card-img-top" src="{% static 'assets/img/logo.png' %}">-->
+<!-- <div class="card-body">-->
+<!-- <h5 class="card-title route__text">{{ percorso_pagato.nome}}</h5>-->
+<!-- <p class="card-text route__text">{{ percorso_pagato.descrizione }}</p>-->
+<!-- </div>-->
+<!-- <div class="card-footer">-->
+<!-- <div class="d-flex justify-content-between">-->
+<!-- <h4>{{ percorso_pagato.prezzo|floatformat:2 }} €</h4>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <a href="{% url 'sistema:percorso_info' percorso_pagato.pk %}" class="btn btn-warning rounded-4">Dettaglio percorso</a>-->
+<!-- </div>-->
+<!-- {% empty %}-->
+<!-- <p>Non possiedi ancora alcun Percorso.</p>-->
+<!-- {% endfor %}-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="card">-->
+<!-- <div class="card-header">-->
+<!-- <h4 class="clr-config">Percorsi che puoi acquistare</h4>-->
+<!-- </div>-->
+<!-- <div class="card-body">-->
+<!-- <div class="row" id="available-routes">-->
+<!-- {% for percorso in list_percorsi %}-->
+<!-- <div class="card p-3 route__filter" style="width: 18rem;">-->
+<!-- {% if percorso.icona %}-->
+<!-- <img class="card-img-top" src="/media/{{ percorso.icona }}">-->
+<!-- {% else %}-->
+<!-- <img class="card-img-top" src="{% static 'assets/img/logo.png' %}">-->
+<!-- {% endif %}-->
+<!-- <div class="card-body">-->
+<!-- <h5 class="card-title route__text">{{ percorso.nome}}</h5>-->
+<!-- <p class="card-text route__text">{{ percorso.descrizione }}</p>-->
+<!-- </div>-->
+<!-- <div class="card-footer p-3">-->
+<!-- <div class="d-flex justify-content-between">-->
+<!-- <h4>{{ percorso.prezzo|floatformat:2 }} €</h4>-->
+<!-- <a href="{% url 'pagamenti:checkout' percorso.pk %}" class="btn btn-success">Acquista ora</a>–>-->
+<!-- </div>-->
+<!-- <a href="{% url 'sistema:percorso_info' percorso.pk %}" class="btn btn-warning rounded-4">Dettaglio percorso</a>-->
+<!-- </div>-->
+
+<!-- </div>-->
+<!-- {% empty %}–>-->
+<!-- <p>Non ci sono percorsi disponibili per l'acquisto.</p>–>-->
+<!-- {% endfor %}-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- </div>-->
+<!--</div>-->
+
+
+
+
+<!--<script>-->
+<!--document.addEventListener('DOMContentLoaded', () => {-->
+<!-- // Assicurati che il DOM sia completamente caricato prima di eseguire il codice-->
+<!-- const input = document.getElementById('search-filter');-->
+
+<!-- // Verifica che l'elemento di input esista nel DOM-->
+<!-- if (input) {-->
+<!-- // Aggiungi un listener sull'input per avviare la ricerca durante la digitazione-->
+<!-- input.addEventListener('input', search);-->
+<!-- } else {-->
+<!-- // Se non viene trovato, segnala in console-->
+<!-- console.error("Input non trovato");-->
+<!-- }-->
+<!--});-->
+
+<!--const search = (e) => {-->
+<!-- // Ottieni il valore attuale dell'input e convertilo in minuscolo-->
+<!-- const inputValue = e.target.value.toLowerCase();-->
+
+<!-- // Seleziona i contenitori delle card per i percorsi pagati e disponibili-->
+<!-- const paidRoutesContainer = document.getElementById('paid-routes');-->
+<!-- const availableRoutesContainer = document.getElementById('available-routes');-->
+
+<!-- // Verifica che i contenitori esistano prima di procedere-->
+<!-- if (!paidRoutesContainer || !availableRoutesContainer) {-->
+<!-- console.error("Contenitori di percorsi non trovati");-->
+<!-- return;-->
+<!-- }-->
+
+<!-- // Seleziona le card individuali delle due sezioni-->
+<!-- const paidRoutes = [...paidRoutesContainer.getElementsByClassName('route__filter')];-->
+<!-- const availableRoutes = [...availableRoutesContainer.getElementsByClassName('route__filter')];-->
+
+<!-- // Funzione per filtrare le card in base al testo di ricerca-->
+<!-- const filterCards = (routes) => {-->
+<!-- for (let i = 0; i < routes.length; i++) {-->
+<!-- // Prendi il testo da h5 (titolo) e p (descrizione)-->
+<!-- let searchTerm = [...routes[i].querySelectorAll("h5.card-title, p.card-text")];-->
+<!-- searchTerm = searchTerm.map(item => item.innerHTML.toLowerCase());-->
+
+<!-- // Verifica se l'input di ricerca è contenuto nel titolo o nella descrizione della card-->
+<!-- if (searchTerm.map(text => text.includes(inputValue)).some(val => val)) {-->
+<!-- // Mostra la card se il testo combacia-->
+<!-- routes[i].style.display = 'block';-->
+<!-- } else {-->
+<!-- // Nascondi la card se il testo non combacia-->
+<!-- routes[i].style.display = 'none';-->
+<!-- }-->
+<!-- }-->
+<!-- }-->
+
+<!-- // Applica il filtro alle due sezioni-->
+<!-- filterCards(paidRoutes);-->
+<!-- filterCards(availableRoutes);-->
+<!--}-->
+<!--</script>-->
template_name = 'multimedia_list.html'
+### VINCENZO ###
+# class PercorsiListView(View):
+# def get(self, request):
+# if request.session['roles'] == settings.CLIENTI_GROUPS:
+# # Ottieni gli ID dei percorsi già pagati
+# percorsi_pagati_id = Pagamenti.objects.filter(user=request.user).values_list('percorso_id', flat=True)
+#
+# # Ottieni i percorsi pagati
+# list_pagati = Percorso.objects.filter(id__in=percorsi_pagati_id)
+#
+# # Ottieni i percorsi disponibili (non pagati)
+# list_percorsi = Percorso.objects.exclude(id__in=percorsi_pagati_id)
+#
+# return render(request, 'percorsi_cliente_home.html', {
+# 'list_pagati': list_pagati,
+# 'list_percorsi': list_percorsi,
+# })
+# else:
+# form = IconaPercorsoForm()
+# percorsi_disponibili = Percorso.objects.all()
+# return render(request, 'percorsi_list.html', {'percorsi': percorsi_disponibili, 'form': form})
+
class PercorsiListView(View):
def get(self, request):
if request.session['roles'] == settings.CLIENTI_GROUPS:
- # Ottieni gli ID dei percorsi già pagati
- percorsi_pagati_id = Pagamenti.objects.filter(user=request.user).values_list('percorso_id', flat=True)
-
- # Ottieni i percorsi pagati
- list_pagati = Percorso.objects.filter(id__in=percorsi_pagati_id)
-
- # Ottieni i percorsi disponibili (non pagati)
- list_percorsi = Percorso.objects.exclude(id__in=percorsi_pagati_id)
-
- return render(request, 'percorsi_cliente_home.html', {
- 'list_pagati': list_pagati,
- 'list_percorsi': list_percorsi,
- })
+ list_percorsi = Percorso.objects.filter(is_active=True)
+ return render(request, 'percorsi_cliente_home.html', {'list_percorsi': list_percorsi})
else:
form = IconaPercorsoForm()
- percorsi_disponibili = Percorso.objects.all()
- return render(request, 'percorsi_list.html', {'percorsi': percorsi_disponibili, 'form': form})
+ return render(request, 'percorsi_list.html', {'form':form})
+### VINCENZO ###
class TuoiPercorsiListView(View):
def get(self, request):