X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=view%2Ftheme%2Ffrio%2Fjs%2Ftextedit.js;h=7ba6a5c0335232dd03b89334cc9febc26e69169a;hb=8536b313a1eb1c3e11f9ba5317fdcef33118bcb8;hp=ad5f9502341bc7e5fa5b4e205fa3ebc68e9eaabd;hpb=3dfb0c2e7cc84dc7e43a975f44e8854b98d043bc;p=friendica.git diff --git a/view/theme/frio/js/textedit.js b/view/theme/frio/js/textedit.js index ad5f950234..7ba6a5c033 100644 --- a/view/theme/frio/js/textedit.js +++ b/view/theme/frio/js/textedit.js @@ -2,44 +2,84 @@ * @brief The file contains functions for text editing and commenting */ - -function insertFormatting(BBcode, id) { - var tmpStr = $("#comment-edit-text-" + id).val(); - if (tmpStr == '') { - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-edit-submit-wrapper-" + id); +// 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); + }); } +} - textarea = document.getElementById("comment-edit-text-" + id); - 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); +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); + }); } +} - $(textarea).trigger('change'); - - return true; +function commentLinkDropper(event) { + var linkFound = event.dataTransfer.types.contains("text/uri-list"); + if (linkFound) { + event.preventDefault(); + } } -function insertFormattingToPost(BBcode) { +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'); + insertBBCodeInTextarea(BBCode, textarea); return true; } @@ -60,115 +100,99 @@ function cmtBbClose(id) { $("#comment-edit-bb-" + id).hide(); } -function commentExpand(id) { - $("#comment-edit-text-" + id).value = ''; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - $("#comment-edit-text-" + id).focus(); +function commentExpand(id) +{ $("#mod-cmnt-wrap-" + id).show(); - openMenu("comment-edit-submit-wrapper-" + id); + closeMenu("comment-fake-form-" + id); + openMenu("item-comments-" + id); + $("#comment-edit-text-" + id) + .putCursorAtEnd() + .addClass("comment-edit-text-full") + .removeClass("comment-edit-text-empty"); + return true; } -function commentClose(obj, id) { - if (obj.value == '') { - $("#comment-edit-text-" + id).removeClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).addClass("comment-edit-text-empty"); +function commentClose(obj, id) +{ + if (obj.value === '' || obj.value === obj.dataset.default) { + $("#comment-edit-text-" + id) + .removeClass("comment-edit-text-full") + .addClass("comment-edit-text-empty"); $("#mod-cmnt-wrap-" + id).hide(); - closeMenu("comment-edit-submit-wrapper-" + id); + openMenu("comment-fake-form-" + id); + closeMenu("item-comments-" + id); return true; } return false; } function showHideCommentBox(id) { - if ($('#comment-edit-form-' + id).is(':visible')) { - $('#comment-edit-form-' + id).hide(); + var $el = $('#comment-edit-form-' + id); + if ($el.is(':visible')) { + $el.hide(); } else { - $('#comment-edit-form-' + id).show(); + $el.show(); } } function commentOpenUI(obj, id) { - $("#comment-edit-text-" + id).addClass("comment-edit-text-full").removeClass("comment-edit-text-empty"); - // Choose an arbitrary tab index that's greater than what we're using in jot (3 of them) - // The submit button gets tabindex + 1 - $("#comment-edit-text-" + id).attr('tabindex', '9'); - $("#comment-edit-submit-" + id).attr('tabindex', '10'); - $("#comment-edit-submit-wrapper-" + id).show(); + closeMenu("comment-fake-form-" + id); + openMenu("item-comments-" + id); + $("#comment-edit-text-" + id) + .putCursorAtEnd() + .addClass("comment-edit-text-full").removeClass("comment-edit-text-empty") + .attr('tabindex', '9'); // Choose an arbitrary tab index that's greater than what we're using in jot (3 of them) + $("#comment-edit-submit-" + id).attr('tabindex', '10'); // The submit button gets tabindex + 1 // initialize autosize for this comment autosize($("#comment-edit-text-" + id + ".text-autosize")); } function commentCloseUI(obj, id) { - if (obj.value === '') { - $("#comment-edit-text-" + id).removeClass("comment-edit-text-full").addClass("comment-edit-text-empty"); - $("#comment-edit-text-" + id).removeAttr('tabindex'); + if (obj.value === '' || obj.value === obj.dataset.default) { + $("#comment-edit-text-" + id) + .removeClass("comment-edit-text-full").addClass("comment-edit-text-empty") + .removeAttr('tabindex'); $("#comment-edit-submit-" + id).removeAttr('tabindex'); - $("#comment-edit-submit-wrapper-" + id).hide(); + openMenu("comment-fake-form-" + id); + closeMenu("item-comments-" + id); // destroy the automatic textarea resizing autosize.destroy($("#comment-edit-text-" + id + ".text-autosize")); } } function jotTextOpenUI(obj) { - if (obj.value == '') { - $(".modal-body #profile-jot-text").addClass("profile-jot-text-full").removeClass("profile-jot-text-empty"); + if (obj.value === '' || obj.value === obj.dataset.default) { + var $el = $(".modal-body #profile-jot-text"); + $el.addClass("profile-jot-text-full").removeClass("profile-jot-text-empty"); // initiale autosize for the jot - autosize($(".modal-body #profile-jot-text")); + autosize($el); } } function jotTextCloseUI(obj) { - if (obj.value === '') { - $(".modal-body #profile-jot-text").removeClass("profile-jot-text-full").addClass("profile-jot-text-empty"); + if (obj.value === '' || obj.value === obj.dataset.default) { + var $el = $(".modal-body #profile-jot-text"); + $el.removeClass("profile-jot-text-full").addClass("profile-jot-text-empty"); // destroy the automatic textarea resizing - autosize.destroy($(".modal-body #profile-jot-text")); + autosize.destroy($el); } } function commentOpen(obj, id) { - if (obj.value == '') { - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + if (obj.value === '' || obj.value === obj.dataset.default) { + $("#comment-edit-text-" + id) + .putCursorAtEnd() + .addClass("comment-edit-text-full") + .removeClass("comment-edit-text-empty"); $("#mod-cmnt-wrap-" + id).show(); - openMenu("comment-edit-submit-wrapper-" + id); + closeMenu("comment-fake-form-" + id); + openMenu("item-comments-" + id); return true; } return false; } -function commentInsert(obj, id) { - var tmpStr = $("#comment-edit-text-" + id).val(); - if (tmpStr == '') { - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-edit-submit-wrapper-" + id); - } - var ins = $(obj).html(); - ins = ins.replace('<', '<'); - ins = ins.replace('>', '>'); - ins = ins.replace('&', '&'); - ins = ins.replace('"', '"'); - $("#comment-edit-text-" + id).val(tmpStr + ins); -} - -function qCommentInsert(obj, id) { - var tmpStr = $("#comment-edit-text-" + id).val(); - if (tmpStr == '') { - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-edit-submit-wrapper-" + id); - } - var ins = $(obj).val(); - ins = ins.replace('<', '<'); - ins = ins.replace('>', '>'); - ins = ins.replace('&', '&'); - ins = ins.replace('"', '"'); - $("#comment-edit-text-" + id).val(tmpStr + ins); - $(obj).val(''); -} - function confirmDelete() { return confirm(aStr.delitem); }