From cdf1d439f55c702f828c2a35963a08910edf7ca6 Mon Sep 17 00:00:00 2001 From: kitoy Date: Sat, 28 Mar 2026 12:20:30 +0100 Subject: [PATCH] Rewrite edit blocs and themes --- app/config.py | 14 - app/forms.py | 45 +-- app/routes.py | 333 +++++++++++------- app/templates/admin/_bloc-edit.html | 48 +++ app/templates/admin/_blocs-list.html | 33 ++ app/templates/admin/_blocs_list.html | 9 + app/templates/admin/_menu-edit.html | 7 +- app/templates/admin/_mypages.html | 35 ++ app/templates/admin/_pages-edit.html | 24 ++ app/templates/{creative => admin}/login.html | 5 +- app/templates/creative/_navtool.html | 184 +++++++--- .../creative/{ => blocs}/_about.html | 0 .../creative/{ => blocs}/_contact.html | 10 +- .../creative/{ => blocs}/_external_link.html | 0 .../creative/{ => blocs}/_gallery.html | 0 .../creative/{ => blocs}/_presentation.html | 6 +- app/templates/creative/{ => blocs}/_text.html | 0 .../edit/_about.html} | 0 .../edit/_contact.html} | 6 +- .../edit/_external_link.html} | 6 +- .../creative/blocs/edit/_gallery.html | 6 + .../creative/blocs/edit/_image-edit.html | 34 ++ .../edit/_presentation.html} | 8 +- .../edit/_text.html} | 9 +- .../edit/images_list.html} | 11 +- app/templates/creative/edit.html | 8 +- .../edit-tools/_btn-save-cancel.html | 10 + app/templates/edit-tools/_form-base.html | 18 + app/templates/edit-tools/toolbar.html | 26 +- app/templates/edit.html.tpl | 8 +- app/templates/index.html.tpl | 2 +- ident.json | 95 ----- 32 files changed, 627 insertions(+), 373 deletions(-) delete mode 100644 app/config.py create mode 100644 app/templates/admin/_bloc-edit.html create mode 100644 app/templates/admin/_blocs-list.html create mode 100644 app/templates/admin/_blocs_list.html create mode 100644 app/templates/admin/_mypages.html create mode 100644 app/templates/admin/_pages-edit.html rename app/templates/{creative => admin}/login.html (61%) rename app/templates/creative/{ => blocs}/_about.html (100%) rename app/templates/creative/{ => blocs}/_contact.html (77%) rename app/templates/creative/{ => blocs}/_external_link.html (100%) rename app/templates/creative/{ => blocs}/_gallery.html (100%) rename app/templates/creative/{ => blocs}/_presentation.html (91%) rename app/templates/creative/{ => blocs}/_text.html (100%) rename app/templates/creative/{_about-edit.html => blocs/edit/_about.html} (100%) rename app/templates/creative/{_contact-edit.html => blocs/edit/_contact.html} (91%) rename app/templates/creative/{_external_link-edit.html => blocs/edit/_external_link.html} (83%) create mode 100644 app/templates/creative/blocs/edit/_gallery.html create mode 100644 app/templates/creative/blocs/edit/_image-edit.html rename app/templates/creative/{_presentation-edit.html => blocs/edit/_presentation.html} (87%) rename app/templates/creative/{_text-edit.html => blocs/edit/_text.html} (53%) rename app/templates/creative/{_gallery-edit.html => blocs/edit/images_list.html} (81%) create mode 100644 app/templates/edit-tools/_btn-save-cancel.html create mode 100644 app/templates/edit-tools/_form-base.html delete mode 100644 ident.json diff --git a/app/config.py b/app/config.py deleted file mode 100644 index f1ed833..0000000 --- a/app/config.py +++ /dev/null @@ -1,14 +0,0 @@ - -HOST="fd01::2" -PORT="8000" -SECRET_KEY = "CHANGE-ME" -STATIC_PATH = './app/static/' -JSON_FILE = './ident.json' -IMAGES_PATH = ['/static/img/portfolio/'] -IMAGES_CACHE = STATIC_PATH+'/img/cache/' -#Dossier privé des utilisateurs -USERS_FOLDER = "/home/kitoy/prog/mapageperso/users" - -# Le dossiers où sont exporté les sites générer -PUBLIC_FOLDER = "/home/kitoy/prog/mapageperso/public" -DEFAULT_SITE="default" diff --git a/app/forms.py b/app/forms.py index 8002938..19bfafd 100644 --- a/app/forms.py +++ b/app/forms.py @@ -1,56 +1,45 @@ import re from flask_wtf import FlaskForm -from wtforms import StringField, PasswordField, BooleanField +from wtforms import StringField, PasswordField, BooleanField, ColorField from wtforms import SubmitField, TextAreaField, FileField from flask_wtf.file import FileField, FileAllowed, FileRequired from wtforms import validators from wtforms.validators import DataRequired, Length -class Accueil(FlaskForm): +class FormBloc(FlaskForm): title = StringField('Titre', validators=[DataRequired()]) + name = StringField('Nom du bloc', validators=[DataRequired()]) + bg_color = ColorField('Couleur de fond', validators=[]) + fg_color = ColorField('Couleur du texte', validators=[]) text = TextAreaField('Présentation', validators=[Length(min=0, max=1000)]) text_button = StringField('Texte du bouton', validators=[]) link = StringField('Lien', validators=[]) image = FileField('image', validators=[FileAllowed(['jpg', 'png', 'gif'], 'Images only!')]) - submit = SubmitField('Valider') - -class Description(FlaskForm): - title = StringField('Titre', validators=[DataRequired()]) - text = TextAreaField('Texte', validators=[DataRequired()]) - submit = SubmitField('Valider') + email = StringField('Email', validators=[]) + phone = StringField('Téléphone', validators=[]) + address = StringField('Addresse', validators=[]) + postal_code = StringField('Code Postal', validators=[]) + city = StringField('Ville', validators=[]) + class ImageForm(FlaskForm): title = StringField('Titre', validators=[DataRequired()]) + name = StringField('Nom du bloc', validators=[]) subtitle = StringField('Sous-titre',validators=[]) category = StringField('Categories',validators=[]) description = StringField('Description', validators=[]) class ImageUpload(FlaskForm): + name = StringField('Nom du bloc', validators=[]) title = StringField('Titre', validators=[DataRequired()]) subtitle = StringField('Sous-titre',validators=[]) text = StringField('Une description de votre image', validators=[]) category = StringField('Categories',validators=[]) image = FileField('image', validators=[FileRequired(), FileAllowed(['jpg', 'png', 'gif'], 'Images only!')]) - submit = SubmitField('Valider') - -class Lien(FlaskForm): - title = StringField('Titre', validators=[DataRequired()]) - text = StringField('Texte', validators=[DataRequired()]) - link = StringField('Lien', validators=[DataRequired()]) - text_button = StringField('Texte du bouton', validators=[DataRequired()]) - submit = SubmitField('Valider') - -class Contact(FlaskForm): - title = StringField('Titre', validators=[]) - text = TextAreaField('Texte contact', validators=[]) - email = StringField('Email', validators=[]) - phone = StringField('Téléphone', validators=[]) - address = StringField('Adresse', validators=[]) - postal_code = StringField('Code Postal', validators=[]) - city = StringField('Ville', validators=[]) - submit = SubmitField('Valider') class Login(FlaskForm): - passwd = PasswordField('Votre mot de passe', validators=[DataRequired()]) - submit = SubmitField('Se connecter') + login = StringField('Votre identifiant', validators=[DataRequired()]) + passwd = PasswordField('Votre mot de passe', validators=[DataRequired()]) + submit = SubmitField("Se connecter",validators=[]) + diff --git a/app/routes.py b/app/routes.py index f261687..d7cf91d 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,6 +1,7 @@ from app import app from flask import render_template, url_for, request, flash, redirect, session, make_response import json +from markupsafe import escape from werkzeug.utils import secure_filename import os from app.forms import ImageForm, ImageUpload @@ -12,121 +13,128 @@ from copy import deepcopy from app.forms import Login from functools import wraps from app.utils import login_required +from flask_wtf.csrf import CSRFProtect + +csrf = CSRFProtect(app) + + +app.secret_key = 'your_secret_key' + app.config.from_pyfile('config.py') -DB = DataSite(app.config['JSON_FILE'], app.config['STATIC_PATH']) -DB.loadFile() -tmp = deepcopy(DB) + + +USERS_FOLDER = app.config['USERS_FOLDER'] bcrypt = Bcrypt(app) EXT_IMG = {'.jpg', '.JPG', '.png', '.PNG', '.gif', '.GIF', '.bmp', '.BMP', '.jpeg', '.JPEG' } -@app.route('/') -@app.route('/index.html') -def index(): - DB.loadFile() - config = DB.datas['config'] - menu = DB.datas['menu'] - myblocs = DB.datas['blocs'] - return render_template('/index.html.tpl', - config=config, - menu=menu, - myblocs=myblocs) +@app.route('/', methods=['GET', 'POST']) +@app.route('/index.html', methods=['GET', 'POST']) +@app.route('/login', methods=['GET', 'POST']) +def login(): + form = Login() + if 'username' in session : + resp = redirect(url_for('edit', _external=True)) + else : + resp = redirect(url_for('login', _external=True)) + + if request.method == 'POST' : + login = str(request.form['login']) + password = str(request.form['passwd']) + if login in os.listdir(USERS_FOLDER): + db = DataSite(login, USERS_FOLDER) + passwd_bcrypt = db.datas['config']['passwd'] + + if bcrypt.check_password_hash(passwd_bcrypt, password) is True: + session['username'] = login + resp = redirect(url_for('edit', _external=True)) + else: + flash(u'Mauvais mot de passe', 'error') + + else: + resp = render_template('/admin/login.html', form=form) + + return resp + +@app.route( '/logout/', methods=['GET'] ) +@login_required +def logout(): + session.pop('username', None) # Supprimer username de la session s'il s'y trouve + session.clear() + return redirect(url_for('login')) + @app.route('/edit/save') @login_required def savefile(): - DB.saveJson(tmp.datas) - DB.loadFile() - tmp.emptyTrash() + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + db.saveJson(TMP.datas) + db.emptyTrash() return redirect(url_for('edit')) @app.route('/edit') @login_required def edit(): - theme = tmp.datas['config']['theme'] - menu = DB.datas['menu'] - print('edit_menu' + str(menu)) - myblocs = tmp.datas['blocs'] + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + theme = db.datas['config']['theme'] + menu = db.datas['menu'] + myblocs = db.datas['blocs'] return render_template('/edit.html.tpl', blocEdit="", - config=DB.datas['config'], + config=db.datas['config'], menu=menu, + theme=theme, myblocs=myblocs ) - - -@app.route('/edit/', methods=['GET', 'POST']) +@app.route('/edit/') @login_required -def editBloc(bloc): - theme = tmp.datas['config']['theme'] - menu= tmp.datas['menu'] - myblocs = tmp.datas['blocs'] - form = MyBlocs.makeForm(tmp.datas['blocs'][bloc]) - bloc = tmp.datas['blocs'][bloc] - if request.method == 'POST': - if form.validate_on_submit(): - tmp.updateDatas(bloc, form) - flash(u'Vos changements on été pris en compte', 'success') - - if "hx-request" in request.headers: - return render_template(theme+'/_'+bloc['type']+'.html', - bloc=bloc) - else: - return redirect(url_for('edit')) - - if "hx-request" in request.headers: - return render_template(theme+'/_'+bloc['type']+'-edit.html', - bloc=bloc, - form=form) - else: - return render_template(theme+'/edit.html', - config=DB.datas['config'], - menu=menu, - myblocs=myblocs, - blocEdit=bloc['name'], - form=form) - -@app.route('/view/', methods=['GET']) -@login_required -def viewBloc(bloc): - theme = tmp.datas['config']['theme'] - myblocs = tmp.datas['blocs'] - form = MyBlocs.makeForm(tmp.datas['blocs'][bloc]) - bloc = tmp.datas['blocs'][bloc] - - return render_template(theme+'/_'+bloc['type']+'.html', - bloc=bloc) - +def edit(page): + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + blocs_page = db.getpage() + theme = db.datas['config']['theme'] + menu = db.datas['menu'] + myblocs = db.datas['blocs'] + return render_template('/edit.html.tpl', + blocEdit="", + config=db.datas['config'], + menu=menu, + theme=theme, + myblocs=myblocs + ) @app.route('/edit/images//', methods=['GET', 'POST']) @login_required def editPhoto(image, bloc): - theme = tmp.datas['config']['theme'] + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + theme = db.datas['config']['theme'] form = ImageForm() - mesimages = tmp.datas['blocs'][bloc] - - if request.method == 'POST': - if form.validate_on_submit(): - tmp.updateImg(bloc, mesimages[image], form) - else: - flash(u'Image non modifier', error) - - - form = MyBlocs.makeForm(tmp.datas['blocs'][bloc]) - if "hx-request" in request.headers: - return render_template(theme+'/_gallery-edit.html', - bloc=mesimages, - form=form) - else: - return redirect ('/edit#'+bloc) + mesimages = db.datas['blocs'][bloc] + if form.validate_on_submit(): + if request.method == 'POST': + db.updateImg(bloc, mesimages[image], form) + db.saveJson() + form = MyBlocs.makeForm(db.datas['blocs'][bloc]) + if "hx-request" in request.headers: + return render_template(theme+'/blocs/edit/images_list.html', + theme=theme, + bloc=mesimages, + form=form) + else: + return redirect ('/edit#'+bloc) else: - return render_template(theme+'/_image-edit'+'.html', form=form, image=mesimages[image], bloc=mesimages) - + return render_template(theme+'/blocs/edit/_image-edit'+'.html', form=form, image=mesimages[image], bloc=mesimages) + @app.route('/upload-gallery/', methods=['POST']) @login_required def drop_upload(bloc): + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) file = request.files['file'] filename = secure_filename(file.filename) ext = os.path.splitext(filename)[-1] @@ -157,64 +165,133 @@ def drop_upload(bloc): with Image.open(os.path.join(save_path, 'fullsize', filename )) as img : img.thumbnail((300,300)) img.save(os.path.join(save_path, 'thumbnails', filename ) ) - tmp.addImg(bloc, filename) + db.addImg(bloc, filename) + db.saveJson() return make_response(('Chunk upload succesfull', 200)) - @app.route('/edit/images//del/', methods=['GET']) @login_required def delImage(bloc, image): - tmp.delImg(image) + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + db.delImg(image) + db.saveJson() return redirect ('/edit#'+bloc) +@app.route('/edit/', methods=['GET', 'POST']) +@login_required +def editBloc(blocname): + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + theme = db.datas['config']['theme'] + bloc = db.datas['blocs'][blocname] + form = MyBlocs.makeForm(bloc) + + if request.method == 'POST': + if form.validate_on_submit(): + print(form.name.data) + db.datas['blocs'][form.name.data]=DataSite.updateBloc(bloc, form) + db.saveJson() + flash(u'Vos changements on été pris en compte et enregistré', 'success') + else: + print(form.errors) + + if "hx-request" in request.headers: + return render_template(theme+'/blocs/_'+bloc['type']+'.html', + theme=theme, + bloc=db.datas['blocs'][blocname]) + else: + return redirect(url_for('edit')) + + + else: + if "hx-request" in request.headers: + return render_template(theme+'/blocs/edit/_'+bloc['type']+'.html', + theme=theme, + bloc=bloc, + form=form) + else: + return render_template('/edit.html.tpl', + config=db.datas['config'], + menu=db.datas['menu'], + myblocs=db.datas['blocs'], + theme=theme, + blocEdit=bloc['name'], + form=form) + +@app.route('/view/', methods=['GET']) +@login_required +def viewBloc(bloc): + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + theme = db.datas['config']['theme'] + myblocs = db.datas['blocs'] + form = MyBlocs.makeForm(db.datas['blocs'][bloc]) + bloc = db.datas['blocs'][bloc] + + return render_template(theme+'/blocs/_'+bloc['type']+'.html', + bloc=bloc) + +@app.route('/addBloc', methods=['POST']) +@login_required +def addBloc(): + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + for key in request.form: + print (key +':'+ request.form[key]) + blocName = request.form['blocName'] + blocType = request.form['blocType'] + bloc = MyBlocs.new(blocName, blocType) + if bloc != None: + db.datas['blocs'][blocName] = { 'name': blocName, 'type': blocType} + flash (u'Bloc ajouté avec succès', 'succes'); + else: + return make_response(('Invalid type of bloc ', 500)) + + db.saveJson() + if "hx-request" in request.headers: + return render_template('/admin/_blocs-list.html', + myblocs=db.datas['blocs']) + else: + return redirect(url_for('edit')) + +@app.route('/sortblocs', methods=['POST']) +@login_required +def sortblocs(): + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + config = db.datas['config'] + menu = db.datas['menu'] + myblocs = deepcopy(TMP.datas['blocs']) + db.datas['blocs']=dict() + for bloc in request.form: + if bloc != 'csrf_token': + bloc_name = bloc.replace("bloc-", "", 2) + db.datas['blocs'][bloc_name] = myblocs[bloc_name] + flash (u'Les blocs ont été réagencés', 'succes'); + db.saveJson() + return redirect(url_for('edit')) + @app.route('/editmenu', methods=['POST']) @login_required def editMenu(): - print (request.form) - DB.datas['menu']=dict() + user = '%s'% escape(session['username']) + db = DataSite(user, USERS_FOLDER) + db.datas['menu']=dict() for menu in request.form: if '§§' in menu: submenu = menu.split("§§") - if submenu[0] in DB.datas['menu'].keys(): - DB.datas['menu'][submenu[0]] = DB.datas['menu'][submenu[0]] | {submenu[1]: str(request.form[menu])} + if submenu[0] in db.datas['menu'].keys(): + db.datas['menu'][submenu[0]] = db.datas['menu'][submenu[0]] | {submenu[1]: str(request.form[menu])} else: - DB.datas['menu'][submenu[0]] = {submenu[1]: str(request.form[menu])} + db.datas['menu'][submenu[0]] = {submenu[1]: str(request.form[menu])} + elif menu == 'csrf_token': + pass else: - DB.datas['menu'][menu] = str(request.form[menu]) - print (DB.datas['menu']) - flash (u'Le menu a bien été modifier', 'succes'); - return make_response(('Update menu succesfull', 200)) - - - - -@app.route('/login', methods=['GET', 'POST']) -def login(): - theme = DB.datas['config']['theme'] - form = Login() - if 'username' in session : - resp = redirect(url_for('edit', _external=True)) - else : - resp = redirect(url_for('login', _external=True)) - if request.method == 'POST' : - password = str(request.form['passwd']) - passwd_bcrypt = DB.datas['config']['passwd'] + db.datas['menu'][menu] = str(request.form[menu]) - if bcrypt.check_password_hash(passwd_bcrypt, password) is True: - session['username'] = "logged" - resp = redirect(url_for('edit', _external=True)) - else: - flash(u'Mauvais mot de passe', 'error') - - else: - resp = render_template(theme+'/login.html', form=form) - - return resp - -@app.route( '/logout/', methods=['GET'] ) -@login_required -def logout(): - session.pop('username', None) # Supprimer username de la session s'il s'y trouve - session.clear() - return redirect(url_for('index')) + db.saveJson() + flash (u'Le menu a bien été modifier', 'success'); + return redirect(url_for('edit')) + diff --git a/app/templates/admin/_bloc-edit.html b/app/templates/admin/_bloc-edit.html new file mode 100644 index 0000000..25d05bd --- /dev/null +++ b/app/templates/admin/_bloc-edit.html @@ -0,0 +1,48 @@ + +
+
+ + {% include 'admin/_blocs-list.html' %} +
+
+ + + +
+
+ +

Créé un nouveau bloc

+
+ +
+ +
+ +
+ +
+ +
+
+
+ + + +
+ + + + + + + + diff --git a/app/templates/admin/_blocs-list.html b/app/templates/admin/_blocs-list.html new file mode 100644 index 0000000..2451446 --- /dev/null +++ b/app/templates/admin/_blocs-list.html @@ -0,0 +1,33 @@ + + +
+
+ + {% for item in myblocs.keys() %} + +
+ + + +
+ +{% endfor %} + +
+
+ + diff --git a/app/templates/admin/_blocs_list.html b/app/templates/admin/_blocs_list.html new file mode 100644 index 0000000..2c81883 --- /dev/null +++ b/app/templates/admin/_blocs_list.html @@ -0,0 +1,9 @@ +{% for item in myblocs.keys() %} + +
+ + + +
+ +{% endfor %} diff --git a/app/templates/admin/_menu-edit.html b/app/templates/admin/_menu-edit.html index 3e7c1eb..ae4a6ef 100644 --- a/app/templates/admin/_menu-edit.html +++ b/app/templates/admin/_menu-edit.html @@ -1,4 +1,5 @@ -
+ +
- +
diff --git a/app/templates/creative/_external_link-edit.html b/app/templates/creative/blocs/edit/_external_link.html similarity index 83% rename from app/templates/creative/_external_link-edit.html rename to app/templates/creative/blocs/edit/_external_link.html index ee6ee7e..381c55f 100644 --- a/app/templates/creative/_external_link-edit.html +++ b/app/templates/creative/blocs/edit/_external_link.html @@ -2,7 +2,7 @@
{{ form.csrf_token }} - + {% include 'edit-tools/_form-base.html' %}

Titre du lien

{{ form.title(value=bloc.title, class="form-control form-control-lg text-center") }} @@ -20,9 +20,7 @@ {{ error }} {% endfor %}
- {{ form.submit(class="btn") }} - - + {% include 'edit-tools/_btn-save-cancel.html' %} diff --git a/app/templates/creative/blocs/edit/_gallery.html b/app/templates/creative/blocs/edit/_gallery.html new file mode 100644 index 0000000..ccbbd85 --- /dev/null +++ b/app/templates/creative/blocs/edit/_gallery.html @@ -0,0 +1,6 @@ + +
+ +{% include theme+'/blocs/edit/images_list.html' %} + +{% include '_js_dropzone.html' %} diff --git a/app/templates/creative/blocs/edit/_image-edit.html b/app/templates/creative/blocs/edit/_image-edit.html new file mode 100644 index 0000000..da4b606 --- /dev/null +++ b/app/templates/creative/blocs/edit/_image-edit.html @@ -0,0 +1,34 @@ + +
+
+ {{ form.csrf_token }} +
+
+ {{ image.description }} +
+
+

Titre

+ {{ form.title(value=image.title, + class="form-control form-control-lg text-center") }} +
+

Sous-titre

+ {{ form.subtitle(value=image.subtitle, class="form-control text-center") }} +
+

Catégorie

+ {{ form.category(value=image.category, class="form-control text-center") }} +
+

Description de votre image

+

Une description de l'image est utile pour les personnes mal-voyantes et au référecement de votre site

+ {{ form.description(value=image.description, class="form-control text-center") }} +
+ + Supprimer l'image +
+
+
+ +
+ diff --git a/app/templates/creative/_presentation-edit.html b/app/templates/creative/blocs/edit/_presentation.html similarity index 87% rename from app/templates/creative/_presentation-edit.html rename to app/templates/creative/blocs/edit/_presentation.html index e8da29a..1952fbc 100644 --- a/app/templates/creative/_presentation-edit.html +++ b/app/templates/creative/blocs/edit/_presentation.html @@ -2,8 +2,10 @@
{{ form.csrf_token }}
+
- {{ 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 @@
{{ form.image(class="form-control" ) }}
- {{ form.submit(class="btn") }} - - + {% include 'edit-tools/_btn-save-cancel.html' %}
diff --git a/app/templates/creative/_text-edit.html b/app/templates/creative/blocs/edit/_text.html similarity index 53% rename from app/templates/creative/_text-edit.html rename to app/templates/creative/blocs/edit/_text.html index 4a09bbf..1ed7425 100644 --- a/app/templates/creative/_text-edit.html +++ b/app/templates/creative/blocs/edit/_text.html @@ -1,19 +1,20 @@
-
+ {{ form.csrf_token }}
- {{ 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") }}

- {{ form.submit(class="btn") }} - + {% include 'edit-tools/_btn-save-cancel.html' %}
+ diff --git a/app/templates/creative/_gallery-edit.html b/app/templates/creative/blocs/edit/images_list.html similarity index 81% rename from app/templates/creative/_gallery-edit.html rename to app/templates/creative/blocs/edit/images_list.html index 3098260..48c6b19 100644 --- a/app/templates/creative/_gallery-edit.html +++ b/app/templates/creative/blocs/edit/images_list.html @@ -1,8 +1,5 @@ - -
- -
-
+
+
{% for image in bloc.values() %} {% if image.file %} @@ -23,7 +20,7 @@ @@ -36,5 +33,3 @@
- -{% include '_js_dropzone.html' %} diff --git a/app/templates/creative/edit.html b/app/templates/creative/edit.html index 9cbc639..4eb1b94 100644 --- a/app/templates/creative/edit.html +++ b/app/templates/creative/edit.html @@ -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' %} + + + diff --git a/app/templates/edit-tools/_form-base.html b/app/templates/edit-tools/_form-base.html new file mode 100644 index 0000000..d324fd3 --- /dev/null +++ b/app/templates/edit-tools/_form-base.html @@ -0,0 +1,18 @@ +
+
+ + {{ form.name(col=4,value=bloc.name, + class="form-control text-center") }} +
+
+ + {{ form.bg_color(col=4, + class="form-control form-control-color text-center") }} +
+
+ + {{ form.fg_color(col=4, + class="form-control form-control-color text-center") }} +
+
+
diff --git a/app/templates/edit-tools/toolbar.html b/app/templates/edit-tools/toolbar.html index 1c533b9..dc43a41 100644 --- a/app/templates/edit-tools/toolbar.html +++ b/app/templates/edit-tools/toolbar.html @@ -1,18 +1,18 @@ diff --git a/app/templates/edit.html.tpl b/app/templates/edit.html.tpl index 7a4215c..9680d25 100644 --- a/app/templates/edit.html.tpl +++ b/app/templates/edit.html.tpl @@ -2,6 +2,7 @@ {% block css %} {% include 'edit-tools/css/dropzone' %} + {% 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' %} + hx-swap="oob"> Modifier {% endif %} {% endfor %} diff --git a/app/templates/index.html.tpl b/app/templates/index.html.tpl index 0a0545c..00a6855 100644 --- a/app/templates/index.html.tpl +++ b/app/templates/index.html.tpl @@ -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 %} diff --git a/ident.json b/ident.json deleted file mode 100644 index 91a51b7..0000000 --- a/ident.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "config": { - "theme": "creative", - "siteTitle": "Le titre de mon site", - "siteLang": "fr", - "siteDescription": "Une description du site", - "siteAuthor": "my name", - "passwd": "$2b$11$O5/ZTiiUG45cl7D5hJ9rMuzXmjAX2FeT5jwdBlS8ImOAoP1tpiv5G", - "lastLogins": {} - }, - "menu": { - "A propos": "#bloc1", - "Galerie": "#bloc3", - "Sous-menu": { - "Un lien": "https://dede.Fr", - "Un autre truc": "https://example.fr" - }, - "Contact": "#bloc5" - }, - "blocs": { - "bloc0": { - "name": "bloc0", - "type": "presentation", - "title": "Mon Petit site pas \u00e0 Moi", - "text": "Mon petit site \u00e0 moi.\r\nJe suis tr\u00e8s content car \u00e7a marche toujours, et m\u00eame si j'ai mis \u00e0 jour les paquets c'est quand m\u00eame cool.", - "text_button": "En savoir plus", - "link": "mon_lien", - "bg_img": "bg.jpg" - }, - "bloc1": { - "name": "bloc1", - "type": "text", - "title": "Salut c'est moi et ... voila quoi", - "text": "Ben je fais de la musique de la pierre s\u00e8che et \u00e7a me plait. Et de temps en temps je code des trucs qui marche :)." - }, - "bloc2": { - "name": "bloc2", - "type": "external_link", - "title": "Titre de votre lien", - "text": "Un texte pour d\u00e9crire ce que l'on va trouver dans votre liens", - "text_button": "Mon lien", - "link": "http://exemple.com" - }, - "bloc3": { - "name": "bloc3", - "type": "gallery", - "black.jpg": { - "title": "Guitare noire", - "subtitle": "Ma main sur ma gutiare", - "description": "Un main blanche sur une guitare noire", - "category": "", - "file": "black.jpg" - }, - "tournesol.jpg": { - "title": "Tounesol", - "subtitle": "tournesol", - "description": "Une jolie photo de tournesol", - "category": "", - "file": "tournesol.jpg" - }, - "173326.png": { - "title": "Flyer logiciel libre", - "subtitle": "Les LL", - "description": "explication c'est quoi le logiciel libre", - "category": "", - "file": "173326.png" - }, - "logo_BIM.png": { - "title": "Le BIM", - "subtitle": "Le logo du BIM", - "description": "Le logo du bim : BIM \u00e9crit en orange sur le nuage bleu", - "file": "logo_BIM.png", - "category": "logo" - } - }, - "bloc56": { - "name": "bloc56", - "type": "text", - "title": "Salut c'est moi et ... voila quoi", - "text": "Ben je fais de la musique de la pierre s\u00e8che et \u00e7a me plait. Et de temps en temps je code des trucs qui marche pas du tout et \u00e7a ma band\u00e9 ." - }, - "bloc5": { - "name": "bloc5", - "type": "contact", - "title": " Pour me contacter ", - "text": "f,ldf,ldsm", - "schedules": "", - "email": "example__chez__mondomaine...tld", - "phone": "04040404040", - "address": "", - "postal_code": "34434", - "city": "34434" - } - } -} \ No newline at end of file