First Commit

This commit is contained in:
mrtoine 2025-09-12 11:11:44 +02:00
commit ce0758fbbb
496 changed files with 52062 additions and 0 deletions

34
templates/users/contribute.html Executable file
View file

@ -0,0 +1,34 @@
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<h2>Contribuer à la communauté</h2>
<div class="news">
<p>Passion Retro est avant tout un site communautaire, façonné par ses membres. Ici, tu as la possibilité de participer activement en ajoutant des articles, des dossiers ou même des catégories !</p>
<p>Cependant, pour préserver la qualité et lesprit nostalgique du site, toutes les contributions sont soumises à une approbation manuelle. Cela permet de garder un contenu authentique et en accord avec notre vision dun web rétro, loin des excès modernes.</p>
<p>Chaque membre a ainsi la chance dapporter sa pierre à lédifice, et ensemble, nous pouvons forger la plus grande communauté francophone dédiée au rétro.</p>
<p>Rejoins-nous dans cette aventure et aide-nous à faire vivre lhéritage dun internet révolu !</p>
<p style="color:orange"><u>Précision : </u>pour tous les articles, dossiers, et autres forme d'éditions que tu propposes à la contribution, tu t'engage à la cession intelectuel de tes oeuvres.</p>
</div>
<div class="row">
<div class="col col-3 contrib games">
<a href="{% url 'form_contribute' 'games' %}">Article Jeu Vidéo</a>
</div>
<div class="col col-3 contrib movies">
<a href="{% url 'form_contribute' 'movies' %}">Article Film & Series</a>
</div>
<div class="col col-3 contrib musics">
<a href="{% url 'form_contribute' 'music' %}">Article Musique</a>
</div>
<div class="col col-3 contrib tech">
<a href="{% url 'form_contribute' 'tech' %}">Article Technologie</a>
</div>
<div class="col col-3 contrib news_contrib">
<a href="{% url 'form_contribute' 'news' %}">Actus</a>
</div>
<div class="col col-3 contrib category">
<a href="{% url 'form_contribute' 'category' %}">Nouvelle catégorie</a>
</div>
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,35 @@
{% extends 'layout.html' %}
{% load bbcode_tags %}
{% block content %}
<div class="container">
<h2>Mes contributions</h2>
<div>
<p>Tu as accès ici à l'ensemble de tes contributions pour le site. Il t'est possible de modifier chaques articles. Lorsque tu souhaites supprimer un article ou un dossier entier, la demande est enregistrée et en attente d'approbation.</p>
<p style="color:orange"><u>Précision : </u>pour tous les articles, dossiers, et autres forme d'éditions que tu propposes à la contribution, tu t'engage à la cession intelectuel de tes oeuvres.</p>
</div>
<h3>Mes dossiers & articles</h2>
<div class="grid">
{% for post in posts %}
<div class="col col-5">
<div class="post-card-header" style="display:flex;flex-direction:row;justify-content: space-between;">
<h3>{{ post.title }} </h3>
{% if post.post_parent_id == None %}
<span style="color:orange;font-weight:bold;margin:5px;">Dossier</span>
{% endif %}
{% if post.active == False %}
<span class="post-offline"></span>
{% else %}
<span class="post-online"></span>
{% endif %}
</div>
<div class="post-card">
<p>{{ post.content|bbcode|safe|linebreaksbr|truncatewords:25 }} » <a href="{% url 'view_post' post.slug %}">Lire</a></p><br>
<p class="date"><em>Publié le {{ post.created|date:" d F Y à H:i" }}</em> Par <a href="{% url 'profile' post.author.id %}" class="{{ post.author.username_decoration }}">{{ post.author.username }}</a></p>
<p><a href="{% url 'edit_post' post.id %}" class="btn btn-warning">Modifier</a></p>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,30 @@
{% extends 'layout.html' %}
{% block content %}
<div class="container">
{% if type == 'games' %}
<h2>Créer un article Jeux vidéos</h2>
{% elif type == 'movies' %}
<h2>Créer un article Film & Series</h2>
{% elif type == 'musics' %}
<h2>Créer un article Musique</h2>
{% elif type == 'tech' %}
<h2>Créer un article Technologie</h2>
{% elif type == 'news_contrib' %}
<h2>Créer une actualité</h2>
{% elif type == 'category' %}
<h2>Créer une nouvelle catégorie</h2>
{% endif %}
<form action="" method="post">
{% csrf_token %}
<div class="form-inline">
<select id="post_type">
<option value="solo">Article seul</option>
<option value="multiple">Ensemble d'article</option>
</select>
{{ form.title }}
</div>
{{ form.content }}
<div class="form-inline" id="submit"><button id="submit-button">Créer</button></div>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,13 @@
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<h2>Login</h2>
<p>Pas encore inscrit ? <a href="{% url 'register' %}">Inscrivez-vous</a></p>
<p class="login-info">En vous connectant, vous aurez accès à des fonctionnalités exclusives, telles que la gestion de vos cours, la participation aux discussions et la personnalisation de votre profil. Rejoignez notre communauté et profitez pleinement de tout ce que notre site a à offrir.</p>
<form method="post" class="login-form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn-submit">Connexion</button>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,158 @@
{% extends 'layout.html' %}
{% load bbcode_tags %}
{% block content %}
<div class="container">
{% block profile-nav %}
{% include "../components/profile_nav.html" %}
{% endblock %}
<div class="profile-grid">
<!-- Colonne de gauche -->
<div class="profile-main">
<div class="profile-header">
<div class="avatar-container">
<div class="level-badge">
<span class="level-text">LEVEL</span>
<span class="level-number">{{ user.level.level }}</span>
</div>
</div>
<div class="profile-info">
<h2 class="username">{{ user.username }}</h2>
{% if user == request.user %}
Prochain niveau: {{ request.user.experience_left }} XP
{% endif %}
<p class="joined-date">Membre depuis le {{ user.date_joined|date:"d F Y" }}</p>
{% if user.first_name or user.last_name %}
<p class="real-name">{{ user.first_name }} {{ user.last_name }}</p>
{% endif %}
</div>
</div>
<div class="profile-bio">
<h3>Biographie</h3>
<div class="bio-content">
{{ user.biography|bbcode|safe|linebreaksbr|default:"Aucune biographie disponible" }}
</div>
</div>
</div>
<!-- Colonne de droite -->
<div class="profile-stats">
<div class="stats-card">
<h3>Statistiques</h3>
<div class="stats-grid">
<div class="stat-item">
<span class="stat-value">{{ forum_posts }}</span>
<span class="stat-label">Messages</span>
</div>
<div class="stat-item">
<span class="stat-value">{{ topics }}</span>
<span class="stat-label">Sujets</span>
</div>
<div class="stat-item">
<span class="stat-value">{{ posts }}</span>
<span class="stat-label">Articles</span>
</div>
<div class="stat-item">
<span class="stat-value">{{ user.level.experience }}</span>
<span class="stat-label">XP</span>
</div>
<div class="stat-item">
<span class="stat-value">{{ user.level.coins }}</span>
<span class="stat-label">Pièces</span>
</div>
</div>
</div>
<div class="achievements-card">
<h3>Badges</h3>
<div class="achievements-grid">
{% for badge in user.badges.all %}
<div class="badge-item" title="{{ badge.description }}">
<img src="{{ badge.image.url }}" alt="{{ badge.name }}">
<span class="badge-name">{{ badge.name }}</span>
</div>
{% empty %}
<p class="no-badges">Aucun badge pour le moment</p>
{% endfor %}
</div>
</div>
</div>
</div>
{% if user.id == request.user.id %}
<div class="inventory">
<h3>Inventaire</h3>
<div class="inventory-grid">
{% for inventory in request.user.inventory.all %}
{%if inventory.item.name != 'Or' %}
<a href="{% url 'use_item' inventory.item.id %}">
{% endif %}
<div class="inventory-item" id="bubbleinfo">
<span class="item-name">
{% if inventory.item.category.name == 'Décoration pseudo' %}
<center><span id="item" data-info="{{ inventory.item }} : {{ inventory.item.description }}" class="{{ inventory.item.name|slugify }}" style="font-size: 1.5rem">{{ request.user }}</span></center>
{% else %}
{% if inventory.item.category.name == 'cadres' %}
<center><div class="{{ inventory.item.name|slugify }}""><img src="/media/{{ request.user.avatar }}" style="width:100px;" alt=""></div></center>
{% else %}
<img id="item" data-info="{{ inventory.item }} : {{ inventory.item.description }}" src="/media/shop/items/{{ inventory.item.image }}" alt="{{ inventory.item }} : {{ inventory.item.description }}">
{% endif %}
{% endif %}
</span>
<span class="item-quantity">{{ inventory.quantity }}</span>
<div id="div-bubble" style="
display: none;
position: absolute;
background-color: rgba(0, 0, 0, 0.5);
color: white;
text-shadow: none;
padding: 10px;
border-radius: 5px;
top: 0px;
left: 0px;
z-index: 9998;
"></div>
</div>
{%if inventory.item != 'Or' %}
</a>
{% endif %}
{% empty %}
<p class="no-items">
Aucun objet dans l'inventaire
</p>
{% endfor %}
</div>
</div>
<div class="profile-actions">
<a href="{% url 'profile_update' %}" class="btn btn-default">Modifier le profil</a>
<!-- <a href="" class="btn btn-warning">Voir l'inventaire</a> -->
</div>
{% endif %}
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', () => {
const bubble = document.querySelector('#bubbleinfo');
console.log(bubble);
if (!bubble) {
console.error('Element with ID "bubbleinfo" not found.');
return;
}
const item = bubble.querySelector('#item');
const div = document.querySelector('#div-bubble');
let info = item.dataset.info;
bubble.addEventListener('mouseover', function() {
div.style.top = item.offsetTop + -10 + 'px';
div.style.left = item.offsetLeft +'px';
div.textContent = info;
div.style.display = 'block';
});
bubble.addEventListener('mouseout', function() {
div.style.display = 'none';
});
})
</script>
{% endblock %}

View file

@ -0,0 +1,11 @@
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<h2>Update Profile</h2>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ user_form.as_p }}
<button type="submit">Modifier</button>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,13 @@
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<h2>Register</h2>
<form method="post" class="login-form">
{% csrf_token %}
{{ form.as_p }}
<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" style="margin-left:50px" data-sitekey="{{ GOOGLE_PUBLIC_KEY }}"></div>
<button type="submit" class="btn-submit">S'inscire</button>
</form>
</div>
{% endblock %}