X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=view%2Ftheme%2Ffrio%2Fjs%2Ftextedit.js;h=e0c06af581f134ce8a7e9750beab82d0c0488336;hb=ba03ec857ae1b83e82819eb883f4c99aa6a739ca;hp=2079c20cdc40a12080da8546045253ecf25a42af;hpb=f4652d6e5026abe7d7b352d2307622bd567aa433;p=friendica.git diff --git a/view/theme/frio/js/textedit.js b/view/theme/frio/js/textedit.js index 2079c20cdc..e0c06af581 100644 --- a/view/theme/frio/js/textedit.js +++ b/view/theme/frio/js/textedit.js @@ -2,6 +2,80 @@ * @brief The file contains functions for text editing and commenting */ +// Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/ +jQuery.fn.putCursorAtEnd = function() { + return this.each(function() { + // Cache references + var $el = $(this), + el = this; + + // Only focus if input isn't already + if (!$el.is(":focus")) { + $el.focus(); + } + + // If this function exists... (IE 9+) + if (el.setSelectionRange) { + // Double the length because Opera is inconsistent about whether a carriage return is one character or two. + var len = $el.val().length * 2; + + // Timeout seems to be required for Blink + setTimeout(function() { + el.setSelectionRange(len, len); + }, 1); + } else { + // As a fallback, replace the contents with itself + // Doesn't work in Chrome, but Chrome supports setSelectionRange + $el.val($el.val()); + } + + // Scroll to the bottom, in case we're in a tall textarea + // (Necessary for Firefox and Chrome) + this.scrollTop = 999999; + }); +}; + +function commentGetLink(id, prompttext) { + reply = prompt(prompttext); + if(reply && reply.length) { + reply = bin2hex(reply); + $.get('parse_url?noAttachment=1&binurl=' + reply, function(data) { + addCommentText(data, id); + }); + } +} + +function addCommentText(data, id) { + // get the textfield + var textfield = document.getElementById("comment-edit-text-" + id); + // check if the textfield does have the default-value + commentOpenUI(textfield, id); + // save already existent content + var currentText = $("#comment-edit-text-" + id).val(); + //insert the data as new value + textfield.value = currentText + data; + autosize.update($("#comment-edit-text-" + id)); +} + +function commentLinkDrop(event, id) { + var reply = event.dataTransfer.getData("text/uri-list"); + event.target.textContent = reply; + event.preventDefault(); + if (reply && reply.length) { + reply = bin2hex(reply); + $.get('parse_url?noAttachment=1&binurl=' + reply, function(data) { + addCommentText(data, id); + }); + } +} + +function commentLinkDropper(event) { + var linkFound = event.dataTransfer.types.contains("text/uri-list"); + if (linkFound) { + event.preventDefault(); + } +} + function insertFormatting(BBcode, id) { var tmpStr = $("#comment-edit-text-" + id).val(); @@ -27,6 +101,22 @@ function insertFormatting(BBcode, id) { return true; } +function insertFormattingToPost(BBcode) { + textarea = document.getElementById("profile-jot-text"); + if (document.selection) { + textarea.focus(); + selected = document.selection.createRange(); + selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]"; + } else if (textarea.selectionStart || textarea.selectionStart == "0") { + var start = textarea.selectionStart; + var end = textarea.selectionEnd; + textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length); + } + + $(textarea).trigger('change'); + + return true; +} function showThread(id) { $("#collapsed-comments-" + id).show() @@ -45,7 +135,7 @@ function cmtBbClose(id) { } function commentExpand(id) { - $("#comment-edit-text-" + id).value = ''; + $("#comment-edit-text-" + id).putCursorAtEnd(); $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); $("#comment-edit-text-" + id).focus();