if (h == (ch + 'px')) {
return;
}
- if (desth == ch && ch>0) {
+ if (desth == ch && ch > 0) {
obj.style.height = ch + 'px';
}
setTimeout(_resizeIframe, 100, obj, ch);
var prev = null;
var livetime = null;
var force_update = false;
-var update_item = null;
+var update_item = 0;
var stopped = false;
var totStopped = false;
var timer = null;
$('body').on('click','[data-role="insert-formatting"]', function(e) {
e.preventDefault();
var o = $(this);
- var bbcode = o.data('bbcode');
+ var bbcode = o.data('bbcode');
var id = o.data('id');
- if (bbcode=="img") {
+ if (bbcode == "img") {
Dialog.doImageBrowser("comment", id);
return;
}
$(".onoff input").each(function() {
val = $(this).val();
id = $(this).attr("id");
- $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
+ $("#"+id+"_onoff ." + (val == 0 ? "on":"off")).addClass("hidden");
});
$(".onoff > a").click(function(event) {
var input = $(this).siblings("input");
var val = 1-input.val();
var id = input.attr("id");
- $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
- $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden");
+ $("#"+id+"_onoff ." + (val == 0 ? "on":"off")).addClass("hidden");
+ $("#"+id+"_onoff ." + (val == 1 ? "on":"off")).removeClass("hidden");
input.val(val);
});
if (isSelected) {
return false;
}
- menu = $( $(this).attr('rel') );
+ menu = $($(this).attr('rel'));
e.preventDefault();
e.stopPropagation();
if (menu.attr('popup') == "false") {
/* notifications template */
var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
- var notifications_all = unescape($('<div>').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack
- var notifications_mark = unescape($('<div>').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack
+ var notifications_all = unescape($('<div>').append($("#nav-notifications-see-all").clone()).html()); //outerHtml hack
+ var notifications_mark = unescape($('<div>').append($("#nav-notifications-mark-all").clone()).html()); //outerHtml hack
var notifications_empty = unescape($("#nav-notifications-menu").html());
/* enable perfect-scrollbars for different elements */
var notification = new Notification(document.title, {
body: decodeHtml(e.message.replace('→ ', '').format(e.name)),
icon: e.photo,
- });
+ });
notification['url'] = e.href;
notification.addEventListener("click", function(ev) {
window.location = ev.target.url;
$('#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();
+ 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') {
comparison = top < scrollTop - 1;
}
if (comparison) {
- $('html, body').animate({ scrollTop: top }, 200);
+ $('html, body').animate({scrollTop: top}, 200);
return false;
}
});
$('nav').trigger('nav-update', data.result);
// start live update
- ['network', 'profile', 'community', 'notes', 'display'].forEach(function (src) {
+ ['network', 'profile', 'community', 'notes', 'display', 'contacts'].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+"/acl");
+ /* autocomplete bbcode */
+ $(".comment-edit-form textarea").bbco_autocomplete('bbcode');
+}
+
function liveUpdate(src) {
- if ((src == null) || (stopped) || (! profile_uid)) {
+ if ((src == null) || stopped || !profile_uid) {
$('.like-rotator').hide(); return;
}
- if (($('.comment-edit-text-full').length) || (in_progress)) {
+ if (($('.comment-edit-text-full').length) || in_progress) {
if (livetime) {
clearTimeout(livetime);
}
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;
$.get(update_url,function(data) {
in_progress = false;
force_update = false;
- update_item = null;
-
- // add a new thread
- $('.toplevel_item',data).each(function() {
- var ident = $(this).attr('id');
-
- 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");
- }
+ update_item = 0;
- $('img',this).each(function() {
- $(this).attr('src',$(this).attr('dst'));
- });
- $('html').height($('html').height());
- $('#' + ident).replaceWith($(this));
+ $('.wall-item-body', data).imagesLoaded(function() {
+ updateConvItems(data);
- if (typeof id != 'undefined') {
- if (commentsOpen) {
- showHideComments(id);
- }
- }
- $('html').height('auto');
- }
- prev = ident;
+ // Update the scroll position.
+ $(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight);
});
- $('.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');
+ callAddonHooks("postprocess_liveupdate");
+
});
+
}
function imgbright(node) {
function dolike(ident,verb) {
unpause();
$('#like-rotator-' + ident.toString()).show();
- $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate );
+ $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate);
liking = 1;
force_update = true;
update_item = ident.toString();
function dosubthread(ident) {
unpause();
$('#like-rotator-' + ident.toString()).show();
- $.get('subthread/' + ident.toString(), NavUpdate );
+ $.get('subthread/' + ident.toString(), NavUpdate);
liking = 1;
}
lockvisible = true;
$.get('lockview/' + id, function(data) {
$('#panel').html(data);
- $('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5});
+ $('#panel').css({'left': cursor.x + 5 , 'top': cursor.y + 5});
$('#panel').show();
});
}
function(data) {
if (data.preview) {
$("#comment-edit-preview-" + id).html(data.preview);
- $("#comment-edit-preview-" + id + " a").click(function() { return false; });
+ $("#comment-edit-preview-" + id + " a").click(function() {return false;});
}
},
"json"
function(data) {
if (data.preview) {
$("#jot-preview-content").html(data.preview);
- $("#jot-preview-content" + " a").click(function() { return false; });
+ $("#jot-preview-content" + " a").click(function() {return false;});
}
},
"json"
}
function bin2hex(s) {
- // Converts the binary representation of data to hex
- //
- // version: 812.316
- // discuss at: http://phpjs.org/functions/bin2hex
- // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
- // + bugfixed by: Onno Marsman
- // + bugfixed by: Linuxworld
- // * example 1: bin2hex('Kev');
- // * returns 1: '4b6576'
- // * example 2: bin2hex(String.fromCharCode(0x00));
- // * returns 2: '00'
- var v,i, f = 0, a = [];
- s += '';
- f = s.length;
-
- for (i = 0; i<f; i++) {
- a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");
- }
-
- return a.join('');
+ // Converts the binary representation of data to hex
+ //
+ // version: 812.316
+ // discuss at: http://phpjs.org/functions/bin2hex
+ // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+ // + bugfixed by: Onno Marsman
+ // + bugfixed by: Linuxworld
+ // * example 1: bin2hex('Kev');
+ // * returns 1: '4b6576'
+ // * example 2: bin2hex(String.fromCharCode(0x00));
+ // * returns 2: '00'
+ var v,i, f = 0, a = [];
+ s += '';
+ f = s.length;
+
+ for (i = 0; i<f; i++) {
+ a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");
+ }
+
+ return a.join('');
}
function groupChangeMember(gid, cid, sec_token) {