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