mirror of
https://github.com/friendica/friendica
synced 2025-04-23 23:10:10 +00:00
Move duplicated insertFormatting function to main.js
- Add insertBBCodeInTextarea function - Add BBCode url exception to insertBBCodeInTextarea
This commit is contained in:
parent
088eb3391e
commit
5fcdb5de00
7 changed files with 57 additions and 160 deletions
|
@ -406,6 +406,61 @@ $(function() {
|
|||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Inserts a BBCode tag in the comment textarea identified by id
|
||||
*
|
||||
* @param {string} BBCode
|
||||
* @param {int} id
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function insertFormatting(BBCode, id) {
|
||||
let textarea = document.getElementById('comment-edit-text-' + id);
|
||||
|
||||
if (textarea.value === '') {
|
||||
$(textarea)
|
||||
.addClass("comment-edit-text-full")
|
||||
.removeClass("comment-edit-text-empty");
|
||||
closeMenu("comment-fake-form-" + id);
|
||||
openMenu("item-comments-" + id);
|
||||
}
|
||||
|
||||
insertBBCodeInTextarea(BBCode, textarea);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a BBCode tag in the provided textarea element, wrapping the currently selected text.
|
||||
* For URL BBCode, it discriminates between link text and non-link text to determine where to insert the selected text.
|
||||
*
|
||||
* @param {string} BBCode
|
||||
* @param {HTMLTextAreaElement} textarea
|
||||
*/
|
||||
function insertBBCodeInTextarea(BBCode, textarea) {
|
||||
let selectionStart = textarea.selectionStart;
|
||||
let selectionEnd = textarea.selectionEnd;
|
||||
let selectedText = textarea.value.substring(selectionStart, selectionEnd);
|
||||
let openingTag = '[' + BBCode + ']';
|
||||
let closingTag = '[/' + BBCode + ']';
|
||||
let cursorPosition = selectionStart + openingTag.length + selectedText.length;
|
||||
|
||||
if (BBCode === 'url') {
|
||||
if (urlRegex.test(selectedText)) {
|
||||
openingTag = '[' + BBCode + '=' + selectedText + ']';
|
||||
selectedText = '';
|
||||
cursorPosition = selectionStart + openingTag.length;
|
||||
} else {
|
||||
openingTag = '[' + BBCode + '=]';
|
||||
cursorPosition = selectionStart + openingTag.length - 1;
|
||||
}
|
||||
}
|
||||
|
||||
textarea.value = textarea.value.substring(0, selectionStart) + openingTag + selectedText + closingTag + textarea.value.substring(selectionEnd, textarea.value.length);
|
||||
textarea.setSelectionRange(cursorPosition, cursorPosition);
|
||||
textarea.dispatchEvent(new Event('change'));
|
||||
textarea.focus();
|
||||
}
|
||||
|
||||
function NavUpdate() {
|
||||
if (!stopped) {
|
||||
var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&f=&uid=' + localUser : '');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue