summaryrefslogtreecommitdiff
path: root/assets/js/components
diff options
context:
space:
mode:
authorRafael de Camargo <rafacamargo123@gmail.com>2019-07-24 01:04:55 -0300
committerFrédéric Guillot <fred@kanboard.net>2019-07-24 13:50:51 -0700
commit2bf0f99b519aec5b2068a689a8051d88154e3850 (patch)
tree5cce25cd4ccd2587269e79a88af793a6dc47011f /assets/js/components
parent7283bfaef6aeeb62aed2478e201f28d7361633fd (diff)
Add link button to text editor
Diffstat (limited to 'assets/js/components')
-rw-r--r--assets/js/components/text-editor.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/assets/js/components/text-editor.js b/assets/js/components/text-editor.js
index 1da8f0d9..6c47f7f9 100644
--- a/assets/js/components/text-editor.js
+++ b/assets/js/components/text-editor.js
@@ -44,6 +44,7 @@ KB.component('text-editor', function (containerElement, options) {
{href: '#', html: '<i class="fa fa-bold fa-fw"></i>', click: function() { insertEnclosedTag('**'); }},
{href: '#', html: '<i class="fa fa-italic fa-fw"></i>', click: function() { insertEnclosedTag('_'); }},
{href: '#', html: '<i class="fa fa-strikethrough fa-fw"></i>', click: function() { insertEnclosedTag('~~'); }},
+ {href: '#', html: '<i class="fa fa-link fa-fw"></i>', click: function() { insertLinkTag(); }},
{href: '#', html: '<i class="fa fa-quote-right fa-fw"></i>', click: function() { insertPrependTag('> '); }},
{href: '#', html: '<i class="fa fa-list-ul fa-fw"></i>', click: function() { insertPrependTag('* '); }},
{href: '#', html: '<i class="fa fa-code fa-fw"></i>', click: function() { insertBlockTag('```'); }}
@@ -130,6 +131,30 @@ KB.component('text-editor', function (containerElement, options) {
setCursorBeforeClosingTag(tag, 1);
}
+ function insertLinkTag() {
+ var selectedText = getSelectedText();
+ var linkLabel = options.labelTitle;
+ var linkUrl = 'http://...';
+ var selectionStartOffset = 0;
+ var selectionEndOffset = 0;
+
+ if (selectedText.startsWith('http')) {
+ linkUrl = selectedText;
+ selectionStartOffset = -1 * (linkUrl.length + 3 + linkLabel.length);
+ selectionEndOffset = selectionStartOffset + linkLabel.length;
+ } else if (selectedText.length > 0) {
+ linkLabel = selectedText;
+ selectionStartOffset = -1 * (linkUrl.length + 1);
+ selectionEndOffset = selectionStartOffset + linkUrl.length;
+ }
+ insertText('[' + linkLabel + '](' + linkUrl + ')');
+
+ var selectionPosition = KB.utils.getSelectionPosition(textarea);
+ var currentSelectionStart = selectionPosition.selectionStart;
+
+ textarea.setSelectionRange(currentSelectionStart + selectionStartOffset, currentSelectionStart + selectionEndOffset);
+ }
+
function insertText(replacedText) {
textarea.focus();