Remplacer simpleMDE par un éditeur maison #110

Merged
Darks merged 34 commits from new_editor into dev 2022-12-18 00:08:52 +01:00
Member

SimpleMDE a plusieurs problèmes dues a son fonctionnement complètement en javascript.

Pour résoudre ces problèmes, cette MR remplace SimpleMDE par un éditeur maison basé sur html5 et un peu de js.

Corrigera #89 & #96

SimpleMDE a plusieurs problèmes dues a son fonctionnement complètement en javascript. Pour résoudre ces problèmes, cette MR remplace SimpleMDE par un éditeur maison basé sur html5 et un peu de js. Corrigera #89 & #96
Eragon added 7 commits 2022-04-26 09:42:06 +02:00
Lephenixnoir added 13 commits 2022-04-27 11:15:07 +02:00
f53032fc88
markdown: add an extension for image/video galleries
This will be used on program pages. Currently there is no check that
list elements are images and videos.
8098642d4b
model: add an index on Post.type
This is useful to quickly browse a list of polymorphic Posts for topics,
programs, etc. The main application is from Member.posts, since
polymorphic collection seems both difficult and edgy.

[MIGRATION] This commit contains a new version of the schema.
fe8e2f0265
gallery: second prototype
Don't look for the first one, it's trapped in a parallel universe.
Owner

J'ai mis à jour en fusionnant dev dans cette branche. Même si le résultat n'est pas ce que Gitea espère c'est proprement aligné pour l'instant (ie. on pourrait fusionner la PR sans conflits).

Je fais une passe rapide dessus pour essayer d'aider ^^

J'ai mis à jour en fusionnant `dev` dans cette branche. Même si le résultat n'est pas ce que Gitea espère c'est proprement aligné pour l'instant (ie. on pourrait fusionner la PR sans conflits). Je fais une passe rapide dessus pour essayer d'aider ^^
Lephenixnoir added 3 commits 2022-04-27 12:44:52 +02:00
Owner

Voilà pour un petit coup de main. On pourra voir demain soir si tu veux ajuster des choses !

Voilà pour un petit coup de main. On pourra voir demain soir si tu veux ajuster des choses !
Lephenixnoir added 2 commits 2022-04-27 21:08:26 +02:00
Owner

J'ai implémenté l'architecture générale nécessaire pour faire des modifications à la fois sur la sélection (eg. le gras) et sur les lignes présentes dans la sélection (eg. modification des nivaux de titres). Ça marche pas trop mal ; j'essaie de calquer le niveau "d'intelligence" de SimpleMDE en gros.

Le point le plus important je pense, ça va être d'avoir une bonne aide et sans doute des "AskBox" comme sur la v4 : étant donné qu'il y a plein de paramètres pour les images notamment, ce serait pas de trop je pense.

J'ai implémenté l'architecture générale nécessaire pour faire des modifications à la fois sur la sélection (eg. le gras) et sur les lignes présentes dans la sélection (eg. modification des nivaux de titres). Ça marche pas trop mal ; j'essaie de calquer le niveau "d'intelligence" de SimpleMDE en gros. Le point le plus important je pense, ça va être d'avoir une bonne aide et sans doute des "AskBox" comme sur la v4 : étant donné qu'il y a plein de paramètres pour les images notamment, ce serait pas de trop je pense.
Lephenixnoir added 1 commit 2022-04-28 20:14:23 +02:00
Lephenixnoir added 1 commit 2022-04-28 20:41:16 +02:00
Lephenixnoir added 1 commit 2022-05-05 20:00:56 +02:00
Eragon added 2 commits 2022-05-12 23:03:05 +02:00
Eragon force-pushed new_editor from bf1e8e9cde to d24c454cfc 2022-12-12 19:37:06 +01:00 Compare
Eragon force-pushed new_editor from 48fafd1cbf to 2da20720bb 2022-12-14 11:23:16 +01:00 Compare
Eragon changed title from WIP: Remplacer simpleMDE par un éditeur maison to Remplacer simpleMDE par un éditeur maison 2022-12-14 11:34:10 +01:00
Eragon requested review from Lephenixnoir 2022-12-14 11:34:37 +01:00
Eragon requested review from Darks 2022-12-14 11:34:37 +01:00
Lephenixnoir approved these changes 2022-12-15 10:57:05 +01:00
Lephenixnoir left a comment
Owner

Super travail !

  • La preview, excellente. Elle requête pas tant qu'on tape, ce que je trouve vraiment bien. J'hésite à suggérer de la faire que manuellement par défaut (ie. via un bouton) avec une option pour activer le mode automatique parce que j'ai un peu peur du nombre de requêtes.
    • Détail : la preview se met pas à jour après les éditions via boutons.
  • Après insertion d'un séparateur --- via le bouton, le curseur reste avant le séparateur, après serait mieux.
  • On devrait peut-être ajouter les options pertinentes pour les images, et un bouton pour les vidéos.
  • Un coup de padding plutôt que de margin sur la preview ? J'aurais limite envie de mettre un background pas blanc pour montrer que c'est en lecture seule (peut-être noir transparent 95% en espérant que ça ruine pas les couleurs des tables etc).

Je ne review pas le code en détail ; on l'a déjà vu en détail avant et je voudrais pas tout retarder plus que nécessaire. J'approuve la PR pour qu'on puisse fusionner maintenant si tu préfères remettre les suggestions à plus tard.

Super travail ! - La preview, excellente. Elle requête pas tant qu'on tape, ce que je trouve vraiment bien. J'hésite à suggérer de la faire que manuellement par défaut (ie. via un bouton) avec une option pour activer le mode automatique parce que j'ai un peu peur du nombre de requêtes. * Détail : la preview se met pas à jour après les éditions via boutons. - Après insertion d'un séparateur `---` via le bouton, le curseur reste avant le séparateur, après serait mieux. - On devrait peut-être ajouter les options pertinentes pour les images, et un bouton pour les vidéos. - Un coup de padding plutôt que de margin sur la preview ? J'aurais limite envie de mettre un background pas blanc pour montrer que c'est en lecture seule (peut-être noir transparent 95% en espérant que ça ruine pas les couleurs des tables etc). Je ne review pas le code en détail ; on l'a déjà vu en détail avant et je voudrais pas tout retarder plus que nécessaire. J'approuve la PR pour qu'on puisse fusionner maintenant si tu préfères remettre les suggestions à plus tard.
Author
Member
  • Pour le nombre de requètes il faut voir, je peut ajuster le timeout pour laisser plus de temps a l'utilisateur entre deux touches de clavier. Je ne sait pas ce qui est mieux a avoir par défaut, je propose de tester comme ça et d'essayer de regarder les logs pour voir le nombre de requètes. Je vais essayer de corriger la mise a jour de la preview quand on utilise les boutons.

  • Un oubli de déplacement du curseur, oups.

  • Les images et les vidéo n'utilisent pas les mêmes tags ? Et je n'ai aucune idée des options qu'on pourait ajouter, on supporte des options dans le parser Markdown ?

  • Je vais regarder ce que je peut faire pour rendre la preview un peu différente.

- Pour le nombre de requètes il faut voir, je peut ajuster le timeout pour laisser plus de temps a l'utilisateur entre deux touches de clavier. Je ne sait pas ce qui est mieux a avoir par défaut, je propose de tester comme ça et d'essayer de regarder les logs pour voir le nombre de requètes. Je vais essayer de corriger la mise a jour de la preview quand on utilise les boutons. - Un oubli de déplacement du curseur, oups. - Les images et les vidéo n'utilisent pas les mêmes tags ? Et je n'ai aucune idée des options qu'on pourait ajouter, on supporte des options dans le parser Markdown ? - Je vais regarder ce que je peut faire pour rendre la preview un peu différente.
Owner

J'augmenterais bien le délai de mise à jour alors, si ça ne te dérange pas.

Pour les images et vidéos, on a des options oui. Voir la documentation sur le wiki et la démo sur la v5.

J'augmenterais bien le délai de mise à jour alors, si ça ne te dérange pas. Pour les images et vidéos, on a des options oui. Voir [la documentation sur le wiki](https://gitea.planet-casio.com/devs/PCv5/wiki/09-Markdown-et-extensions#m%C3%A9dias) et [la démo sur la v5](https://v5.planet-casio.com/forum/actus/projets/2/8/avancees-de-la-v5#6075).
Eragon added 1 commit 2022-12-15 12:12:32 +01:00
546b32c22b
editor: Multiples bugfixes from Lephe's review
Refresh preview 3 sec after last keypress
Refresh preview on button usage
Move cursor after the --- line when using the button
Replace margin for padding in the preview css
Add a slight background shade on the preview
Eragon added 1 commit 2022-12-15 14:07:41 +01:00
Author
Member

J'ai ajouté le support du tag type pour les media. Si on doit ajouter le support d'autres tags custom ça se fera dans une autre MR je pense.

J'ai ajouté le support du tag `type` pour les media. Si on doit ajouter le support d'autres tags custom ça se fera dans une autre MR je pense.
Owner

Je suis pas très chaud de mettre les tokens "insert-before" et "insert-after" directement dans le HTML. Pour plusieurs raisons :

  1. Ça casse le "flux" du HTML avec des balises qui sont sur plusieurs lignes
  2. Ça casse le HTML le jour où un outil remet en forme/optimise le HTML
  3. Ça force à modifier le template le jour où on veut modifier le comportement
  4. Ça empêche l'implémentation rapide de contrôles clavier

J'aurais tendance à faire soit un dictionnaire de valeurs dans la fonction Js avec un type pour savoir ce qu'il faut insérer (ex: insert_around(event, "bold")) ; soit une fonction par markup, qui wrappe les infos (ex: editor_code(event) qui appelle insert_around avec les valeurs before et after qui correspondent)

Perso je préfère la seconde option, qui permet de bien séparer les comportements de chaque balise.

Notons que pour les contrôles clavier mettre un callback de ^B sur une fonction editor_bold est relativement rapide à implémenter, par exemple.

RFC @Lephenixnoir @Eragon

Je suis pas très chaud de mettre les tokens "insert-before" et "insert-after" directement dans le HTML. Pour plusieurs raisons : 1. Ça casse le "flux" du HTML avec des balises qui sont sur plusieurs lignes 1. Ça casse le HTML le jour où un outil remet en forme/optimise le HTML 1. Ça force à modifier le *template* le jour où on veut modifier le *comportement* 1. Ça empêche l'implémentation rapide de contrôles clavier J'aurais tendance à faire soit un dictionnaire de valeurs dans la fonction Js avec un type pour savoir ce qu'il faut insérer (ex: `insert_around(event, "bold")`) ; soit une fonction par markup, qui wrappe les infos (ex: `editor_code(event)` qui appelle `insert_around` avec les valeurs `before` et `after` qui correspondent) Perso je préfère la seconde option, qui permet de bien séparer les comportements de chaque balise. Notons que pour les contrôles clavier mettre un callback de ^B sur une fonction `editor_bold` est relativement rapide à implémenter, par exemple. RFC @Lephenixnoir @Eragon
Owner

@Darks Admettons (3-4 sont raisonnables). Effectivement remplacer

<button type="button" onclick="editor_insert_around(event)" data-before="__" data-after="__" title="__Souligné__">

par

<button type="button" onclick="editor_insert_around('__', '__')" title="__Souligné__">

me choque pas. Si je me souviens bien ces attributes before/after datent de la v42. Ça devrait être facile.

@Darks Admettons (3-4 sont raisonnables). Effectivement remplacer ```html <button type="button" onclick="editor_insert_around(event)" data-before="__" data-after="__" title="__Souligné__"> ``` par ```html <button type="button" onclick="editor_insert_around('__', '__')" title="__Souligné__"> ``` me choque pas. Si je me souviens bien ces attributes `before`/`after` datent de la v42. Ça devrait être facile.
Owner

C'est mieux, mais IMHO ça revient quasiment au même.

Ça reste une modification de vue pour une modification de contrôleur (si on reste dans la logique MVC), ex modifier la vue si on considère que le barré c'est ~~ et plus ~.

Je vois ça comme utiliser url_for(forum('Actualités')) vs hardcoder /forum/actualités. Y'en a un dont la vue résistera au temps, là où l'autre demandera de modifier la vue et le contrôleur là où c'est nécessaire. Et si on fait des raccourcis clavier, DRY ;)

Et ça ne résoud pas le problème des data-* multilignes (ex, 5e368ac08b/app/templates/widgets/editor.html (L85-L88))

C'est mieux, mais IMHO ça revient quasiment au même. Ça reste une modification de vue pour une modification de contrôleur (si on reste dans la logique MVC), ex modifier la vue si on considère que le barré c'est ~~ et plus ~. Je vois ça comme utiliser `url_for(forum('Actualités'))` vs hardcoder `/forum/actualités`. Y'en a un dont la vue résistera au temps, là où l'autre demandera de modifier la vue et le contrôleur là où c'est nécessaire. Et si on fait des raccourcis clavier, DRY ;) Et ça ne résoud pas le problème des `data-*` multilignes (ex, https://gitea.planet-casio.com/devs/PCv5/src/commit/5e368ac08b9b8bd33b89901051bdd43c0728507d/app/templates/widgets/editor.html#L85-L88)
Owner

J'ai mal compris ton message en fait, désolé. Oui pour introduire les fonctions genre editor_bold(), c'est logique après tout. Tu as 2 minutes pour le tester ?

J'ai mal compris ton message en fait, désolé. Oui pour introduire les fonctions genre `editor_bold()`, c'est logique après tout. Tu as 2 minutes pour le tester ?
Owner

Je peux limite l'implémenter vendredi soir je pense.

Je peux limite l'implémenter vendredi soir je pense.
Eragon added 1 commit 2022-12-15 18:50:11 +01:00
Darks added 2 commits 2022-12-17 23:29:14 +01:00
Owner

J’ai fait un mix, mais dans l’idée la logique est dans le Javascript, le html ne fait que appeler des fonctions type editor_inline(event, 'bold') dans le pire des cas

J’essayerais d’implémenter les raccourcis clavier à l’occas’

Si ça vous va, ça peut être mergé sur dev et faire l’objet d’un déploiement en preprod

J’ai fait un mix, mais dans l’idée la logique est dans le Javascript, le html ne fait que appeler des fonctions type `editor_inline(event, 'bold')` dans le pire des cas J’essayerais d’implémenter les raccourcis clavier à l’occas’ Si ça vous va, ça peut être mergé sur dev et faire l’objet d’un déploiement en preprod
Darks requested review from Lephenixnoir 2022-12-17 23:32:25 +01:00
Darks refused to review 2022-12-17 23:32:31 +01:00
Darks requested review from Darks 2022-12-17 23:32:58 +01:00
Darks approved these changes 2022-12-17 23:37:14 +01:00
Darks approved these changes 2022-12-17 23:51:37 +01:00
Darks left a comment
Owner

(Test pour le bot)

(Test pour le bot)
Darks approved these changes 2022-12-17 23:57:28 +01:00
Darks left a comment
Owner

Pour tester le bot

Pour tester le bot
Darks approved these changes 2022-12-17 23:59:16 +01:00
Darks left a comment
Owner

Test pour le bot

Test pour le bot
Darks requested changes 2022-12-18 00:01:36 +01:00
Darks left a comment
Owner

Test pour le bot

Test pour le bot
Eragon requested review from Darks 2022-12-18 00:04:05 +01:00
Darks approved these changes 2022-12-18 00:04:37 +01:00
Darks merged commit 28ac88f5bd into dev 2022-12-18 00:08:52 +01:00
Eragon deleted branch new_editor 2022-12-18 00:09:16 +01:00
Sign in to join this conversation.
No description provided.