First commit

This commit is contained in:
mrtoine 2025-09-12 11:07:53 +02:00
commit 440f5a7df4
1563 changed files with 217996 additions and 0 deletions

View file

@ -0,0 +1,21 @@
{% extends 'layout.html' %}
{% block content %}
<section>
<h1>Liste des cours</h1>
<div class="container-inline">
{% for course in courses %}
<div class="card">
<div class="card-header">
{% load static %}
<img class="thumbnails" src="{{ course.thumbnail.url }}" alt="Image des cours sur {{ course.name }}" class="src">
</div>
<div class="card-body">
<h2><a href="{% url 'courses:show' course.id course.name|slugify %}">{{ course.name }}</a></h2>
{{ course.content|truncatechars_html:250 }}
</div>
</div>
{% endfor %}
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,17 @@
<section>
<h1>Liste des derniers cours</h1>
<div class="container-inline">
{% for course in courses %}
<div class="card">
<div class="card-header">
{% load static %}
<img class="thumbnails" src="{{ course.thumbnail.url }}" alt="Image des cours sur {{ course.name }}" class="src">
</div>
<div class="card-body">
<h2><a href="{% url 'courses:show' course.id course.name|slugify %}">{{ course.name }}</a></h2>
{{ course.content|truncatechars_html:250 }}
</div>
</div>
{% endfor %}
</div>
</section>

View file

@ -0,0 +1,40 @@
{% extends 'layout.html' %}
{% block content %}
<section>
<h1>{{ course.name }}</h1>
<p class="def-author"><img src="/{{ course.author.profile.avatar }}" alt="Profile Picture" class="profile-picture-mini">Un cours proposé par&nbsp;<a href="{% url 'another_profile' course.author.id %}">{{ course.author }}</a></p>
<p>{{ course.content }}</p>
<aside class="courseNav">
<ol>
{% for lesson in lessons %}
<li><a href="#{{ lesson.name|slugify }}">{{ lesson.name }}</a></li>
{% endfor %}
<li><a href="#comments">Commentaires</a></li>
</ol>
</aside>
{% for lesson in lessons %}
<h2 id="{{ lesson.name|slugify }}">{{ lesson.name }}</h2>
{{ lesson.content|safe }}
{% endfor %}
<h1 id="comments">Commentaires</h1>
<div id="disqus_thread"></div>
<script>
/**
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables */
/**/
var disqus_config = function () {
this.page.url = "{{ request.build_absolute_uri|safe }}"; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = "{{ course.id }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://partirdezero.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</section>
{% endblock %}

12
templates/home.html Normal file
View file

@ -0,0 +1,12 @@
{% extends 'layout.html' %}
{% block content %}
<section class="edito">
<p>Bienvenue sur <strong>Partir de zero</strong>, votre nouvelle communauté dédiée à l'apprentissage des langages informatiques !</p>
<p>Je crois que l'apprentissage de la programmation et du développement est une aventure passionnante et accessible à tous. Que vous soyez un débutant curieux ou un développeur expérimenté en quête de nouvelles compétences, la plateforme est conçue pour vous accompagner à chaque étape de votre parcours.</p>
</section>
{% block course %}
{% include "courses/partials/list.html" %}
{% endblock %}
{% endblock %}

95
templates/layout.html Normal file
View file

@ -0,0 +1,95 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% load static %}
<link rel="stylesheet" href="{% static 'css/design.css' %}">
<link rel="stylesheet" href="{% static 'css/profile.css' %}">
<link rel="stylesheet" href="{% static 'css/forms.css' %}">
<link rel="stylesheet" href="{% static 'css/tabs.css' %}">
<link rel="stylesheet" href="{% static 'css/utils.css' %}">
<link rel="stylesheet" href="/static/css/colors_dark.css">
<link rel="stylesheet" href="{% static 'highlight/styles/agate.min.css' %}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="shortcut icon" type="image/x-icon" href="{% static 'favicon.ico' %}">
<!-- <script src="{% static 'js/night_day.js' %}" defer></script> -->
<script src="{% static 'js/functions.js' %}" defer></script>
<script src="{% static 'highlight/highlight.min.js' %}"></script>
<script defer>hljs.highlightAll();</script>
<title>PartirDeZero</title>
</head>
<body>
{% block header %}
{% include "partials/_header.html" %}
{% endblock %}
<!-- Guirlande de Noël SVG -->
<svg width="100%" height="200px" viewBox="0 0 1000 200" xmlns="http://www.w3.org/2000/svg">
<path id="wire" d="M0,100 Q250,200 500,100 T1000,100" stroke="black" stroke-width="2" fill="none" pathLength="100"/>
<circle class="light" r="10" fill="red">
<animateMotion repeatCount="indefinite" dur="0s">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="green">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.1;0.1" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="blue">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.2;0.2" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="yellow">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.3;0.3" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="purple">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.4;0.4" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="red">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.5;0.5" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="green">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.6;0.6" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="blue">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.7;0.7" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="yellow">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.8;0.8" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
<circle class="light" r="10" fill="purple">
<animateMotion repeatCount="indefinite" dur="0s" keyPoints="0.9;0.9" keyTimes="0;1">
<mpath href="#wire"/>
</animateMotion>
</circle>
</svg>
<main>
{% if messages %}
<ul class="flash_messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% block content %}{% endblock %}
</main>
{% block footer %}
{% include "partials/_footer.html" %}
{% endblock %}
</body>
</html>

View file

@ -0,0 +1,18 @@
<footer>
<div class="footer">
<div class="about">
<h5>A propos de moi</h5>
<p>Je suis un développeur web expérimenté avec plus de 10 ans d'expérience dans ce domaine. J'ai également développé des compétences en programmation Python et en utilisation du framework Django au cours des dernières années, et je suis passionné par l'art du développement de logiciels.</p>
</div>
<div class="footer-link">
<h5>Liens</h5>
<ul>
<li><a href="https://www.kiloukoi.be" target="_blank">Kiloukoi.be</a></li>
<li><a href="http://toine-traveller.org" target="_blank">Mon blog voyage</a></li>
</ul>
</div>
</div>
<p class="center">
Partir de Zero ©2024 - v0.1.1 - Designed and created by <a href="https://www.partirdezero.com" target="_blank">Anthony VIOLET</a>
</p>
</footer>

View file

@ -0,0 +1,48 @@
<!-- TODO : Améliorer la mise en page -->
<nav>
<div class="brand"><i class="fa-solid fa-terminal"></i>Partir de zéro<br><span class="subtitle comment">/* Anthony Violet */</span></div>
<div class="navbar">
<ul id="menu">
<li><a href="/" class="house"><i class="fa-solid fa-house"></i></a></li>
<li>
<a href="{% url 'courses:list' %}">Les cours</a>
<ul>
{% for course in courses %}
<li><a href="{% url 'courses:show' course.id course.name|slugify %}">{{ course.name }}</a></li>
{% endfor %}
</ul>
</li>
<li><a href="">Tutoriels</a></li>
<li><a href="">Billets</a></li>
</ul>
<div class="navend">
<ul>
<li>
<a href="{% url 'profile' %}"><i class="fa-solid fa-user"></i></a>
<ul>
<!-- Si l'utilisateur est connecté -->
{% if user.is_authenticated %}
<li><a href="{% url 'profile' %}">Profil</a></li>
<li><a href="{% url 'user_courses' %}">Mes cours</a></li>
<li><a href="{% url 'logout' %}">Déconnexion</a></li>
<!-- Sinon -->
{% else %}
<li><a href="{% url 'login' %}">Connexion</a></li>
<li><a href="{% url 'register' %}">Inscription</a></li>
{% endif %}
</ul>
</li>
<li>
{% if user.is_authenticated %}
<!-- On affiche le pseudo -->
{{ request.user.username }}
{% else %}
<!-- Sinon on affiche un lien de connexion -->
Visiteur
{% endif %}
</li>
</ul>
</div>
<!-- <div class="navend"><a><i class="fa-solid fa-moon"></i></a></div> -->
</div>
</nav>

View file

@ -0,0 +1,16 @@
{% block 'profile-nav' %}
<div class="profile-header">
<h2>Profil de {{ user.username }}</h2>
<img src="/{{ user.profile.avatar }}" alt="Profile Picture" class="profile-picture">
</div>
<!-- On affiche le menu que si l'id du profil est égale à celui de l'utilisateur -->
{% if user.id == request.user.id %}
<div class="profile-nav">
<ul>
<li><a href="{% url 'profile' %}">Profil</a></li>
<li><a href="{% url 'account_update' %}">Paramètre de compte</a></li>
<li><a href="{% url 'user_courses' %}">Mes cours</a></li>
</ul>
</div>
{% endif %}
{% endblock %}

View file

@ -0,0 +1,16 @@
{% extends 'layout.html' %}
{% block content %}
<section class="profile-section">
{% block profile-nav %}
{% include "../partials/_profile_nav.html" %}
{% endblock %}
<div class="profile-details">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ user_form.as_p }}
<button type="submit" class="btn btn-primary">Mettre à jour</button>
</form>
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,13 @@
{% extends 'layout.html' %}
{% block content %}
<section class="profile-section">
{% block profile-nav %}
{% include "../partials/_profile_nav.html" %}
{% endblock %}
<div class="profile-details">
<p><strong>Pseudo :</strong> {{ user.username }}</p>
<p><strong>Date d'nscription :</strong> {{ user.date_joined|date:"F j, Y" }}</p>
<p><strong>Bio de profil :</strong> {{ user.profile.biography }}</p>
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,13 @@
<!-- templates/users/complete_profile.html -->
{% extends 'layout.html' %}
{% block content %}
<section class="form-section">
<h2>Complète ton profil</h2>
<p>La nouvelle mise à jour du site web te permet d'avoir un profil personnel. Tu peux remplir les champs suivant pour l'activer.</p>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn-submit">Save</button>
</form>
</section>
{% endblock %}

View file

@ -0,0 +1,11 @@
{% extends 'layout.html' %}
{% block content %}
<section>
<h2>Create Post</h2>
<form method="post">
{% csrf_token %}
<!-- Add form fields for post creation here -->
<button type="submit">Create Post</button>
</form>
</section>
{% endblock %}

View file

@ -0,0 +1,13 @@
{% extends 'layout.html' %}
{% block content %}
<section class="form-section">
<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">Login</button>
</form>
</section>
{% endblock %}

View file

@ -0,0 +1,17 @@
{% extends 'layout.html' %}
{% block content %}
<section class="profile-section">
{% block profile-nav %}
{% include "../partials/_profile_nav.html" %}
{% endblock %}
<div class="profile-details">
<h2>Mes cours</h2>
<p>Retrouvez ici la liste de tous les cours que vous avez rédigés.</p>
<ul>
{% for course in user_courses %}
<li><a href="{% url 'courses:show' course.id course.name|slugify %}">{{ course.name }}</a></li>
{% endfor %}
</ul>
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,18 @@
{% extends 'layout.html' %}
{% block content %}
<section class="profile-section">
{% block profile-nav %}
{% include "../partials/_profile_nav.html" %}
{% endblock %}
<div class="profile-details">
<p><strong>Username:</strong> {{ user.username }}</p>
<p><strong>Email:</strong> {{ user.email }}</p>
<p><strong>Nom complet:</strong> {{ user.profile.first_name }} {{ user.profile.last_name }}</p>
<p><strong>Inscription:</strong> {{ user.date_joined|date:"F j, Y" }}</p>
<p><strong>Bio:</strong> {{ user.profile.biography }}</p>
</div>
<div class="profile-actions">
<a href="{% url 'profile_update' %}" class="btn btn-primary">Modifier le profil publique</a><br><br>
</div>
</section>
{% endblock %}

View file

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

View file

@ -0,0 +1,11 @@
{% extends 'layout.html' %}
{% block content %}
<section class="form-section">
<h2>Register</h2>
<form method="post" class="login-form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn-submit">Register</button>
</form>
</section>
{% endblock %}