diff --git a/lib/npgsql/de/Npgsql.resources.dll b/lib/npgsql/de/Npgsql.resources.dll new file mode 100644 index 000000000..15b259ecd Binary files /dev/null and b/lib/npgsql/de/Npgsql.resources.dll differ diff --git a/lib/npgsql/es/Npgsql.resources.dll b/lib/npgsql/es/Npgsql.resources.dll new file mode 100644 index 000000000..851d5a16e Binary files /dev/null and b/lib/npgsql/es/Npgsql.resources.dll differ diff --git a/lib/npgsql/fi/Npgsql.resources.dll b/lib/npgsql/fi/Npgsql.resources.dll new file mode 100644 index 000000000..a70fc30c7 Binary files /dev/null and b/lib/npgsql/fi/Npgsql.resources.dll differ diff --git a/lib/npgsql/fr/Npgsql.resources.dll b/lib/npgsql/fr/Npgsql.resources.dll new file mode 100644 index 000000000..21ff7941e Binary files /dev/null and b/lib/npgsql/fr/Npgsql.resources.dll differ diff --git a/lib/npgsql/ja/Npgsql.resources.dll b/lib/npgsql/ja/Npgsql.resources.dll new file mode 100644 index 000000000..db5efcd11 Binary files /dev/null and b/lib/npgsql/ja/Npgsql.resources.dll differ diff --git a/lib/npgsql/zh-CN/Npgsql.resources.dll b/lib/npgsql/zh-CN/Npgsql.resources.dll new file mode 100644 index 000000000..a7986990a Binary files /dev/null and b/lib/npgsql/zh-CN/Npgsql.resources.dll differ diff --git a/src/Orchard.Web/Core/Reports/AdminMenu.cs b/src/Orchard.Web/Core/Reports/AdminMenu.cs index 1a48c91f5..f912d2f59 100644 --- a/src/Orchard.Web/Core/Reports/AdminMenu.cs +++ b/src/Orchard.Web/Core/Reports/AdminMenu.cs @@ -1,17 +1,17 @@ -using Orchard.Localization; -using Orchard.Security; -using Orchard.UI.Navigation; - -namespace Orchard.Core.Reports { - public class AdminMenu : INavigationProvider { - public Localizer T { get; set; } - public string MenuName { get { return "admin"; } } - - public void GetNavigation(NavigationBuilder builder) { - builder.AddImageSet("reports") - .Add(T("Reports"), "12", - menu => menu.Add(T("View"), "0", item => item.Action("Index", "Admin", new { area = "Reports" }) - .Permission(StandardPermissions.SiteOwner))); - } - } +using Orchard.Localization; +using Orchard.Security; +using Orchard.UI.Navigation; + +namespace Orchard.Core.Reports { + public class AdminMenu : INavigationProvider { + public Localizer T { get; set; } + public string MenuName { get { return "admin"; } } + + public void GetNavigation(NavigationBuilder builder) { + builder.AddImageSet("reports") + .Add(T("Reports"), "12", + menu => menu.Add(T("View"), "0", item => item.Action("Index", "Admin", new { area = "Reports" }) + .Permission(StandardPermissions.SiteOwner))); + } + } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs b/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs index 07008d078..a1c548d40 100644 --- a/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs @@ -1,42 +1,42 @@ -using System.Linq; -using System.Web.Mvc; -using Orchard.Core.Reports.ViewModels; -using Orchard.Localization; -using Orchard.Reports.Services; -using Orchard.Security; - -namespace Orchard.Core.Reports.Controllers { - public class AdminController : Controller { - private readonly IReportsManager _reportsManager; - - public AdminController( - IOrchardServices services, - IReportsManager reportsManager) { - Services = services; - _reportsManager = reportsManager; - T = NullLocalizer.Instance; - } - - public IOrchardServices Services { get; set; } - public Localizer T { get; set; } - - public ActionResult Index() { - if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to list reports"))) - return new HttpUnauthorizedResult(); - - var model = new ReportsAdminIndexViewModel { Reports = _reportsManager.GetReports().ToList() }; - - return View(model); - } - - public ActionResult Display(int id) { - if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to display report"))) - return new HttpUnauthorizedResult(); - - var model = new DisplayReportViewModel { Report = _reportsManager.Get(id) }; - - return View(model); - } - - } +using System.Linq; +using System.Web.Mvc; +using Orchard.Core.Reports.ViewModels; +using Orchard.Localization; +using Orchard.Reports.Services; +using Orchard.Security; + +namespace Orchard.Core.Reports.Controllers { + public class AdminController : Controller { + private readonly IReportsManager _reportsManager; + + public AdminController( + IOrchardServices services, + IReportsManager reportsManager) { + Services = services; + _reportsManager = reportsManager; + T = NullLocalizer.Instance; + } + + public IOrchardServices Services { get; set; } + public Localizer T { get; set; } + + public ActionResult Index() { + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to list reports"))) + return new HttpUnauthorizedResult(); + + var model = new ReportsAdminIndexViewModel { Reports = _reportsManager.GetReports().ToList() }; + + return View(model); + } + + public ActionResult Display(int id) { + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to display report"))) + return new HttpUnauthorizedResult(); + + var model = new DisplayReportViewModel { Report = _reportsManager.Get(id) }; + + return View(model); + } + + } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/Module.txt b/src/Orchard.Web/Core/Reports/Module.txt index b7eea56cd..1ba870b7c 100644 --- a/src/Orchard.Web/Core/Reports/Module.txt +++ b/src/Orchard.Web/Core/Reports/Module.txt @@ -1,9 +1,9 @@ -Name: Reports -AntiForgery: enabled -Author: The Orchard Team -Website: http://orchardproject.net -Version: 1.9.1 -OrchardVersion: 1.9 -Description: The dashboard module is providing the reports screen of the application. -FeatureDescription: Reports management. -Category: Core +Name: Reports +AntiForgery: enabled +Author: The Orchard Team +Website: http://orchardproject.net +Version: 1.9.1 +OrchardVersion: 1.9 +Description: The dashboard module is providing the reports screen of the application. +FeatureDescription: Reports management. +Category: Core diff --git a/src/Orchard.Web/Core/Reports/Routes.cs b/src/Orchard.Web/Core/Reports/Routes.cs index c3e286fa8..4f28dc0ad 100644 --- a/src/Orchard.Web/Core/Reports/Routes.cs +++ b/src/Orchard.Web/Core/Reports/Routes.cs @@ -1,33 +1,33 @@ -using System.Collections.Generic; -using System.Web.Mvc; -using System.Web.Routing; -using Orchard.Mvc.Routes; - -namespace Orchard.Core.Reports { - public class Routes : IRouteProvider { - public void GetRoutes(ICollection routes) { - foreach (var routeDescriptor in GetRoutes()) - routes.Add(routeDescriptor); - } - - public IEnumerable GetRoutes() { - return new[] { - new RouteDescriptor { - Priority = -5, - Route = new Route( - "Admin/Reports", - new RouteValueDictionary { - {"area", "Reports"}, - {"controller", "Admin"}, - {"action", "Index"} - }, - new RouteValueDictionary(), - new RouteValueDictionary { - {"area", "Reports"} - }, - new MvcRouteHandler()) - } - }; - } - } +using System.Collections.Generic; +using System.Web.Mvc; +using System.Web.Routing; +using Orchard.Mvc.Routes; + +namespace Orchard.Core.Reports { + public class Routes : IRouteProvider { + public void GetRoutes(ICollection routes) { + foreach (var routeDescriptor in GetRoutes()) + routes.Add(routeDescriptor); + } + + public IEnumerable GetRoutes() { + return new[] { + new RouteDescriptor { + Priority = -5, + Route = new Route( + "Admin/Reports", + new RouteValueDictionary { + {"area", "Reports"}, + {"controller", "Admin"}, + {"action", "Index"} + }, + new RouteValueDictionary(), + new RouteValueDictionary { + {"area", "Reports"} + }, + new MvcRouteHandler()) + } + }; + } + } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/Styles/Web.config b/src/Orchard.Web/Core/Reports/Styles/Web.config index 74c71f22b..11135c337 100644 --- a/src/Orchard.Web/Core/Reports/Styles/Web.config +++ b/src/Orchard.Web/Core/Reports/Styles/Web.config @@ -1,16 +1,16 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Core/Reports/Styles/menu.reports-admin.css b/src/Orchard.Web/Core/Reports/Styles/menu.reports-admin.css index 23320f29e..549ec1efd 100644 --- a/src/Orchard.Web/Core/Reports/Styles/menu.reports-admin.css +++ b/src/Orchard.Web/Core/Reports/Styles/menu.reports-admin.css @@ -1,6 +1,6 @@ -.navicon-reports { -background-image:url(images/menu.reports.png) !important; -} -.navicon-reports:hover { -background-position:0 -30px !important; +.navicon-reports { +background-image:url(images/menu.reports.png) !important; +} +.navicon-reports:hover { +background-position:0 -30px !important; } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/ViewModels/DisplayReportViewModel.cs b/src/Orchard.Web/Core/Reports/ViewModels/DisplayReportViewModel.cs index adb2dd6b4..d43eaa022 100644 --- a/src/Orchard.Web/Core/Reports/ViewModels/DisplayReportViewModel.cs +++ b/src/Orchard.Web/Core/Reports/ViewModels/DisplayReportViewModel.cs @@ -1,7 +1,7 @@ -using Orchard.Reports; - -namespace Orchard.Core.Reports.ViewModels { - public class DisplayReportViewModel { - public Report Report { get; set; } - } +using Orchard.Reports; + +namespace Orchard.Core.Reports.ViewModels { + public class DisplayReportViewModel { + public Report Report { get; set; } + } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/ViewModels/ReportsAdminIndexViewModel.cs b/src/Orchard.Web/Core/Reports/ViewModels/ReportsAdminIndexViewModel.cs index c7bbf9240..9ad86086f 100644 --- a/src/Orchard.Web/Core/Reports/ViewModels/ReportsAdminIndexViewModel.cs +++ b/src/Orchard.Web/Core/Reports/ViewModels/ReportsAdminIndexViewModel.cs @@ -1,8 +1,8 @@ -using System.Collections.Generic; -using Orchard.Reports; - -namespace Orchard.Core.Reports.ViewModels { - public class ReportsAdminIndexViewModel { - public IList Reports { get; set; } - } +using System.Collections.Generic; +using Orchard.Reports; + +namespace Orchard.Core.Reports.ViewModels { + public class ReportsAdminIndexViewModel { + public IList Reports { get; set; } + } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/Views/Admin/Display.cshtml b/src/Orchard.Web/Core/Reports/Views/Admin/Display.cshtml index 6eb95e422..5dc75da1c 100644 --- a/src/Orchard.Web/Core/Reports/Views/Admin/Display.cshtml +++ b/src/Orchard.Web/Core/Reports/Views/Admin/Display.cshtml @@ -1,39 +1,39 @@ -@model DisplayReportViewModel -@using Orchard.Core.Reports.ViewModels; - -@{ Layout.Title = T("Display Report").ToString(); } - -@using(Html.BeginFormAntiForgeryPost()) { - @Html.ValidationSummary() -
- - - - - - - - - - - - - - - - @foreach (var reportEntry in Model.Report.Entries) { - - - - - - } -
@T("Type")@T("Message")@T("Date")
- @reportEntry.Type - - @reportEntry.Message - - @reportEntry.Utc.ToLocalTime().ToShortDateString() @reportEntry.Utc.ToLocalTime().ToShortTimeString() -
-
+@model DisplayReportViewModel +@using Orchard.Core.Reports.ViewModels; + +@{ Layout.Title = T("Display Report").ToString(); } + +@using(Html.BeginFormAntiForgeryPost()) { + @Html.ValidationSummary() +
+ + + + + + + + + + + + + + + + @foreach (var reportEntry in Model.Report.Entries) { + + + + + + } +
@T("Type")@T("Message")@T("Date")
+ @reportEntry.Type + + @reportEntry.Message + + @reportEntry.Utc.ToLocalTime().ToShortDateString() @reportEntry.Utc.ToLocalTime().ToShortTimeString() +
+
} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Reports/Views/Admin/Index.cshtml b/src/Orchard.Web/Core/Reports/Views/Admin/Index.cshtml index fbfb66dca..699ff0d76 100644 --- a/src/Orchard.Web/Core/Reports/Views/Admin/Index.cshtml +++ b/src/Orchard.Web/Core/Reports/Views/Admin/Index.cshtml @@ -1,39 +1,39 @@ -@model ReportsAdminIndexViewModel -@using Orchard.Core.Reports.ViewModels; - -@{ Layout.Title = T("Reports").ToString(); } - -@using(Html.BeginFormAntiForgeryPost()) { - @Html.ValidationSummary() -
- - - - - - - - - - - - - - - - @foreach (var report in Model.Reports) { - - - - - - } -
@T("Name")@T("Title")@T("Date")
- @Html.ActionLink(report.ActivityName, "Display", new {id = report.ReportId}) - - @report.Title - - @report.Utc.ToLocalTime().ToShortDateString() @report.Utc.ToLocalTime().ToShortTimeString() -
-
+@model ReportsAdminIndexViewModel +@using Orchard.Core.Reports.ViewModels; + +@{ Layout.Title = T("Reports").ToString(); } + +@using(Html.BeginFormAntiForgeryPost()) { + @Html.ValidationSummary() +
+ + + + + + + + + + + + + + + + @foreach (var report in Model.Reports) { + + + + + + } +
@T("Name")@T("Title")@T("Date")
+ @Html.ActionLink(report.ActivityName, "Display", new {id = report.ReportId}) + + @report.Title + + @report.Utc.ToLocalTime().ToShortDateString() @report.Utc.ToLocalTime().ToShortTimeString() +
+
} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs index 5bb1a0c59..8eef6709d 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs @@ -15,6 +15,12 @@ using Orchard.Localization.Services; using Orchard.Mvc; using Orchard.Security; using Orchard.UI.Notify; +using Orchard.Utility.Extensions; +using Orchard.Localization.Services; +using Orchard.Localization.Models; +using Orchard.Mvc; +using System.Web; +using Orchard.ContentManagement.Aspects; namespace Orchard.Autoroute.Drivers { public class AutoroutePartDriver : ContentPartDriver { @@ -56,7 +62,7 @@ namespace Orchard.Autoroute.Drivers { protected override DriverResult Editor(AutoroutePart part, IUpdateModel updater, dynamic shapeHelper) { var settings = part.TypePartDefinition.Settings.GetModel(); var itemCulture = _cultureManager.GetSiteCulture(); - + // If we are editing an existing content item. if (part.Record.Id != 0) { ContentItem contentItem = _contentManager.Get(part.Record.ContentItemRecord.Id); diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj b/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj index f0994e436..9dc0b7302 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj @@ -88,6 +88,30 @@ + + + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} + Orchard.Framework + false + + + {9916839C-39FC-4CEB-A5AF-89CA7E87119F} + Orchard.Core + false + + + {475B6C45-B27C-438B-8966-908B9D6D1077} + Orchard.Alias + + + {0e7646e8-fe8f-43c1-8799-d97860925ec4} + Orchard.ContentTypes + + + {6F759635-13D7-4E94-BCC9-80445D63F117} + Orchard.Tokens + + @@ -115,28 +139,7 @@ - - - {2d1d92bb-4555-4cbe-8d0e-63563d6ce4c6} - Orchard.Framework - - - {9916839c-39fc-4ceb-a5af-89ca7e87119f} - Orchard.Core - - - {475b6c45-b27c-438b-8966-908b9d6d1077} - Orchard.Alias - - - {0e7646e8-fe8f-43c1-8799-d97860925ec4} - Orchard.ContentTypes - - - {6f759635-13d7-4e94-bcc9-80445d63f117} - Orchard.Tokens - - + Designer @@ -153,20 +156,20 @@ - $(ProjectDir)\..\Manifests - - diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs index 2fd0a09cd..4da9449f7 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs @@ -148,8 +148,8 @@ namespace Orchard.Autoroute.Services { } else { settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture }); return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture }; - } } + } // return a default pattern if set var patternCultureSearch = settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) ? culture : null; @@ -159,11 +159,11 @@ namespace Orchard.Autoroute.Services { if (settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == defaultPatternCultureSearch).FirstOrDefault().PatternIndex)) != null) { return settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == defaultPatternCultureSearch).FirstOrDefault().PatternIndex)); }; - } + } // return a default pattern if none is defined return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture }; - } + } public void RemoveAliases(AutoroutePart part) { _aliasService.Delete(part.Path, AliasSource); diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/ImportResult.cshtml b/src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/ImportResult.cshtml index 17c556426..114e42455 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/ImportResult.cshtml +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/ImportResult.cshtml @@ -1,6 +1,6 @@ @model Orchard.ImportExport.ViewModels.ImportResultViewModel -@{ - Layout.Title = T("Import Result").ToString(); +@{ + Layout.Title = T("Import Result").ToString(); } @if (Model.Result.IsSuccessful) {
@@ -14,14 +14,14 @@ else { }

@T("Recipe steps")

- - + + - - + + @foreach (var step in Model.Result.Steps) { @@ -30,7 +30,7 @@ else { - } + } -
@T("Step") @T("Executed") @T("Result") @T("Message")
@if (step.IsSuccessful) { @T("Successful") } else if (step.IsCompleted) { @T("Failed") } @step.ErrorMessage
+ diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index 07651055d..a6a312271 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -597,20 +597,20 @@ - $(ProjectDir)\..\Manifests - - diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj b/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj index acb29258f..247a02ffc 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj +++ b/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj @@ -81,6 +81,7 @@ {66fccd76-2761-47e3-8d11-b45d0001ddaa} Orchard.Autoroute + false {f301ef7d-f19c-4d83-aa94-cb64f29c037d} @@ -120,11 +121,11 @@ - \ No newline at end of file diff --git a/src/Orchard/Reports/Report.cs b/src/Orchard/Reports/Report.cs index 5b557ba9f..8176bddf9 100644 --- a/src/Orchard/Reports/Report.cs +++ b/src/Orchard/Reports/Report.cs @@ -1,16 +1,16 @@ -using System; -using System.Collections.Generic; - -namespace Orchard.Reports { - public class Report { - public Report() { - Entries = new List(); - } - - public IList Entries { get; set;} - public int ReportId { get; set; } - public string Title { get; set; } - public string ActivityName { get; set; } - public DateTime Utc { get; set; } - } -} +using System; +using System.Collections.Generic; + +namespace Orchard.Reports { + public class Report { + public Report() { + Entries = new List(); + } + + public IList Entries { get; set;} + public int ReportId { get; set; } + public string Title { get; set; } + public string ActivityName { get; set; } + public DateTime Utc { get; set; } + } +} diff --git a/src/Orchard/Reports/ReportEntry.cs b/src/Orchard/Reports/ReportEntry.cs index 482f89e22..c94b2de9c 100644 --- a/src/Orchard/Reports/ReportEntry.cs +++ b/src/Orchard/Reports/ReportEntry.cs @@ -1,15 +1,15 @@ -using System; - -namespace Orchard.Reports { - public enum ReportEntryType { - Information, - Warning, - Error - } - - public class ReportEntry { - public ReportEntryType Type { get; set; } - public string Message { get; set; } - public DateTime Utc { get; set; } - } -} +using System; + +namespace Orchard.Reports { + public enum ReportEntryType { + Information, + Warning, + Error + } + + public class ReportEntry { + public ReportEntryType Type { get; set; } + public string Message { get; set; } + public DateTime Utc { get; set; } + } +} diff --git a/src/Orchard/Reports/ReportExtentions.cs b/src/Orchard/Reports/ReportExtentions.cs index 2ebb2ff01..45a66fe91 100644 --- a/src/Orchard/Reports/ReportExtentions.cs +++ b/src/Orchard/Reports/ReportExtentions.cs @@ -1,35 +1,35 @@ -using Orchard.Reports; -using Orchard.Reports.Services; - -public static class ReportExtentions { - /// - /// Adds a new report entry of type information to a report that was previously registered. - /// - /// - /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. - /// The message to include in the entry. - public static void Information(this IReportsCoordinator reportCoordinator, string reportKey, string message) { - reportCoordinator.Add(reportKey, ReportEntryType.Information, message); - } - - /// - /// Adds a new report entry of type warning to a report that was previously registered. - /// - /// - /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. - /// The message to include in the entry. - public static void Warning(this IReportsCoordinator reportCoordinator, string reportKey, string message) { - reportCoordinator.Add(reportKey, ReportEntryType.Warning, message); - } - - /// - /// Adds a new report entry of type error to a report that was previously registered. - /// - /// - /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. - /// The message to include in the entry. - public static void Error(this IReportsCoordinator reportCoordinator, string reportKey, string message) { - reportCoordinator.Add(reportKey, ReportEntryType.Error, message); - } -} - +using Orchard.Reports; +using Orchard.Reports.Services; + +public static class ReportExtentions { + /// + /// Adds a new report entry of type information to a report that was previously registered. + /// + /// + /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. + /// The message to include in the entry. + public static void Information(this IReportsCoordinator reportCoordinator, string reportKey, string message) { + reportCoordinator.Add(reportKey, ReportEntryType.Information, message); + } + + /// + /// Adds a new report entry of type warning to a report that was previously registered. + /// + /// + /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. + /// The message to include in the entry. + public static void Warning(this IReportsCoordinator reportCoordinator, string reportKey, string message) { + reportCoordinator.Add(reportKey, ReportEntryType.Warning, message); + } + + /// + /// Adds a new report entry of type error to a report that was previously registered. + /// + /// + /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. + /// The message to include in the entry. + public static void Error(this IReportsCoordinator reportCoordinator, string reportKey, string message) { + reportCoordinator.Add(reportKey, ReportEntryType.Error, message); + } +} + diff --git a/src/Orchard/Reports/Services/IReportsCoordinator.cs b/src/Orchard/Reports/Services/IReportsCoordinator.cs index 659f86f91..968d0166e 100644 --- a/src/Orchard/Reports/Services/IReportsCoordinator.cs +++ b/src/Orchard/Reports/Services/IReportsCoordinator.cs @@ -1,30 +1,30 @@ -namespace Orchard.Reports.Services { - /// - /// Exposes a simplified interface for creating reports. Reports provide user-accessible log-like functionality. - /// - /// - /// can be used too to create reports directly. - /// - public interface IReportsCoordinator : IDependency { - /// - /// Adds a new report entry to a report that was previously registered. - /// - /// - /// Entries can be only added to a report that was previously registered through Register(). - /// - /// - /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. - /// Type of the entry. - /// The message to include in the entry. - void Add(string reportKey, ReportEntryType type, string message); - - /// - /// Registers a new report so entries can be added to it. - /// - /// Key, i.e. technical name of the report. - /// Name of the activity the report is about (e.g. "Upgrade"). - /// A title better describing what the report is about (e.g. "Migrating routes of Pages, Blog Posts"). - /// The report's numerical ID. - int Register(string reportKey, string activityName, string title); - } -} +namespace Orchard.Reports.Services { + /// + /// Exposes a simplified interface for creating reports. Reports provide user-accessible log-like functionality. + /// + /// + /// can be used too to create reports directly. + /// + public interface IReportsCoordinator : IDependency { + /// + /// Adds a new report entry to a report that was previously registered. + /// + /// + /// Entries can be only added to a report that was previously registered through Register(). + /// + /// + /// Key, i.e. technical name of the report. Should be the same as the one used when registering the report. + /// Type of the entry. + /// The message to include in the entry. + void Add(string reportKey, ReportEntryType type, string message); + + /// + /// Registers a new report so entries can be added to it. + /// + /// Key, i.e. technical name of the report. + /// Name of the activity the report is about (e.g. "Upgrade"). + /// A title better describing what the report is about (e.g. "Migrating routes of Pages, Blog Posts"). + /// The report's numerical ID. + int Register(string reportKey, string activityName, string title); + } +} diff --git a/src/Orchard/Reports/Services/IReportsManager.cs b/src/Orchard/Reports/Services/IReportsManager.cs index f2006adf4..cacfe4b90 100644 --- a/src/Orchard/Reports/Services/IReportsManager.cs +++ b/src/Orchard/Reports/Services/IReportsManager.cs @@ -1,17 +1,17 @@ -using System.Collections.Generic; - -namespace Orchard.Reports.Services { - /// - /// Service for handling reports. Reports provide user-accessible log-like functionality. - /// - /// - /// You can use to create reports through a simplified interface. - /// - public interface IReportsManager : ISingletonDependency { - void Add(int reportId, ReportEntryType type, string message); - int CreateReport(string title, string activityName); - Report Get(int reportId); - IEnumerable GetReports(); - void Flush(); - } -} +using System.Collections.Generic; + +namespace Orchard.Reports.Services { + /// + /// Service for handling reports. Reports provide user-accessible log-like functionality. + /// + /// + /// You can use to create reports through a simplified interface. + /// + public interface IReportsManager : ISingletonDependency { + void Add(int reportId, ReportEntryType type, string message); + int CreateReport(string title, string activityName); + Report Get(int reportId); + IEnumerable GetReports(); + void Flush(); + } +} diff --git a/src/Orchard/Reports/Services/IReportsPersister.cs b/src/Orchard/Reports/Services/IReportsPersister.cs index b79cd9e3b..6ccadbc7f 100644 --- a/src/Orchard/Reports/Services/IReportsPersister.cs +++ b/src/Orchard/Reports/Services/IReportsPersister.cs @@ -1,14 +1,14 @@ -using System.Collections.Generic; - -namespace Orchard.Reports.Services { - /// - /// Defines a service that can be used to persist reports. - /// - /// - /// Implementations of this interface are commonly used from implementations. - /// - public interface IReportsPersister : IDependency { - IEnumerable Fetch(); - void Save(IEnumerable reports); - } -} +using System.Collections.Generic; + +namespace Orchard.Reports.Services { + /// + /// Defines a service that can be used to persist reports. + /// + /// + /// Implementations of this interface are commonly used from implementations. + /// + public interface IReportsPersister : IDependency { + IEnumerable Fetch(); + void Save(IEnumerable reports); + } +} diff --git a/src/Orchard/Reports/Services/ReportsCoordinator.cs b/src/Orchard/Reports/Services/ReportsCoordinator.cs index a399b3bd9..0fc0604ae 100644 --- a/src/Orchard/Reports/Services/ReportsCoordinator.cs +++ b/src/Orchard/Reports/Services/ReportsCoordinator.cs @@ -1,36 +1,36 @@ -using System; -using System.Collections.Generic; -using Orchard.Logging; - -namespace Orchard.Reports.Services { - public class ReportsCoordinator : IReportsCoordinator, IDisposable { - private readonly IReportsManager _reportsManager; - private readonly IDictionary _reports; - - public ReportsCoordinator(IReportsManager reportsManager) { - _reportsManager = reportsManager; - Logger = NullLogger.Instance; - _reports = new Dictionary(); - } - - public ILogger Logger { get; set; } - public void Dispose() { - _reportsManager.Flush(); - } - - public void Add(string reportKey, ReportEntryType type, string message) { - if(!_reports.ContainsKey(reportKey)) { - // ignore message if no corresponding report - return; - } - - _reportsManager.Add(_reports[reportKey], type, message); - } - - public int Register(string reportKey, string activityName, string title) { - int reportId = _reportsManager.CreateReport(title, activityName); - _reports.Add(reportKey, reportId); - return reportId; - } - } -} +using System; +using System.Collections.Generic; +using Orchard.Logging; + +namespace Orchard.Reports.Services { + public class ReportsCoordinator : IReportsCoordinator, IDisposable { + private readonly IReportsManager _reportsManager; + private readonly IDictionary _reports; + + public ReportsCoordinator(IReportsManager reportsManager) { + _reportsManager = reportsManager; + Logger = NullLogger.Instance; + _reports = new Dictionary(); + } + + public ILogger Logger { get; set; } + public void Dispose() { + _reportsManager.Flush(); + } + + public void Add(string reportKey, ReportEntryType type, string message) { + if(!_reports.ContainsKey(reportKey)) { + // ignore message if no corresponding report + return; + } + + _reportsManager.Add(_reports[reportKey], type, message); + } + + public int Register(string reportKey, string activityName, string title) { + int reportId = _reportsManager.CreateReport(title, activityName); + _reports.Add(reportKey, reportId); + return reportId; + } + } +} diff --git a/src/Orchard/Reports/Services/ReportsManager.cs b/src/Orchard/Reports/Services/ReportsManager.cs index 7928e316a..ed358e96c 100644 --- a/src/Orchard/Reports/Services/ReportsManager.cs +++ b/src/Orchard/Reports/Services/ReportsManager.cs @@ -1,74 +1,74 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Orchard.Logging; - -namespace Orchard.Reports.Services { - public class ReportsManager : IReportsManager { - private readonly IReportsPersister _reportsPersister; - private List _reports; - private static readonly object _synLock = new object(); - private bool _isDirty; - - public ReportsManager(IReportsPersister reportsPersister) { - _reportsPersister = reportsPersister; - Logger = NullLogger.Instance; - } - - public ILogger Logger { get; set; } - - public void Add(int reportId, ReportEntryType type, string message) { - lock ( _synLock ) { - LoadReports(); - _isDirty = true; - var report = Get(reportId); - if(report == null) { - return; - } - report.Entries.Add(new ReportEntry {Message = message, Type = type, Utc = DateTime.UtcNow}); - } - } - - public int CreateReport(string title, string activityName) { - lock ( _synLock ) { - LoadReports(); - _isDirty = true; - var reportId = _reports.Count == 0 ? 1 : _reports.Max(r => r.ReportId) + 1; - var report = new Report {ActivityName = activityName, ReportId = reportId, Title = title, Utc = DateTime.UtcNow}; - _reports.Add(report); - return reportId; - } - } - - public Report Get(int reportId) { - lock(_synLock) { - LoadReports(); - return _reports.Where(r => r.ReportId == reportId).FirstOrDefault(); - } - } - - public IEnumerable GetReports() { - lock ( _synLock ) { - LoadReports(); - return _reports.ToList(); - } - } - - public void Flush() { - if ( _reports == null || !_isDirty) { - return; - } - - lock ( _synLock ) { - _reportsPersister.Save(_reports); - _isDirty = false; - } - } - - private void LoadReports() { - if(_reports == null) { - _reports = _reportsPersister.Fetch().ToList(); - } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using Orchard.Logging; + +namespace Orchard.Reports.Services { + public class ReportsManager : IReportsManager { + private readonly IReportsPersister _reportsPersister; + private List _reports; + private static readonly object _synLock = new object(); + private bool _isDirty; + + public ReportsManager(IReportsPersister reportsPersister) { + _reportsPersister = reportsPersister; + Logger = NullLogger.Instance; + } + + public ILogger Logger { get; set; } + + public void Add(int reportId, ReportEntryType type, string message) { + lock ( _synLock ) { + LoadReports(); + _isDirty = true; + var report = Get(reportId); + if(report == null) { + return; + } + report.Entries.Add(new ReportEntry {Message = message, Type = type, Utc = DateTime.UtcNow}); + } + } + + public int CreateReport(string title, string activityName) { + lock ( _synLock ) { + LoadReports(); + _isDirty = true; + var reportId = _reports.Count == 0 ? 1 : _reports.Max(r => r.ReportId) + 1; + var report = new Report {ActivityName = activityName, ReportId = reportId, Title = title, Utc = DateTime.UtcNow}; + _reports.Add(report); + return reportId; + } + } + + public Report Get(int reportId) { + lock(_synLock) { + LoadReports(); + return _reports.Where(r => r.ReportId == reportId).FirstOrDefault(); + } + } + + public IEnumerable GetReports() { + lock ( _synLock ) { + LoadReports(); + return _reports.ToList(); + } + } + + public void Flush() { + if ( _reports == null || !_isDirty) { + return; + } + + lock ( _synLock ) { + _reportsPersister.Save(_reports); + _isDirty = false; + } + } + + private void LoadReports() { + if(_reports == null) { + _reports = _reportsPersister.Fetch().ToList(); + } + } + } +} diff --git a/src/Orchard/Reports/Services/ReportsPersister.cs b/src/Orchard/Reports/Services/ReportsPersister.cs index 49d77d193..76d7bd68e 100644 --- a/src/Orchard/Reports/Services/ReportsPersister.cs +++ b/src/Orchard/Reports/Services/ReportsPersister.cs @@ -1,67 +1,67 @@ -using System.Collections.Generic; -using System.Runtime.Serialization; -using System.Xml; -using System.Xml.Linq; -using Orchard.Environment.Configuration; -using Orchard.FileSystems.AppData; -using System.IO; - -namespace Orchard.Reports.Services { - public class ReportsPersister : IReportsPersister { - private readonly IAppDataFolder _appDataFolder; - private readonly ShellSettings _shellSettings; - private readonly string _reportsFileName; - private readonly DataContractSerializer _dataContractSerializer; - private readonly object _synLock = new object(); - - public ReportsPersister(IAppDataFolder appDataFolder, ShellSettings shellSettings) { - _appDataFolder = appDataFolder; - _shellSettings = shellSettings; - _dataContractSerializer = new DataContractSerializer(typeof(Report), new [] { typeof(ReportEntry) }); - _reportsFileName = Path.Combine(Path.Combine("Sites", _shellSettings.Name), "reports.dat"); - } - - public IEnumerable Fetch() { - lock ( _synLock ) { - if ( !_appDataFolder.FileExists(_reportsFileName) ) { - yield break; - } - - var text = _appDataFolder.ReadFile(_reportsFileName); - var xmlDocument = XDocument.Parse(text); - var rootNode = xmlDocument.Root; - if (rootNode == null) { - yield break; - } - - foreach (var reportNode in rootNode.Elements()) { - var reader = new StringReader(reportNode.Value); - using (var xmlReader = XmlReader.Create(reader)) { - yield return (Report) _dataContractSerializer.ReadObject(xmlReader, true); - } - } - } - } - - public void Save(IEnumerable reports) { - lock ( _synLock ) { - var xmlDocument = new XDocument(); - xmlDocument.Add(new XElement("Reports")); - foreach (var report in reports) { - var reportNode = new XElement("Report"); - var writer = new StringWriter(); - using (var xmlWriter = XmlWriter.Create(writer)) { - _dataContractSerializer.WriteObject(xmlWriter, report); - } - reportNode.Value = writer.ToString(); - xmlDocument.Root.Add(reportNode); - } - - var saveWriter = new StringWriter(); - xmlDocument.Save(saveWriter); - _appDataFolder.CreateFile(_reportsFileName, saveWriter.ToString()); - } - } - } -} - +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Xml; +using System.Xml.Linq; +using Orchard.Environment.Configuration; +using Orchard.FileSystems.AppData; +using System.IO; + +namespace Orchard.Reports.Services { + public class ReportsPersister : IReportsPersister { + private readonly IAppDataFolder _appDataFolder; + private readonly ShellSettings _shellSettings; + private readonly string _reportsFileName; + private readonly DataContractSerializer _dataContractSerializer; + private readonly object _synLock = new object(); + + public ReportsPersister(IAppDataFolder appDataFolder, ShellSettings shellSettings) { + _appDataFolder = appDataFolder; + _shellSettings = shellSettings; + _dataContractSerializer = new DataContractSerializer(typeof(Report), new [] { typeof(ReportEntry) }); + _reportsFileName = Path.Combine(Path.Combine("Sites", _shellSettings.Name), "reports.dat"); + } + + public IEnumerable Fetch() { + lock ( _synLock ) { + if ( !_appDataFolder.FileExists(_reportsFileName) ) { + yield break; + } + + var text = _appDataFolder.ReadFile(_reportsFileName); + var xmlDocument = XDocument.Parse(text); + var rootNode = xmlDocument.Root; + if (rootNode == null) { + yield break; + } + + foreach (var reportNode in rootNode.Elements()) { + var reader = new StringReader(reportNode.Value); + using (var xmlReader = XmlReader.Create(reader)) { + yield return (Report) _dataContractSerializer.ReadObject(xmlReader, true); + } + } + } + } + + public void Save(IEnumerable reports) { + lock ( _synLock ) { + var xmlDocument = new XDocument(); + xmlDocument.Add(new XElement("Reports")); + foreach (var report in reports) { + var reportNode = new XElement("Report"); + var writer = new StringWriter(); + using (var xmlWriter = XmlWriter.Create(writer)) { + _dataContractSerializer.WriteObject(xmlWriter, report); + } + reportNode.Value = writer.ToString(); + xmlDocument.Root.Add(reportNode); + } + + var saveWriter = new StringWriter(); + xmlDocument.Save(saveWriter); + _appDataFolder.CreateFile(_reportsFileName, saveWriter.ToString()); + } + } + } +} +