Améliorer vos formulaires DokuWiki avec un JavaScript personnalisé - Remplacer les sauts de ligne par une syntaxe compatible Markdown

Auteur(s) : Louis Ouellet


DokuWiki est un outil fantastique pour créer et gérer du contenu collaborativement. Cependant, travailler avec le markdown personnalisé peut parfois poser problème, en particulier pour les utilisateurs qui ne sont pas familiers avec ses subtilités. Par exemple, lors de la gestion des entrées dans les formulaires, les utilisateurs de DokuWiki rencontrent souvent des problèmes pour conserver les sauts de ligne (\n) lors de la soumission. Pour simplifier cela, j’ai développé une solution en JavaScript qui convertit automatiquement \n en \, garantissant ainsi que les formulaires fonctionnent sans problème avec la syntaxe markdown de DokuWiki.

Ce script améliore non seulement l’expérience utilisateur en gérant les transformations markdown, mais il facilite également l’affichage correct des entrées de formulaire. Il est particulièrement utile lorsque les formulaires sont utilisés dans des espaces de noms nécessitant une conformité stricte avec le markdown. Dans ce tutoriel, je vais vous montrer comment configurer et utiliser ce script dans votre instance DokuWiki.

Tutoriel : Configurer le JavaScript pour DokuWiki

Suivez ces étapes pour améliorer vos formulaires DokuWiki avec ce script personnalisé :

1. Connectez-vous à votre Wiki

Accédez à votre instance DokuWiki avec des privilèges administrateur.

2. Ouvrez la page d'administration

Naviguez vers la page Admin depuis votre site DokuWiki.

3. Accédez aux configurations avancées

Dans le menu Admin, trouvez et sélectionnez Configurations avancées.

4. Localisez la section JavaScript utilisateur

Allez dans la section Configurations du Table des matières et sélectionnez l'onglet JavaScript utilisateur.

5. Insérez le code

Copiez le script suivant et collez-le dans le champ JavaScript utilisateur :

userscript.js
// Exécutez le script une fois que le document est prêt
jQuery(document).ready(function(){
 
    // Liste des espaces de noms où appliquer le script
    var namespaces = ["namespace:page"];
 
    // Restreindre à un espace de noms spécifique
    if (namespaces.indexOf(JSINFO['id']) > -1) {
 
        // Vérifier si "?do=" & "&do=" sont présents dans l'URL
        if (window.location.search.indexOf("?do=") === -1 && window.location.search.indexOf("&do=") === -1) {
 
            // Trouver toutes les zones de texte et remplacer " \ " par des sauts de ligne
            jQuery(this).find('textarea').each(function() {
 
                // Vérifier si la zone de texte est visible
                if (jQuery(this).is(":visible")) {
 
                    // Remplacer " \ " par des sauts de ligne
                    jQuery(this).val(jQuery(this).val().replace(/ \\ /gm, "\n"));
                }
            });
 
            // Remplacer la soumission de formulaire par défaut par une fonction personnalisée
            jQuery("form").on("submit", function(event) {
 
                // Empêcher le formulaire de se soumettre immédiatement
                event.preventDefault();
 
                // Trouver toutes les zones de texte et remplacer les sauts de ligne par " \ "
                jQuery(this).find('textarea').each(function() {
 
                    // Vérifier si la zone de texte est visible
                    if (jQuery(this).is(":visible")) {
 
                        // Remplacer les sauts de ligne par " \ "
                        jQuery(this).val(jQuery(this).val().replace(/\n/gm, ' \\ '));
                    }
                });
 
                // Après l'exécution de la fonction, déclencher manuellement la soumission du formulaire
                this.submit();
            });
        }
    }
});

6. Enregistrez la configuration

Cliquez sur Enregistrer pour appliquer les modifications.

7. Videz le cache JavaScript

Effacez le cache JavaScript de DokuWiki pour vous assurer que les modifications prennent effet. Vous pouvez le faire en ajoutant ?purge=true à l’URL ou en appuyant sur Vider le cache JS.

8. Testez le script

Visitez un espace de noms spécifié dans le script et testez vos formulaires. Entrez du texte sur plusieurs lignes, soumettez le formulaire, et vérifiez que la soumission conserve les sauts de ligne au format souhaité.

Voici un exemple de fonctionnement du script :

bureaucracy.txt
<form>
action mail username@domain.com
 
fieldset "1."
textarea "Tester plusieurs lignes"
 
fieldset "2."
textarea "Tester les lignes sautées"
 
fieldset "3."
textarea "Tester aucune valeur" !
 
fieldset "Soumettre"
Submit submit
</form>

Résultat:

The following data was submitted on 2024/12/20 10:53.
 
1.
Test multiple lines asdf \\ asdf \\ asdf
2.
Test skipping lines asdf \\ \\ asdf \\ \\ asdf
3.
Submit

9. Profitez-en !

Votre instance DokuWiki est maintenant équipée d’un script amélioré pour la gestion des formulaires, ce qui améliore l’utilisabilité et garantit la conformité avec le markdown.

Conclusion

Avec ce script, vous pouvez considérablement améliorer la gestion des entrées sur plusieurs lignes dans les formulaires DokuWiki. En automatisant la conversion de \n (saut de ligne) en
(markdown), vous éliminez la nécessité pour les utilisateurs d’ajuster manuellement leurs entrées pour la syntaxe markdown de DokuWiki. Cela simplifie non seulement l’expérience utilisateur, mais garantit également que vos formulaires conservent un formatage cohérent lors des soumissions.

N’hésitez pas à ajuster les espaces de noms dans le script pour l’adapter à votre cas d’utilisation. Si vous rencontrez des problèmes ou avez des suggestions d’améliorations, laissez un commentaire !

Tags

Discussion

Entrer votre commentaire. La syntaxe wiki est autorisée:
X Q᠎ A P E