* @brief The file contains functions for text editing and commenting
*/
-function commentGetLink(id) {
- reply = prompt("Please enter a link URL:");
- if(reply && reply.length) {
- reply = bin2hex(reply);
- $.get('parse_url?isComment=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?isComment=1&binurl=' + reply, function(data) {
- addcommenttext(data, id);
- });
- }
-}
-
-function commentlinkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
- if(linkFound)
- event.preventDefault();
+// 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();
+ }
}
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);
+ closeMenu("comment-fake-form-" + id);
+ openMenu("item-comments-" + id);
}
textarea = document.getElementById("comment-edit-text-" + 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);
}