diff options
12 files changed, 80 insertions, 119 deletions
diff --git a/MediaBrowser.Api/Library/LibraryHelpers.cs b/MediaBrowser.Api/Library/LibraryHelpers.cs index 2a3a04537..e956e214d 100644 --- a/MediaBrowser.Api/Library/LibraryHelpers.cs +++ b/MediaBrowser.Api/Library/LibraryHelpers.cs @@ -98,16 +98,15 @@ namespace MediaBrowser.Api.Library if (!Directory.Exists(path)) { - throw new DirectoryNotFoundException("The media folder does not exist"); + throw new DirectoryNotFoundException(string.Format("The media collection {0} does not exist", virtualFolderName)); } var shortcut = Directory.EnumerateFiles(path, "*.lnk", SearchOption.AllDirectories).FirstOrDefault(f => FileSystem.ResolveShortcut(f).Equals(mediaPath, StringComparison.OrdinalIgnoreCase)); - if (string.IsNullOrEmpty(shortcut)) + if (!string.IsNullOrEmpty(shortcut)) { - throw new DirectoryNotFoundException("The media folder does not exist"); + File.Delete(shortcut); } - File.Delete(shortcut); } /// <summary> diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index d4442ff44..d43eded29 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -314,6 +314,8 @@ namespace MediaBrowser.Api var newUser = _userManager.CreateUser(dtoUser.Name).Result; + newUser.UpdateConfiguration(dtoUser.Configuration, _xmlSerializer); + var result = new DtoBuilder(Logger).GetDtoUser(newUser); return ToOptimizedResult(result); diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index b25c1808d..0a60b703f 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -158,10 +158,10 @@ namespace MediaBrowser.Common.Implementations { return Task.Run(() => { + IsFirstRun = !ConfigurationManager.CommonConfiguration.IsStartupWizardCompleted; + Logger = LogManager.GetLogger("App"); - IsFirstRun = !File.Exists(ApplicationPaths.SystemConfigurationFilePath); - DiscoverTypes(); LogManager.ReloadLogger(ConfigurationManager.CommonConfiguration.EnableDebugLevelLogging ? LogSeverity.Debug : LogSeverity.Info); diff --git a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs index 1e525137c..c5296dcfb 100644 --- a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs +++ b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Logging; +using System.Linq; +using MediaBrowser.Model.Logging; using NLog; using NLog.Config; using NLog.Targets; @@ -56,23 +57,21 @@ namespace MediaBrowser.Common.Implementations.Logging logFile.FileName = path; logFile.Layout = "${longdate}, ${level}, ${logger}, ${message}"; - AddLogTarget(logFile, "ApplicationLogFile", level); + RemoveTarget("ApplicationLogFile"); + logFile.Name = "ApplicationLogFile"; + + AddLogTarget(logFile, level); } /// <summary> /// Adds the log target. /// </summary> /// <param name="target">The target.</param> - /// <param name="name">The name.</param> /// <param name="level">The level.</param> - private void AddLogTarget(Target target, string name, LogSeverity level) + private void AddLogTarget(Target target, LogSeverity level) { var config = LogManager.Configuration; - - config.RemoveTarget(name); - - target.Name = name; - config.AddTarget(name, target); + config.AddTarget(target.Name, target); var rule = new LoggingRule("*", GetLogLevel(level), target); config.LoggingRules.Add(rule); @@ -81,6 +80,35 @@ namespace MediaBrowser.Common.Implementations.Logging } /// <summary> + /// Removes the target. + /// </summary> + /// <param name="name">The name.</param> + public void RemoveTarget(string name) + { + var config = LogManager.Configuration; + + var target = config.FindTargetByName(name); + + if (target != null) + { + foreach (var rule in config.LoggingRules.ToList()) + { + var contains = rule.Targets.Contains(target); + + rule.Targets.Remove(target); + + if (contains) + { + config.LoggingRules.Remove(rule); + } + } + + config.RemoveTarget(name); + LogManager.Configuration = config; + } + } + + /// <summary> /// Gets the logger. /// </summary> /// <param name="name">The name.</param> diff --git a/MediaBrowser.Common/Kernel/ResourcePool.cs b/MediaBrowser.Common/Kernel/ResourcePool.cs deleted file mode 100644 index 7a74c60a7..000000000 --- a/MediaBrowser.Common/Kernel/ResourcePool.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using System.Threading; - -namespace MediaBrowser.Common.Kernel -{ - /// <summary> - /// This is just a collection of semaphores to control the number of concurrent executions of various resources - /// </summary> - public class ResourcePool : IDisposable - { - /// <summary> - /// You tube - /// </summary> - public readonly SemaphoreSlim YouTube = new SemaphoreSlim(5, 5); - - /// <summary> - /// The trakt - /// </summary> - public readonly SemaphoreSlim Trakt = new SemaphoreSlim(5, 5); - - /// <summary> - /// The tv db - /// </summary> - public readonly SemaphoreSlim TvDb = new SemaphoreSlim(5, 5); - - /// <summary> - /// The movie db - /// </summary> - public readonly SemaphoreSlim MovieDb = new SemaphoreSlim(5, 5); - - /// <summary> - /// The fan art - /// </summary> - public readonly SemaphoreSlim FanArt = new SemaphoreSlim(5, 5); - - /// <summary> - /// The mb - /// </summary> - public readonly SemaphoreSlim Mb = new SemaphoreSlim(5, 5); - - /// <summary> - /// The mb - /// </summary> - public readonly SemaphoreSlim Lastfm = new SemaphoreSlim(5, 5); - - /// <summary> - /// Apple doesn't seem to like too many simulataneous requests. - /// </summary> - public readonly SemaphoreSlim AppleTrailerVideos = new SemaphoreSlim(1, 1); - - /// <summary> - /// The apple trailer images - /// </summary> - public readonly SemaphoreSlim AppleTrailerImages = new SemaphoreSlim(1, 1); - - /// <summary> - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// </summary> - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// <summary> - /// Releases unmanaged and - optionally - managed resources. - /// </summary> - /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> - protected virtual void Dispose(bool dispose) - { - if (dispose) - { - YouTube.Dispose(); - Trakt.Dispose(); - TvDb.Dispose(); - MovieDb.Dispose(); - FanArt.Dispose(); - Mb.Dispose(); - AppleTrailerVideos.Dispose(); - AppleTrailerImages.Dispose(); - } - } - } -} diff --git a/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs index 474d985f2..74241ac02 100644 --- a/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs +++ b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs @@ -65,6 +65,13 @@ namespace MediaBrowser.Model.Configuration /// <value>The legacy web socket port number.</value> [ProtoMember(59)] public int LegacyWebSocketPortNumber { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is first run. + /// </summary> + /// <value><c>true</c> if this instance is first run; otherwise, <c>false</c>.</value> + [ProtoMember(4)] + public bool IsStartupWizardCompleted { get; set; } /// <summary> /// Initializes a new instance of the <see cref="BaseApplicationConfiguration" /> class. diff --git a/MediaBrowser.ServerApplication/Logging/LogWindow.xaml.cs b/MediaBrowser.ServerApplication/Logging/LogWindow.xaml.cs index 75ef69924..226cd8e87 100644 --- a/MediaBrowser.ServerApplication/Logging/LogWindow.xaml.cs +++ b/MediaBrowser.ServerApplication/Logging/LogWindow.xaml.cs @@ -1,4 +1,6 @@ -using NLog; +using MediaBrowser.Common.Implementations.Logging; +using MediaBrowser.Model.Logging; +using NLog; using NLog.Config; using NLog.Targets; using System.ComponentModel; @@ -18,14 +20,17 @@ namespace MediaBrowser.ServerApplication.Logging /// </summary> private readonly TaskScheduler _uiThread; + private readonly ILogManager _logManager; + /// <summary> /// Initializes a new instance of the <see cref="LogWindow" /> class. /// </summary> /// <param name="kernel">The kernel.</param> - public LogWindow() + public LogWindow(ILogManager logManager) { InitializeComponent(); _uiThread = TaskScheduler.FromCurrentSynchronizationContext(); + _logManager = logManager; Loaded += LogWindow_Loaded; } @@ -42,6 +47,7 @@ namespace MediaBrowser.ServerApplication.Logging Layout = "${longdate}, ${level}, ${logger}, ${message}" }; + ((NlogManager)_logManager).RemoveTarget("LogWindowTraceTarget"); AddLogTarget(target, "LogWindowTraceTarget"); } @@ -53,7 +59,7 @@ namespace MediaBrowser.ServerApplication.Logging { base.OnClosing(e); - RemoveLogTarget("LogWindowTraceTarget"); + ((NlogManager) _logManager).RemoveTarget("LogWindowTraceTarget"); } /// <summary> @@ -83,8 +89,6 @@ namespace MediaBrowser.ServerApplication.Logging { var config = NLog.LogManager.Configuration; - config.RemoveTarget(name); - target.Name = name; config.AddTarget(name, target); @@ -95,19 +99,6 @@ namespace MediaBrowser.ServerApplication.Logging NLog.LogManager.Configuration = config; } - - /// <summary> - /// Removes the log target. - /// </summary> - /// <param name="name">The name.</param> - private void RemoveLogTarget(string name) - { - var config = NLog.LogManager.Configuration; - - config.RemoveTarget(name); - - NLog.LogManager.Configuration = config; - } /// <summary> /// Shuts down. diff --git a/MediaBrowser.ServerApplication/MainWindow.xaml.cs b/MediaBrowser.ServerApplication/MainWindow.xaml.cs index 9043e007f..22695602c 100644 --- a/MediaBrowser.ServerApplication/MainWindow.xaml.cs +++ b/MediaBrowser.ServerApplication/MainWindow.xaml.cs @@ -125,7 +125,7 @@ namespace MediaBrowser.ServerApplication // Add our log window if specified if (_configurationManager.Configuration.ShowLogWindow) { - Trace.Listeners.Add(new WindowTraceListener(new LogWindow())); + Trace.Listeners.Add(new WindowTraceListener(new LogWindow(_logManager))); } else { diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index 7cf6b2873..1603fc9eb 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -430,6 +430,7 @@ namespace MediaBrowser.WebDashboard.Api "UpdatePasswordPage.js", "UserImagePage.js", "UserProfilesPage.js", + "WizardFinishPage.js", "WizardStartPage.js", "WizardUserPage.js", "SupporterKeyPage.js", diff --git a/MediaBrowser.WebDashboard/Html/scripts/WizardFinishPage.js b/MediaBrowser.WebDashboard/Html/scripts/WizardFinishPage.js new file mode 100644 index 000000000..1633bf140 --- /dev/null +++ b/MediaBrowser.WebDashboard/Html/scripts/WizardFinishPage.js @@ -0,0 +1,16 @@ +var WizardFinishPage = { + + onFinish: function() { + + ApiClient.getServerConfiguration().done(function (config) { + + config.IsStartupWizardCompleted = true; + + ApiClient.updateServerConfiguration(config).done(function() { + Dashboard.navigate('dashboard.html'); + }); + }); + + } + +};
\ No newline at end of file diff --git a/MediaBrowser.WebDashboard/Html/wizardFinish.html b/MediaBrowser.WebDashboard/Html/wizardFinish.html index 06650c4f8..3d51aa0bf 100644 --- a/MediaBrowser.WebDashboard/Html/wizardFinish.html +++ b/MediaBrowser.WebDashboard/Html/wizardFinish.html @@ -16,7 +16,7 @@ <div class="wizardNavigation"> <button type="button" data-iconpos="left" data-icon="arrow-left" data-inline="true" onclick="history.back();">Previous</button> - <button type="button" data-iconpos="right" data-icon="wrench" data-inline="true" onclick="Dashboard.navigate('dashboard.html');" data-theme="b">Go to the Dashboard</button> + <button type="button" data-iconpos="right" data-icon="wrench" data-inline="true" onclick="WizardFinishPage.onFinish();" data-theme="b">Go to the Dashboard</button> </div> </div> diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index a2a1269ee..7d4895020 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -384,6 +384,7 @@ <EmbeddedResource Include="Html\scripts\ItemDetailPage.js" />
</ItemGroup>
<ItemGroup>
+ <EmbeddedResource Include="Html\scripts\WizardFinishPage.js" />
<EmbeddedResource Include="Html\Readme.txt" />
<EmbeddedResource Include="Html\css\images\media\playCircle.png" />
<EmbeddedResource Include="Html\css\images\media\nextTrack.png" />
|
