From eb94572361e7c116f8760b4e9ad6dd482fd89eb3 Mon Sep 17 00:00:00 2001 From: Claus Date: Wed, 10 Jan 2018 10:55:46 +0100 Subject: [PATCH] updating pr to fit with base. --- src/Umbraco.Web/Editors/TourController.cs | 78 +++++++++---------- src/Umbraco.Web/Editors/TourFilterResolver.cs | 2 +- src/Umbraco.Web/Models/BackOfficeTour.cs | 11 +-- src/Umbraco.Web/Models/BackOfficeTourFile.cs | 3 + src/Umbraco.Web/Models/BackOfficeTourStep.cs | 3 + src/Umbraco.Web/Models/Tour.cs | 22 ------ src/Umbraco.Web/Models/TourStep.cs | 18 ----- src/Umbraco.Web/Umbraco.Web.csproj | 2 - 8 files changed, 51 insertions(+), 88 deletions(-) delete mode 100644 src/Umbraco.Web/Models/Tour.cs delete mode 100644 src/Umbraco.Web/Models/TourStep.cs diff --git a/src/Umbraco.Web/Editors/TourController.cs b/src/Umbraco.Web/Editors/TourController.cs index fa1f2a1d2d..2addf0b07e 100644 --- a/src/Umbraco.Web/Editors/TourController.cs +++ b/src/Umbraco.Web/Editors/TourController.cs @@ -2,11 +2,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Text.RegularExpressions; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Umbraco.Core.Configuration; using Umbraco.Core.IO; +using Umbraco.Core.Logging; using Umbraco.Web.Models; using Umbraco.Web.Mvc; using Umbraco.Web.WebApi.Filters; @@ -25,43 +24,19 @@ namespace Umbraco.Web.Editors if (UmbracoConfig.For.UmbracoSettings().BackOffice.Tours.EnableTours == false) return result; - var toursPath = Path.Combine(IOHelper.MapPath(SystemDirectories.Config), "BackOfficeTours"); - if (Directory.Exists(toursPath) == false) - return result; - - var tourFiles = Directory.GetFiles(toursPath, "*.json") - .OrderBy(x => x, StringComparer.InvariantCultureIgnoreCase); - var disabledTours = TourFilterResolver.Current.DisabledTours; - - var coreTourFiles = Directory.GetFiles( - Path.Combine(IOHelper.MapPath(SystemDirectories.Config), "BackOfficeTours"), "*.json"); - - foreach (var tourFile in coreTourFiles) + //add core tour files + var coreToursPath = Path.Combine(IOHelper.MapPath(SystemDirectories.Config), "BackOfficeTours"); + if (Directory.Exists(coreToursPath)) { - try - { - var contents = File.ReadAllText(tourFile); + var coreTourFiles = Directory.GetFiles(coreToursPath, "*.json"); - result.Add(new BackOfficeTourFile + foreach (var tourFile in coreTourFiles) { - FileName = Path.GetFileNameWithoutExtension(tourFile), - Tours = JsonConvert.DeserializeObject(contents) - }); + TryParseTourFile(tourFile, result); } - catch (IOException e) - { - Logger.Error("Error while trying to read file: " + tourFile, e); - throw new IOException("Error while trying to read file: " + tourFile, e); - } - catch (JsonReaderException e) - { - Logger.Error("Error while trying to parse content as tour data: " + tourFile, e); - throw new JsonReaderException("Error while trying to parse content as tour data: " + tourFile, e); - } - } - //collect all tour files in packges + //collect all tour files in packages foreach (var plugin in Directory.EnumerateDirectories(IOHelper.MapPath(SystemDirectories.AppPlugins))) { var pluginName = Path.GetFileName(plugin.TrimEnd('\\')); @@ -72,13 +47,7 @@ namespace Umbraco.Web.Editors { foreach (var tourFile in Directory.EnumerateFiles(tourDir, "*.json")) { - var contents = File.ReadAllText(tourFile); - result.Add(new BackOfficeTourFile - { - FileName = Path.GetFileNameWithoutExtension(tourFile), - PluginName = pluginName, - Tours = JsonConvert.DeserializeObject(contents) - }); + TryParseTourFile(tourFile, result, pluginName); } } } @@ -86,5 +55,34 @@ namespace Umbraco.Web.Editors return result.OrderBy(x => x.FileName, StringComparer.InvariantCultureIgnoreCase); } + + private void TryParseTourFile(string tourFile, List result, string pluginName = null) + { + try + { + var contents = File.ReadAllText(tourFile); + var tours = JsonConvert.DeserializeObject(contents); + var disabledTours = TourFilterResolver.Current.DisabledTours; + + result.Add(new BackOfficeTourFile + { + FileName = Path.GetFileNameWithoutExtension(tourFile), + PluginName = pluginName, + Tours = tours + .Where(x => disabledTours.Contains(x.Alias, StringComparer.InvariantCultureIgnoreCase) == false) + .ToArray() + }); + } + catch (IOException e) + { + Logger.Error("Error while trying to read file: " + tourFile, e); + throw new IOException("Error while trying to read file: " + tourFile, e); + } + catch (JsonReaderException e) + { + Logger.Error("Error while trying to parse content as tour data: " + tourFile, e); + throw new JsonReaderException("Error while trying to parse content as tour data: " + tourFile, e); + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Web/Editors/TourFilterResolver.cs b/src/Umbraco.Web/Editors/TourFilterResolver.cs index 5eafc19b3c..238df8c6c1 100644 --- a/src/Umbraco.Web/Editors/TourFilterResolver.cs +++ b/src/Umbraco.Web/Editors/TourFilterResolver.cs @@ -25,7 +25,7 @@ namespace Umbraco.Web.Editors _disabledTours.Add(tour); } - public IEnumerable DisabledTours + public string[] DisabledTours { get { return _disabledTours.ToArray(); } } diff --git a/src/Umbraco.Web/Models/BackOfficeTour.cs b/src/Umbraco.Web/Models/BackOfficeTour.cs index 1e0f345b52..a973a92429 100644 --- a/src/Umbraco.Web/Models/BackOfficeTour.cs +++ b/src/Umbraco.Web/Models/BackOfficeTour.cs @@ -1,11 +1,10 @@ -using System; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; +using System.Runtime.Serialization; namespace Umbraco.Web.Models { + /// + /// A model representing a tour. + /// [DataContract(Name = "tour", Namespace = "")] public class BackOfficeTour { @@ -15,6 +14,8 @@ namespace Umbraco.Web.Models public string Alias { get; set; } [DataMember(Name = "group")] public string Group { get; set; } + [DataMember(Name = "groupOrder")] + public int GroupOrder { get; set; } [DataMember(Name = "allowDisable")] public bool AllowDisable { get; set; } [DataMember(Name = "steps")] diff --git a/src/Umbraco.Web/Models/BackOfficeTourFile.cs b/src/Umbraco.Web/Models/BackOfficeTourFile.cs index 69b35c8088..7291a89ff4 100644 --- a/src/Umbraco.Web/Models/BackOfficeTourFile.cs +++ b/src/Umbraco.Web/Models/BackOfficeTourFile.cs @@ -3,6 +3,9 @@ using System.Runtime.Serialization; namespace Umbraco.Web.Models { + /// + /// A model representing the file used to load a tour. + /// [DataContract(Name = "tourFile", Namespace = "")] public class BackOfficeTourFile { diff --git a/src/Umbraco.Web/Models/BackOfficeTourStep.cs b/src/Umbraco.Web/Models/BackOfficeTourStep.cs index e0371bf4b5..55af21cfd4 100644 --- a/src/Umbraco.Web/Models/BackOfficeTourStep.cs +++ b/src/Umbraco.Web/Models/BackOfficeTourStep.cs @@ -2,6 +2,9 @@ namespace Umbraco.Web.Models { + /// + /// A model representing a step in a tour. + /// [DataContract(Name = "step", Namespace = "")] public class BackOfficeTourStep { diff --git a/src/Umbraco.Web/Models/Tour.cs b/src/Umbraco.Web/Models/Tour.cs deleted file mode 100644 index f130ccfc24..0000000000 --- a/src/Umbraco.Web/Models/Tour.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Runtime.Serialization; - -namespace Umbraco.Web.Models -{ - /// - /// A model representing a tour. - /// - [DataContract(Name = "tour", Namespace = "")] - public class Tour - { - [DataMember(Name = "name")] - public string Name { get; set; } - [DataMember(Name = "alias")] - public string Alias { get; set; } - [DataMember(Name = "group")] - public string Group { get; set; } - [DataMember(Name = "groupOrder")] - public int GroupOrder { get; set; } - [DataMember(Name = "steps")] - public TourStep[] Steps { get; set; } - } -} \ No newline at end of file diff --git a/src/Umbraco.Web/Models/TourStep.cs b/src/Umbraco.Web/Models/TourStep.cs deleted file mode 100644 index 8ed75872d9..0000000000 --- a/src/Umbraco.Web/Models/TourStep.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Runtime.Serialization; - -namespace Umbraco.Web.Models -{ - /// - /// A model representing a step in a tour. - /// - [DataContract(Name = "step", Namespace = "")] - public class TourStep - { - [DataMember(Name = "title")] - public string Title { get; set; } - [DataMember(Name = "content")] - public string Content { get; set; } - [DataMember(Name = "type")] - public string Type { get; set; } - } -} \ No newline at end of file diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 089f024021..d37e4972fd 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -431,9 +431,7 @@ - -