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