From 94fee29d1aa86085d3d572892c97bf91eee177a2 Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Fri, 15 Oct 2010 14:33:02 -0700 Subject: [PATCH 1/4] Authenticate admin user during setup phase This is so that we don't need code all over the place to set the Owner of the CommonPart. The CommonPart will have direct access to the user. --HG-- branch : dev --- .../Modules/Orchard.Setup/Services/SetupService.cs | 7 +++++-- src/Orchard/Environment/DefaultWorkContextAccessor.cs | 2 -- src/Orchard/Security/IAuthenticationService.cs | 1 + .../Security/Providers/FormsAuthenticationService.cs | 10 ++++++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs index ed80805d2..6751916c4 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs @@ -170,6 +170,10 @@ namespace Orchard.Setup.Services { String.Empty, String.Empty, String.Empty, true)); + + var authenticationService = environment.Resolve(); + authenticationService.SetAuthenticatedUserForRequest(user); + // set site name and settings var siteService = environment.Resolve(); var siteSettings = siteService.GetSiteSettings().As(); @@ -265,9 +269,8 @@ namespace Orchard.Setup.Services { menuItem.As().OnMainMenu = true; menuItem.As().Url = ""; - //Temporary fix for running setup on command line + //null check: temporary fix for running setup in command line if (HttpContext.Current != null) { - var authenticationService = environment.Resolve(); authenticationService.SignIn(user, true); } } diff --git a/src/Orchard/Environment/DefaultWorkContextAccessor.cs b/src/Orchard/Environment/DefaultWorkContextAccessor.cs index 767444806..a507cfcdd 100644 --- a/src/Orchard/Environment/DefaultWorkContextAccessor.cs +++ b/src/Orchard/Environment/DefaultWorkContextAccessor.cs @@ -163,6 +163,4 @@ namespace Orchard.Environment { } } } - - } diff --git a/src/Orchard/Security/IAuthenticationService.cs b/src/Orchard/Security/IAuthenticationService.cs index e4af94abf..9edcda2b9 100644 --- a/src/Orchard/Security/IAuthenticationService.cs +++ b/src/Orchard/Security/IAuthenticationService.cs @@ -2,6 +2,7 @@ public interface IAuthenticationService : IDependency { void SignIn(IUser user, bool createPersistentCookie); void SignOut(); + void SetAuthenticatedUserForRequest(IUser user); IUser GetAuthenticatedUser(); } } diff --git a/src/Orchard/Security/Providers/FormsAuthenticationService.cs b/src/Orchard/Security/Providers/FormsAuthenticationService.cs index 37f7f0107..3f2b2cf6c 100644 --- a/src/Orchard/Security/Providers/FormsAuthenticationService.cs +++ b/src/Orchard/Security/Providers/FormsAuthenticationService.cs @@ -11,6 +11,7 @@ namespace Orchard.Security.Providers { private readonly IClock _clock; private readonly IContentManager _contentManager; private readonly IHttpContextAccessor _httpContextAccessor; + private IUser _signedInUser; public FormsAuthenticationService(IClock clock, IContentManager contentManager, IHttpContextAccessor httpContextAccessor) { _clock = clock; @@ -52,13 +53,22 @@ namespace Orchard.Security.Providers { var httpContext = _httpContextAccessor.Current(); httpContext.Response.Cookies.Add(cookie); + _signedInUser = user; } public void SignOut() { + _signedInUser = null; FormsAuthentication.SignOut(); } + public void SetAuthenticatedUserForRequest(IUser user) { + _signedInUser = user; + } + public IUser GetAuthenticatedUser() { + if (_signedInUser != null) + return _signedInUser; + var httpContext = _httpContextAccessor.Current(); if (!httpContext.Request.IsAuthenticated || !(httpContext.User.Identity is FormsIdentity)) { return null; From 21c04e45da3ebac9c4371c1b11469c6edbfe2423 Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Fri, 15 Oct 2010 15:15:44 -0700 Subject: [PATCH 2/4] Adding a layout classification helper function to TheThemeMachine's layout --HG-- branch : dev --- .../TheThemeMachine/Views/Layout.cshtml | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml b/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml index be3a6916f..698790fc1 100644 --- a/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml +++ b/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml @@ -1,4 +1,12 @@ -@{ +@functions { + string CalcuClassify(string[] zoneNames, string classNamePrefix) + { + var zoneCounter = 0; + var zoneNumsFilled = string.Join("", zoneNames.Select(zoneName => { ++zoneCounter; return Model[zoneName] != null ? zoneCounter.ToString() : "";}).ToArray()); + return HasText(zoneNumsFilled) ? classNamePrefix + zoneNumsFilled : ""; + } +} +@{ Style.Include("http://fonts.googleapis.com/css?family=Lobster&subset=latin"); Style.Include("site.css"); @@ -28,22 +36,20 @@ // {WorkContext.Layout.FooterQuadThird.Add("3 This is some test text to see if zones are working. This is some test text to see if zones are working.");} //Add classes to the wrapper div to toggle quad widget zones on and off + var tripelClass = CalcuClassify(new [] {"TripelFirst", "TripelSecond", "TripelThird"}, "tripel-"); + if (HasText(tripelClass)) { + Model.Classes.Add(tripelClass); + } - if (Model.FooterQuadFirst == null && Model.FooterQuadSecond != null && Model.FooterQuadThird != null && Model.FooterQuadFourth != null) { - Model.Classes.Add("split-234"); + //Add classes to the wrapper div to toggle quad widget zones on and off + var footerQuadClass = CalcuClassify(new [] {"FooterQuadFirst", "FooterQuadSecond", "FooterQuadThird", "FooterQuadFourth"}, "split-"); + if (HasText(footerQuadClass)) { + Model.Classes.Add(footerQuadClass); } - else if (Model.FooterQuadFirst != null && Model.FooterQuadSecond == null && Model.FooterQuadThird != null && Model.FooterQuadFourth != null) { - Model.Classes.Add("split-134"); - } - else if (Model.FooterQuadFirst != null && Model.FooterQuadSecond != null && Model.FooterQuadThird == null && Model.FooterQuadFourth != null) { - Model.Classes.Add("split-124"); - } - else if (Model.FooterQuadFirst != null && Model.FooterQuadSecond != null && Model.FooterQuadThird != null && Model.FooterQuadFourth == null) { - Model.Classes.Add("split-123"); - } - else { - } + @*debug: *@ + @*tripelClass:@tripelClass*@ + @*footerQuadClass:@footerQuadClass*@ Model.Id = "layout-wrapper"; var tag = Tag (Model, "div"); From 3d72236e813e38e4ff1c15bee6ad5873cc053625 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Fri, 15 Oct 2010 15:16:41 -0700 Subject: [PATCH 3/4] - Migrating Email module to the new shape API. --HG-- branch : dev --- .../Orchard.Email/Drivers/SmtpSettingsPartDriver.cs | 8 ++++++-- .../Modules/Orchard.Email/Orchard.Email.csproj | 5 ++++- src/Orchard.Web/Modules/Orchard.Email/Placement.info | 3 +++ ...{Smtp.SiteSettings.cshtml => SmtpSettings.cshtml} | 0 .../Modules/Orchard.Tags/Drivers/TagsPartDriver.cs | 12 +++++++----- .../Modules/Orchard.Tags/Orchard.Tags.csproj | 4 +++- 6 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Email/Placement.info rename src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/{Smtp.SiteSettings.cshtml => SmtpSettings.cshtml} (100%) diff --git a/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs index 0e2d16515..e8847e280 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs @@ -9,6 +9,8 @@ namespace Orchard.Email.Drivers { // Thus the encryption/decryption will be done when accessing the part's property public class SmtpSettingsPartDriver : ContentPartDriver { + private const string TemplateName = "Parts/SmtpSettings"; + public SmtpSettingsPartDriver() { T = NullLocalizer.Instance; } @@ -18,12 +20,14 @@ namespace Orchard.Email.Drivers { protected override string Prefix { get { return "SmtpSettings"; } } protected override DriverResult Editor(SmtpSettingsPart part, dynamic shapeHelper) { - return ContentPartTemplate(part, "Parts/Smtp.SiteSettings"); + return ContentShape("Parts_SmtpSettings_Editor", + () => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: part, Prefix: Prefix)); } protected override DriverResult Editor(SmtpSettingsPart part, IUpdateModel updater, dynamic shapeHelper) { updater.TryUpdateModel(part, Prefix, null, null); - return Editor(part, shapeHelper); + return ContentShape("Parts_SmtpSettings_Editor", + () => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: part, Prefix: Prefix)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj index 004a884b9..08bf37967 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj +++ b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj @@ -82,7 +82,7 @@ - + @@ -98,6 +98,9 @@ Orchard.Users + + +