Comment j'organise mes notes professionnelles avec Dokuwiki et ses plugins

J'ai longtemps tâtonné pour trouver une façon d'organiser mes notes professionnelles car, mine de rien, la création et la gestion de notes doit répondre à beaucoup de contraintes :

Longtemps, je me suis demandé s'il fallait uniquement classer mes notes (dans une arborescence où une note n'appartient qu'à un dossier), s'il fallait uniquement les taguer, ou pratiquer un mélange des deux. C'est cette dernière solution qui me convient le mieux :

Pour combiner les deux approches, il est nécessaire que le classement et l'étiquetage soient parfaitement distincts sur le type d'information qu'ils traitent. Ma façon de procéder est simple. L'étiquetage ne porte que sur le contenu : le nom du projet, le nom de mon interlocuteur (si interlocuteur il y a). Le classement pour sa part distingue 3 types de notes parfaitement exclusifs :

Ainsi le classement n'est-il plus une activité chronophage puisque ne faisant l'objet d'aucune ambiguïté.

Dokuwiki et les namepaces

Avec Dokuwiki, le classement des notes repose sur la bonne utilisation des namespaces, ou “catégories”, ou “espace de nom”. Comme l'indique l'aide, ce système est peu ou prou similaire à celui des dossiers sur un disque dur. Ainsi, toutes mes notes, sans exception, appartiennent-elles à l'un des trois espaces de nom : :notes:reunions_internes, :notes:reunions_externes, :notes:memos (le premier : signifie que l'espace notes se situe à la racine).

Lister les pages d'un namespace avec nspages

Pour relire mes notes, le premier plugin qui m'est utile est nspages. Celui-ci liste l'ensemble des pages existantes dans un espace de nom donné. Chacun des trois namepaces comporte une page d'accueil qui contient le code proposé par nspages pour lister les pages correspondantes. Ainsi, très concrètement, la page :notes:reunions_externes:accueil, et les deux autres, contiennent le code suivant :

<nspages -h1 -simpleList -exclude -reverse -textPages="">

Comme on le voit aisément, la fonction appelée est affublée d'un certain nombre d'options :

Créer rapidement une note avec Add New Page

Généralement, sur un wiki, la création d'une page s'effectue depuis une page existante : on crée un lien vers la nouvelle page, on le suit pour ensuite créer ladite page.

Or, les pages d'accueil des namespace ne sont pas faites pour être éditées. J'utilise plutôt le plugin Add New Page.

Le plugin Add New Page propose donc , pour sa part, une liste déroulante suivie d'un champ texte permettant de créer rapidement une page (/une note) dans le namespace souhaité. La liste déroulante propose en effet l'ensemble des namespaces existant, en présélectionnant par défaut celui de la page en cours.

Ainsi, chaque page “accueil” de chacun des trois namespaces mentionnés, contient-elle également, en sus du code précédent :

{NEWPAGE}

La création d'une note se fait donc littéralement en un clic, une fois son titre saisi.

Les tags

Pour qualifier le contenu des notes, c'est le bien nommé plugin tag qui est mobilisé. Bien que riche en fonctionnalités, son utilisation basique est simple, puisqu'il suffit de renseigner les étiquettes grâce à la syntaxe {{tag>etiquette1 etiquette2}}. Il est également possible de créer des catégories de tags : {{tag>super_projet contact:mr_x contact:mme_y}}

Ensuite, à l'instar de nspages qui liste les pages d'un namespace donné, le plugin tag permet de lister les pages possédant un certain tag. La syntaxe est là aussi simplissime : {{topic>super_projet}}.

Il suffit donc de créer une page par thème/projet et d'y insérer le code précédent pour lister toutes les pages y afférant.

Un bookmarklet pour créer rapidement ses notes

Pour être tout à fait complet, en plus de ces trois plugins, un petit bookmarklet me permet de saisir encore plus rapidement une nouvelle note, en automatisant l'ajout de la date dans le titre de la page. Pour les notes externes, c'est celui-ci :

javascript:( function() {     var today = new Date();     var dd = today.getDate();     var mm = today.getMonth()+1;      var yyyy = today.getFullYear();        if(dd<10) { dd='0'+dd;     }        if(mm<10) {         mm='0'+mm;     }        today = yyyy+'-'+mm+'-'+dd;       var titre = prompt("Titre de la page \(sans la date\)");     if (titre === "") {         console.log("Bouton annul%C3%A9 cliqu%C3%A9");     } else if (titre) {         window.open('https://mon_dokuwiki/notes:reunions_internes:'+today+' - '+titre+'?do=edit',%20'_blank');%20%20%20%20%20}%20else%20{%20%20%20%20%20%20%20%20%20console.log(%22Aucun%20titre%20renseign%C3%A9%22);%20%20%20%20%20}%20})%20();

@jln@mastodon.zaclys.com