From 3454f4e8fa47fb3fd1c64332e2ed509b9b162dba Mon Sep 17 00:00:00 2001 From: "Morten@Thinkpad-X220" Date: Tue, 9 Oct 2012 08:49:17 -0200 Subject: [PATCH] Adds Stylesheet repository implementation U4-966 --- .../Repositories/IStylesheetRepository.cs | 8 +++ .../Repositories/StylesheetRepository.cs | 63 +++++++++++++++++++ .../Repositories/TemplateRepository.cs | 4 ++ src/Umbraco.Core/Umbraco.Core.csproj | 2 + 4 files changed, 77 insertions(+) create mode 100644 src/Umbraco.Core/Persistence/Repositories/IStylesheetRepository.cs create mode 100644 src/Umbraco.Core/Persistence/Repositories/StylesheetRepository.cs diff --git a/src/Umbraco.Core/Persistence/Repositories/IStylesheetRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IStylesheetRepository.cs new file mode 100644 index 0000000000..e0888a873d --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/IStylesheetRepository.cs @@ -0,0 +1,8 @@ +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IStylesheetRepository : IRepository + { + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/StylesheetRepository.cs b/src/Umbraco.Core/Persistence/Repositories/StylesheetRepository.cs new file mode 100644 index 0000000000..f69b30fcca --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/StylesheetRepository.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Umbraco.Core.IO; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Persistence.Repositories +{ + /// + /// Represents the Stylesheet Repository + /// + internal class StylesheetRepository : FileRepository, IStylesheetRepository + { + public StylesheetRepository(IUnitOfWork work) + : base(work, FileSystemProviderManager.Current.GetFileSystemProvider("stylesheet")) + { + } + + #region Overrides of FileRepository + + public override Stylesheet Get(string id) + { + if (!FileSystem.FileExists(id)) + { + throw new Exception(string.Format("The file {0} was not found", id)); + } + + var stream = FileSystem.OpenFile(id); + byte[] bytes = new byte[stream.Length]; + stream.Position = 0; + stream.Read(bytes, 0, (int)stream.Length); + var content = Encoding.UTF8.GetString(bytes); + + var path = FileSystem.GetRelativePath(id); + + var stylesheet = new Stylesheet(path) { Content = content }; + return stylesheet; + } + + public override IEnumerable GetAll(params string[] ids) + { + if (ids.Any()) + { + foreach (var id in ids) + { + yield return Get(id); + } + } + else + { + var files = FileSystem.GetFiles("", "*"); + foreach (var file in files) + { + yield return Get(file); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs index c00e94a2e1..1e400e1542 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs @@ -8,8 +8,12 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { + /// + /// Represents the Template Repository + /// internal class TemplateRepository : FileRepository, ITemplateRepository { + //TODO: Figure out how to deal with templates in either Masterpages or Views folders (or in both folders) public TemplateRepository(IUnitOfWork work) : base(work, FileSystemProviderManager.Current.GetFileSystemProvider("template")) { diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index f364eb3b1c..47b1becb9f 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -134,6 +134,7 @@ + @@ -142,6 +143,7 @@ +