From 95b46e7a69d5250913c7a4cd2fbf3877ce215bde Mon Sep 17 00:00:00 2001 From: adrien Date: Thu, 30 Jul 2026 14:35:35 +0200 Subject: [PATCH] sauver les grilles invalides --- Grille.php | 24 +++++++++++++----------- dico.yaml | 46 +++++++++++++++++++++++++++------------------- index.php | 19 ++++++++----------- style.css | 10 ++++++++++ 4 files changed, 58 insertions(+), 41 deletions(-) diff --git a/Grille.php b/Grille.php index 9b99b3c..ea8efac 100644 --- a/Grille.php +++ b/Grille.php @@ -93,8 +93,9 @@ class Grille implements ArrayAccess $grilles = $this->gen_grilles(); $grilles->current(); + $this->valide = $grilles->valid(); - if ($grilles->valid()) { + if ($this->valide) { $this->definitions = [ "horizontales" => [], "verticales" => [] @@ -119,11 +120,10 @@ class Grille implements ArrayAccess $this->definitions["verticales"][$x][] = $definition; } } - $this->save($id); - return true; - } else { - return false; } + + $this->save($id); + return $this->valide; } public function gen_grilles($i = 0, $lettres_ligne = NULL) @@ -239,6 +239,7 @@ class Grille implements ArrayAccess $_SESSION["grille"] = $this->grille; $_SESSION["definitions"] = $this->definitions; + $_SESSION["valide"] = $this->valide; } public function load($id) @@ -246,14 +247,15 @@ class Grille implements ArrayAccess session_id("$this->largeur,$this->hauteur,$id"); session_start(["use_cookies" => false]); - if (!isset($_SESSION)) { + if (isset($_SESSION) && isset($_SESSION["grille"])) { + $this->grille = $_SESSION["grille"]; + $this->definitions = $_SESSION["definitions"]; + $this->valide = $_SESSION["valide"]; + + return true; + } else { return false; } - - $this->grille = $_SESSION["grille"]; - $this->definitions = $_SESSION["definitions"]; - - return true; } diff --git a/dico.yaml b/dico.yaml index f0b213e..6459725 100644 --- a/dico.yaml +++ b/dico.yaml @@ -475,6 +475,8 @@ APPRENTI: - Michel Laclos: Bleu de travail APPRET: - Jean Teularge: Malgré son nom se met avant +APPRISE: +- Sue après avoir travaillé APT: - Jacques Drillon: Capabl ARA: @@ -958,8 +960,9 @@ BIOS: BIS: - Sport Cérébral: Cris dans le poulailler - Bernard Philippet: Demande d'assistance -- Mot de rappel flatteur +- Rappel - Couleur de pain gris tirant sur le beige +- Petite précision d'adresse BLANC: - Corinne Beltz: Toujours liquide quand il est sec BLANCHE: @@ -1188,7 +1191,6 @@ CAVIAR: CCCCC: - Michel Laclos: D CD: -- Compact Disc - Disque laser - Lettres diplomatiques CE: @@ -1304,6 +1306,8 @@ CINTRE: - Lucien Lacau: A moitié rond quand il est plein CIRAGE: - Marc Aussitot: Etat second +CIRE: +- Hervé Hardouin: Tabarly le portait à l'endroit comme à l'envers CIRCONCIS: - Wikipourri: Manque de peau CIRCONFLEXE: @@ -2654,7 +2658,7 @@ FENAISON: FER: - Sport Cérébral: Pour chauffer ou refroidir FERRY: -- Georges Perec: Peut vous transporter sauf s’il s’appelle jules +- Georges Perec: Peut vous transporter sauf s’il s’appelle Jules FESSES: - Bernard Philippet: On donne cher de leur peau FESSIER: @@ -2732,6 +2736,8 @@ FRAC: - Julien Soulié: Exige le fric pour le fric FREINAGE: - Yannick Le Nagard: Use la gomme en ne la mettant plus +FRERE: +- Fils à papa FRIGIDE: - Terme utilisé par l'homme pour décrire la femme qui a moins d'appétit sexuel que lui FRITES: @@ -3518,6 +3524,8 @@ KABIG: - Veste bretonne à capuchon KAPO: - Dans les camps nazis, détenu en charge des autres +KEBAB: +- Parfois chiche KEFIR: - Boisson gazeuse du Caucase KEN: @@ -3875,7 +3883,7 @@ MAIN: MAJOR: - Thierry Larsan: Premier d'un concours ou premier ministre MAJUSCULE: -- Dédale: Capitale d'etat +- Dédale: Capitale d'état MALAISE: - Jean Teularge: Indonésienne ou ça ne va pas MALFAITEUR: @@ -3889,7 +3897,7 @@ MANCHE: MANCHETTE: - Georges Perec: Concerne triplement un auteur de la série noire faisant du karaté en première page d’un journal MANET: -- Arcane: Artiste à l’olympia +- Arcane: Artiste à l’Olympia MANGER: - Ambrose Bierce: Accomplir successivement (et avec succès) les fonctions de mastication, humectation et déglutition MANIFESTANTS: @@ -3974,6 +3982,7 @@ MENU: - Lionel Leteur: Ce n’est pas à la cuisine qu’on l’épluche - Sport Cérébral: Peut comporter du gros poisson mais ne convient qu'au fretin - Bernard Philippet: Fin ou donne faim +- Mets sur une liste MER: - Max Favalelli: Ses paquets ne sont pas toujours recommandés - Lucien Lacau: On peut la prendre par une anse @@ -4268,6 +4277,8 @@ NEZ: - Jean-Paul Vanden Branden: Coule quand tout est gelé - Michel Laclos: N'a pas une vue précise des choses - Hervé Hardouin: Coupe la poire en deux +NIA: +- Dédale: Parla pour ne rien dire NIAGARA: - Marc Aussitot: Un film dont la chute est connue dès le début NICE: @@ -4285,11 +4296,11 @@ NIELLE: - Maladie des céréales NIET: - Marc Aussitot: Tintin au pays des soviets -- Didier Léonard: Sort si ça rase poutine +- Didier Léonard: Sort si ça rase Poutine NIHILISTE: - Ambrose Bierce: Russe qui nie l'existence de tout sauf de Tolstoï. Le fondateur du mouvement est Tolstoï NIL: -- Sport Cérébral: Tout pour les egyptiens, rien pour les romains +- Sport Cérébral: Tout pour les Egyptiens, rien pour les Romains - Grand fleuve d'Afrique NINAS: - Petit cigare fait de débris de tabac @@ -4300,7 +4311,7 @@ NL: NN: - Nouvelle norme en abrégé - Suite d'étoiles -'NO': +NO: - Didier Léonard: Docteur ou veto - Drame lyrique du Japon NOBLES: @@ -5422,7 +5433,7 @@ REVERS: REVIENS: - Marc Aussitot: Nom courant d’une chose prêtée REVISER: -- SC: Repasser pour ne pas avoir à repasser +- Sport Cérébral: Repasser pour ne pas avoir à repasser REVISION: - Marc Aussitot: On ne suit plus ses conseils REVUES: @@ -5751,10 +5762,9 @@ SENS: - Bernard Philippet: Aucun des cinq n'est le bon SENT: - Michel Laclos: Flaire ou fleure -SENTIMENTS: -- PARTAGES Quand votre belle-mère est en train de reculer dans un ravin avec votre voiture neuve SEP: -- Pièce de charrue qui porte le soc Avance avec l’âge +- Pièce de charrue qui porte le soc +- Avance avec l’age SEPS: - Lézard à pattes très courtes SEPTENNAT: @@ -5785,7 +5795,6 @@ SESAME: - Jacques Drillon: Il entre dans une galette ou il permet d'y accéder SET: - Dédale: Manche avec revers -- Manche au tennis SETON: - Drain sortant de l'orifice d'une plaie SEUL: @@ -5800,7 +5809,7 @@ SEVICES: - Jacques Flament: Marquent à tous les coups SEXE: - Lionel Leteur: Un simple numéro pour la sécu -- Frédéric Dard: 'MASCULIN Ce qu''il y a de plus léger au monde : une simple pensée le soulève !' +- Frédéric Dard: 'Ce qu''il y a de plus léger au monde : une simple pensée le soulève !' SEXES: - André Counson: Leur différence ne doit pas empêcher leur égalité SFTP: @@ -5815,7 +5824,6 @@ SHERPA: - Michel Vanobost: Monte des blancs en neige SI: - Yves Cunow: La seule note de musique -- Note de musique élevée - Avec lui, on met Paris en bouteille - Début de rêve - Permet les châteaux en Espagne @@ -5963,7 +5971,7 @@ SQL: SS: - Sa Sainteté devant le pape - Forces Nazies -- Sécurité sociale +- Sécu SSD: - Support de stockage plus rapide que le HDD, sans pièces mécaniques SSH: @@ -6220,7 +6228,7 @@ TEMPS: - Michel Laclos: Pas toujours recherché par celui qui l'a perdu - Ce qui empêche tout d'arriver en même temps TENEBRES: -- Jacques Drillon: Elles ont fourni une affaire à balzac +- Jacques Drillon: Elles ont fourni une affaire à Balzac TENIA: - Animal d'interieur TENTACULE: @@ -6476,7 +6484,7 @@ TUE: - Julien Soulié: Impose le silence ou déjà silencieuse TUER: - Ambrose Bierce: Créer une vacance sans nommer un successeur -TUETETE: +TUE-TETE: - Marc Aussitot: Casse au moins les oreilles TUMULUS: - Michel Laclos: Bosse dans les pompes funèbres @@ -6550,7 +6558,7 @@ URE: UREE: - Déchet organique du corps humain URI: -- Philippe Harang: Dans zurich ou pas très loin +- Philippe Harang: Dans Zurich ou pas très loin - Canton suisse URINE: - Charge un pistolet au besoin diff --git a/index.php b/index.php index df8511e..6aae3b4 100644 --- a/index.php +++ b/index.php @@ -1,7 +1,4 @@ genere($id); - } while (!$grille_valide); + $grille->genere($id); + } while (!$grille->valide); $_GET["grille"] = $id; header("Location: $basedir/?" . http_build_query($_GET)); } else { $id = htmlspecialchars($_GET["grille"]); - $grille_valide = $grille->load($id) || $grille->genere($id); + $grille->load($id) || $grille->genere($id); } -function formatter_definition($definition) { +function formatter_definition(Array $definition) { if (isset($definition["nb_mots"]) && $definition["nb_mots"] > 1) { $nb_mots = $definition["nb_mots"]; $nb_mots = " ($nb_mots mots)"; @@ -61,7 +58,7 @@ function formatter_definition($definition) { return ucfirst($definition["definition"]) . $nb_mots . $auteur; } -function definition_courante($definitions, $position) { +function definition_courante(Array $definitions, int $position) { foreach ($definitions as $id => $definition) { if ($position <= $definition["fin"]) return [$id, $definition]; @@ -129,7 +126,7 @@ function definition_courante($definitions, $position) {

Mots■croisés

- +valide): ?>
@@ -154,10 +151,10 @@ function definition_courante($definitions, $position) { $title = []; [$iddh, $definition_horizontale] = definition_courante($grille->definitions["horizontales"][$y], $x); [$iddv, $definition_verticale] = definition_courante($grille->definitions["verticales"][$x], $y); - if (isset($definition_horizontale["definition"])) $title[0] = "→ " . $definition_horizontale["definition"]; + if (isset($definition_horizontale["definition"])) $title[0] = "→ " . strip_tags($definition_horizontale["definition"]); if (isset($definition_horizontale["nb_mots"])) $title[0] .= " [" . $definition_horizontale["nb_mots"] . " mots]"; if (isset($definition_horizontale["auteur"])) $title[0] .= " (" . $definition_horizontale["auteur"] . ")"; - if (isset($definition_verticale["definition"])) $title[1] = "↓ " . $definition_verticale["definition"]; + if (isset($definition_verticale["definition"])) $title[1] = "↓ " . strip_tags($definition_verticale["definition"]); if (isset($definition_verticale["nb_mots"])) $title[1] .= " [" . $definition_verticale["nb_mots"] . " mots]"; if (isset($definition_verticale["auteur"])) $title[1] .= " (" . $definition_verticale["auteur"] . ")"; $title = htmlspecialchars(implode("\n", $title)); diff --git a/style.css b/style.css index 437490d..94c930a 100644 --- a/style.css +++ b/style.css @@ -194,9 +194,11 @@ h2 { margin: 1em auto 0 auto; display: flex; align-items: baseline; + position: relative; } .nouvelle-grille::before { + position: absolute; content: ""; height: 16px; width: 16px; @@ -220,6 +222,14 @@ h2 { cursor: pointer; } +#lignes { + cursor: row-resize; +} + +#colonnes { + cursor: col-resize; +} + .nouvelle-grille button { text-decoration: underline; }