X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=js%2Fmain.js;h=b2a4dfe35cf71bd06a6a1d692df18d4de45bf187;hb=b010a7db0d0073fc1bf0825e73a295d0bbeb9ada;hp=d1fd3765fbc94bcfedd049aa4e99047d99eee913;hpb=fe5705e5473c358359e6c78d596d4ad3d866cc26;p=friendica.git
diff --git a/js/main.js b/js/main.js
index d1fd3765fb..b2a4dfe35c 100644
--- a/js/main.js
+++ b/js/main.js
@@ -5,36 +5,38 @@
function _resizeIframe(obj, desth) {
var h = obj.style.height;
- var ch = obj.contentWindow.document.body.scrollHeight + 'px';
- if (h==ch) {
+ var ch = obj.contentWindow.document.body.scrollHeight;
+ if (h == (ch + 'px')) {
return;
}
- console.log("_resizeIframe", obj, desth, ch);
- if (desth!=ch) {
- setTimeout(_resizeIframe, 500, obj, ch);
- } else {
- if (ch>0) obj.style.height = ch;
- setTimeout(_resizeIframe, 1000, obj, ch);
+ if (desth == ch && ch>0) {
+ obj.style.height = ch + 'px';
}
+ setTimeout(_resizeIframe, 100, obj, ch);
}
- function openClose(theID) {
- if(document.getElementById(theID).style.display == "block") {
- document.getElementById(theID).style.display = "none"
- }
- else {
- document.getElementById(theID).style.display = "block"
- }
- }
+ function openClose(theID) {
+ if(document.getElementById(theID).style.display == "block") {
+ document.getElementById(theID).style.display = "none"
+ }
+ else {
+ document.getElementById(theID).style.display = "block"
+ }
+ }
- function openMenu(theID) {
- document.getElementById(theID).style.display = "block"
- }
+ function openMenu(theID) {
+ document.getElementById(theID).style.display = "block"
+ }
- function closeMenu(theID) {
- document.getElementById(theID).style.display = "none"
- }
+ function closeMenu(theID) {
+ document.getElementById(theID).style.display = "none"
+ }
+ function decodeHtml(html) {
+ var txt = document.createElement("textarea");
+ txt.innerHTML = html;
+ return txt.value;
+ }
var src = null;
@@ -51,6 +53,7 @@
var commentBusy = false;
var last_popup_menu = null;
var last_popup_button = null;
+ var lockLoadContent = false;
$(function() {
$.ajaxSetup({cache: false});
@@ -89,7 +92,6 @@
/* event from comment textarea button popups */
/* insert returned bbcode at cursor position or replace selected text */
$("body").on("fbrowser.image.comment", function(e, filename, bbcode, id) {
- console.log("on", id);
$.colorbox.close();
var textarea = document.getElementById("comment-edit-text-" +id);
var start = textarea.selectionStart;
@@ -114,7 +116,6 @@
$("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
$("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden");
input.val(val);
- //console.log(id);
});
/* setup field_richtext */
@@ -124,6 +125,7 @@
function close_last_popup_menu() {
if(last_popup_menu) {
last_popup_menu.hide();
+ last_popup_menu.off('click', function(e) {e.stopPropagation()});
last_popup_button.removeClass("selected");
last_popup_menu = null;
last_popup_button = null;
@@ -146,6 +148,7 @@
last_popup_button = null;
} else {
last_popup_menu = menu;
+ last_popup_menu.on('click', function(e) {e.stopPropagation()});
last_popup_button = parent;
$('#nav-notifications-menu').perfectScrollbar('update');
}
@@ -170,115 +173,81 @@
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 nav-notivications-menu */
- $('#nav-notifications-menu').perfectScrollbar();
- $('aside').perfectScrollbar();
+ /* enable perfect-scrollbars for different elements */
+ $('#nav-notifications-menu, aside').perfectScrollbar();
/* nav update event */
- $('nav').bind('nav-update', function(e,data){
- var invalid = $(data).find('invalid').text();
+ $('nav').bind('nav-update', function(e, data){
+ var invalid = data.invalid || 0;
if(invalid == 1) { window.location.href=window.location.href }
- var net = $(data).find('net').text();
- if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') }
- $('#net-update').html(net);
-
- var home = $(data).find('home').text();
- if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
- $('#home-update').html(home);
-
- var intro = $(data).find('intro').text();
- if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') }
- $('#intro-update').html(intro);
-
- var mail = $(data).find('mail').text();
- if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') }
- $('#mail-update').html(mail);
+ ['net', 'home', 'intro', 'mail', 'events', 'birthdays', 'notify'].forEach(function(type) {
+ var number = data[type];
+ if (number == 0) {
+ number = '';
+ $('#' + type + '-update').removeClass('show');
+ } else {
+ $('#' + type + '-update').addClass('show');
+ }
+ $('#' + type + '-update').text(number);
+ });
- var intro = $(data).find('intro').text();
- if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') }
+ var intro = data['intro'];
+ if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') }
$('#intro-update-li').html(intro);
- var mail = $(data).find('mail').text();
- if(mail == 0) { mail = ''; $('#mail-update-li').removeClass('show') } else { $('#mail-update-li').addClass('show') }
+ var mail = data['mail'];
+ if(mail == 0) { mail = ''; $('#mail-update-li').removeClass('show') } else { $('#mail-update-li').addClass('show') }
$('#mail-update-li').html(mail);
-
- var allevents = $(data).find('all-events').text();
- if(allevents == 0) { allevents = ''; $('#allevents-update').removeClass('show') } else { $('#allevents-update').addClass('show') }
- $('#allevents-update').html(allevents);
-
- var alleventstoday = $(data).find('all-events-today').text();
- if(alleventstoday == 0) { $('#allevents-update').removeClass('notif-allevents-today') } else { $('#allevents-update').addClass('notif-allevents-today') }
-
- var events = $(data).find('events').text();
- if(events == 0) { events = ''; $('#events-update').removeClass('show') } else { $('#events-update').addClass('show') }
- $('#events-update').html(events);
-
- var eventstoday = $(data).find('events-today').text();
- if(eventstoday == 0) { $('#events-update').removeClass('notif-events-today') } else { $('#events-update').addClass('notif-events-today') }
-
- var birthdays = $(data).find('birthdays').text();
- if(birthdays == 0) {birthdays = ''; $('#birthdays-update').removeClass('show') } else { $('#birthdays-update').addClass('show') }
- $('#birthdays-update').html(birthdays);
-
- var birthdaystoday = $(data).find('birthdays-today').text();
- if(birthdaystoday == 0) { $('#birthdays-update').removeClass('notif-birthdays-today') } else { $('#birthdays-update').addClass('notif-birthdays-today') }
-
$(".sidebar-group-li .notify").removeClass("show");
- $(data).find("group").each(function() {
- var gid = this.id;
- var gcount = this.innerHTML;
+ $(data.groups).each(function(key, group) {
+ var gid = group.id;
+ var gcount = group.count;
$(".group-"+gid+" .notify").addClass("show").text(gcount);
});
$(".forum-widget-entry .notify").removeClass("show");
- $(data).find("forum").each(function() {
- var fid = this.id;
- var fcount = this.innerHTML;
+ $(data.forums).each(function(key, forum) {
+ var fid = forum.id;
+ var fcount = forum.count;
$(".forum-"+fid+" .notify").addClass("show").text(fcount);
});
-
- var eNotif = $(data).find('notif')
-
- if (eNotif.children("note").length==0){
+ if (data.notifications.length == 0) {
$("#nav-notifications-menu").html(notifications_empty);
} else {
- nnm = $("#nav-notifications-menu");
+ var nnm = $("#nav-notifications-menu");
nnm.html(notifications_all + notifications_mark);
- //nnm.attr('popup','true');
var notification_lastitem = parseInt(localStorage.getItem("notification-lastitem"));
var notification_id = 0;
- eNotif.children("note").each(function(){
- e = $(this);
- var text = e.text().format("
"+e.attr('name')+"");
- var contact = ("
"+e.attr('name')+"");
- var seenclass = (e.attr('seen')==1)?"notify-seen":"notify-unseen";
+ $(data.notifications).each(function(key, notif){
+ var text = notif.message.format('
' + notif.name + '');
+ var contact = ('
' + notif.name + '');
+ var seenclass = (notif.seen == 1) ? "notify-seen" : "notify-unseen";
var html = notifications_tpl.format(
- e.attr('href'), // {0} // link to the source
- e.attr('photo'), // {1} // photo of the contact
- text, // {2} // preformatet text (autor + text)
- e.attr('date'), // {3} // date of notification (time ago)
- seenclass, // {4} // vistiting status of the notification
- new Date(e.attr('timestamp')*1000), // {5} //date of notification
- e.attr('url'), // {6} // profile url of the contact
- e.text().format(""), // {7} // clean status text
- contact // {8} //preformatat author (name + profile url)
+ notif.href, // {0} // link to the source
+ notif.photo, // {1} // photo of the contact
+ text, // {2} // preformatted text (autor + text)
+ notif.date, // {3} // date of notification (time ago)
+ seenclass, // {4} // visited status of the notification
+ new Date(notif.timestamp*1000), // {5} // date of notification
+ notif.url, // {6} // profile url of the contact
+ notif.message.format(contact), // {7} // preformatted html (text including author profile url)
+ '' // {8} // Deprecated
);
nnm.append(html);
});
- $(eNotif.children("note").get().reverse()).each(function(){
- e = $(this);
- notification_id = parseInt(e.attr('timestamp'));
- if (notification_lastitem!== null && notification_id > notification_lastitem) {
- if (getNotificationPermission()==="granted") {
+ $(data.notifications.reverse()).each(function(key, e){
+ notification_id = parseInt(e.timestamp);
+ if (notification_lastitem !== null && notification_id > notification_lastitem) {
+ if (getNotificationPermission() === "granted") {
var notification = new Notification(document.title, {
- body: e.text().replace('→ ','').format(e.attr('name')),
- icon: e.attr('photo'),
+ body: decodeHtml(e.message.replace('→ ', '').format(e.name)),
+ icon: e.photo,
});
- notification['url'] = e.attr('href');
+ notification['url'] = e.href;
notification.addEventListener("click", function(ev){
window.location = ev.target.url;
});
@@ -299,23 +268,18 @@
});
}
- notif = eNotif.attr('count');
- if (notif>0){
+ var notif = data['notify'];
+ if (notif > 0){
$("#nav-notifications-linkmenu").addClass("on");
} else {
$("#nav-notifications-linkmenu").removeClass("on");
}
- if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') }
- $('#notify-update').html(notif);
- var eSysmsg = $(data).find('sysmsgs');
- eSysmsg.children("notice").each(function(){
- text = $(this).text();
- $.jGrowl(text, { sticky: true, theme: 'notice' });
+ $(data.sysmsgs.notice).each(function(key, message){
+ $.jGrowl(message, {sticky: true, theme: 'notice'});
});
- eSysmsg.children("info").each(function(){
- text = $(this).text();
- $.jGrowl(text, { sticky: false, theme: 'info', life: 5000 });
+ $(data.sysmsgs.info).each(function(key, message){
+ $.jGrowl(message, {sticky: false, theme: 'info', life: 5000});
});
/* update the js scrollbars */
@@ -350,55 +314,58 @@
}
});
+ // Set an event listener for infinite scroll
+ if(typeof infinite_scroll !== 'undefined') {
+ $(window).scroll(function(e){
+ if ($(document).height() != $(window).height()) {
+ // First method that is expected to work - but has problems with Chrome
+ if ($(window).scrollTop() > ($(document).height() - $(window).height() * 1.5))
+ loadScrollContent();
+ } else {
+ // This method works with Chrome - but seems to be much slower in Firefox
+ if ($(window).scrollTop() > (($("section").height() + $("header").height() + $("footer").height()) - $(window).height() * 1.5))
+ loadScrollContent();
+ }
+ });
+ }
+
});
function NavUpdate() {
- if(! stopped) {
- var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : '');
- $.get(pingCmd,function(data) {
- $(data).find('result').each(function() {
+ if (!stopped) {
+ var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&f=&uid=' + localUser : '');
+ $.get(pingCmd, function(data) {
+ if (data.result) {
// send nav-update event
- $('nav').trigger('nav-update', this);
-
+ $('nav').trigger('nav-update', data.result);
// start live update
-
- if($('#live-network').length) { src = 'network'; liveUpdate(); }
- if($('#live-profile').length) { src = 'profile'; liveUpdate(); }
- if($('#live-community').length) { src = 'community'; liveUpdate(); }
- if($('#live-notes').length) { src = 'notes'; liveUpdate(); }
- if($('#live-display').length) { src = 'display'; liveUpdate(); }
-/* if($('#live-display').length) {
- if(liking) {
- liking = 0;
- window.location.href=window.location.href
+ ['network', 'profile', 'community', 'notes', 'display'].forEach(function (src) {
+ if ($('#live-' + src).length) {
+ liveUpdate(src);
}
- }*/
- if($('#live-photos').length) {
- if(liking) {
+ });
+ if ($('#live-photos').length) {
+ if (liking) {
liking = 0;
- window.location.href=window.location.href
+ window.location.href = window.location.href;
}
}
-
-
-
-
- });
+ }
}) ;
}
- timer = setTimeout(NavUpdate,updateInterval);
+ timer = setTimeout(NavUpdate, updateInterval);
}
- function liveUpdate() {
+ function liveUpdate(src) {
if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; }
if(($('.comment-edit-text-full').length) || (in_progress)) {
if(livetime) {
clearTimeout(livetime);
}
- livetime = setTimeout(liveUpdate, 5000);
+ livetime = setTimeout(function() {liveUpdate(src)}, 5000);
return;
}
if(livetime != null)
@@ -495,7 +462,9 @@
$('body').css('cursor', 'auto');
}
/* autocomplete @nicknames */
- $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl");
+ $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl");
+ /* autocomplete bbcode */
+ $(".comment-edit-form textarea").bbco_autocomplete('bbcode');
// setup videos, since VideoJS won't take care of any loaded via AJAX
if(typeof videojs != 'undefined') videojs.autoSetup();
@@ -708,6 +677,29 @@
$('#pause').html('');
}
+ // load more network content (used for infinite scroll)
+ function loadScrollContent() {
+ if (lockLoadContent) return;
+ lockLoadContent = true;
+
+ $("#scroll-loader").fadeIn('normal');
+
+ // the page number to load is one higher than the actual
+ // page number
+ infinite_scroll.pageno+=1;
+
+ // get the raw content from the next page and insert this content
+ // right before "#conversation-end"
+ $.get('network?mode=raw' + infinite_scroll.reload_uri + '&page=' + infinite_scroll.pageno, function(data) {
+ $("#scroll-loader").hide();
+ if ($(data).length > 0) {
+ $(data).insertBefore('#conversation-end');
+ lockLoadContent = false;
+ } else {
+ $("#scroll-end").fadeIn('normal');
+ }
+ });
+ }
function bin2hex(s){
// Converts the binary representation of data to hex