-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Améliore le comportement du bouton "Citer" #4711
Conversation
L'ancien comportement consistait à insérer la citation à la fin du message, suivie de deux sauts de ligne. Ce commit fait en sorte que la citation soit maintenant insérée à la position courante du curseur, afin de pouvoir la placer au milieu du message (entre deux paragraphes par exemple).
Ça marche assez bien chez moi, mais si on a le curseur au milieu d'un mot ou d'une phrase, la citation s'y insère, ce qui n'a aucun sens. Ce serait bien de gérer ça. ^^ |
Pour gérer ça : diff --git a/assets/js/ajax-actions.js b/assets/js/ajax-actions.js
index 0356a91db..c0806e612 100644
--- a/assets/js/ajax-actions.js
+++ b/assets/js/ajax-actions.js
@@ -194,31 +194,45 @@
}
});
+ function getLineAt(string, index) {
+ var before = string.slice(0, index).split("\n").slice(-1)[0] || "";
+ var after = string.slice(index).split("\n")[0] || "";
+ return before + after;
+ }
+
+ function insertCitation(editor, citation) {
+ if (editor.selectionStart !== editor.selectionEnd ||
+ getLineAt(editor.value, editor.selectionStart).trim()) {
+ editor.value = editor.value + "\n\n" + citation;
+ return;
+ }
+
+ var before = editor.value.slice(0, editor.selectionStart);
+ var after = editor.value.slice(editor.selectionEnd);
+ editor.value = before + "\n" + citation + "\n" + after;
+ }
+
/**
* Cite a message
*/
$(".message-actions").on("click", "[data-ajax-input='cite-message']", function(e){
- var $act = $(this),
- $editor = $(".md-editor");
+ e.stopPropagation();
+ e.preventDefault();
+
+ var $act = $(this);
+ var editor = document.querySelector(".md-editor");
$.ajax({
url: $act.attr("href"),
dataType: "json",
success: function(data){
- var selStart = $editor[0].selectionStart;
- var selEnd = $editor[0].selectionEnd;
- $editor.val($editor.val().slice(0, selStart) + data.text + "\n\n" + $editor.val().slice(selEnd));
- var caretPos = selEnd + data.text.length + 2;
- $editor[0].setSelectionRange(caretPos, caretPos);
+ insertCitation(editor, data.text);
}
});
// scroll to the textarea and focus the textarea
- $("html, body").animate({ scrollTop: $editor.offset().top }, 500);
- $editor.focus();
-
- e.stopPropagation();
- e.preventDefault();
+ $("html, body").animate({ scrollTop: $(editor).offset().top }, 500);
+ editor.focus();
});
/** |
Mince, désolé de vous avoir oublié, j'avais ouvert la notification et l'onglet s'est perdu parmi les autres. Je m'en occupe de suite. |
Je laisse @motet-a valider avant de merger. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
QA OK. Mergeable après code review de @motet-a et rebase.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Depuis zestedesavoir#4711, le bouton "Citer" insère une ligne vide suivie de la citation, même quand la boite d'édition est vide. Avant, la citation était ajoutée au début du message et était suivie de deux sauts de lignes. Ce commit restaure ce comportement quand la boite d'édition est vide.
Depuis #4711, le bouton "Citer" insère une ligne vide suivie de la citation, même quand la boite d'édition est vide. Avant, la citation était ajoutée au début du message et était suivie de deux sauts de lignes. Ce commit restaure ce comportement quand la boite d'édition est vide.
L'ancien comportement consistait à insérer la citation à la fin du message, suivie de deux sauts de ligne.
Ce commit fait en sorte que la citation soit maintenant insérée à la position courante du curseur, afin de pouvoir la placer au milieu du message (entre deux paragraphes par exemple).
Numéro du ticket concerné (optionnel) : Aucun
Contrôle qualité
N'hésitez pas à me signaler si vous préférez le comportement actuel. Je fais cette PR surtout parce que j'ai souvent tendance à rédiger une réponse et à vouloir insérer des citations ensuite (qui du coup se rajoutent à la fin du message).