]> git.mxchange.org Git - friendica.git/blobdiff - view/theme/frio/js/textedit.js
Merge pull request #6589 from rabuzarus/20190204_-_show_forum_account_in_vcard
[friendica.git] / view / theme / frio / js / textedit.js
index bbbd8fde860a12832b9518d625a647fae580de0a..76a04a32f2887b49913c6e80bed291184c692881 100644 (file)
@@ -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();
@@ -15,19 +89,11 @@ function insertFormatting(BBcode, id) {
        if (document.selection) {
                textarea.focus();
                selected = document.selection.createRange();
-               if (BBcode == "url") {
-                       selected.text = "["+BBcode+"]" + "http://" +  selected.text + "[/"+BBcode+"]";
-               } else {
-                       selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
-               }
+               selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
        } else if (textarea.selectionStart || textarea.selectionStart == "0") {
                var start = textarea.selectionStart;
                var end = textarea.selectionEnd;
-               if (BBcode == "url") {
-                       textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
-               } else {
-                       textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
-               }
+               textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
        }
 
        $(textarea).trigger('change');
@@ -35,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()
@@ -53,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();