Issue 9339: Notifications can now be paused

This commit is contained in:
Michael 2020-10-05 20:24:36 +00:00
parent cc42c0ba27
commit 116f7f9050
11 changed files with 57 additions and 1 deletions

View File

@ -370,6 +370,10 @@ function ping_init(App $a)
'info' => $sysmsgs_info
];
if (DI::pConfig()->get(local_user(), 'system', 'pause_notification')) {
$data = [];
}
$json_payload = json_encode(["result" => $data]);
if (isset($_GET['callback'])) {

View File

@ -268,6 +268,12 @@ class Nav
$nav['notifications'] = ['notifications', DI::l10n()->t('Notifications'), '', DI::l10n()->t('Notifications')];
$nav['notifications']['all'] = ['notifications/system', DI::l10n()->t('See all notifications'), '', ''];
$nav['notifications']['mark'] = ['', DI::l10n()->t('Mark as seen'), '', DI::l10n()->t('Mark all system notifications seen')];
if (DI::pConfig()->get(local_user(), 'system', 'pause_notification')) {
$nav['notifications']['unpause'] = DI::l10n()->t('Unpause');
} else {
$nav['notifications']['pause'] = DI::l10n()->t('Pause');
}
}
$nav['messages'] = ['message', DI::l10n()->t('Messages'), '', DI::l10n()->t('Private mail')];

View File

@ -22,6 +22,7 @@
namespace Friendica\Module\Notifications;
use Friendica\BaseModule;
use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\DI;
use Friendica\Module\Security\Login;
@ -76,6 +77,16 @@ class Notification extends BaseModule
throw new HTTPException\UnauthorizedException(DI::l10n()->t('Permission denied.'));
}
if (DI::args()->get(1) === 'pause') {
DI::pConfig()->set(local_user(), 'system', 'pause_notification', true);
$success = true;
}
if (DI::args()->get(1) === 'unpause') {
DI::pConfig()->set(local_user(), 'system', 'pause_notification', false);
$success = true;
}
if (DI::args()->get(1) === 'mark' && DI::args()->get(2) === 'all') {
try {
$success = DI::notify()->setSeen();

View File

@ -231,9 +231,12 @@ return [
'/notification' => [
'[/]' => [Module\Notifications\Notification::class, [R::GET]],
'/pause' => [Module\Notifications\Notification::class, [R::GET]],
'/unpause' => [Module\Notifications\Notification::class, [R::GET]],
'/mark/all' => [Module\Notifications\Notification::class, [R::GET]],
'/{id:\d+}' => [Module\Notifications\Notification::class, [R::GET, R::POST]],
],
'/objects/{guid}[/{activity}]' => [Module\Objects::class, [R::GET]],
'/oembed' => [

View File

@ -972,6 +972,26 @@ function notificationMarkAll() {
});
}
function notificationPause() {
$.get('notification/pause', function(data) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(NavUpdate,1000);
force_update = true;
});
}
function notificationUnpause() {
$.get('notification/unpause', function(data) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(NavUpdate,1000);
force_update = true;
});
}
/**
* sprintf in javascript
* "{0} and {1}".format('zero','uno');

View File

@ -50,8 +50,10 @@
{{if $nav.notifications}}
<a accesskey="f" id="nav-notifications-linkmenu" class="nav-commlink" href="{{$nav.notifications.0}}" rel="#nav-notifications-menu" title="{{$nav.notifications.1}}">{{$nav.notifications.1}}</a>
<span id="notification-update" class="nav-ajax-left"></span>
<ul id="nav-notifications-menu" class="menu-popup">
<ul id="nav-notificationns-menu" class="menu-popup">
<li id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
{{if $nav.notifications.pause}}<li id="nav-notifications-pause"><a href="#" onclick="notificationPause(); return false;">{{$nav.notifications.pause}}</a></li>{{/if}}
{{if $nav.notifications.unpause}}<li id="nav-notifications-unpause"><a href="#" onclick="notificationUnpause(); return false;">{{$nav.notifications.unpause}}</a></li>{{/if}}
<li id="nav-notifications-mark-all"><a href="#" onclick="notificationMarkAll(); return false;">{{$nav.notifications.mark.3}}</a></li>
<li class="empty">{{$emptynotifications}}</li>
</ul>

View File

@ -51,6 +51,8 @@
<span id="notification-update" class="nav-ajax-left"></span>
<ul id="nav-notifications-menu" class="menu-popup">
<li id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
{{if $nav.notifications.pause}}<li id="nav-notifications-pause"><a onclick="notificationPause(); return false;">{{$nav.notifications.pause}}</a></li>{{/if}}
{{if $nav.notifications.unpause}}<li id="nav-notifications-unpause"><a onclick="notificationUnpause(); return false;">{{$nav.notifications.unpause}}</a></li>{{/if}}
<li id="nav-notifications-mark-all"><a href="#" onclick="notificationMarkAll(); return false;">{{$nav.notifications.mark.3}}</a></li>
<li class="empty">{{$emptynotifications}}</li>
</ul>

View File

@ -87,6 +87,8 @@
<div class="arrow"></div>
{{$nav.notifications.1}}
<div class="dropdown-header-link">
{{if $nav.notifications.pause}}<button role="menuitem" type="button" class="btn-link" onclick="notificationPause();" data-toggle="tooltip" aria-label="{{$nav.notifications.pause}}" title="{{$nav.notifications.pause}}"><i class="fa fa-pause" aria-hidden="true"></i></button>{{/if}}
{{if $nav.notifications.unpause}}<button role="menuitem" type="button" class="btn-link" onclick="notificationUnpause();" data-toggle="tooltip" aria-label="{{$nav.notifications.unpause}}" title="{{$nav.notifications.unpause}}"><i class="fa fa-play" aria-hidden="true"></i></button>{{/if}}
<button role="menuitem" type="button" class="btn-link" onclick="notificationMarkAll();" data-toggle="tooltip" aria-label="{{$nav.notifications.mark.3}}" title="{{$nav.notifications.mark.3}}">{{$nav.notifications.mark.1}}</button>
</div>

View File

@ -63,6 +63,8 @@
<span id="notification-update" class="nav-notification"></span>
<ul id="nav-notifications-menu" class="menu-popup">
<!-- TODO: better icons! -->
{{if $nav.notifications.pause}}<li id="nav-notifications-pause"><a onclick="notificationPause(); return false;" title="{{$nav.notifications.pause}}"><span class="icon s10 edit"></span></a></li>{{/if}}
{{if $nav.notifications.unpause}}<li id="nav-notifications-unpause"><a onclick="notificationUnpause(); return false;" title="{{$nav.notifications.unpause}}"><span class="icon s10 edit"></span></a></li>{{/if}}
<li id="nav-notifications-mark-all" class="toolbar"><a href="#" onclick="notificationMarkAll(); return false;" title="{{$nav.notifications.mark.3}}"><span class="icon s10 edit"></span></a></a><a href="{{$nav.notifications.all.0}}" title="{{$nav.notifications.all.1}}"><span class="icon s10 plugin"></span></a></li>
<li class="empty">{{$emptynotifications}}</li>
</ul>

View File

@ -11,6 +11,8 @@
{{if $nav.notifications}}<a rel="#nav-notifications-menu" id="notification-update" class="nav-ajax-update" href="{{$nav.notifications.0}}" title="{{$nav.notifications.1}}"></a>{{/if}}
<ul id="nav-notifications-menu" class="menu-popup">
{{if $nav.notifications.pause}}<li id="nav-notifications-pause"><a onclick="notificationPause(); return false;">{{$nav.notifications.pause}}</a></li>{{/if}}
{{if $nav.notifications.unpause}}<li id="nav-notifications-unpause"><a onclick="notificationUnpause(); return false;">{{$nav.notifications.unpause}}</a></li>{{/if}}
<li id="nav-notifications-mark-all"><a href="#" onclick="notificationMarkAll(); return false;">{{$nav.notifications.mark.3}}</a></li>
<li id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
<li class="empty">{{$emptynotifications}}</li>

View File

@ -69,6 +69,8 @@
<span id="notification-update" class="nav-notification"></span>
</a>
<ul id="nav-notifications-menu" class="menu-popup">
{{if $nav.notifications.pause}}<li role="menuitem" id="nav-notifications-pause"><a onclick="notificationPause(); return false;">{{$nav.notifications.pause}}</a></li>{{/if}}
{{if $nav.notifications.unpause}}<li role="menuitem" id="nav-notifications-unpause"><a onclick="notificationUnpause(); return false;">{{$nav.notifications.unpause}}</a></li>{{/if}}
<li role="menuitem" id="nav-notifications-mark-all"><a onclick="notificationMarkAll(); return false;">{{$nav.notifications.mark.1}}</a></li>
<li role="menuitem" id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
<li role="menuitem" class="empty">{{$emptynotifications}}</li>