Rewrite edit blocs and themes

This commit is contained in:
2026-03-28 12:20:30 +01:00
committed by kitoy
parent 9497c64b09
commit 3a5edc30bb
32 changed files with 627 additions and 373 deletions

View File

@@ -0,0 +1,48 @@
<div>
<form class="sortblocs" action="/sortblocs" method="POST" id="myblocs">
<input id="csrf_token" name="csrf_token" type="hidden" value="{{ csrf_token() }}">
{% include 'admin/_blocs-list.html' %}
</form>
<hr/>
<button class="btn btn-outline-success" onclick="printForm()">+</button>
<div class="formAddBloc" id="addBloc">
<form action="/addBloc" method="POST" class="" >
<input id="csrf_token" name="csrf_token" type="hidden" value="{{ csrf_token() }}">
<h3>Créé un nouveau bloc</H3>
<br>
<label for="nom"><b>Nom du bloc </b></label><br/>
<input type="text" name="blocName" placeholder="Nom" id="blocName" required="">
<br>
<label for="link"><b>Type de bloc</b></label>
<br/>
<select id="blocType" name="blocType" size="8">
<option value="presentation">Présentation</option>
<option value="text">Texte libre</option>
<option value="gallery">Galerie</option>
<option value="external_link">Lien externe</option>
<option value="contact">Contact</option>
</select>
<br/>
<button type="submit" class="btn btn-success"
hx-post="/addBloc"
hx-swap="outerHTML"
hx-target="#myblocs"> Créer le bloc </button>
</form>
</div>
<hr/>
<button class="btn btn-success" type="submit" form="myblocs"> Enregister </button>
</div>

View File

@@ -0,0 +1,33 @@
<form class="sortblocs" action="/sortblocs" method="POST" id="myblocs">
<div id="myblocs" class="myblocs">
{% for item in myblocs.keys() %}
<div class="bloc" id="bloc-{{ item }}" style="margin-top: 10px;">
<button class="btn"> {{ item }} - {{ myblocs[item]['type'] }} </button>
<input class="input-menu" id="bloc-{{ item }}" name="{{ item }}" value="" style="display:none;">
<button class="btn btn-danger" onclick="deleteItem(this)"> x </button>
</div>
{% endfor %}
</div>
</form>
<script src="/static/vendors/Sortable/Sortable.min.js"></script>
<script type="text/javascript">
var elements = document.getElementsByClassName('myblocs');
for (var i = 0; i < elements.length; i++) {
new Sortable(elements[i], {
group: 'shared',
animation: 150,
invertSwap: true,
fallbackOnBody: true,
swapThreshold: 0.65,
})};
</script>

View File

@@ -0,0 +1,9 @@
{% for item in myblocs.keys() %}
<div class="bloc" id="bloc-{{ item }}" style="margin-top: 10px;">
<button class="btn"> {{ item }} - {{ myblocs[item]['type'] }} </button>
<input class="input-menu" id="bloc-{{ item }}" name="{{ item }}" value="" style="display:none;">
<button class="btn btn-danger" onclick="deleteItem(this)"> x </button>
</div>
{% endfor %}

View File

@@ -1,4 +1,5 @@
<form class="sortable" action="/editmenu" method="POST" hx-post="/editmenu" hx-swap="none">
<form class="sortable" action="/editmenu" method="POST" id="menuEdit">
<input id="csrf_token" name="csrf_token" type="hidden" value="{{ csrf_token() }}">
<div id="Menu" class="list">
{% for item in menu.keys() %}
@@ -31,14 +32,14 @@
</div>
<button class="btn btn-outline-success" onclick="openForm()">+</button>
<hr>
<button class="btn btn-success" type="submit"> Enregistrer </button>
<button class="btn btn-success" type="submit" form="menuEdit"> Enregistrer </button>
</form>
<div class="form-popup" id="myForm" style="display: none;">
<form action="/action_page.php" class="form-container">
<form class="form-container">
<h3>Nouvelle entrée</h3><br>
<label for="nom"><b>Nom</b></label>

View File

@@ -0,0 +1,35 @@
<!--
<form class="sortblocs" action="/createpage" method="POST" id="mypages">
<div id="myblocs" class="myblocs">
{% for item in mypages %}
<div class="page" id="page" style="margin-top: 10px;">
<button class="btn"> {{ }} - {{ myblocs[item]['type'] }} </button>
<input class="input-menu" id="bloc-{{ item }}" name="{{ item }}" value="" style="display:none;">
<button class="btn btn-danger" onclick="deleteItem(this)"> x </button>
</div>
{% endfor %}
</div>
</form>
-->
<script src="/static/vendors/Sortable/Sortable.min.js"></script>
<script type="text/javascript">
var elements = document.getElementsByClassName('page');
for (var i = 0; i < elements.length; i++) {
new Sortable(elements[i], {
group: 'shared',
animation: 150,
invertSwap: true,
fallbackOnBody: true,
swapThreshold: 0.65,
})};
</script>

View File

@@ -0,0 +1,24 @@
<!--
<form class="sortblocs" action="/createpage" method="POST" id="mypages">
<div id="myblocs" class="myblocs">
</div>
</form>
-->
<script src="/static/vendors/Sortable/Sortable.min.js"></script>
<script type="text/javascript">
var elements = document.getElementsByClassName('page');
for (var i = 0; i < elements.length; i++) {
new Sortable(elements[i], {
group: 'shared',
animation: 150,
invertSwap: true,
fallbackOnBody: true,
swapThreshold: 0.65,
})};
</script>

View File

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

View File

@@ -1,61 +1,141 @@
<!-- 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>
<button class="btn btn-primary"
type="button"
data-toggle="modal"
data-target="#addBloc">
Agencer es blocs
</button>
<button class="btn btn-info nav-brand js-scroll-trigger"
type="button"
data-toggle="modal"
data-target="#mymenu">
Editer le menu
</button>
<button class="btn btn-success nav-brand js-scroll-trigger"
type="button"
data-toggle="modal"
data-target="#mypages">
Gérer mes pages
</button>
<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 class="modal" id="addBloc">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title"> Agencer mes blocs </h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body text-center">
{% include 'admin/_bloc-edit.html' %}
</div>
<div class="modal-footer mx-auto">
<a class="btn btn-danger" href="/edit" > Annuler </a>
</div>
</div>
</div>
</div>
<div class="modal" id="mypages">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title"> Mes pages </h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body text-center">
{% include 'admin/_pages-edit.html' %}
</div>
<div class="modal-footer mx-auto">
<a class="btn btn-danger" href="/edit" > Annuler </a>
</div>
</div>
</div>
</div>
<div class="modal" id="mymenu">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title"> Mon menu </h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body text-center">
{% include 'admin/_menu-edit.html' %}
</div>
<div class="modal-footer mx-auto">
<a class="btn btn-danger" href="/edit" > Annuler </a>
</div>
</div>
</div>
</div>
<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" 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 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">
<a class="btn btn-danger" href="/edit" > Annuler </a>
</div>
</div>
</div>
</div>

View File

@@ -10,20 +10,20 @@
<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>
<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>
<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>
<p>
<bold> {{ bloc.postal_code }} - {{ bloc.city }} </bold>
</p>
</div>
</div>
</div>

View File

@@ -9,8 +9,12 @@
</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>
<a class="btn btn-primary btn-xl js-scroll-trigger" href="#">{{ bloc.text_button }}
</a>
</div>
</div>
</div>
</header>

View File

@@ -2,7 +2,7 @@
<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 }}
{% include 'edit-tools/_form-base.html' %}
<div class="row">
<div class="col-lg-8 mx-auto text-center">
{{ form.title(col=5, value=bloc.title,
@@ -43,8 +43,8 @@
</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>
{% include 'edit-tools/_btn-save-cancel.html' %}
</div>
</div>
</form>

View File

@@ -2,7 +2,7 @@
<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 }}
{% include 'edit-tools/_form-base.html' %}
<h2 class="mb-4"> Titre du lien </h2>
{{ form.title(value=bloc.title,
class="form-control form-control-lg text-center") }}
@@ -20,9 +20,7 @@
{{ 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>
{% include 'edit-tools/_btn-save-cancel.html' %}
</form>
</div>

View File

@@ -0,0 +1,6 @@
<form id="uploader" methods="POST" class="dropzone dz-clickable"></form>
{% include theme+'/blocs/edit/images_list.html' %}
{% include '_js_dropzone.html' %}

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="#editImg">
{{ 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="#editImg"> 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

@@ -2,8 +2,10 @@
<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,
{% include 'edit-tools/_form-base.html' %}
{{ form.title(value=bloc.title,
class="form-control form-control-lg text-center text-uppercase")
}}
{% for error in form.title.errors %}
@@ -32,9 +34,7 @@
<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>
{% include 'edit-tools/_btn-save-cancel.html' %}
</div>
</div>
</form>

View File

@@ -1,19 +1,20 @@
<div class="container">
<form method='POST' action='/edit//{{ bloc.name }}' hx-post='/edit//{{ bloc.name }}' hx-swap="outerHTML" hx-target="#{{ bloc.name }}">
<form method='POST' action='/edit/{{ bloc.name }}' >
{{ form.csrf_token }}
<div class="row">
<div class="col-lg-8 mx-auto text-center">
{{ form.title(col=5,value=bloc.title,
{% include 'edit-tools/_form-base.html' %}
{{ 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>
{% include 'edit-tools/_btn-save-cancel.html' %}
</div>
</div>
</form>
</div>
</section>

View File

@@ -1,8 +1,5 @@
<form id="uploader" methods="POST" class="dropzone dz-clickable"></form>
<section class="p-0" id="{{ bloc.name }}">
<div class="container-fluid p-0">
<section class="p-0">
<div class="container-fluid p-0" id="editImg">
<div class="row no-gutters ">
{% for image in bloc.values() %}
{% if image.file %}
@@ -23,7 +20,7 @@
</a>
<button type="button" class="btn btn-success m-4"
hx-get="/edit/images/{{ bloc.name }}/{{ image.file }}"
hx-target="#{{bloc.name}}"
hx-target="#editImg"
hw-swap="none">
<i class="fa fa-pencil-square-o"></i>
</button>
@@ -36,5 +33,3 @@
</section>
{% include '_js_dropzone.html' %}

View File

@@ -2,17 +2,17 @@
{% block body %}
{% include 'creative/_nav.html' %}
{% include 'creative/_navtool.html' %}
{% include theme+'/_nav.html' %}
{% include theme+'/_navtool.html' %}
{% for bloc in myblocs.values() %}
{% if blocEdit == bloc.name %}
{% include 'creative/_'+bloc.type+'-edit.html' %}
{% include theme+'/_'+bloc.type+'-edit.html' %}
{% else %}
{% include 'creative/_'+bloc.type+'.html' %}
{% include theme+'/_'+bloc.type+'.html' %}
<button class="btn btn-success btn-xl pull-right"
style="margin-top:-7rem; margin-right:1rem;"

View File

@@ -0,0 +1,10 @@
<button class="btn btn-success"
hx-post='/edit/{{ bloc.name }}'
hx-swap="outerHTML"
hx-target="#{{ bloc.name }}" > Enregistrer </button>
<button class="btn btn-danger"
hx-get="/view/{{ bloc.name }}"
hx-swap="outerHTML"
hx-target="#{{ bloc.name }}" > Annuler </button>

View File

@@ -0,0 +1,18 @@
<div class="row mx-md-5">
<div class="col-auto">
<label> Nom du bloc </label>
{{ form.name(col=4,value=bloc.name,
class="form-control text-center") }}
</div>
<div class="col-auto">
<label> Couleur de l'arrière plan </label>
{{ form.bg_color(col=4,
class="form-control form-control-color text-center") }}
</div>
<div class="col-auto">
<label> Couleur du texte</label>
{{ form.fg_color(col=4,
class="form-control form-control-color text-center") }}
</div>
</div>
<br/>

View File

@@ -1,18 +1,18 @@
<style>
.msginfo
{
color: white;
font-weight:bold;
}
.msginfo .success
{
background-color: green;
}
.msginfo
{
color: white;
font-weight:bold;
}
.msginfo .success
{
background-color: green;
}
.msginfo .error{
background-color: red;
}
.msginfo .error{
background-color: red;
}
</style>

View File

@@ -2,6 +2,7 @@
{% block css %}
{% include 'edit-tools/css/dropzone' %}
<link href="/static/css/edit-toolbar.css" rel="stylesheet">
{% endblock %}
@@ -13,16 +14,15 @@
{% for bloc in myblocs.values() %}
{% if blocEdit == bloc.name %}
{% include config.theme+'/_'+bloc.type+'-edit.html' %}
{% include config.theme+'/blocs/edit/_'+bloc.type+'.html' %}
{% else %}
{% include config.theme+'/_'+bloc.type+'.html' %}
{% include config.theme+'/blocs/_'+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>
hx-swap="oob"> Modifier </button>
{% endif %}
{% endfor %}

View File

@@ -14,7 +14,7 @@
{% include config.theme+'/_nav.html' %}
{% for bloc in myblocs.values() %}
{% include config.theme+'/_'+bloc.type+'.html' %}
{% include config.theme+'/blocs/_'+bloc.type+'.html' %}
{% endfor %}