diff options
author | Rafael de Camargo <rafacamargo123@gmail.com> | 2019-07-24 01:04:55 -0300 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2019-07-24 13:50:51 -0700 |
commit | 2bf0f99b519aec5b2068a689a8051d88154e3850 (patch) | |
tree | 5cce25cd4ccd2587269e79a88af793a6dc47011f /assets/js/components | |
parent | 7283bfaef6aeeb62aed2478e201f28d7361633fd (diff) |
Add link button to text editor
Diffstat (limited to 'assets/js/components')
-rw-r--r-- | assets/js/components/text-editor.js | 25 |
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(); |