From e6713a9bf1ca3103756d9749deb965838de39dca Mon Sep 17 00:00:00 2001 From: Gregory Loichot Date: Mon, 13 May 2024 15:44:51 +0200 Subject: [PATCH 1/7] Remove leading zeros in Decimal Fix a bug. I was possible to create Decimal like 00123. This Decimal could be edited to 100123, but could not be reedited to 00123. --- types/Decimal.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/Decimal.php b/types/Decimal.php index 255b8c0f..1057317e 100644 --- a/types/Decimal.php +++ b/types/Decimal.php @@ -113,7 +113,8 @@ public function validate($rawvalue) throw new ValidationException('Decimal max', (float) $this->config['max']); } - return $rawvalue; + // remove leading zeros + return trim((float))$rawvalue, 0); } /** From 200575d1a84b03120375eebb4c725273fbc3e75f Mon Sep 17 00:00:00 2001 From: Greg Loichot Date: Mon, 13 May 2024 15:53:24 +0200 Subject: [PATCH 2/7] Remove leading zeros in Decimal. --- _test/types/DecimalTest.php | 2 ++ plugin.info.txt | 2 +- types/Decimal.php | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/_test/types/DecimalTest.php b/_test/types/DecimalTest.php index 52232cf2..cd531ebb 100644 --- a/_test/types/DecimalTest.php +++ b/_test/types/DecimalTest.php @@ -65,6 +65,8 @@ public function validateSuccessProvider() ['-5.5', '', '4.5'], ['-5,5', '', '4.5'], ['5.5645000', '', ''], + ['00055', '', ''], + ['-00055', '', ''], // boundaries ['0', '0', ''], ['0', '', '0'], diff --git a/plugin.info.txt b/plugin.info.txt index cbfbe136..d8efd174 100644 --- a/plugin.info.txt +++ b/plugin.info.txt @@ -1,7 +1,7 @@ base struct author Andreas Gohr, Michael Große, Anna Dabrowska email dokuwiki@cosmocode.de -date 2024-02-16 +date 2024-04-09 name struct plugin desc Add and query additional structured page data url https://www.dokuwiki.org/plugin:struct diff --git a/types/Decimal.php b/types/Decimal.php index 255b8c0f..46535e55 100644 --- a/types/Decimal.php +++ b/types/Decimal.php @@ -99,7 +99,7 @@ public function renderValue($value, \Doku_Renderer $R, $mode) public function validate($rawvalue) { $rawvalue = parent::validate($rawvalue); - $rawvalue = str_replace(',', '.', $rawvalue); // we accept both + $rawvalue = trim((float)str_replace(',', '.', $rawvalue), 0); // we accept both if ((string)$rawvalue != (string)(float) $rawvalue) { throw new ValidationException('Decimal needed'); @@ -113,6 +113,7 @@ public function validate($rawvalue) throw new ValidationException('Decimal max', (float) $this->config['max']); } + // remove leading zeros return $rawvalue; } From 7052f713e3497fc802ac5d606e11556eadb8d917 Mon Sep 17 00:00:00 2001 From: Greg Loichot Date: Mon, 13 May 2024 17:13:13 +0200 Subject: [PATCH 3/7] Fix french language --- lang/fr/clear_intro.txt | 2 +- lang/fr/delete_intro.txt | 2 +- lang/fr/editor_edit.txt | 2 +- lang/fr/editor_intro.txt | 2 +- lang/fr/lang.php | 12 ++++++------ 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lang/fr/clear_intro.txt b/lang/fr/clear_intro.txt index ebebb779..7bce4aac 100644 --- a/lang/fr/clear_intro.txt +++ b/lang/fr/clear_intro.txt @@ -1 +1 @@ -**AVERTISSEMENT :** Ceci effacera **toutes** les données qui ont jamais été enregistrées pour ce schéma. Cette opération est irréversible ! \ No newline at end of file +**AVERTISSEMENT :** Ceci effacera **toutes** les données enregistrées pour ce schéma. Cette opération est irréversible ! \ No newline at end of file diff --git a/lang/fr/delete_intro.txt b/lang/fr/delete_intro.txt index 7300d292..f659f178 100644 --- a/lang/fr/delete_intro.txt +++ b/lang/fr/delete_intro.txt @@ -1 +1 @@ -**AVERTISSEMENT !** Supprimer un schéma supprime certes ce schéma mais aussi **toutes** les données qui lui étaient associées. Cette opération est irréversible ! +**AVERTISSEMENT !** Supprimer un schéma supprime le schéma et **toutes** les données qui lui sont associées. Cette opération est irréversible ! diff --git a/lang/fr/editor_edit.txt b/lang/fr/editor_edit.txt index 1b741ec0..504335e3 100644 --- a/lang/fr/editor_edit.txt +++ b/lang/fr/editor_edit.txt @@ -2,7 +2,7 @@ C'est ici que vous ajoutez ou modifiez des champs dans votre schéma. -Chaque champ doit avoir un nom unique. Il est recommandé d'utiliser des noms courts, peu sujets au changement car vous devrez les écrire dans les pages wiki pour afficher vos données. Donnez-leur un nom plus complet (destiné à être vu par les visiteurs) dans la case ''label'' de la configuration du champ. +Chaque champ doit avoir un nom unique. Il est recommandé d'utiliser des noms courts, peu sujets au changement car vous devrez les écrire dans les pages wiki pour afficher vos données. Donnez-leur un nom plus complet (destiné à être vu par les visiteurs) dans la case «label» de la configuration du champ. Le type de champ détermine quelles données peuvent y être stockées (texte, image, URL...) et influence également la façon dont elles seront affichées plus tard. Chaque type de champ a des options de configuration spécifiques. diff --git a/lang/fr/editor_intro.txt b/lang/fr/editor_intro.txt index 30ac46c1..12e3b814 100644 --- a/lang/fr/editor_intro.txt +++ b/lang/fr/editor_intro.txt @@ -1,5 +1,5 @@ ====== Struct - Éditeur de schémas ====== -Les schémas sont la base du greffon Struct. Un schéma définit un ensemble de valeurs structurées que l'on peut ensuite affecter à des pages. +Les schémas sont la base du plugin Struct. Un schéma définit un ensemble de valeurs structurées que l'on peut ensuite affecter à des pages. Choisissez un schéma existant depuis la table des matières ou créez-en un nouveau. diff --git a/lang/fr/lang.php b/lang/fr/lang.php index 3e0e5faf..5a811706 100644 --- a/lang/fr/lang.php +++ b/lang/fr/lang.php @@ -38,15 +38,15 @@ $lang['btn_import'] = 'Importer'; $lang['import_warning'] = 'Attention : tous les champs précédemment remplis seront remplacés !'; $lang['del_confirm'] = 'Entrez le nom du schéma pour confirmer sa suppression'; -$lang['del_fail'] = 'Les noms de schémas sont différents. Le schéma n\'est pas supprimé.'; +$lang['del_fail'] = 'Les noms de schémas sont différents. Le schéma n\'a pas été supprimé.'; $lang['del_ok'] = 'Le schéma a été supprimé.'; $lang['btn_delete'] = 'Supprimer'; $lang['js']['confirmAssignmentsDelete'] = 'Voulez-vous réellement supprimer l\'affectation du schéma "{0}" à la page/catégorie de page "{1}"?'; $lang['js']['actions'] = 'Actions'; $lang['js']['lookup_delete'] = 'Supprimer l\'entrée'; -$lang['clear_confirm'] = 'Entrez le nom du schéma pour confirmer l\'effacement de toutes les données.'; -$lang['clear_fail'] = 'Les noms de schéma ne correspondent pas. Données non détruites.'; -$lang['clear_ok'] = 'Les données du schéma ont été détruites.'; +$lang['clear_confirm'] = 'Entrez le nom du schéma pour confirmer la suppression de toutes les données.'; +$lang['clear_fail'] = 'Les noms des schémas ne correspondent pas. Aucune donnée n\'a été supprimée.'; +$lang['clear_ok'] = 'Les données du schéma ont été supprimées.'; $lang['btn_clear'] = 'effacer'; $lang['tab_edit'] = 'Editer le Schéma'; $lang['tab_export'] = 'Import/Export'; @@ -65,7 +65,7 @@ $lang['multi'] = 'Vous pouvez entrer plusieurs valeurs séparées par des virgules.'; $lang['multidropdown'] = 'Maintenez les touches CTRL ou ⌘ pour sélectionner plusieurs valeurs.'; $lang['duplicate_label'] = 'Le label %s existe déjà dans ce schéma, la deuxième occurrence a été renommée en %s.'; -$lang['emptypage'] = 'Les données du greffon Struct ne sont pas sauvegardées si la page est vide.'; +$lang['emptypage'] = 'Les données du plugin Struct ne sont pas sauvegardées si la page est vide.'; $lang['validation_prefix'] = 'Champ [%s] : '; $lang['Validation Exception Decimal needed'] = 'seuls les décimaux sont autorisés'; $lang['Validation Exception Decimal min'] = 'doit être supérieur ou égal à %d'; @@ -84,7 +84,7 @@ $lang['Exception nocolname'] = 'Aucun nom de colonne spécifié'; $lang['Exception nolookupmix'] = 'Vous ne pouvez pas agréger plus d\'un schéma de consultation ou le mélanger avec des données de page.'; $lang['Exception No data saved'] = 'Aucune donnée sauvegardée'; -$lang['Exception no sqlite'] = 'Le greffon struct requiert le greffon sqlite. Merci de l\'installer et l\'activer.'; +$lang['Exception no sqlite'] = 'Le plugin struct requiert le plugin sqlite. Merci de l\'installer et l\'activer.'; $lang['Exception column not in table'] = 'Il n\'y a pas de colonne %s dans le schéma %s.'; $lang['Warning: no filters for cloud'] = 'Les filtres ne sont pas utilisables pour les nuages struct.'; $lang['sort'] = 'Trier selon cette colonne'; From fc459e910333dd46d7df7dde8ed088d6a6f36153 Mon Sep 17 00:00:00 2001 From: Greg Loichot Date: Tue, 14 May 2024 09:58:01 +0200 Subject: [PATCH 4/7] Simplify leading zeros removing --- types/Decimal.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/types/Decimal.php b/types/Decimal.php index 4c9af9af..48670215 100644 --- a/types/Decimal.php +++ b/types/Decimal.php @@ -99,7 +99,7 @@ public function renderValue($value, \Doku_Renderer $R, $mode) public function validate($rawvalue) { $rawvalue = parent::validate($rawvalue); - $rawvalue = trim((float)str_replace(',', '.', $rawvalue), 0); // we accept both + $rawvalue = (float)str_replace(',', '.', $rawvalue), 0; // we accept both if ((string)$rawvalue != (string)(float) $rawvalue) { throw new ValidationException('Decimal needed'); @@ -113,9 +113,7 @@ public function validate($rawvalue) throw new ValidationException('Decimal max', (float) $this->config['max']); } - // remove leading zeros return $rawvalue; - } /** From fe53050f9b1888ce0ef1c2fbf60aafba32e2eff8 Mon Sep 17 00:00:00 2001 From: Greg Loichot Date: Tue, 14 May 2024 10:00:00 +0200 Subject: [PATCH 5/7] Remove useless casting. --- types/Decimal.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/types/Decimal.php b/types/Decimal.php index 48670215..8f69d156 100644 --- a/types/Decimal.php +++ b/types/Decimal.php @@ -101,15 +101,15 @@ public function validate($rawvalue) $rawvalue = parent::validate($rawvalue); $rawvalue = (float)str_replace(',', '.', $rawvalue), 0; // we accept both - if ((string)$rawvalue != (string)(float) $rawvalue) { + if ((string)$rawvalue != (string) $rawvalue) { throw new ValidationException('Decimal needed'); } - if ($this->config['min'] !== '' && (float) $rawvalue < (float) $this->config['min']) { + if ($this->config['min'] !== '' && $rawvalue < (float) $this->config['min']) { throw new ValidationException('Decimal min', (float) $this->config['min']); } - if ($this->config['max'] !== '' && (float) $rawvalue > (float) $this->config['max']) { + if ($this->config['max'] !== '' && $rawvalue > (float) $this->config['max']) { throw new ValidationException('Decimal max', (float) $this->config['max']); } From 6f3310f77e05b2ac0412d273efb4d55fdb70910e Mon Sep 17 00:00:00 2001 From: Greg Loichot Date: Tue, 14 May 2024 10:01:49 +0200 Subject: [PATCH 6/7] Bug fix. --- types/Decimal.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/Decimal.php b/types/Decimal.php index 8f69d156..084b5174 100644 --- a/types/Decimal.php +++ b/types/Decimal.php @@ -99,7 +99,7 @@ public function renderValue($value, \Doku_Renderer $R, $mode) public function validate($rawvalue) { $rawvalue = parent::validate($rawvalue); - $rawvalue = (float)str_replace(',', '.', $rawvalue), 0; // we accept both + $rawvalue = (float) str_replace(',', '.', $rawvalue); // we accept both if ((string)$rawvalue != (string) $rawvalue) { throw new ValidationException('Decimal needed'); From e527e880c43f6dc92cc4d6fa160d7aae12860d05 Mon Sep 17 00:00:00 2001 From: Greg Loichot Date: Fri, 17 May 2024 15:51:46 +0200 Subject: [PATCH 7/7] Fix a bug when hiddenineditor was true, only the label was hidden. --- action/edit.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/action/edit.php b/action/edit.php index 285feff7..78b01b0c 100644 --- a/action/edit.php +++ b/action/edit.php @@ -173,8 +173,8 @@ public function makeField(Value $field, $name) $hide = ''; } - $html = '
'; - $html .= "