diff options
Diffstat (limited to 'view')
-rw-r--r-- | view/js/main.js | 50 | ||||
-rw-r--r-- | view/tpl/notifications_widget.tpl | 47 |
2 files changed, 55 insertions, 42 deletions
diff --git a/view/js/main.js b/view/js/main.js index f427df8ad..f5d7e7fde 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -548,8 +548,10 @@ function markRead(notifType) { $('#nav-' + notifType + '-menu').html(''); $('#nav-' + notifType + '-sub').removeClass('show'); sessionStorage.removeItem('notification_open'); - sse_setNotificationsStatus(); + $(document).trigger('hz:sse_setNotificationsStatus'); }); + + } function markItemRead(itemId) { @@ -717,52 +719,18 @@ function updateConvItems(mode,data) { } } - // take care of the notifications count updates - var nmids = $(this).data('b64mids'); - - nmids.forEach(function(nmid, index) { - - sse_rmids.push(nmid); - - if($('.notification[data-b64mid=\'' + nmid + '\']').length) { - $('.notification[data-b64mid=\'' + nmid + '\']').each(function() { - var n = this.parentElement.id.split('-'); - return sse_updateNotifications(n[1], nmid); - }); - } - - // special handling for forum notifications - $('.notification-forum').filter(function() { - var fmids = decodeURIComponent($(this).data('b64mids')); - var n = this.parentElement.id.split('-'); - if(fmids.indexOf(nmid) > -1) { - var fcount = Number($('.' + n[1] + '-update').html()); - fcount--; - $('.' + n[1] + '-update').html(fcount); - if(fcount < 1) - $('.' + n[1] + '-button').fadeOut(); - - var count = Number($(this).find('.badge-secondary').html()); - count--; - $(this).find('.badge-secondary').html(count); - if(count < 1) - $(this).remove(); - } - }); - - - }); - - sse_setNotificationsStatus(); + $(document).trigger('hz:sse_setNotificationsStatus', [$(this).data('b64mids')]); }); $(window).scrollTop(scroll_position); if(followUpPageLoad) - sse_bs_counts(); + $(document).trigger('hz:sse_bs_counts'); + else - sse_bs_init(); + $(document).trigger('hz:sse_bs_init'); + if(commentBusy) { commentBusy = false; @@ -902,7 +870,7 @@ function updateInit() { liveUpdate(); } else { - sse_bs_init(); + $(document).trigger('hz:sse_bs_init'); } if($('#live-photos').length || $('#live-cards').length || $('#live-articles').length ) { diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl index 5cbfcc214..2a4651c99 100644 --- a/view/tpl/notifications_widget.tpl +++ b/view/tpl/notifications_widget.tpl @@ -137,6 +137,18 @@ } }); + $(document).on('hz:sse_setNotificationsStatus', function(e, data) { + sse_setNotificationsStatus(data); + }); + + $(document).on('hz:sse_bs_init', function() { + sse_bs_init(); + }); + + $(document).on('hz:sse_bs_counts', function() { + sse_bs_counts(); + }); + }); {{foreach $notifications as $notification}} @@ -421,7 +433,7 @@ } - function sse_setNotificationsStatus() { + function sse_setNotificationsStatus(data) { var primary_notifications = ['dm', 'home', 'intros', 'register', 'notify', 'files']; var secondary_notifications = ['network', 'forums', 'all_events', 'pubs']; var all_notifications = primary_notifications.concat(secondary_notifications); @@ -458,6 +470,39 @@ $('#notifications').hide(); } + if (typeof data !== typeof undefined) { + data.forEach(function(nmid, index) { + + sse_rmids.push(nmid); + + if($('.notification[data-b64mid=\'' + nmid + '\']').length) { + $('.notification[data-b64mid=\'' + nmid + '\']').each(function() { + var n = this.parentElement.id.split('-'); + return sse_updateNotifications(n[1], nmid); + }); + } + + // special handling for forum notifications + $('.notification-forum').filter(function() { + var fmids = decodeURIComponent($(this).data('b64mids')); + var n = this.parentElement.id.split('-'); + if(fmids.indexOf(nmid) > -1) { + var fcount = Number($('.' + n[1] + '-update').html()); + fcount--; + $('.' + n[1] + '-update').html(fcount); + if(fcount < 1) + $('.' + n[1] + '-button').fadeOut(); + + var count = Number($(this).find('.badge-secondary').html()); + count--; + $(this).find('.badge-secondary').html(count); + if(count < 1) + $(this).remove(); + } + }); + }); + } + } function sse_fallback() { |