2017-01-07 14:49:13 +00:00
|
|
|
/*
|
2016-05-07 22:29:33 +00:00
|
|
|
* @brief The file contains functions for text editing and commenting
|
|
|
|
*/
|
|
|
|
|
2019-01-29 14:25:22 +00:00
|
|
|
// 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;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2018-10-24 16:09:54 +00:00
|
|
|
function commentGetLink(id, prompttext) {
|
|
|
|
reply = prompt(prompttext);
|
|
|
|
if(reply && reply.length) {
|
2018-10-24 14:20:10 +00:00
|
|
|
reply = bin2hex(reply);
|
|
|
|
$.get('parse_url?noAttachment=1&binurl=' + reply, function(data) {
|
|
|
|
addCommentText(data, id);
|
|
|
|
});
|
|
|
|
}
|
2018-10-17 19:05:45 +00:00
|
|
|
}
|
|
|
|
|
2018-10-24 14:20:10 +00:00
|
|
|
function addCommentText(data, id) {
|
2019-02-02 02:12:36 +00:00
|
|
|
// 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));
|
2018-10-17 19:05:45 +00:00
|
|
|
}
|
|
|
|
|
2018-10-24 14:20:10 +00:00
|
|
|
function commentLinkDrop(event, id) {
|
2019-02-02 02:12:36 +00:00
|
|
|
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) {
|
2018-10-24 14:20:10 +00:00
|
|
|
addCommentText(data, id);
|
2019-02-02 02:12:36 +00:00
|
|
|
});
|
|
|
|
}
|
2018-10-17 19:05:45 +00:00
|
|
|
}
|
|
|
|
|
2018-10-24 14:20:10 +00:00
|
|
|
function commentLinkDropper(event) {
|
2019-02-02 02:12:36 +00:00
|
|
|
var linkFound = event.dataTransfer.types.contains("text/uri-list");
|
|
|
|
if (linkFound) {
|
|
|
|
event.preventDefault();
|
|
|
|
}
|
2018-10-17 19:05:45 +00:00
|
|
|
}
|
|
|
|
|
2016-05-07 22:29:33 +00:00
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
function insertFormatting(BBcode, id) {
|
2017-01-07 15:16:03 +00:00
|
|
|
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);
|
|
|
|
}
|
2016-05-07 22:29:33 +00:00
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
textarea = document.getElementById("comment-edit-text-" + id);
|
2016-05-07 22:29:33 +00:00
|
|
|
if (document.selection) {
|
|
|
|
textarea.focus();
|
|
|
|
selected = document.selection.createRange();
|
2017-05-21 17:41:28 +00:00
|
|
|
selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
|
2016-05-07 22:29:33 +00:00
|
|
|
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
|
|
|
|
var start = textarea.selectionStart;
|
|
|
|
var end = textarea.selectionEnd;
|
2017-05-21 17:41:28 +00:00
|
|
|
textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
|
2016-05-07 22:29:33 +00:00
|
|
|
}
|
2017-01-07 15:16:03 +00:00
|
|
|
|
2017-04-19 02:04:23 +00:00
|
|
|
$(textarea).trigger('change');
|
|
|
|
|
2016-05-07 22:29:33 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2018-09-20 15:20:57 +00:00
|
|
|
function insertFormattingToPost(BBcode) {
|
2018-09-20 15:23:29 +00:00
|
|
|
textarea = document.getElementById("profile-jot-text");
|
2018-09-20 15:20:57 +00:00
|
|
|
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;
|
|
|
|
}
|
2016-05-07 22:29:33 +00:00
|
|
|
|
|
|
|
function showThread(id) {
|
|
|
|
$("#collapsed-comments-" + id).show()
|
|
|
|
$("#collapsed-comments-" + id + " .collapsed-comments").show()
|
|
|
|
}
|
|
|
|
function hideThread(id) {
|
|
|
|
$("#collapsed-comments-" + id).hide()
|
|
|
|
$("#collapsed-comments-" + id + " .collapsed-comments").hide()
|
|
|
|
}
|
|
|
|
|
|
|
|
function cmtBbOpen(id) {
|
|
|
|
$("#comment-edit-bb-" + id).show();
|
|
|
|
}
|
|
|
|
function cmtBbClose(id) {
|
|
|
|
$("#comment-edit-bb-" + id).hide();
|
|
|
|
}
|
|
|
|
|
|
|
|
function commentExpand(id) {
|
2019-01-29 14:25:22 +00:00
|
|
|
$("#comment-edit-text-" + id).putCursorAtEnd();
|
2016-05-07 22:29:33 +00:00
|
|
|
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
|
|
|
|
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
|
|
|
|
$("#comment-edit-text-" + id).focus();
|
|
|
|
$("#mod-cmnt-wrap-" + id).show();
|
|
|
|
openMenu("comment-edit-submit-wrapper-" + id);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
function commentClose(obj, id) {
|
2017-01-07 15:13:55 +00:00
|
|
|
if (obj.value == '') {
|
2016-05-07 22:29:33 +00:00
|
|
|
$("#comment-edit-text-" + id).removeClass("comment-edit-text-full");
|
|
|
|
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
|
|
|
|
$("#mod-cmnt-wrap-" + id).hide();
|
|
|
|
closeMenu("comment-edit-submit-wrapper-" + id);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
function showHideCommentBox(id) {
|
2017-05-21 17:40:51 +00:00
|
|
|
if ($('#comment-edit-form-' + id).is(':visible')) {
|
2016-05-07 22:29:33 +00:00
|
|
|
$('#comment-edit-form-' + id).hide();
|
2017-05-21 17:40:51 +00:00
|
|
|
} else {
|
2016-05-07 22:29:33 +00:00
|
|
|
$('#comment-edit-form-' + id).show();
|
|
|
|
}
|
|
|
|
}
|
2016-05-07 23:31:30 +00:00
|
|
|
|
|
|
|
function commentOpenUI(obj, id) {
|
2017-02-16 12:06:11 +00:00
|
|
|
$("#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
|
2017-05-21 17:40:51 +00:00
|
|
|
$("#comment-edit-text-" + id).attr('tabindex', '9');
|
|
|
|
$("#comment-edit-submit-" + id).attr('tabindex', '10');
|
2017-02-16 12:06:11 +00:00
|
|
|
$("#comment-edit-submit-wrapper-" + id).show();
|
|
|
|
// initialize autosize for this comment
|
|
|
|
autosize($("#comment-edit-text-" + id + ".text-autosize"));
|
2016-05-07 23:31:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function commentCloseUI(obj, id) {
|
2017-02-16 12:06:11 +00:00
|
|
|
if (obj.value === '') {
|
|
|
|
$("#comment-edit-text-" + id).removeClass("comment-edit-text-full").addClass("comment-edit-text-empty");
|
|
|
|
$("#comment-edit-text-" + id).removeAttr('tabindex');
|
|
|
|
$("#comment-edit-submit-" + id).removeAttr('tabindex');
|
|
|
|
$("#comment-edit-submit-wrapper-" + id).hide();
|
|
|
|
// destroy the automatic textarea resizing
|
|
|
|
autosize.destroy($("#comment-edit-text-" + id + ".text-autosize"));
|
|
|
|
}
|
2016-05-07 23:31:30 +00:00
|
|
|
}
|
2016-05-09 19:08:11 +00:00
|
|
|
|
|
|
|
function jotTextOpenUI(obj) {
|
2017-01-07 15:06:03 +00:00
|
|
|
if (obj.value == '') {
|
2016-05-09 19:08:11 +00:00
|
|
|
$(".modal-body #profile-jot-text").addClass("profile-jot-text-full").removeClass("profile-jot-text-empty");
|
2016-08-23 14:48:13 +00:00
|
|
|
// initiale autosize for the jot
|
|
|
|
autosize($(".modal-body #profile-jot-text"));
|
2016-05-09 19:08:11 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function jotTextCloseUI(obj) {
|
2017-01-07 15:06:03 +00:00
|
|
|
if (obj.value === '') {
|
2016-05-09 19:08:11 +00:00
|
|
|
$(".modal-body #profile-jot-text").removeClass("profile-jot-text-full").addClass("profile-jot-text-empty");
|
2016-08-23 14:48:13 +00:00
|
|
|
// destroy the automatic textarea resizing
|
|
|
|
autosize.destroy($(".modal-body #profile-jot-text"));
|
2016-05-09 19:08:11 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
function commentOpen(obj, id) {
|
2017-01-07 15:13:55 +00:00
|
|
|
if (obj.value == '') {
|
2016-05-07 23:31:30 +00:00
|
|
|
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
|
|
|
|
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
|
|
|
|
$("#mod-cmnt-wrap-" + id).show();
|
|
|
|
openMenu("comment-edit-submit-wrapper-" + id);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
function commentInsert(obj, id) {
|
2016-05-07 23:31:30 +00:00
|
|
|
var tmpStr = $("#comment-edit-text-" + id).val();
|
2017-01-07 15:13:55 +00:00
|
|
|
if (tmpStr == '') {
|
2016-05-07 23:31:30 +00:00
|
|
|
$("#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();
|
2017-05-21 17:40:51 +00:00
|
|
|
ins = ins.replace('<', '<');
|
|
|
|
ins = ins.replace('>', '>');
|
|
|
|
ins = ins.replace('&', '&');
|
|
|
|
ins = ins.replace('"', '"');
|
2016-05-07 23:31:30 +00:00
|
|
|
$("#comment-edit-text-" + id).val(tmpStr + ins);
|
|
|
|
}
|
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
function qCommentInsert(obj, id) {
|
2016-05-07 23:31:30 +00:00
|
|
|
var tmpStr = $("#comment-edit-text-" + id).val();
|
2017-01-07 15:13:55 +00:00
|
|
|
if (tmpStr == '') {
|
2016-05-07 23:31:30 +00:00
|
|
|
$("#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();
|
2017-05-21 17:40:51 +00:00
|
|
|
ins = ins.replace('<', '<');
|
|
|
|
ins = ins.replace('>', '>');
|
|
|
|
ins = ins.replace('&', '&');
|
|
|
|
ins = ins.replace('"', '"');
|
2016-05-07 23:31:30 +00:00
|
|
|
$("#comment-edit-text-" + id).val(tmpStr + ins);
|
|
|
|
$(obj).val('');
|
|
|
|
}
|
|
|
|
|
2017-05-21 17:40:51 +00:00
|
|
|
function confirmDelete() {
|
|
|
|
return confirm(aStr.delitem);
|
|
|
|
}
|
2016-05-11 14:04:11 +00:00
|
|
|
|
2017-03-13 16:12:13 +00:00
|
|
|
/**
|
|
|
|
* Hide and removes an item element from the DOM after the deletion url is
|
|
|
|
* successful, restore it else.
|
|
|
|
*
|
|
|
|
* @param {string} url The item removal URL
|
|
|
|
* @param {string} elementId The DOM id of the item element
|
|
|
|
* @returns {undefined}
|
|
|
|
*/
|
|
|
|
function dropItem(url, elementId) {
|
2016-05-11 14:04:11 +00:00
|
|
|
var confirm = confirmDelete();
|
2016-09-07 01:22:02 +00:00
|
|
|
|
2017-03-13 16:12:13 +00:00
|
|
|
if (confirm) {
|
2016-05-11 14:04:11 +00:00
|
|
|
$('body').css('cursor', 'wait');
|
2017-03-13 16:12:13 +00:00
|
|
|
|
|
|
|
var $el = $(document.getElementById(elementId));
|
|
|
|
|
|
|
|
$el.fadeTo('fast', 0.33, function () {
|
|
|
|
$.get(url).then(function() {
|
|
|
|
$el.remove();
|
2017-03-15 18:42:34 +00:00
|
|
|
}).fail(function() {
|
2017-03-13 16:12:13 +00:00
|
|
|
// @todo Show related error message
|
|
|
|
$el.show();
|
|
|
|
}).always(function() {
|
2016-05-11 14:04:11 +00:00
|
|
|
$('body').css('cursor', 'auto');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|