Remplacer simpleMDE par un éditeur maison #110
No reviewers
Labels
No Label
Core
bug
duplicate
easy
enhancement
help wanted
invalid
performance
proposal
question
security
warning
wontfix
No Milestone
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: devs/PCv5#110
Loading…
Reference in New Issue
No description provided.
Delete Branch "new_editor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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
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 ^^
Voilà pour un petit coup de main. On pourra voir demain soir si tu veux ajuster des choses !
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.
bf1e8e9cde
tod24c454cfc
48fafd1cbf
to2da20720bb
WIP: Remplacer simpleMDE par un éditeur maisonto Remplacer simpleMDE par un éditeur maisonSuper travail !
---
via le bouton, le curseur reste avant le séparateur, après serait mieux.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.
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.
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'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.Je suis pas très chaud de mettre les tokens "insert-before" et "insert-after" directement dans le HTML. Pour plusieurs raisons :
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 appelleinsert_around
avec les valeursbefore
etafter
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
@Darks Admettons (3-4 sont raisonnables). Effectivement remplacer
par
me choque pas. Si je me souviens bien ces attributes
before
/after
datent de la v42. Ça devrait être facile.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)
)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 ?Je peux limite l'implémenter vendredi soir je pense.
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 casJ’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
(Test pour le bot)
Pour tester le bot
Test pour le bot
Test pour le bot