Projets personnels

L'une des forces de Wordpress est sa ribambelle de plugins dont Elementor qui permet de créer des pages sans toucher au code.

Pour permettre d'éditer du contenu de la même façon, GrapesJS est maintenant nativement intégré dans Murph depuis la version v1.13. Les blocs permettent de créer n'importe quel contenu en s'appuyant sur les composants Bootstrap 4. La version de développement de Murph intègre d'ores et déjà d'autres outils comme les presets webpage et newsletter pour se passer de Bootstrap.

Si vous voulez essayer, un site de démo a été mis en ligne 😏

GrapesJS dans Murph

Pour mettre à jour Murph, rien de plus simple :

$ composer update
$ yarn upgrade
$ make build

Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues.

Voici un aperçu des changements depuis la version 1.7 pour laquelle j'avais réalisé un article.

Dépendances

Dans un premier temps et c'est sans doute le changement le plus important, le core du projet a été migré vers un dépôt dédié. Par conséquent, le moteur de Murph peut être installée comme une dépendance classique via composer.

Ainsi, le fichier composer.json du projet murph/murph-skeleton a été réduit au strict nécessaire et permet de mettre à jour facilement Murph.

Dans cette même démarche à faciliter le développement et surtout la mise à jour des dépendances javascript, toutes les dépendances du fichiers package.json ont été migré vers un package node dédié.

À la suite de ces changements, mettre à jour une instance de Murph est très simple :

composer update
yarn upgrade
make build

Nouvelles fonctionnalités et correctifs

Globalement, pas mal de petites corrections ont été apportées. Voici les fonctionnalités implémentées depuis la v1.7.

Le gestionnaire de fichiers permet à présent de renommer un fichier. Seule l'extension du fichier ne peut pas être modifiée pour des questions de sécurité.
Son affichage est également mieux géré dans le cas où plusieurs modales sont affichées (ajout d'un flou sur les modales du dessus).

Il est possible d'indiquer des rôles dans la configuration de Murph afin de définir des permissions sur des éléments d'un menu. Ainsi, une page pourra être restreinte à des utilisateur⋅trices spécifiques.

Afin de réaliser des liens dans un template Twig vers des éléments de la navigation, quatre nouvelles fonctions twig ont été ajoutées : code_url, code_path. Pour gérer les cas d'exceptions, vous pouvez également utiliser : safe_code_url et safe_code_path.
Ces fonctions prennent en paramètres le code du menu et le code du nœud. Le moteur va détecter la navigation courante pour générer le lien. Cette fonctionnalité est très pratique quand plusieurs navigations partagent une arborescence commune et qu'on souhaite faciliter le développement des templates. 

Un nouveau maker symfony a été créé pour générer facilement une nouvelle page. Au même titre que pour générer une entité en ligne de commande, vous pourrez créer et paramétrer une page avec php bin/console make:page.

L'éditeur EditorJS a été ajouté dans Murph et ajoute approche complémentaire à TinyMce pour rédiger du contenu. Comme cet éditeur s'appuie sur l'idée de blocs, un nouvelle fonction twig permet de rendre un contenu édité avec EditorJS : editorjs_to_html. Cette fonction peut prendre un tableau de blocs autorisés à être rendus. Par ailleurs, bien que des vues par défaut existent pour rendre chaque bloc, vous pourrez paramétrer des vues spécifiques pour vos blocs. Cet article est d'ailleurs rédigé avec EditorJS.

La gestion du menu de l'administration de Murph a été simplifiée par l'utilisation de vues pour créer des sections et des éléments de menu.

Enfin, la version de Murph a été ajoutée dans l'interface d'administration en haut à droite.

Installation de Murph

Pour installer et Murph et commencer à développer son CMS, le processus est ultra simple :

composer create-project murph/murph-skeleton MonProjet # Installation du projet
cd MonProjet
cp .env .env.local
vim .env.local 
make build # On génère les données du CMF (base de données, assets, etc.)
php bin/console murph:user:create # Création d'un compte
symfony server:start -d # On lance le serveur web de dev

J'espère que ça vous plaira ☺️


Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues.

Depuis la version v1.0 publiée fin janvier 2022, pas mal de mises à jour sont arrivées. Certains sont visibles dans l'interface d'administration, d'autres sont ancrées dans le moteur du CMS. En voici quelques-unes :

  • Un outils d'analyse web a été ajouté et permet, sur demande, d'activer un outil pour compter les pages vues, les référants et le type de périphérique (mobile ou desktop)
  • Le gestionnaire de fichiers permet d'uploader un répertoire complet. On peut choisir chosir la manière d'afficher les fichiers selon leur nom ou la date de mise à jour
  • Un gestionnaire de redirection a été ajouté et permet de créer des règles fines
  • Le template par défaut a été réécrit et contient le nécessaire pour lancer un nouveau développement
  • node-sass est remplacé par sass et il est nécessaire d'avoir une version de NodeJS >= 16
  • Les assets de Murph ont été déplacés dans le core ce qui permet de faciliter la mise à jour du CMS

Conjoitement à tout ça, des dépendances ont été mises à jour ou remplacées et des bugs ont été corrigés !

Murph


Je reconnais que ce titre peut générer un gros mind fuck mais laissez moi vous expliquer !

Depuis quelques temps, je joue quotidiennement à Sutom, une copie du jeu vieux jeu télévisé Motus. Le principe du jeu est simple : nous devons découvrir un mot avec comme indices sa taille et la première lettre qui le compose. On peut faire maximum 6 propositions qui permettent de découvrir les lettres. Une lettre découverte sera affichée dans un carré rouge, une lettre découverte mais mal placée sera dans un rond jaune. Les autres lettres resteront en bleu. Seuls des mots du dictionnaire peuvent être proposés.

Sutom est addictif...mais pas tant que ça car il n'y a qu'un seul mot à découvrir par jour !

Cela m'a donné un bon prétexte pour monter un nouveau projet : écrire un bot avec lequel je pourrai jouer via Matrix, ma messagerie instantanée. Le bot se connecte avec un compte utilisateur créé pour l'occasion puis accepte les invitations à rejoindre une conversation. Le bot va ensuite lire les messages qu'on envoit et va réagir quand c'est nécessaire. Ainsi on peut lancer ou relancer une partie et tester des mots. À chaque proposition, on retrouve un affichage comme dans Motus 🥸

Le code source du projet est dispo ici, c'est vraiment sans prétention !

Motus sur Matrix


Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues. Il possède un gestionnaire de navigations et de menus, il met à diposition un générateur de CRUD et intègre quelques outils indispensables comme un gestionnaire de fichiers, un gestionnaire de tâches, un panneau de configuration, la double authentification, etc.

La procédure d'installation est simple et rapide. Toutes les informations essentielles sont sur la documentation et les sources sont sur gitnet.

composer create-project murph/murph-skeleton MonProjet ^1 # Installation du projet
cp .env .env.local
vim .env.local 
make doctrine-migration # Configuration de la base de données
make asset # Création des assets
php bin/console murph:user:create # Création d'un compte
symfony server:start -d # On lance le serveur web de dev

À partir de là, Murph est opérationnel. L'interface d'administration est accessible sur https://127.0.0.1:8080.
Tout le reste du travail s'articule dans la conception de votre CMS via du code. Je vous invite à lire la documentation du projet.

L'idée générale de Murph se résume dans ces quelques points :

  • Une installation de Murph contient une ou plusieurs navigations représentées par des noms de domaines et des langues
  • Une navigation contient des menus dans lesquels on ajoute des nœuds
  • Un nœud peut représenter une URL et peut s'associer à une page ou un autre nœud
  • Une page contient des blocs de contenu
  • À coté de ça, on peut générer des CRUD pour éditer des données métiers (exemple : les articles d'un blog)

Beaucoup de travail a été mené et Murph peut couvrir beaucoup de cas d'usages rencontrés par les développeurs de sites web sur-mesure. J'ai par exemple réalisé mon blog, un site de recrutement, un outil pour s'inscrire à un évènement et un site qui présente les services d'un hôtel dont voici quelques images du backoffice :

Murph