From 067ec55f13bd472c8d584d8e26d70a34cc9705f3 Mon Sep 17 00:00:00 2001
From: polo
Date: Sat, 1 Nov 2025 19:20:15 +0100
Subject: =?UTF-8?q?contr=C3=B4le=20sur=20les=20input=20type=20url?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/js/Input.js | 4 ++--
public/js/main.js | 12 ++++++++++++
src/controller/ArticleController.php | 1 -
src/view/HeaderBuilder.php | 2 +-
src/view/MenuBuilder.php | 4 ++--
src/view/templates/menu.php | 2 +-
6 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/public/js/Input.js b/public/js/Input.js
index 0ebbbbb..854e5d1 100644
--- a/public/js/Input.js
+++ b/public/js/Input.js
@@ -11,7 +11,7 @@ class InputToggler{
this.submit_elem = this.parent.querySelector(options.submit_selector || `#${name}_submit`);
this.cancel_elem = this.parent.querySelector(options.cancel_selector || `#${name}_cancel`);
- // balises à ne pas gérer (fonctionne mais inutilisé pour l'instant)
+ // balises à ne pas gérer
this.ignored_tags = {
has_content: options.has_content !== false, // => true sauf si le paramètre vaut false
has_input: options.has_input !== false,
@@ -42,7 +42,7 @@ class InputToggler{
// enfants
-class InputText extends InputToggler{
+class InputText extends InputToggler{ // pour input type text ou url
constructor(name, options = {}){
super(name, options);
this.fetcher = new Fetcher({
diff --git a/public/js/main.js b/public/js/main.js
index 42bae70..1e47ebe 100644
--- a/public/js/main.js
+++ b/public/js/main.js
@@ -36,6 +36,18 @@ function toastNotify(message){
setTimeout(function(){ toast.className = toast.className.replace('show', ''); }, 5000);
}
+function controlURL(input){
+ const url = input.value.trim();
+ if(!url){
+ return;
+ }
+ if(/^[a-z][a-z0-9+.-]*:/i.test(url) // un "protocole" (https://, ftp://, mailto:, etc)
+ || url.startsWith('/') || url.startsWith('./') || url.startsWith('../')){ // Lien local (commence par /, ./ ou ../)
+ return;
+ }
+ input.value = 'https://' + url; // Cas par défaut
+}
+
// exécuté à la fin du chargement de la page
document.addEventListener('DOMContentLoaded', () => {
diff --git a/src/controller/ArticleController.php b/src/controller/ArticleController.php
index 7061897..7dc7f49 100644
--- a/src/controller/ArticleController.php
+++ b/src/controller/ArticleController.php
@@ -14,7 +14,6 @@ class ArticleController
static public function fetch(EntityManager $entityManager, Request $request): void
{
if($request->query->has('id') && !empty($request->query->get('id')) && $request->query->has('last_article')){
- //var_dump($request->query->get('last_article'));
$id = (int)$request->get('id'); // type et nettoie
$model = new Model($entityManager);
$model->findNodeById($id);
diff --git a/src/view/HeaderBuilder.php b/src/view/HeaderBuilder.php
index 266aab8..c36f6a5 100644
--- a/src/view/HeaderBuilder.php
+++ b/src/view/HeaderBuilder.php
@@ -90,7 +90,7 @@ class HeaderBuilder extends AbstractBuilder
'
. $this->insertSVG(self::ICON_PATH . $network . '.svg', ['id' => 'header_' . $network . '_content', 'class' => ($checked ? 'svg_fill_red' : '')])
. '
-
+
diff --git a/src/view/MenuBuilder.php b/src/view/MenuBuilder.php
index 8e8b9a9..e9bc4bc 100644
--- a/src/view/MenuBuilder.php
+++ b/src/view/MenuBuilder.php
@@ -64,11 +64,11 @@ class MenuBuilder extends AbstractBuilder
-
+
-
+
';
}
diff --git a/src/view/templates/menu.php b/src/view/templates/menu.php
index 4f11756..6ad4f7c 100644
--- a/src/view/templates/menu.php
+++ b/src/view/templates/menu.php
@@ -13,7 +13,7 @@
-
+
--
cgit v1.2.3