add a filter for notification to show new posts only

This commit is contained in:
Mario Vavti 2017-12-01 21:00:39 +01:00
parent 3b6d7e3066
commit dcad9ce26a
4 changed files with 40 additions and 14 deletions

View File

@ -804,6 +804,8 @@ class Enotify {
'when' => relative_date($item['created']),
'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ? 'b64.' . base64url_encode($item['thr_parent']) : 'b64.' . base64url_encode($item['mid'])),
'notify_id' => 'undefined',
'thread_top' => (($item['item_thread_top']) ? true : false),
'message' => strip_tags(bbcode($itemem_text))
);

View File

@ -20,8 +20,10 @@ class Notifications {
'label' => t('View your network activity')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notifications read')
],
'filter' => [
'label' => t('Show new posts only')
]
];
@ -36,8 +38,10 @@ class Notifications {
'label' => t('View your home activity')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notifications seen')
],
'filter' => [
'label' => t('Show new posts only')
]
];
@ -52,7 +56,6 @@ class Notifications {
'label' => t('View your private mails')
],
'markall' => [
'url' => '#',
'label' => t('Mark all messages seen')
]
];
@ -68,7 +71,6 @@ class Notifications {
'label' => t('View events')
],
'markall' => [
'url' => '#',
'label' => t('Mark all events seen')
]
];
@ -104,7 +106,6 @@ class Notifications {
'label' => t('View all notices')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notices seen')
]
];
@ -132,8 +133,10 @@ class Notifications {
'label' => t('View the public stream')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notifications seen')
],
'filter' => [
'label' => t('Show new posts only')
]
];
}

View File

@ -874,6 +874,7 @@ function notify_popup_loader(notifyType) {
var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
var notifications_all = unescape($('<div>').append( $("#nav-" + notifyType + "-see-all").clone() ).html()); //outerHtml hack
var notifications_mark = unescape($('<div>').append( $("#nav-" + notifyType + "-mark-all").clone() ).html()); //outerHtml hack
var notifications_tt_only = unescape($('<div>').append( $("#tt-" + notifyType + "-only").clone() ).html()); //outerHtml hack
var notifications_empty = unescape($("#nav-" + notifyType + "-menu").html());
var notify_menu = $("#nav-" + notifyType + "-menu");
@ -885,14 +886,15 @@ function notify_popup_loader(notifyType) {
window.location.href=window.location.href;
}
$("#navbar-" + notifyType + "-menu").html(notifications_all + notifications_mark);
$("#nav-" + notifyType + "-menu").html(notifications_all + notifications_mark);
$("#navbar-" + notifyType + "-menu").html(notifications_all + notifications_mark + notifications_tt_only);
$("#nav-" + notifyType + "-menu").html(notifications_all + notifications_mark + notifications_tt_only);
$("." + notifyType + "-update").html(data.notify.length);
$(data.notify).each(function() {
html = navbar_notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id);
html = navbar_notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top);
$("#navbar-" + notifyType + "-menu").append(html);
html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id);
html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top);
$("#nav-" + notifyType + "-menu").append(html);
});
@ -901,8 +903,12 @@ function notify_popup_loader(notifyType) {
$(el).attr('src', $(el).data("src"));
$(el).removeAttr("data-src");
});
if($('#tt-' + notifyType + '-only').hasClass('active'))
$('#nav-' + notifyType + '-menu [data-thread_top=false]').hide();
});
setTimeout(function() {
if(notify_menu.hasClass('show')) {
console.log('updating ' + notifyType + ' notifications...');

View File

@ -22,7 +22,7 @@
});
{{if $module == 'display' || $module == 'hq'}}
$(document).on('click touch', '.notification', function(e) {
$(document).on('click', '.notification', function(e) {
var b64mid = $(this).data('b64mid');
var notify_id = $(this).data('notify_id');
var path = $(this)[0].pathname.substr(1,7);
@ -53,6 +53,16 @@
});
{{/if}}
{{foreach $notifications as $notification}}
{{if $notification.filter}}
$(document).on('click', '#tt-{{$notification.type}}-only', function(e) {
e.preventDefault();
$('#nav-{{$notification.type}}-menu [data-thread_top=false]').toggle();
$(this).toggleClass('active');
});
{{/if}}
{{/foreach}}
function getData(b64mid, notify_id) {
$('.thread-wrapper').remove();
bParam_mid = b64mid;
@ -72,7 +82,7 @@
<div id="notifications_wrapper">
<div id="notifications" class="navbar-nav" data-children=".nav-item">
<div id="nav-notifications-template" rel="template">
<a class="list-group-item clearfix notification {5}" href="{0}" title="{2} {3}" data-b64mid="{6}" data-notify_id="{7}">
<a class="list-group-item clearfix notification {5}" href="{0}" title="{2} {3}" data-b64mid="{6}" data-notify_id="{7}" data-thread_top="{8}">
<img class="menu-img-3" data-src="{1}">
<span class="contactname">{2}</span>
<span class="dropdown-sub-text">{3}<br>{4}</span>
@ -91,9 +101,14 @@
</a>
{{/if}}
{{if $notification.markall}}
<a class="list-group-item text-dark" id="nav-{{$notification.type}}-mark-all" href="{{$notification.markall.url}}" onclick="markRead('{{$notification.type}}'); return false;">
<div class="list-group-item" id="nav-{{$notification.type}}-mark-all" onclick="markRead('{{$notification.type}}'); return false;">
<i class="fa fa-fw fa-check"></i> {{$notification.markall.label}}
</a>
</div>
{{/if}}
{{if $notification.filter}}
<div class="list-group-item" id="tt-{{$notification.type}}-only">
<i class="fa fa-fw fa-filter"></i> {{$notification.filter.label}}
</div>
{{/if}}
{{$loading}}
</div>