X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=view%2Fjs%2Fmain.js;h=4788d90a830cc6e4296c024d66d956253b42024f;hb=c1933fcb13db2f71aa3a6eacefde85fe0f5b36c1;hp=2d3d132c4ae13c09749641a408832d2c151a303f;hpb=4070ad181538a9437fd2b202a8a224a3d525ef13;p=friendica.git diff --git a/view/js/main.js b/view/js/main.js index 2d3d132c4a..4788d90a83 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -9,7 +9,7 @@ function _resizeIframe(obj, desth) { 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); @@ -50,7 +50,7 @@ var src = null; 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; @@ -75,9 +75,9 @@ $(function() { $('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; } @@ -99,7 +99,7 @@ $(function() { $(".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) { @@ -107,8 +107,8 @@ $(function() { 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); }); @@ -130,7 +130,7 @@ $(function() { if (isSelected) { return false; } - menu = $( $(this).attr('rel') ); + menu = $($(this).attr('rel')); e.preventDefault(); e.stopPropagation(); if (menu.attr('popup') == "false") { @@ -166,8 +166,8 @@ $(function() { /* notifications template */ var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); - var notifications_all = unescape($('
').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack - var notifications_mark = unescape($('
').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack + var notifications_all = unescape($('
').append($("#nav-notifications-see-all").clone()).html()); //outerHtml hack + var notifications_mark = unescape($('
').append($("#nav-notifications-mark-all").clone()).html()); //outerHtml hack var notifications_empty = unescape($("#nav-notifications-menu").html()); /* enable perfect-scrollbars for different elements */ @@ -260,7 +260,7 @@ $(function() { 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; @@ -302,7 +302,12 @@ $(function() { $('#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') { @@ -345,7 +350,7 @@ $(function() { comparison = top < scrollTop - 1; } if (comparison) { - $('html, body').animate({ scrollTop: top }, 200); + $('html, body').animate({scrollTop: top}, 200); return false; } }); @@ -378,7 +383,7 @@ function NavUpdate() { $('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); } @@ -395,12 +400,53 @@ function NavUpdate() { 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); } @@ -418,58 +464,28 @@ function liveUpdate(src) { 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) { @@ -493,7 +509,7 @@ function imgdull(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(); @@ -502,7 +518,7 @@ function dolike(ident,verb) { function dosubthread(ident) { unpause(); $('#like-rotator-' + ident.toString()).show(); - $.get('subthread/' + ident.toString(), NavUpdate ); + $.get('subthread/' + ident.toString(), NavUpdate); liking = 1; } @@ -573,7 +589,7 @@ function lockview(event,id) { 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(); }); } @@ -625,7 +641,7 @@ function preview_comment(id) { 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" @@ -652,7 +668,7 @@ function preview_post() { 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" @@ -723,26 +739,26 @@ function loadScrollContent() { } 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