+// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPLv3-or-later
+
+// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
+if (!Element.prototype.matches) {
+ Element.prototype.matches =
+ Element.prototype.matchesSelector ||
+ Element.prototype.mozMatchesSelector ||
+ Element.prototype.msMatchesSelector ||
+ Element.prototype.oMatchesSelector ||
+ Element.prototype.webkitMatchesSelector ||
+ function(s) {
+ var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+ i = matches.length;
+ while (--i >= 0 && matches.item(i) !== this) {}
+ return i > -1;
+ };
+}
+
function resizeIframe(obj) {
_resizeIframe(obj, 0);
}
}
function openClose(theID) {
- if (document.getElementById(theID).style.display == "block") {
- document.getElementById(theID).style.display = "none"
- } else {
- document.getElementById(theID).style.display = "block"
+ var el = document.getElementById(theID);
+ if (el) {
+ if (window.getComputedStyle(el).display === "none") {
+ openMenu(theID);
+ } else {
+ closeMenu(theID);
+ }
}
}
function openMenu(theID) {
- var el = document.getElementById(theID)
-
+ var el = document.getElementById(theID);
if (el) {
- el.style.display = "block";
+ if (!el.dataset.display) {
+ el.dataset.display = 'block';
+ }
+ el.style.display = el.dataset.display;
}
}
function closeMenu(theID) {
- var el = document.getElementById(theID)
-
+ var el = document.getElementById(theID);
if (el) {
+ el.dataset.display = window.getComputedStyle(el).display;
el.style.display = "none";
}
}
Dialog.doImageBrowser("comment", id);
return;
}
+
+ if (bbcode == "imgprv") {
+ bbcode = "img";
+ }
+
insertFormatting(bbcode, id);
});
$('#nav-notifications-menu').perfectScrollbar('update');
});
- NavUpdate();
+ // Asynchronous calls are deferred until the very end of the page load to ease on slower connections
+ window.addEventListener("load", function(){
+ NavUpdate();
+ if (typeof acl !== 'undefined') {
+ acl.get(0, 100);
+ }
+ });
+
// Allow folks to stop the ajax page updates with the pause/break key
$(document).keydown(function(event) {
if (event.keyCode == '8') {
$('nav').trigger('nav-update', data.result);
// start live update
- ['network', 'profile', 'community', 'notes', 'display'].forEach(function (src) {
+ ['network', 'profile', 'community', 'notes', 'display', 'contact'].forEach(function (src) {
if ($('#live-' + src).length) {
liveUpdate(src);
}
timer = setTimeout(NavUpdate, updateInterval);
}
+function updateConvItems(data) {
+ // add a new thread
+ $('.toplevel_item',data).each(function() {
+ var ident = $(this).attr('id');
+
+ // Add new top-level item.
+ if ($('#' + ident).length == 0 && profile_page == 1) {
+ $('#' + prev).after($(this));
+
+ // Replace already existing thread.
+ } else {
+ // Find out if the hidden comments are open, so we can keep it that way
+ // if a new comment has been posted
+ var id = $('.hide-comments-total', this).attr('id');
+ if (typeof id != 'undefined') {
+ id = id.split('-')[3];
+ var commentsOpen = $("#collapsed-comments-" + id).is(":visible");
+ }
+
+ $('#' + ident).replaceWith($(this));
+
+ if (typeof id != 'undefined') {
+ if (commentsOpen) {
+ showHideComments(id);
+ }
+ }
+ }
+ prev = ident;
+ });
+
+ $('.like-rotator').hide();
+ if (commentBusy) {
+ commentBusy = false;
+ $('body').css('cursor', 'auto');
+ }
+ /* autocomplete @nicknames */
+ $(".comment-edit-form textarea").editor_autocomplete(baseurl + '/search/acl');
+ /* autocomplete bbcode */
+ $(".comment-edit-form textarea").bbco_autocomplete('bbcode');
+}
+
function liveUpdate(src) {
if ((src == null) || stopped || !profile_uid) {
$('.like-rotator').hide(); return;
if ($(document).scrollTop() == 0) {
force_update = true;
}
+
+ var orgHeight = $("section").height();
+
var udargs = ((netargs.length) ? '/' + netargs : '');
var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&force=' + ((force_update) ? 1 : 0) + '&item=' + update_item;
force_update = false;
update_item = 0;
- // add a new thread
- $('.toplevel_item',data).each(function() {
- var ident = $(this).attr('id');
+ $('.wall-item-body', data).imagesLoaded(function() {
+ updateConvItems(data);
- if ($('#' + ident).length == 0 && profile_page == 1) {
- $('img',this).each(function() {
- $(this).attr('src',$(this).attr('dst'));
- });
- $('#' + prev).after($(this));
- } else {
- // Find out if the hidden comments are open, so we can keep it that way
- // if a new comment has been posted
- var id = $('.hide-comments-total', this).attr('id');
- if (typeof id != 'undefined') {
- id = id.split('-')[3];
- var commentsOpen = $("#collapsed-comments-" + id).is(":visible");
- }
-
- $('img',this).each(function() {
- $(this).attr('src',$(this).attr('dst'));
- });
- $('html').height($('html').height());
- $('#' + ident).replaceWith($(this));
+ document.dispatchEvent(new Event('postprocess_liveupdate'));
- if (typeof id != 'undefined') {
- if (commentsOpen) {
- showHideComments(id);
- }
- }
- $('html').height('auto');
- }
- prev = ident;
+ // Update the scroll position.
+ $(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight);
});
-
- callAddonHooks("postprocess_liveupdate");
-
- $('.like-rotator').hide();
- if (commentBusy) {
- commentBusy = false;
- $('body').css('cursor', 'auto');
- }
- /* autocomplete @nicknames */
- $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl");
- /* autocomplete bbcode */
- $(".comment-edit-form textarea").bbco_autocomplete('bbcode');
-
});
-
}
function imgbright(node) {
unpause();
commentBusy = true;
$('body').css('cursor', 'wait');
- $("#comment-preview-inp-" + id).val("0");
$.post(
"item",
$("#comment-edit-form-" + id).serialize(),
}
function preview_comment(id) {
- $("#comment-preview-inp-" + id).val("1");
$("#comment-edit-preview-" + id).show();
$.post(
"item",
- $("#comment-edit-form-" + id).serialize(),
+ $("#comment-edit-form-" + id).serialize() + '&preview=1',
function(data) {
if (data.preview) {
$("#comment-edit-preview-" + id).html(data.preview);
}
function showHideComments(id) {
- if ($("#collapsed-comments-" + id).is(":visible")) {
- $("#collapsed-comments-" + id).hide();
- $("#hide-comments-" + id).html(window.showMore);
+ if ($('#collapsed-comments-' + id).is(':visible')) {
+ $('#collapsed-comments-' + id).slideUp();
+ $('#hide-comments-' + id).hide();
+ $('#hide-comments-total-' + id).show();
} else {
- $("#collapsed-comments-" + id).show();
- $("#hide-comments-" + id).html(window.showFewer);
+ $('#collapsed-comments-' + id).slideDown();
+ $('#hide-comments-' + id).show();
+ $('#hide-comments-total-' + id).hide();
}
}
if (data.preview) {
$("#jot-preview-content").html(data.preview);
$("#jot-preview-content" + " a").click(function() {return false;});
+ document.dispatchEvent(new Event('postprocess_liveupdate'));
}
},
"json"
// get the raw content from the next page and insert this content
// right before "#conversation-end"
- $.get('network?mode=raw' + infinite_scroll.reload_uri + '&last_received=' + received + '&last_commented=' + commented + '&last_created=' + created + '&last_id=' + id + '&page=' + infinite_scroll.pageno, function(data) {
+ $.get(infinite_scroll.reload_uri + '&mode=raw&last_received=' + received + '&last_commented=' + commented + '&last_created=' + created + '&last_id=' + id + '&page=' + infinite_scroll.pageno, function(data) {
$("#scroll-loader").hide();
if ($(data).length > 0) {
$(data).insertBefore('#conversation-end');
} else {
$("#scroll-end").fadeIn('normal');
}
+
+ document.dispatchEvent(new Event('postprocess_liveupdate'));
});
}
});
}
-function contactgroupChangeMember(gid,cid) {
+function contactgroupChangeMember(checkbox, gid, cid) {
+ let url;
+ // checkbox.checked is the checkbox state after the click
+ if (checkbox.checked) {
+ url = 'group/' + gid + '/add/' + cid;
+ } else {
+ url = 'group/' + gid + '/remove/' + cid;
+ }
$('body').css('cursor', 'wait');
- $.get('contactgroup/' + gid + '/' + cid, function(data) {
- $('body').css('cursor', 'auto');
+ $.post(url)
+ .error(function () {
+ // Restores previous state in case of error
+ checkbox.checked = !checkbox.checked;
+ })
+ .always(function() {
+ $('body').css('cursor', 'auto');
});
+
+ return true;
}
function checkboxhighlight(box) {
};
}
}
+// @license-end