diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index 325db34edb..1b2dd84f5b 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -225,6 +225,8 @@ namespace MediaBrowser.Model.Configuration
public double DownMixAudioBoost { get; set; }
+ public NotificationOptions NotificationOptions { get; set; }
+
///
/// Initializes a new instance of the class.
///
@@ -288,6 +290,8 @@ namespace MediaBrowser.Model.Configuration
DlnaOptions = new DlnaOptions();
UICulture = "en-us";
+
+ NotificationOptions = new NotificationOptions();
}
}
@@ -315,4 +319,20 @@ namespace MediaBrowser.Model.Configuration
public string From { get; set; }
public string To { get; set; }
}
+
+ public class NotificationOptions
+ {
+ public bool SendOnUpdates { get; set; }
+ public bool SendOnPlayback { get; set; }
+ public bool SendOnFailedTasks { get; set; }
+ public bool SendOnNewLibraryContent { get; set; }
+
+ public NotificationOptions()
+ {
+ SendOnUpdates = true;
+ SendOnPlayback = true;
+ SendOnFailedTasks = true;
+ SendOnNewLibraryContent = true;
+ }
+ }
}
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs
index 2a3668dfaa..bb03c09e65 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Common.Updates;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Notifications;
@@ -27,6 +28,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications
private readonly ITaskManager _taskManager;
private readonly INotificationManager _notificationManager;
+ private IServerConfigurationManager _config;
+
public Notifications(IInstallationManager installationManager, IUserManager userManager, ILogger logger, ITaskManager taskManager, INotificationManager notificationManager)
{
_installationManager = installationManager;
@@ -75,7 +78,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications
{
var result = e.Argument;
- if (result.Status == TaskCompletionStatus.Failed)
+ if (result.Status == TaskCompletionStatus.Failed &&
+ _config.Configuration.NotificationOptions.SendOnFailedTasks)
{
var userIds = _userManager
.Users
@@ -130,6 +134,11 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications
async void _installationManager_PackageInstallationCompleted(object sender, InstallationEventArgs e)
{
+ if (!_config.Configuration.NotificationOptions.SendOnUpdates)
+ {
+ return;
+ }
+
var installationInfo = e.InstallationInfo;
var userIds = _userManager
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json
index 01a997cca5..563d31b42f 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/server.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -55,6 +55,7 @@
"TabProfile": "Profile",
"TabMetadata": "Metadata",
"TabImages": "Images",
+ "TabNotifications": "Notifications"
"TabCollectionTitles": "Titles",
"LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons",
"LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons",
@@ -554,5 +555,11 @@
"HeaderRequireManualLogin": "Require manual username entry for:",
"HeaderRequireManualLoginHelp": "When disabled clients may present a login screen with a visual selection of users.",
"OptionOtherApps": "Other apps",
- "OptionMobileApps": "Mobile apps"
+ "OptionMobileApps": "Mobile apps",
+ "HeaderEnableNotificationForEvents": "Send notifications for the following events:",
+ "OptionNotifyOnUpdates": "When updates are available",
+ "OptionNotifyOnPlayback": "When users play content",
+ "OptionNotifyOnFailedTasks": "When scheduled tasks fail",
+ "OptionNotifyOnNewLibraryContent": "When new library content is added",
+ "SendNotificationHelp": "Notifications are delivered to the dashboard inbox. Browse the plugin catalog to install additional notification formats such as email and text messaging."
}
\ No newline at end of file
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index b4b778d370..0fc095998a 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -597,6 +597,7 @@ namespace MediaBrowser.WebDashboard.Api
"musicrecommended.js",
"musicvideos.js",
"notifications.js",
+ "notificationsettings.js",
"playlist.js",
"plugincatalogpage.js",
"pluginspage.js",
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index cdd62c45fb..64e25242b0 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -508,6 +508,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
@@ -631,6 +634,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest