Start repo

This commit is contained in:
2026-02-03 01:24:56 +01:00
committed by kitoy
parent e176b7212f
commit c2aaa0ed4a
267 changed files with 54491 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
<div class="msginfo">
{# on affiche les messages d'erreurs puis les messages de succes #}
{% for categorie in ['error', 'success'] %}
{% with msgs = get_flashed_messages(category_filter=[categorie]) %}
{% if msgs %}
<div class="flashed {{ categorie }}">
{% for m in msgs %}
<p class="center {{ categorie }}" >{{ m|safe }}</p>
{% endfor %}
</div>
{% endif %}
{% endwith %}
{% endfor %}
</div>

View File

@@ -0,0 +1,26 @@
<script>
window.onload = function () {
var dropzoneOptions = {
dictDefaultMessage: 'Déposez vos fichiers ici!',
paramName: "file",
maxFilesize: 1024, // MB
url: "/upload-dropzone",
chunking: true,
forceChunking: true,
chunkSize: 1000000,
autoProcessQueue: true,
init: function () {
this.on("success", function (file) {
console.log("success > " + file.name);
setTimeout(() => { this.removeFile(file); }, 2000);
});
}
};
var uploader = document.querySelector('#uploader');
var myDropzone = new Dropzone(uploader, dropzoneOptions);
console.log("Loaded");
};
</script>

View File

@@ -0,0 +1,62 @@
<form class="sortable" action="/editmenu" method="POST">
<div id="menu" class="list">
{% for item in menu.keys() %}
<div class="entry">
{% if menu[item] is mapping %}
{{item }}
{% for subitem in menu[item].keys() %}
<div class="entry n1">
{{ subitem }}
<input class="input" id="{{ item }}">
</div>
{% endfor %}
{% else %}
<div class="entry">
{{ item }}
<input class="input" value="{{ menu[item] }}">
</div>
{% endif %}
</div>
{% endfor %}
</div>
</form>
<style>
.n1 > div {
background-color: lightblue;
padd ing-left: 50px;
}
.n2 > div {
background-color: lightgreen;
padding-left: 50px;
}
.list {
padding: 50px;
}
</style>
<script src="/static/vendors/Sortable/Sortable.min.js"></script>
<script type="text/javascript">
var elements = document.getElementsByClassName('list');
for (var i = 0; i < elements.length; i++) {
new Sortable(elements[i], {
group: 'shared',
animation: 150,
fallbackOnBody: true,
swapThreshold: 0.65
});
}
</script>

200
app/templates/casual.html Normal file
View File

@@ -0,0 +1,200 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title> MaPagePerso </title>
<!-- Bootstrap core CSS -->
<link href="static/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom fonts for this template -->
<link href="https://fonts.googleapis.com/css?family=Raleway:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="static/css/business-casual.css" rel="stylesheet">
</head>
<body>
<h1 class="site-heading text-center text-white d-none d-lg-block">
<span class="site-heading-upper text-primary mb-3">{{ mesinfos.texte_acceuil }}</span>
<span class="site-heading-lower">{{ mesinfos.nom }}</span>
</h1>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark py-lg-4" id="mainNav">
<div class="container">
<a class="navbar-brand text-uppercase text-expanded font-weight-bold d-lg-none" href="#">{{ mesinfos.nom }}</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav mx-auto">
<li class="nav-item px-lg-4">
<a class="nav-link text-uppercase text-expanded" href="#about">A propos</a>
</li>
<li class="nav-item px-lg-4">
<a class="nav-link text-uppercase text-expanded" href="#produits">Produits</a>
</li>
<li class="nav-item px-lg-4">
<a class="nav-link text-uppercase text-expanded" href="#contact">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<!-- Introduction -->
<section class="page-section clearfix" id="about" >
<div class="container">
<div class="intro">
<img class="intro-img img-fluid mb-3 mb-lg-0 rounded" src="static/img/header.jpg" alt="">
<div class="intro-text left-0 text-center bg-faded p-5 rounded">
<h2 class="section-heading mb-4">
<span class="section-heading-upper">{{ mesinfos.nom }}</span>
<span class="section-heading-lower">{{ mesinfos.titre_description}}</span>
</h2>
<p class="mb-3"> {{ mesinfos.description }} </p>
<div class="intro-button mx-auto">
<a class="btn btn-primary btn-xl" href="#produits">{{ mesinfos.bouton_presentation }}</a>
</div>
</div>
</div>
</div>
</section>
<!-- Galerie -->
<section class="page-section" id="produits">
<div id="myCarousel" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
{% for image in mesimages.values() %}
{% if image['nom_fichier'] == "1.jpg" %}
<div class="carousel-item active">
<div class="container">
<div class="carousel-caption">
<div class="product-item">
<div class="product-item-title d-flex">
<div class="bg-faded p-5 d-flex mr-auto rounded">
<h2 class="section-heading mb-0">
<span class="section-heading-upper text-primary">{{ image.titre }}</span>
<span class="section-heading-lower">{{ image.sous_titre }}</span>
</h2>
</div>
</div>
<img class="product-item-img mx-auto d-flex rounded img-fluid mb-5 mb-lg-0" src="/static/img/portfolio/fullsize/{{ image.nom_fichier }}" aalt="">
<div class="product-item-description d-flex ml-auto">
<div class="bg-faded p-5 rounded">
<p class="mb-0 text-paragraph"> {{ image.description }} </p>
</div>
</div>
</div>
</div>
</div>
</div>
{% else %}
<div class="carousel-item">
<div class="container">
<div class="carousel-caption">
<div class="product-item">
<div class="product-item-title d-flex">
<div class="bg-faded p-5 d-flex mr-auto rounded">
<h2 class="section-heading mb-0">
<span class="section-heading-upper text-primary">{{ image.titre }}</span>
<span class="section-heading-lower"> {{ image.sous_titre }}</span>
</h2>
</div>
</div>
<img class="product-item-img mx-auto d-flex rounded img-fluid mb-3 mb-lg-0" src="/static/img/portfolio/fullsize/{{ image.nom_fichier }}" alt=""/ >
<div class="product-item-description d-flex ml-auto">
<div class="bg-faded p-5 rounded">
<p class="mb-0"> {{ image.description }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
<a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Précédent</span>
</a>
<a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Suivant</span>
</a>
</div>
</section>
<section class="page-section cta" id="contact" >
<div class="container">
<div class="row">
<div class="col-xl-9 mx-auto">
<div class="cta-inner text-center rounded">
<h2 class="section-heading mb-5">
<span class="section-heading-upper">{{ mesinfos.titre_contact }}</span>
</h2>
<ul class="list-unstyled list-hours mb-5 text-left mx-auto">
<li class="list-unstyled-item list-hours-item d-flex">
{{ mesinfos.texte_contact }}
<span class="ml-auto">{{ mesinfos.horraires }} </span>
</li>
</ul>
<p class="address mb-5">
<em>
<strong>{{ mesinfos.adresse }}</strong>
<br>
{{ mesinfos.code_postal }}, {{ mesinfos.ville }}
</em>
</p>
<p class="mb-0">
<small>
<em>Téléphone</em>
</small>
<br>
{{ mesinfos.phone }}
</p>
</div>
</div>
</div>
</div>
</section>
<footer class="footer text-faded text-center py-5">
<div class="container">
<p class="m-0 small">Copyright &copy; {{ mesinfos.nom }} 2018</p>
</div>
</footer>
<!-- Bootstrap core JavaScript -->
<script src="static/vendor/jquery/jquery.min.js"></script>
<script src="static/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
</body>
</html>

View File

@@ -0,0 +1,18 @@
<section class="bg-primary" id="about">
<div class="container">
<form method='POST' action='/edit/description'>
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-8 mx-auto text-center">
{{ form.titre_description(col=5,value=bloc.titre_description,
class="form-control form-control-lg text-center") }}
<hr class="light my-4">
{{ form.description(value=bloc.description, class="form-control text-center") }}
<br/>
{{ form.submit() }}
</div>
</div>
</form>
</div>
</section>

View File

@@ -0,0 +1,11 @@
<section class="bg-primary" id="about">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="section-heading text-white">{{ mesinfos.text.title }}</h2>
<hr class="light my-4">
<p class="text-faded mb-4"> {{ mesinfos.text.text }} </p>
</div>
</div>
</div>
</section>

View File

@@ -0,0 +1,52 @@
<section id="contact" id="{{ bloc.name }}">
<div class="container" id="{{ bloc.name }}" hx_swap="beforeend">
<form method='POST' action="/edit/{{ bloc.name }}" hx-post='/edit//{{ bloc.name }}' hx-swap="outerHTML" hx-target="#{{ bloc.name }}" >
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-8 mx-auto text-center">
{{ form.title(col=5, value=bloc.title,
class="form-control form-control-lg text-center") }}
<hr class="my-4">
<textarea class="form-control text-center" id="text" name="text"> {{ bloc.text }} </textarea>
</div>
</div>
<div class="row">
<div class="col-lg-4 ml-auto text-center">
<i class="fa fa-phone fa-3x mb-3 sr-contact"></i>
{{form.phone(col=3,value=bloc.phone,
class="form-control form-control-lg text-center")}}
</div>
<div class="col-lg-4 mr-auto text-center">
<i class="fa fa-envelope-o fa-3x mb-3 sr-contact"></i>
{{form.email(col=5,value=bloc.email,
class="form-control obfuscate form-control-lg text-center")}}
</div>
<div class="col-lg-8 mx-auto text-center">
<br/> <br/>
<label> {{ form.address.label }} </label>
<p class="mb-2"> {{ form.address(col=5, value=bloc.address,
class="form-control form-control-lg text-center") }} </p>
<div class="row">
<div class="col-lg-4 ml-auto text-center">
<label> {{ form.postal_code.label }} </label>
{{ form.postal_code( value=bloc.postal_code,
class="form-control form-control-lg-3 text-center") }}
</div>
<div class="col-lg-4 mr-auto text-center">
<label> {{ form.city.label }} </label>
{{ form.city( value=bloc.city,
class="form-control form-control-lg-3 text-center") }}
</div>
</div>
<br/>
{{ form.submit(class="btn") }}
<button class="btn btn-danger" hx-get="/view/{{ bloc.name }}" hx-swap="outerHTML" hx-target="#{{ bloc.name }}" > Annuler </button>
</div>
</div>
</form>
</div>
</section>

View File

@@ -0,0 +1,30 @@
<section id="contact" >
<div class="container" id="{{ bloc.name }}">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="section-heading"> {{ bloc.title }} </h2>
<hr class="my-4">
<p class="mb-5"> {{ bloc.text }} </p>
</div>
</div>
<div class="row">
<div class="col-lg-4 ml-auto text-center">
<i class="fa fa-phone fa-3x mb-3 sr-contact"></i>
<p>{{ bloc.phone }}</p>
</div>
<div class="col-lg-4 mr-auto text-center">
<i class="fa fa-envelope-o fa-3x mb-3 sr-contact"></i>
<p>
<a href="{{ bloc.email }}" class="obfuscate" > {{bloc.email }}</a>
</p>
</div>
<div class="col-lg-8 mx-auto text-center">
<br/> <br/>
<p class="mb-2"> {{ bloc.address }} </p>
<h3 class="section-heading">
{{ bloc.postal_code }} - {{ bloc.city }}
</h3>
</div>
</div>
</div>
</section>

View File

@@ -0,0 +1,28 @@
<div class="container text-center">
<form method='POST' action='/edit/{{ bloc.name }}' hx-post='/edit//{{ bloc.name }}' hx-swap="outerHTML" hx-target="#{{ bloc.name }}">
{{ form.csrf_token }}
<h2 class="mb-4"> Titre du lien </h2>
{{ form.title(value=bloc.title,
class="form-control form-control-lg text-center") }}
<h3> Description du lien </h3>
{{ form.text(value=bloc.text,
class="form-control text-center") }}
<h3> Votre lien (https://exemple.com) </h3>
{{ form.link(value=bloc.link, class="form-control text-center") }}
<br />
<div class="col-lg-4 form-group mx-auto">
{{ form.text_button(value=bloc.text_button,
class="form-control text-center") }}
{% for error in form.text_button.errors %}
<span style="color: red;">
{{ error }}</span>
{% endfor %}
</div>
{{ form.submit(class="btn") }}
<button class="btn btn-danger" hx-get="/view/{{ bloc.name }}" hx-swap="outerHTML" hx-target="#{{ bloc.name }}" > Annuler </button>
</form>
</div>

View File

@@ -0,0 +1,10 @@
<section class="bg-dark text-white" id="{{ bloc.name }}" hx-swap-oob="true" >
<div class="container text-center">
<h2 class="mb-4">{{ bloc.title }}</h2>
<p> {{ bloc.text }} </p>
<a class="btn btn-light btn-xl sr-button" href="{{ bloc.link }}">
{{ bloc.text_button }}
</a>
</div>
</section>

View File

@@ -0,0 +1,37 @@
<section class="p-0" id="{{ bloc.name }}">
<div class="container-fluid p-0">
<div class="row no-gutters ">
{% for image in bloc.values() %}
{% if image.file %}
<div class="col-lg-4 col-sm-6 text-center">
<a class="portfolio-box">
<img class="img-fluid" src="/static/img/portfolio/thumbnails/{{ image.file }}" alt="{{ image.description }}">
<div class="portfolio-box-caption">
<div class="portfolio-box-caption-content">
<div class="project-category text-faded">
{{ image.subtitle }}
</div>
<div class="project-name">
{{ image.title }}
<br/><br/>
</div>
</div>
</div>
</a>
<button type="button" class="btn btn-success m-4"
hx-get="/edit/images/{{ bloc.name }}/{{ image.file }}"
hx-target="#{{bloc.name}}"
hw-swap="none">
<i class="fa fa-pencil-square-o"></i>
</button>
</div>
{% endif %}
{% endfor %}
</div>
</div>
</section>

View File

@@ -0,0 +1,27 @@
<section class="p-0" id="{{ bloc.name }}">
<div class="container-fluid p-0">
<div class="row no-gutters popup-gallery">
{% for image in bloc.values() %}
{% if image.file %}
<div class="col-lg-4 col-sm-6 text-center">
<a class="portfolio-box" href="/static/img/portfolio/fullsize/{{ image.file }}" alt="{{ image.description }}">
<img class="img-fluid" src="/static/img/portfolio/thumbnails/{{ image.file }}" alt="{{ image.description }}">
<div class="portfolio-box-caption">
<div class="portfolio-box-caption-content">
<div class="project-category text-faded">
{{ image.subtitle }}
</div>
<div class="project-name">
{{ image.title }}
</div>
</div>
</div>
</a>
</div>
{% endif %}
{% endfor %}
</div>
</div>
</section>

View File

@@ -0,0 +1,19 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="{{ config.siteDescription }}">
<meta name="author" content=" {{config.siteAuthor}} ">
<title> {{ config.siteTitle }} </title>
{% block css %} {% endblock %}
<!-- Bootstrap core CSS -->
<link href="/static/vendors/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom fonts for this template -->
<link href="/static/vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="/static/css/fontes-creative.css">
<!-- Plugin CSS -->
<link href="/static/vendors/magnific-popup/magnific-popup.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="/static/css/creative.css" rel="stylesheet">

View File

@@ -0,0 +1,41 @@
<header class="masthead text-center text-white d-flex" style="background-image: url('/static/img/{{ bloc.bg_img }}');">
<div class="container my-auto">
<form method='POST' action='/edit/accueil' enctype="multipart/form-data">
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-10 form-group mx-auto">
{{ form.titre(value=bloc.title,
class="form-control form-control-lg text-center text-uppercase")
}}
{% for error in form.titre.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
<hr>
</div>
<div class="col-lg-8 form-group mx-auto">
{% set f = form.presentation.process_data(bloc.text) %}
{{ form.presentation(
class="form-control text-center",
rows="7")
}}
{% for error in form.presentation.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
<br/>
<div class="col-lg-4 form-group mx-auto">
{{ form.texte_boutton(value=bloc.text_button,
class="form-control text-center") }}
{% for error in form.texte_boutton.errors %}
<span style="color: red;">
{{ error }}</span>
{% endfor %}
</div>
<div class="col-lg-3 form-group mx-auto">
{{ form.image(class="form-control" ) }}
</div>
{{ form.submit() }}
</div>
</div>
</form>
</div>
</header>

View File

@@ -0,0 +1,16 @@
<header class="masthead text-center text-white d-flex" style="background-image: url('/static/img/{{ mesinfos.presentation.bg_img }}');" >
<div class="container my-auto">
<div class="row">
<div class="col-lg-10 mx-auto">
<h1 class="text-uppercase">
<strong> {{ mesinfos.presentation.title }} </strong>
</h1>
<hr>
</div>
<div class="col-lg-8 mx-auto">
<p class="text-faded mb-5"> {{ mesinfos.presentation.text }} </p>
<a class="btn btn-primary btn-xl js-scroll-trigger" href="#about">{{ mesinfos.presentation.text_button }} </a>
</div>
</div>
</div>
</header>

View File

@@ -0,0 +1,34 @@
<div class="container-fluid p-0">
<form method='POST' action='/edit/images/{{ bloc.name }}/{{ image.file }}' hx-swap="outerHTML" hx-target="#{{ bloc.name }}">
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-2 mx-auto my-4 text-center">
<img class="img-fluid" src="/static/img/portfolio/thumbnails/{{ image.file }}" alt="{{ image.description }}">
</div>
<div class="col-lg-4 mx-auto my-4 text-center">
<h3> Titre </h3>
{{ form.title(value=image.title,
class="form-control form-control-lg text-center") }}
<hr class="light my-4">
<h3>Sous-titre</h3>
{{ form.subtitle(value=image.subtitle, class="form-control text-center") }}
<br/>
<h3> Catégorie </h3>
{{ form.category(value=image.category, class="form-control text-center") }}
<hr class="light my-4">
<h3> Description de votre image </h3>
<p> Une description de l'image est utile pour les personnes mal-voyantes et au référecement de votre site </p>
{{ form.description(value=image.description, class="form-control text-center") }}
<br/>
<button class="btn btn-success" type="submit" data-dismiss="modal"
hx-post="/edit/images/{{ bloc.name }}/{{ image.file }}"
hx-swap="outerHTML"
hx-target="#{{ bloc.name }}"> Valider </button>
<a class="btn btn-danger mx-auto" href="/edit/images/del/{{ image.nom_fichier }}">Supprimer l'image</a>
</div>
</div>
</form>
</div>

View File

@@ -0,0 +1,19 @@
{# creative/_layout.html #}
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Style CSS -->
{% include 'creative/_head.html' %}
</head>
<body id="page-top">
{% block body %}
{% endblock %}
</body>
{% include 'creative/javascript.html' %}
</html>

View File

@@ -0,0 +1,31 @@
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">{{ siteTitle }}</a>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
{% for item in menu.keys() %}
{% if menu[item] is mapping %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="{{ item }}" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ item }}
</a>
<div class="dropdown-menu" aria-labelledby="{{ item }}">
{% for subitem in menu[item].keys() %}
<a class="dropdown-item" href="{{item[subitem]}}">{{ subitem }}</a>
{% endfor %}
</div>
</li>
{% else %}
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="{{ menu[item] }}"> {{ item }} </a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</div>
</nav>

View File

@@ -0,0 +1,61 @@
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light fixed-bottom navbar-skrink" id="toolNav">
<div class="container">
<button class="btn btn-secondary" type="button" data-toggle="modal" data-target="#parameters" > Paramètres de mon site </button>
<a class="btn btn-warning nav-brand js-scroll-trigger" href="/edit/save"> Publier mes modifications </a>
</div>
</nav>
<div class="modal" id="parameters">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Paramètres </h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<ul class="nav nav-pills nav-justified">
<li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#menu">Menu</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#options"> Options </a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#publication">Publication</a>
</li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane container text-center active" id="menu">
<br/>
<h4> Organiser mes pages </h4>
{% include 'admin/_menu-edit.html' %}
</div>
<div class="tab-pane container text-center fade" id="options">
<br/>
<h4> Mes réseaux sociaux </h4>
</div>
<div class="tab-pane container fade text-center" id="publication">
<br/>
<h4> Serveur(s) où publier mon site </h4>
</div>
</div>
</div>
<!-- Modal footer -->
<div class="modal-footer mx-auto">
<button class="btn btn-success">Enregistrer </button>
<a class="btn btn-danger" href="/edit" > Annuler </a>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,42 @@
<div class="container my-auto">
<form method='POST' action='/edit/{{ bloc.name }}' hx-swap="outerHTML" hx-target="#{{ bloc.name }}" enctype="multipart/form-data">
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-10 form-group mx-auto">
{{ form.title(value=bloc.title,
class="form-control form-control-lg text-center text-uppercase")
}}
{% for error in form.title.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
<hr>
</div>
<div class="col-lg-8 form-group mx-auto">
{% set f = form.text.process_data(bloc.text) %}
<textarea class="form-control text-center" id="text" name="text"> {{ bloc.text }} </textarea>
{% for error in form.text.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
<br/>
<div class="col-lg-4 form-group mx-auto">
{{ form.text_button(value=bloc.text_button,
class="form-control text-center") }}
{% for error in form.text_button.errors %}
<span style="color: red;">
{{ error }}</span>
{% endfor %}
<h4> cible du bouton </h4>
{{ form.link(value=bloc.link, class="form-control text-center") }}
<br />
</div>
<div class="col-lg-3 form-group mx-auto">
{{ form.image(class="form-control" ) }}
</div>
{{ form.submit(class="btn") }}
<button class="btn btn-danger" hx-get="/view/{{ bloc.name }}" hx-swap="outerHTML" hx-target="#{{ bloc.name }}" > Annuler </button>
</div>
</div>
</form>
</div>

View File

@@ -0,0 +1,16 @@
<header class="masthead text-center text-white d-flex" style="background-image: url('/static/img/{{ bloc.bg_img }}');" id="{{ bloc.name }}" >
<div class="container my-auto">
<div class="row">
<div class="col-lg-10 mx-auto">
<h1 class="text-uppercase">
<strong> {{ bloc.title }} </strong>
</h1>
<hr>
</div>
<div class="col-lg-8 mx-auto">
<p class="text-faded mb-5"> {{ bloc.text }} </p>
<a class="btn btn-primary btn-xl js-scroll-trigger" href="{{bloc.link}}">{{ bloc.text_button }} </a>
</div>
</div>
</div>
</header>

View File

@@ -0,0 +1,19 @@
<div class="container">
<form method='POST' action='/edit//{{ bloc.name }}' hx-post='/edit//{{ bloc.name }}' hx-swap="outerHTML" hx-target="#{{ bloc.name }}">
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-8 mx-auto text-center">
{{ form.title(col=5,value=bloc.title,
class="form-control form-control-lg text-center") }}
<hr class="light my-4">
<textarea class="form-control text-center" id="text" name="text"> {{ bloc.text }} </textarea>
<br/>
{{ form.submit(class="btn") }}
<button class="btn btn-danger" hx-get="/view/{{ bloc.name }}" hx-swap="outerHTML" hx-target="#{{ bloc.name }}" > Annuler </button>
</div>
</div>
</form>
</div>
</section>

View File

@@ -0,0 +1,12 @@
<section class="bg-primary" id="{{ bloc.name }}">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="section-heading text-white">{{ bloc.title }}</h2>
<hr class="light my-4">
<p class="text-faded mb-4"> {{ bloc.text }} </p>
</div>
</div>
</div>
</section>

View File

@@ -0,0 +1,30 @@
{% extends 'creative/_layout.html' %}
{% block body %}
{% include 'creative/_nav.html' %}
{% include 'creative/_navtool.html' %}
{% for bloc in myblocs.values() %}
{% if blocEdit == bloc.name %}
{% include 'creative/_'+bloc.type+'-edit.html' %}
{% else %}
{% include 'creative/_'+bloc.type+'.html' %}
<button class="btn btn-success btn-xl pull-right"
style="margin-top:-7rem; margin-right:1rem;"
hx-get="/edit/{{ bloc.name }}"
hx-target="#{{bloc.name}}"
hw-swap="none"
> Éditer </button>
{% endif %}
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% extends "creative/layout.html" %}
{% block body %}
<!-- Navigation -->
{% include 'creative/_nav.html' %}
{% for bloc in myblocs.values() %}
{% include 'creative/_'+bloc.type+'.html' %}
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% extends "creative/layout.html" %}
{% block body %}
<!-- Navigation -->
{% include 'creative/_nav.html' %}
{% for bloc in myblocs.values() %}
{% include 'creative/_'+bloc.type+'.html' %}
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,16 @@
<!-- Bootstrap core JavaScript -->
<script src="/static/vendors/jquery/jquery.min.js"></script>
<script src="/static/vendors/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="/static/vendors/jquery-easing/jquery.easing.min.js"></script>
<script src="/static/vendors/scrollreveal/scrollreveal.min.js"></script>
<script src="/static/vendors/magnific-popup/jquery.magnific-popup.min.js"></script>
<script src="/static/vendors/htmx/htmx.min.js"></script>
<!-- Custom scripts for this template -->
<script src="/static/js/creative.js"></script>
{% block js %} {% endblock %}

View File

@@ -0,0 +1,19 @@
{# creative/layout.html #}
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Style CSS -->
{% include 'creative/_head.html' %}
</head>
<body id="page-top">
{% block body %}
{% endblock %}
</body>
{% include 'creative/javascript.html' %}
</html>

View File

@@ -0,0 +1,13 @@
<div class="container text-center">
<form method='POST' action='/login'>
{{ form.csrf_token }}
<h2 class="mb-4"> Entrez votre mot de passe : </h2>
{{ form.passwd(col=5, class="form-control form-control-lg text-center" ) }}
<br />
{{ form.submit() }}
</form>
</div>

View File

@@ -0,0 +1,3 @@
<script src="{{ url_for('static', filename='vendors/dropzone/dropzone-min.js') }}"></script>
<link href="{{ url_for('static', filename='vendors/dropzone/dropzone.css') }}" rel="stylesheet">

View File

@@ -0,0 +1,27 @@
<script>
window.onload = function () {
var dropzoneOptions = {
dictDefaultMessage: 'Déposez vos images ici !',
paramName: "file",
maxFilesize: 8, // MB
acceptedFiles: "image/*",
url: "/upload-gallery/{{ bloc.name }}",
chunking: true,
forceChunking: true,
chunkSize: 1000000,
autoProcessQueue: true,
init: function () {
this.on("success", function (file) {
console.log("success > " + file.name);
setTimeout(() => { this.removeFile(file); }, 2000);
});
}
};
var uploader = document.querySelector('#uploader');
var myDropzone = new Dropzone(uploader, dropzoneOptions);
console.log("Loaded");
};
</script>

View File

@@ -0,0 +1,26 @@
<script>
window.onload = function () {
var dropzoneOptions = {
dictDefaultMessage: 'Déposez vos fichiers ici!',
paramName: "file",
maxFilesize: 1024, // MB
url: "/upload-dropzone",
chunking: true,
forceChunking: true,
chunkSize: 1000000,
autoProcessQueue: true,
init: function () {
this.on("success", function (file) {
console.log("success > " + file.name);
setTimeout(() => { this.removeFile(file); }, 2000);
});
}
};
var uploader = document.querySelector('#uploader');
var myDropzone = new Dropzone(uploader, dropzoneOptions);
console.log("Loaded");
};
</script>

View File

@@ -0,0 +1,35 @@
{% extends 'index.html.tpl' %}
{% block css %}
{% include 'edit-tools/css/dropzone' %}
{% endblock %}
{% block body %}
{% include config.theme+'/_nav.html' %}
{% include config.theme+'/_navtool.html' %}
{% for bloc in myblocs.values() %}
{% if blocEdit == bloc.name %}
{% include config.theme+'/_'+bloc.type+'-edit.html' %}
{% else %}
{% include config.theme+'/_'+bloc.type+'.html' %}
<button class="btn btn-success btn-xl pull-right"
style="margin-top:-7rem; margin-right:1rem;"
hx-get="/edit/{{ bloc.name }}"
hx-target="#{{bloc.name}}"
hw-swap="none"
> Éditer </button>
{% endif %}
{% endfor %}
{% include '_flash_msgs.html' %}
{% endblock %}
{% block js %}
{% endblock %}

View File

@@ -0,0 +1,148 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title> MaPagePerso </title>
<!-- Bootstrap core CSS -->
<link href="static/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom fonts for this template -->
<link href="static/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Cabin:700' rel='stylesheet' type='text/css'>
<!-- Custom styles for this template -->
<link href="static/css/grayscale.css" rel="stylesheet">
</head>
<body id="page-top">
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">{{ mesinfos.nom }}</a>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="fa fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#about">A Propos</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#download"> Produits </a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#contact">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<!-- Intro Header -->
<header class="masthead">
<div class="intro-body">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h1 class="brand-heading">{{ mesinfos.nom }}</h1>
<p class="intro-text">{{ mesinfos.presentation }} </p>
<a href="#about" class="btn btn-circle js-scroll-trigger">
<i class="fa fa-angle-double-down animated"></i>
</a>
</div>
</div>
</div>
</div>
</header>
<!-- About Section -->
<section id="about" class="content-section text-center">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>{{ mesinfos.titre_description }}</h2>
<p>{{ mesinfos.description }}</p>
</div>
</div>
</div>
</section>
<!-- Download Section -->
<section id="download" class="download-section content-section text-center">
<div class="container">
<div class="col-lg-8 mx-auto">
<h2>{{ mesinfos.titre_lien }}</h2>
<p> {{ mesinfos.description_lien }} </p>
<a href="{{ mesinfos.lien }}" class="btn btn-default btn-lg">
{{ mesinfos.bouton_lien }}</a>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="content-section text-center">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>{{mesinfos.titre_contact}}</h2>
<p> {{ mesinfos.texte_contact }}</p>
<p> {{ mesinfos.horraires }} </p>
<ul class="list-inline banner-social-buttons">
<li class="list-inline-item">
<a href="mailto:{{mesinfos.email}}" class="btn btn-default btn-lg">
<i class="fa fa-enveloppe-o fa-fw"></i>
<span class="network-name"> {{ mesinfos.email }} </span>
</a>
</li>
<li class="list-inline-item">
<a href="phone://{{ mesinfos.phone }}" class="btn btn-default btn-lg">
<i class="fa fa-phone fa-fw"></i>
<span class="network-name">{{ mesinfos.telephone }}</span>
</a>
</li>
</ul>
<br/>
<p> {{ mesinfos.adresse }} <br/>
{{ mesinfos.code_postal }} - {{ mesinfos.ville }} </p>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="container text-center">
<p>Copyright &copy; Your Website 2018</p>
</div>
</footer>
<!-- Bootstrap core JavaScript -->
<script src="static/vendor/jquery/jquery.min.js"></script>
<script src="static/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="static/vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Google Maps API Key - Use your own API key to enable the map feature. More information on the Google Maps API can be found at https://developers.google.com/maps/ -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCRngKslUGJTlibkQ3FkfTxj3Xss1UlZDA&sensor=false"></script>
<!-- Custom scripts for this template -->
<script src="static/js/grayscale.min.js"></script>
</body>
</html>

View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="{{ config.lang }}">
<head>
<!-- Style CSS -->
{% include config.theme+'/_head.html' %}
{% block css %}
{% endblock %}
</head>
<body id="page-top">
{% block body %}
{% include config.theme+'/_nav.html' %}
{% for bloc in myblocs.values() %}
{% include config.theme+'/_'+bloc.type+'.html' %}
{% endfor %}
{% endblock %}
</body>
{% include config.theme+'/javascript.html' %}
{% block js %}
{% endblock js %}
</html>