$(textarea).trigger('change');
});
+ $(".comment-edit-wrapper textarea, .wall-item-comment-wrapper textarea")
+ .editor_autocomplete(baseurl + '/search/acl')
+ .bbco_autocomplete('bbcode');
+
+ // Ensures asynchronously-added comment forms recognize mentions, tags and BBCodes as well
+ document.addEventListener("postprocess_liveupdate", function() {
+ $(".comment-edit-wrapper textarea, .wall-item-comment-wrapper textarea")
+ .editor_autocomplete(baseurl + '/search/acl')
+ .bbco_autocomplete('bbcode');
+ });
+
/* popup menus */
function close_last_popup_menu() {
if (last_popup_menu) {
if ($('#' + ident).length === 0
&& (!getUrlParameter('page')
&& !getUrlParameter('max_id')
- && !getUrlParameter('since_id')
+ && !getUrlParameter('min_id')
|| getUrlParameter('page') === '1'
)
) {
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) {
in_progress = true;
- if ($(document).scrollTop() == 0) {
- force_update = true;
- }
+ let force = force_update || $(document).scrollTop() === 0;
var orgHeight = $("section").height();
var udargs = ((netargs.length) ? '/' + netargs : '');
- var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&force=' + ((force_update) ? 1 : 0) + '&item=' + update_item;
+ var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&force=' + (force ? 1 : 0) + '&item=' + update_item;
+
+ if (force_update) {
+ force_update = false;
+ }
if (getUrlParameter('page')) {
update_url += '&page=' + getUrlParameter('page');
}
- if (getUrlParameter('since_id')) {
- update_url += '&since_id=' + getUrlParameter('since_id');
+ if (getUrlParameter('min_id')) {
+ update_url += '&min_id=' + getUrlParameter('min_id');
}
if (getUrlParameter('max_id')) {
update_url += '&max_id=' + getUrlParameter('max_id');
}
- $.get(update_url,function(data) {
+ $.get(update_url, function(data) {
in_progress = false;
- force_update = false;
update_item = 0;
+ if ($('.wall-item-body', data).length == 0) {
+ return;
+ }
+
$('.wall-item-body', data).imagesLoaded(function() {
updateConvItems(data);
// trickery. This still could cause confusion if the "like" ajax call
// is delayed and NavUpdate runs before it completes.
-function dolike(ident,verb) {
+/**
+ * @param {int} ident The id of the relevant item
+ * @param {string} verb The verb of the action
+ * @param {boolean} un Whether to perform an activity removal instead of creation
+ */
+function doActivityItem(ident, verb, un) {
unpause();
$('#like-rotator-' + ident.toString()).show();
- $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate);
+ verb = un ? 'un' + verb : verb;
+ $.post('item/' + ident.toString() + '/activity/' + verb, NavUpdate);
liking = 1;
force_update = true;
update_item = ident.toString();
}
-function dosubthread(ident) {
+function doFollowThread(ident) {
unpause();
$('#like-rotator-' + ident.toString()).show();
- $.get('subthread/' + ident.toString(), NavUpdate);
+ $.post('item/' + ident.toString() + '/follow', NavUpdate);
liking = 1;
+ force_update = true;
+ update_item = ident.toString();
}
-function dostar(ident) {
+function doStar(ident) {
ident = ident.toString();
$('#like-rotator-' + ident).show();
- $.get('starred/' + ident, function(data) {
- if (data.match(/1/)) {
- $('#starred-' + ident).addClass('starred');
- $('#starred-' + ident).removeClass('unstarred');
+ $.post('item/' + ident + '/star')
+ .then(function(data) {
+ if (data.state === 1) {
+ $('#starred-' + ident)
+ .addClass('starred')
+ .removeClass('unstarred');
$('#star-' + ident).addClass('hidden');
$('#unstar-' + ident).removeClass('hidden');
} else {
- $('#starred-' + ident).addClass('unstarred');
- $('#starred-' + ident).removeClass('starred');
+ $('#starred-' + ident)
+ .addClass('unstarred')
+ .removeClass('starred');
$('#star-' + ident).removeClass('hidden');
$('#unstar-' + ident).addClass('hidden');
}
+ })
+ .always(function () {
$('#like-rotator-' + ident).hide();
});
}
-function dopin(ident) {
+function doPin(ident) {
ident = ident.toString();
$('#like-rotator-' + ident).show();
- $.get('pinned/' + ident, function(data) {
- if (data.match(/1/)) {
- $('#pinned-' + ident).addClass('pinned');
- $('#pinned-' + ident).removeClass('unpinned');
+ $.post('item/' + ident + '/pin')
+ .then(function(data) {
+ if (data.state === 1) {
+ $('#pinned-' + ident)
+ .addClass('pinned')
+ .removeClass('unpinned');
$('#pin-' + ident).addClass('hidden');
$('#unpin-' + ident).removeClass('hidden');
} else {
- $('#pinned-' + ident).addClass('unpinned');
- $('#pinned-' + ident).removeClass('pinned');
+ $('#pinned-' + ident)
+ .addClass('unpinned')
+ .removeClass('pinned');
$('#pin-' + ident).removeClass('hidden');
$('#unpin-' + ident).addClass('hidden');
}
+ })
+ .always(function () {
$('#like-rotator-' + ident).hide();
});
}
-function doignore(ident) {
+function doIgnoreThread(ident) {
ident = ident.toString();
$('#like-rotator-' + ident).show();
- $.get('item/ignore/' + ident, function(data) {
- if (data === 1) {
+ $.post('item/' + ident + '/ignore', function(data) {
+ if (data.state === 1) {
$('#ignored-' + ident)
.addClass('ignored')
.removeClass('unignored');
var lockvisible = false;
-function lockview(event,id) {
+function lockview(event, type, id) {
event = event || window.event;
cursor = getPosition(event);
if (lockvisible) {
- lockviewhide();
+ lockvisible = false;
+ $('#panel').hide();
} else {
lockvisible = true;
- $.get('lockview/' + id, function(data) {
- $('#panel').html(data);
- $('#panel').css({'left': cursor.x + 5 , 'top': cursor.y + 5});
- $('#panel').show();
+ $.get('permission/tooltip/' + type + '/' + id, function(data) {
+ $('#panel')
+ .html(data)
+ .css({'left': cursor.x + 5 , 'top': cursor.y + 5})
+ .show();
});
}
}
-function lockviewhide() {
- lockvisible = false;
- $('#panel').hide();
-}
-
function post_comment(id) {
unpause();
commentBusy = true;
$("#scroll-loader").fadeIn('normal');
- // the page number to load is one higher than the actual
- // page number
- infinite_scroll.pageno+=1;
-
match = $("span.received").last();
if (match.length > 0) {
received = match[0].innerHTML;
commented = "0000-00-00 00:00:00";
}
- match = $("span.id").last();
+ match = $("span.uriid").last();
if (match.length > 0) {
- id = match[0].innerHTML;
+ uriid = match[0].innerHTML;
} else {
- id = "0";
+ uriid = "0";
}
// get the raw content from the next page and insert this content
// right before "#conversation-end"
- $.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) {
+ $.get({
+ url: infinite_scroll.reload_uri,
+ data: {
+ 'mode' : 'raw',
+ 'last_received' : received,
+ 'last_commented': commented,
+ 'last_created' : created,
+ 'last_uriid' : uriid
+ }
+ })
+ .done(function(data) {
$("#scroll-loader").hide();
if ($(data).length > 0) {
$(data).insertBefore('#conversation-end');
- lockLoadContent = false;
} else {
$("#scroll-end").fadeIn('normal');
}
document.dispatchEvent(new Event('postprocess_liveupdate'));
+ })
+ .always(function () {
+ $("#scroll-loader").hide();
+ lockLoadContent = false;
});
}
});
}
-function profChangeMember(gid,cid) {
- $('body .fakelink').css('cursor', 'wait');
- $.get('profperm/' + gid + '/' + cid, function(data) {
- $('#prof-update-wrapper').html(data);
- $('body .fakelink').css('cursor', 'auto');
- });
-}
-
function contactgroupChangeMember(checkbox, gid, cid) {
let url;
// checkbox.checked is the checkbox state after the click