notifications order, unseen css class
ping return notfications ordered by notification id notifications list get seen/unseen class from ping xml global.css define 'notify-unseen'
This commit is contained in:
parent
bd3f29f266
commit
e29d05ce4a
5 changed files with 34 additions and 31 deletions
30
js/main.js
30
js/main.js
|
@ -182,42 +182,32 @@
|
||||||
nnm.html(notifications_all + notifications_mark);
|
nnm.html(notifications_all + notifications_mark);
|
||||||
//nnm.attr('popup','true');
|
//nnm.attr('popup','true');
|
||||||
|
|
||||||
var notification_lastitem = localStorage.getItem("notification-lastitem");
|
var notification_lastitem = parseInt(localStorage.getItem("notification-lastitem"));
|
||||||
var notification_first_id = 0;
|
var notification_id = 0;
|
||||||
var notification_id;
|
|
||||||
eNotif.children("note").each(function(){
|
eNotif.children("note").each(function(){
|
||||||
e = $(this);
|
e = $(this);
|
||||||
text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>");
|
text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>");
|
||||||
html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen'));
|
html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen'));
|
||||||
nnm.append(html);
|
nnm.append(html);
|
||||||
|
});
|
||||||
notification_id = e.attr('href').match(/\d+$/)[0];
|
$(eNotif.children("note").get().reverse()).each(function(){
|
||||||
if (notification_lastitem!== null && notification_id!=notification_lastitem) {
|
e = $(this);
|
||||||
if (notification_first_id===0) notification_first_id = notification_id;
|
notification_id = parseInt(e.attr('href').match(/\d+$/)[0]);
|
||||||
|
if (notification_lastitem!== null && notification_id > notification_lastitem) {
|
||||||
if (getNotificationPermission()==="granted") {
|
if (getNotificationPermission()==="granted") {
|
||||||
console.log("notification", e.text().replace('→ ','').format(e.attr('name')));
|
|
||||||
var notification = new Notification(document.title, {
|
var notification = new Notification(document.title, {
|
||||||
body: e.text().replace('→ ','').format(e.attr('name')),
|
body: e.text().replace('→ ','').format(e.attr('name')),
|
||||||
icon: e.attr('photo'),
|
icon: e.attr('photo'),
|
||||||
data: e.attr('href')
|
|
||||||
});
|
});
|
||||||
// close notification after 5 secs.
|
notification['url'] = e.attr('href');
|
||||||
// see https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API#Closing_notifications
|
|
||||||
//setTimeout(notification.close.bind(notification), 5000);
|
|
||||||
|
|
||||||
notification.addEventListener("click", function(ev){
|
notification.addEventListener("click", function(ev){
|
||||||
window.location = ev.target.data;
|
window.location = ev.target.url;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (notification_id == notification_lastitem) {
|
|
||||||
if (notification_first_id===0) notification_first_id = notification_id;
|
|
||||||
notification_lastitem = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
if (notification_first_id!==0) notification_lastitem = notification_first_id;
|
notification_lastitem = notification_id;
|
||||||
localStorage.setItem("notification-lastitem", notification_lastitem)
|
localStorage.setItem("notification-lastitem", notification_lastitem)
|
||||||
|
|
||||||
$("img[data-src]", nnm).each(function(i, el){
|
$("img[data-src]", nnm).each(function(i, el){
|
||||||
|
|
26
mod/ping.php
26
mod/ping.php
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
require_once("include/datetime.php");
|
require_once("include/datetime.php");
|
||||||
require_once('include/bbcode.php');
|
require_once('include/bbcode.php');
|
||||||
|
require_once("mod/proxy.php");
|
||||||
|
|
||||||
function ping_init(&$a) {
|
function ping_init(&$a) {
|
||||||
|
|
||||||
|
@ -164,7 +164,6 @@ function ping_init(&$a) {
|
||||||
|
|
||||||
|
|
||||||
function xmlize($href, $name, $url, $photo, $date, $seen, $message){
|
function xmlize($href, $name, $url, $photo, $date, $seen, $message){
|
||||||
require_once("mod/proxy.php");
|
|
||||||
$photo = proxy_url($photo);
|
$photo = proxy_url($photo);
|
||||||
|
|
||||||
$message = html_entity_decode($message, ENT_COMPAT | ENT_HTML401, "UTF-8");
|
$message = html_entity_decode($message, ENT_COMPAT | ENT_HTML401, "UTF-8");
|
||||||
|
@ -216,23 +215,23 @@ function ping_init(&$a) {
|
||||||
|
|
||||||
if ($intro>0){
|
if ($intro>0){
|
||||||
foreach ($intros as $i) {
|
foreach ($intros as $i) {
|
||||||
echo xmlize($a->get_baseurl().'/notifications/intros/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), 'notify-unseen', "→ ".t("{0} wants to be your friend"));
|
echo xmlize($a->get_baseurl().'/notifications/intros/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), 'notify-unseen', t("{0} wants to be your friend"));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if ($mail>0){
|
if ($mail>0){
|
||||||
foreach ($mails as $i) {
|
foreach ($mails as $i) {
|
||||||
echo xmlize($a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), 'notify-unseen',"→ ".t("{0} sent you a message"));
|
echo xmlize($a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), 'notify-unseen', t("{0} sent you a message"));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if ($register>0){
|
if ($register>0){
|
||||||
foreach ($regs as $i) {
|
foreach ($regs as $i) {
|
||||||
echo xmlize($a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), 'notify-unseen', "→ ".t("{0} requested registration"));
|
echo xmlize($a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), 'notify-unseen', t("{0} requested registration"));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if(count($z)) {
|
if(count($z)) {
|
||||||
foreach($z as $zz) {
|
foreach($z as $zz) {
|
||||||
echo xmlize($a->get_baseurl() . '/notify/view/' . $zz['id'], $zz['name'],$zz['url'],$zz['photo'],relative_date($zz['date']), ($zz['seen'] ? 'notify-seen' : 'notify-unseen'), ($zz['seen'] ? '' : '→ ') .strip_tags(bbcode($zz['msg'])));
|
echo xmlize($a->get_baseurl() . '/notify/view/' . $zz['id'], $zz['name'],$zz['url'],$zz['photo'],relative_date($zz['date']), ($zz['seen'] ? 'notify-seen' : 'notify-unseen'), strip_tags(bbcode($zz['msg'])));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -322,7 +321,7 @@ function ping_get_notifications($uid) {
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
$seen = false;
|
$seen = false;
|
||||||
$seensql = "NOT";
|
$seensql = "NOT";
|
||||||
$order = "";
|
$order = "DESC";
|
||||||
$quit = false;
|
$quit = false;
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
@ -348,6 +347,7 @@ function ping_get_notifications($uid) {
|
||||||
$quit = true;
|
$quit = true;
|
||||||
else
|
else
|
||||||
$offset += 50;
|
$offset += 50;
|
||||||
|
|
||||||
|
|
||||||
foreach ($r AS $notification) {
|
foreach ($r AS $notification) {
|
||||||
if (is_null($notification["visible"]))
|
if (is_null($notification["visible"]))
|
||||||
|
@ -370,11 +370,21 @@ function ping_get_notifications($uid) {
|
||||||
$notification["msg"] = substr_replace($notification["msg"],"{0}",$pos,strlen($notification["name"]));
|
$notification["msg"] = substr_replace($notification["msg"],"{0}",$pos,strlen($notification["name"]));
|
||||||
|
|
||||||
if ($notification["visible"] AND !$notification["spam"] AND
|
if ($notification["visible"] AND !$notification["spam"] AND
|
||||||
!$notification["deleted"] AND !is_array($result[$notification["parent"]]))
|
!$notification["deleted"] AND !is_array($result[$notification["parent"]])) {
|
||||||
$result[$notification["parent"]] = $notification;
|
$result[$notification["parent"]] = $notification;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} while ((count($result) < 50) AND !$quit);
|
} while ((count($result) < 50) AND !$quit);
|
||||||
|
|
||||||
|
// sort result by $[]['id'], inversed
|
||||||
|
$sort_function = function($a, $b) {
|
||||||
|
if ($a['id'] == $b['id']) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return ($a['id'] < $b['id']) ? 1 : -1;
|
||||||
|
};
|
||||||
|
usort($result, $sort_function);
|
||||||
|
|
||||||
return($result);
|
return($result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,4 +173,7 @@ span.oembed, h4 {
|
||||||
/* fields help text */
|
/* fields help text */
|
||||||
.field .field_help {
|
.field .field_help {
|
||||||
clear: left;
|
clear: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* notifications unseen */
|
||||||
|
.notify-unseen { background-color: #cceeFF; }
|
|
@ -109,7 +109,7 @@
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
<ul id="nav-notifications-template" style="display:none;" rel="template">
|
<ul id="nav-notifications-template" style="display:none;" rel="template">
|
||||||
<li><a href="{0}"><img data-src="{1}">{2} <span class="notif-when">{3}</span></a></li>
|
<li class="{4}"><a href="{0}"><img data-src="{1}">{2} <span class="notif-when">{3}</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div style="position: fixed; top: 3px; left: 5px; z-index:9999">{{$langselector}}</div>
|
<div style="position: fixed; top: 3px; left: 5px; z-index:9999">{{$langselector}}</div>
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
<ul id="nav-notifications-template" style="display:none;" rel="template">
|
<ul id="nav-notifications-template" style="display:none;" rel="template">
|
||||||
<li><a href="{0}"><img data-src="{1}">{2} <span class="notif-when">{3}</span></a></li>
|
<li class="{4}"><a href="{0}"><img data-src="{1}">{2} <span class="notif-when">{3}</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<!--
|
<!--
|
||||||
<div class="icon-flag" style="position: fixed; bottom: 10px; left: 20px; z-index:9;">{{$langselector}}</div>
|
<div class="icon-flag" style="position: fixed; bottom: 10px; left: 20px; z-index:9;">{{$langselector}}</div>
|
||||||
|
|
Loading…
Reference in a new issue