friendica/view/theme/frio/js/textedit.js

244 lines
7.6 KiB
JavaScript
Raw Normal View History

/*
* @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();
}
2017-05-21 19:40:51 +02:00
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);
}
2017-05-21 19:40:51 +02:00
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);
}
$(textarea).trigger('change');
return true;
}
2018-09-20 17:20:57 +02:00
function insertFormattingToPost(BBcode) {
textarea = document.getElementById("profile-jot-text");
2018-09-20 17:20:57 +02: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;
}
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) {
$("#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();
$("#mod-cmnt-wrap-" + id).show();
openMenu("comment-edit-submit-wrapper-" + id);
return true;
}
2017-05-21 19:40:51 +02:00
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");
$("#mod-cmnt-wrap-" + id).hide();
closeMenu("comment-edit-submit-wrapper-" + id);
return true;
}
return false;
}
function showHideCommentBox(id) {
2017-05-21 19:40:51 +02:00
if ($('#comment-edit-form-' + id).is(':visible')) {
$('#comment-edit-form-' + id).hide();
2017-05-21 19:40:51 +02:00
} else {
$('#comment-edit-form-' + id).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
2017-05-21 19:40:51 +02:00
$("#comment-edit-text-" + id).attr('tabindex', '9');
$("#comment-edit-submit-" + id).attr('tabindex', '10');
$("#comment-edit-submit-wrapper-" + id).show();
// 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');
$("#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"));
}
}
function jotTextOpenUI(obj) {
if (obj.value == '') {
$(".modal-body #profile-jot-text").addClass("profile-jot-text-full").removeClass("profile-jot-text-empty");
2016-08-23 16:48:13 +02:00
// initiale autosize for the jot
autosize($(".modal-body #profile-jot-text"));
}
}
function jotTextCloseUI(obj) {
if (obj.value === '') {
$(".modal-body #profile-jot-text").removeClass("profile-jot-text-full").addClass("profile-jot-text-empty");
2016-08-23 16:48:13 +02:00
// destroy the automatic textarea resizing
autosize.destroy($(".modal-body #profile-jot-text"));
}
}
2017-05-21 19:40:51 +02:00
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");
$("#mod-cmnt-wrap-" + id).show();
openMenu("comment-edit-submit-wrapper-" + id);
return true;
}
return false;
}
2017-05-21 19:40:51 +02:00
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();
2017-05-21 19:40:51 +02:00
ins = ins.replace('&lt;', '<');
ins = ins.replace('&gt;', '>');
ins = ins.replace('&amp;', '&');
ins = ins.replace('&quot;', '"');
$("#comment-edit-text-" + id).val(tmpStr + ins);
}
2017-05-21 19:40:51 +02:00
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();
2017-05-21 19:40:51 +02:00
ins = ins.replace('&lt;', '<');
ins = ins.replace('&gt;', '>');
ins = ins.replace('&amp;', '&');
ins = ins.replace('&quot;', '"');
$("#comment-edit-text-" + id).val(tmpStr + ins);
$(obj).val('');
}
2017-05-21 19:40:51 +02:00
function confirmDelete() {
return confirm(aStr.delitem);
}
/**
* 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) {
var confirm = confirmDelete();
if (confirm) {
$('body').css('cursor', 'wait');
var $el = $(document.getElementById(elementId));
$el.fadeTo('fast', 0.33, function () {
$.get(url).then(function() {
$el.remove();
2017-03-15 19:42:34 +01:00
}).fail(function() {
// @todo Show related error message
$el.show();
}).always(function() {
$('body').css('cursor', 'auto');
});
});
}
}