Skip to content

Une appli PHP CLI pour la gestion des fichiers de cours à destination des formateur·trices ou des profs (alpha)

Notifications You must be signed in to change notification settings

websealevel/course-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Course-manager

Une application CLI basée sur le composant Console de Symfony, à destination des formateur·trices et enseignant·es, pour gérer les supports pédagogiques et leurs publications.

Write once, reuse and publish everywhere !

Dépendances tierces

Pour pouvoir utiliser le programme, assurez-vous d'installer les programmes suivants:

Installation avec Composer

Installer Composer.

Téléchargez-le code source.

composer install

Rendre le script cm exécutable

chmod +x cm
# Tester et lister toutes les commandes
./cm

Pour rendre le programme globalement accessible sur votre machine, ajouter-le à votre PATH:

#Sous Debian/Ubuntu
export PATH="/path/to/course-manager:$PATH"

Tester votre installation en tapant la commande cm.

Mettre à jour

Pour mettre à jour le programme, rendez-vous dans le dossier contenant le dépôt cloné. Assurez-vous d'être sur la branche main puis git pull pour récupérer le code-source à jour, et composer update pour mettre à jour les dépendances.

#Dans le repertoire du projet cloné sur github
git pull && composer update

Philosophie

Écrivez une fois, publiez plusieurs fois dans différents formats.

Ce gestionnaire de cours est basé sur le principe de la stricte et nécessaire séparation du contenu et de la forme. Vous écrivez, mettez à jour votre contenu en un endroit, puis vous le publiez vers autant de formats que nécessaire (HTML, PDF, etc.).

Un projet de gestion de cours se compose des éléments suivants:

  • sources/ : les fichiers sources de vos cours (Markdown, assets, images). La source de vérité
  • templates/: les styles globaux pour la publication de vos cours (CSS, XSLT, etc.)
  • public/ : les cours publiés au format HTML et/ou PDF, distribuable, les notes n'y apparaissent pas
  • index.html: un fichier pour naviguer facilement dans vos cours via votre navigateur web

Vous écrivez vos contenus de cours en Markdown. Le programme vous convertit tous vos supports aux formats HTML et PDF dans le dossier public, prêts à être imprimés ou distribués à vos étudiant·es.

Le programme vous oblige uniquement à

  • définir un projet courant (un dossier de travail)
  • créer un dossier par cours

Vous organisez ensuite comme vous le désirez vos supports de cours à l'intérieur de ces dossiers. Des règles de publication sont définies automatiquement ou sont configurables.

Modèle

Un projet est un système de gestion de cours, c'est votre répertoire de travail. Vous pouvez avoir plusieurs projets sur la même machine.

Un cours est défini par des métadonnées, peut être assigné à un vendor, et se compose de modules. Chaque module contient vos supports de cours. Les métadonnées servent à lister, filtrer et interroger vos cours.

Guide de démarrage

Créer un nouveau projet

Créer un nouveau projet de gestion de cours

cm add:project mes-cours

Lors de votre première création de projet, course-manager crée un fichier de configuration global dans votre répertoire home ($HOME/.create-manager).

Si c'est votre premier projet alors, par défaut, mes-cours est votre projet courant, inutile donc de vous y déplacer pour l'administrer.

Le projet courant est défini sous la clé MAIN dans le fichier de configuration global (voir $HOME/.create-manager). Vous pouvez changer de projet courant avec la commande change:current-project ou en vous rendant directement dans le répertoire d'un autre projet.

Ajouter un nouveau cours

Créer un nouveau cours sur le programme course-manager, pour le présenter à des apprenant·es de l'établissement mon-ecole

cm add:course course-manager mon-ecole
# Ou avec les options: renseigner des niveaux (L1) et des mot-clefs (cli et gestion)
cm add:course course-manager mon-ecole --level=L1 --keywords=cli,gestion

Le vendor est un paramètre optionnel. Si vous ne renseignez pas de vendor, le cours sera enregistré dans le vendor global. Par exemple, cm add:course course-manager créera le cours course-manager directement dans le dossier sources, et celui-ci ne sera rattaché à aucun vendor en particulier.

Par défaut, le programme vous crée un dossier mon-ecole/course-manager contenant les fichiers/dossiers suivants:

  • bibliographie: pour stocker les documents bibliographiques du cours (ebook, fichiers PDF, images, etc.)
  • module00-presentation: module de présentation du cours
    • cours: contient le fichier de cours cours.md. Placer ici les supports de cours.
    • exercices: placer ici les fiches d'exercices (énoncés, corrections)
  • README.md: description brève du cours (durée, contenu, ressources, niveau des apprenants (--level), remarques). Contient le plan, les objectifs, le planning, etc.
  • index.html: permet de naviguer dans le cours au format HTML.
  • .metadata: un fichier caché contenant des métadonnées sur le cours. Généré automatiquement. Permet de filtrer les cours via le programme.

Vous pouvez modifier le contenu par défaut d'un cours selon vos besoins.

Ajouter un nouveau module à un cours

À venir...

Publier un cours

À venir...

Liste des commandes disponibles

Pour obtenir des informations sur les commandes disponibles

cm list
#ou simplement
cm

Pour obtenir des informations sur chaque commande (description, arguments et options)

cm <nom de la commande> --help
#ou
cm <nom de la commande> -h

Savoir utiliser la ligne de commande: arguments, options et syntaxe utilisées dans la documentation

Ce programme en ligne de commande suit les conventions généralement adoptées sur l'utilisation des commandes, arguments et options.

Les commandes peuvent prendre des arguments ou des options en paramètre. Pour lister les arguments et les options disponibles de chaque commande, taper cm <nom de la commande> --help.

Les chaînes de caractères entre chevrons <> doivent être remplacées par un nom de commande, d'argument ou d'option.

Argument d'une commande

Un argument est une chaîne de caractère ajouté à la suite de la commande pour modifier son comportement. Les arguments sont séparés par des espaces. Un argument peut-être obligatoire ou optionnel.

Il s'écrit sous la forme cm <nom de la commande> <nom de l'argument>. Par exemple, cm add:project mes-cours. Attention, les arguments sont ordonnés, ils doivent être écrits dans l'ordre attendu par la commande.

Un argument optionnel est représenté entre crochets cm <nom de la commande> [<nom de l'argument optionnel>].

Options d'une commande

Une option est par définition optionnelle. Elle a un nom et peut être placée n'importe où à la suite du nom de la commande (contrairement aux arguments). Elles sont préfixées par deux dashes --. Par exemple l'option help s'écrit cm add:project --help.

Les options ont également un alias, un nom plus court. Un alias est préfixé par un dash -. Par exemple, cm add:project --help est équivalent à cm add:project -h; -h est l'alias de --help. Si l'option prend une valeur, on la passera comme suit: --option=foo, ou en version abrégée -ofoo (en supposant ici que l'alias de option est o).

phpDocumentor

La documentation du code est générée par phpDocumentor et se trouve dans le dossier docs. Elle est consultable dans le navigateur depuis ce fichier.

Régénérer la documentation du projet à partir des sources

#installer docker pour pouvoir générér la documentation de cette manière
docker run --rm -v "$(pwd):/data" "phpdoc/phpdoc:3" run -dsrc -tdocs

phpStan

Pour analyser le code source statiquement (au level 6) avec phpStan et corriger les erreurs

#Analyser le code au level 6
vendor/bin/phpstan analyse src -l6

Ressources

Utilisateur·rice

Développeur·se