experimental new notifications - needs pconfig experimental_notif set to 1 for your channel to work.

This commit is contained in:
Mario Vavti 2017-10-08 17:19:29 +02:00
parent 71c206fdb9
commit 991db280be
51 changed files with 383 additions and 23 deletions

View file

@ -107,7 +107,7 @@ class WebServer {
check_config();
}
nav_set_selected('nothing');
//nav_set_selected('nothing');
$Router = new Router($a);

View file

@ -0,0 +1,152 @@
<?php
namespace Zotlabs\Widget;
class Notifications {
function widget($arr) {
if(! get_pconfig(local_channel(), 'system', 'experimental_notif'))
return;
$channel = \App::get_channel();
if(local_channel()) {
$notifications[] = [
'type' => 'network',
'icon' => 'th',
'severity' => 'secondary',
'label' => t('Activity'),
'title' => t('Network Activity Notifications'),
'viewall' => [
'url' => 'network',
'label' => t('View your network activity')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notifications seen')
]
];
$notifications[] = [
'type' => 'home',
'icon' => 'home',
'severity' => 'danger',
'label' => t('Home'),
'title' => t('Channel Home Notifications'),
'viewall' => [
'url' => 'channel/' . $channel['channel_address'],
'label' => t('View your home activity')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notifications seen')
]
];
$notifications[] = [
'type' => 'messages',
'icon' => 'envelope',
'severity' => 'danger',
'label' => t('Mail'),
'title' => t('Private mail'),
'viewall' => [
'url' => 'mail/combined',
'label' => t('View your private mails')
],
'markall' => [
'url' => '#',
'label' => t('Mark all messages seen')
]
];
$notifications[] = [
'type' => 'all_events',
'icon' => 'calendar',
'severity' => 'secondary',
'label' => t('Events'),
'title' => t('Event Calendar'),
'viewall' => [
'url' => 'mail/combined',
'label' => t('View events')
],
'markall' => [
'url' => '#',
'label' => t('Mark all events seen')
]
];
$notifications[] = [
'type' => 'intros',
'icon' => 'users',
'severity' => 'danger',
'label' => t('New Connections'),
'title' => t('New Connections'),
'viewall' => [
'url' => 'connections',
'label' => t('View all connections')
]
];
$notifications[] = [
'type' => 'files',
'icon' => 'folder',
'severity' => 'danger',
'label' => t('New Files'),
'title' => t('New files shared with me'),
];
$notifications[] = [
'type' => 'notify',
'icon' => 'exclamation',
'severity' => 'danger',
'label' => t('Notices'),
'title' => t('Notices'),
'viewall' => [
'url' => 'notifications/system',
'label' => t('View all notices')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notices seen')
]
];
}
if(local_channel() && is_site_admin()) {
$notifications[] = [
'type' => 'register',
'icon' => 'user-o',
'severity' => 'danger',
'label' => t('New Registrations'),
'title' => t('New Registrations'),
];
}
$notifications[] = [
'type' => 'pubs',
'icon' => 'globe',
'severity' => 'secondary',
'label' => t('Public Stream'),
'title' => t('Public Stream Notifications'),
'viewall' => [
'url' => 'pubstream',
'label' => t('View the public stream')
],
'markall' => [
'url' => '#',
'label' => t('Mark all notifications seen')
]
];
$o = replace_macros(get_markup_template('notifications_widget.tpl'), array(
'$notifications' => $notifications,
'$loading' => t('Loading...')
));
return $o;
}
}

View file

@ -62,10 +62,12 @@ EOT;
if($banner === false)
$banner = get_config('system','sitename');
//the notifications template is in hdr.tpl
App::$page['header'] .= replace_macros(get_markup_template('hdr.tpl'), array(
//we could additionally use this to display important system notifications e.g. for updates
));
if(! get_pconfig(local_channel(), 'system', 'experimental_notif')) {
//the notifications template is in hdr.tpl
App::$page['header'] .= replace_macros(get_markup_template('hdr.tpl'), array(
//we could additionally use this to display important system notifications e.g. for updates
));
}
$techlevel = get_account_techlevel();
@ -269,6 +271,7 @@ EOT;
App::$page['nav'] .= replace_macros($tpl, array(
'$baseurl' => z_root(),
'$experimental_notif' => get_pconfig(local_channel(), 'system', 'experimental_notif'),
'$fulldocs' => t('Help'),
'$sitelocation' => $sitelocation,
'$nav' => $x['nav'],
@ -287,7 +290,8 @@ EOT;
'$channel_apps' => $channel_apps,
'$addapps' => t('Add Apps'),
'$orderapps' => t('Arrange Apps'),
'$sysapps_toggle' => t('Toggle System Apps')
'$sysapps_toggle' => t('Toggle System Apps'),
'$loc' => $myident
));
if(x($_SESSION, 'reload_avatar') && $observer) {

View file

@ -992,7 +992,7 @@ function notify_popup_loader(notifyType) {
html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass);
$("#nav-" + notifyType + "-menu").append(html);
});
$(".dropdown-menu img[data-src]").each(function(i, el){
$(".dropdown-menu img[data-src], .dropdown-item img[data-src]").each(function(i, el){
// Replace data-src attribute with src attribute for every image
$(el).attr('src', $(el).data("src"));
$(el).removeAttr("data-src");

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=admin][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=appcategories][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=appcategories][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=design_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -3,3 +3,6 @@
[widget=tasklist][/widget]
[widget=notes][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=cdav][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -8,4 +8,6 @@
[widget=categories][/widget]
[widget=tagcloud_wall][var=limit]24[/var][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=vcard][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -5,3 +5,6 @@
[widget=suggestedchats][/widget]
[widget=chatroom_members][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=vcard][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=profile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -4,3 +4,6 @@
[widget=suggestions][/widget]
[widget=findpeople][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -4,3 +4,6 @@
[widget=suggestions][/widget]
[widget=findpeople][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -4,3 +4,6 @@
[widget=dirtags][/widget]
[widget=suggestions][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=design_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=design_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=design_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -2,3 +2,6 @@
[widget=eventstools][/widget]
[widget=tasklist][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=collections][var=mode]groups[/var][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=helpindex][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=design_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,6 @@
[region=aside]
[widget=settings_menu][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -2,3 +2,6 @@
[widget=mailmenu][/widget]
[widget=conversations][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=design_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=mailmenu][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,7 @@
[region=aside]
[widget=design_tools][/widget]
[widget=menu_preview][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -14,3 +14,6 @@
$content
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -2,3 +2,6 @@
[widget=vcard][/widget]
[widget=photo_albums][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=vcard][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -5,3 +5,6 @@
[widget=suggestions][/widget]
[widget=findpeople][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[comment][widget=sitesearch][/widget][/comment]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,6 @@
[region=aside]
[widget=settings_menu][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,7 @@
[region=aside]
[widget=follow][/widget]
[widget=findpeople][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,6 @@
[region=aside]
[widget=settings_menu][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,3 +1,6 @@
[region=aside]
[widget=fullprofile][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -1,4 +1,7 @@
[region=aside]
[widget=design_tools][/widget]
[widget=website_portation_tools][/widget]
[/region]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -2,3 +2,6 @@
[widget=vcard][/widget]
[widget=wiki_pages][/widget]
[/region]
[region=right_aside]
[widget=notifications][/widget]
[/region]

View file

@ -64,6 +64,13 @@ $(document).ready(function() {
}
});
$('#notifications-btn-1').click(function() {
$('#region_3').toggleClass('fs');
if($('#navbar-collapse-2').hasClass('show')){
$('#navbar-collapse-2').removeClass('show');
}
});
$("input[data-role=cat-tagsinput]").tagsinput({
tagClass: 'badge badge-pill badge-warning text-dark'
});

View file

@ -63,16 +63,25 @@
<button id="expand-aside" type="button" class="navbar-toggler border-0" data-toggle="offcanvas" data-target="#region_1">
<i class="fa fa-arrow-circle-right" id="expand-aside-icon"></i>
</button>
{{if ! $experimental_notif}}
{{if $localuser || $nav.pubs}}
<button id="notifications-btn" type="button" class="navbar-toggler border-0 text-white" data-toggle="collapse" data-target="#navbar-collapse-1">
<i class="fa fa-exclamation-circle"></i>
</button>
{{/if}}
{{else}}
{{if $localuser || $nav.pubs}}
<button id="notifications-btn-1" type="button" class="navbar-toggler border-0 text-white">
<i class="fa fa-exclamation-circle"></i>
</button>
{{/if}}
{{/if}}
<button id="menu-btn" class="navbar-toggler border-0" type="button" data-toggle="collapse" data-target="#navbar-collapse-2">
<i class="fa fa-bars"></i>
</button>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
{{if ! $experimental_notif}}
<ul class="navbar-nav mr-auto">
{{if $nav.network}}
<li class="nav-item dropdown network-button" style="display: none;">
@ -202,7 +211,11 @@
</li>
{{/if}}
</ul>
{{else}}
<div class="navbar-nav mr-auto">
<div class="text-white">{{$sel.active}}</div>
</div>
{{/if}}
<div id="banner" class="navbar-text d-none d-md-flex">{{$banner}}</div>
<ul id="nav-right" class="navbar-nav ml-auto d-none d-md-flex">

View file

@ -0,0 +1,57 @@
<style>
#notifications {
width: 100%;
}
.notification-content {
max-height: 50vh;
overflow: auto;
border-left: 0.2rem solid #eee;
}
.fs {
position: fixed;
top: 0px;
left: 0px;
display: block !important;
background-color: white;
width: 100%;
max-width: 100%;
height: 100vh;
z-index: 1020;
}
.fs #notifications {
position: relative !important;
width: 100% !important;
top: 0px !important;
}
</style>
<div id="nav-notifications-template" rel="template">
<a class="dropdown-item clearfix dropdown-notification {5}" href="{0}" title="{2} {3}">
<img class="menu-img-3" data-src="{1}">
<span class="contactname">{2}</span>
<span class="dropdown-sub-text">{3}<br>{4}</span>
</a>
</div>
<ul id="notifications" class="navbar-nav" style="position: fixed; width: 280px; top: 64px;" data-children=".nav-item">
{{foreach $notifications as $notification}}
<li class="nav-item {{$notification.type}}-button" style="display: none;">
<a class="nav-link" href="#nav-{{$notification.type}}-menu" title="{{$notification.title}}" data-toggle="collapse" data-parent="#notifications" rel="#nav-{{$notification.type}}-menu">
<i class="fa fa-fw fa-{{$notification.icon}}"></i> {{$notification.label}}
<span class="float-right badge badge-{{$notification.severity}} {{$notification.type}}-update"></span>
</a>
<div id="nav-{{$notification.type}}-menu" class="collapse notification-content" rel="{{$notification.type}}">
{{if $notification.viewall}}
<a class="dropdown-item" id="nav-{{$notification.type}}-see-all" href="{{$notification.viewall.url}}">{{$notification.viewall.label}}</a>
{{/if}}
{{if $notification.markall}}
<a class="dropdown-item" id="nav-{{$notification.type}}-mark-all" href="{{$notification.markall.url}}" onclick="markRead('{{$notification.type}}'); return false;">{{$notification.markall.label}}</a>
{{/if}}
{{$loading}}
</div>
</li>
{{/foreach}}
</ul>