diff --git a/src/Orchard.Web/Modules/Orchard.Email/Handlers/SmtpSettingsPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Email/Handlers/SmtpSettingsPartHandler.cs index 9e70797b2..ac5b97ce4 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Handlers/SmtpSettingsPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Handlers/SmtpSettingsPartHandler.cs @@ -3,7 +3,6 @@ using System.Text; using JetBrains.Annotations; using Orchard.ContentManagement; using Orchard.Email.Models; -using Orchard.Data; using Orchard.ContentManagement.Handlers; using Orchard.Localization; using Orchard.Logging; @@ -14,15 +13,20 @@ namespace Orchard.Email.Handlers { public class SmtpSettingsPartHandler : ContentHandler { private readonly IEncryptionService _encryptionService; - public SmtpSettingsPartHandler(IRepository repository, IEncryptionService encryptionService) { + public SmtpSettingsPartHandler(IEncryptionService encryptionService) { T = NullLocalizer.Instance; Logger = NullLogger.Instance; _encryptionService = encryptionService; Filters.Add(new ActivatingFilter("Site")); - Filters.Add(StorageFilter.For(repository)); OnLoaded(LazyLoadHandlers); + + OnInitializing((context, part) => { + part.Port = 25; + part.RequireCredentials = false; + part.EnableSsl = false; + }); } public new ILogger Logger { get; set; } @@ -30,7 +34,7 @@ namespace Orchard.Email.Handlers { void LazyLoadHandlers(LoadContentContext context, SmtpSettingsPart part) { part.PasswordField.Getter(() => { try { - return String.IsNullOrWhiteSpace(part.Record.Password) ? String.Empty : Encoding.UTF8.GetString(_encryptionService.Decode(Convert.FromBase64String(part.Record.Password))); + return String.IsNullOrWhiteSpace(part.Password) ? String.Empty : Encoding.UTF8.GetString(_encryptionService.Decode(Convert.FromBase64String(part.Password))); } catch { Logger.Error("The email password could not be decrypted. It might be corrupted, try to reset it."); @@ -38,7 +42,7 @@ namespace Orchard.Email.Handlers { } }); - part.PasswordField.Setter(value => part.Record.Password = String.IsNullOrWhiteSpace(value) ? String.Empty : Convert.ToBase64String(_encryptionService.Encode(Encoding.UTF8.GetBytes(value)))); + part.PasswordField.Setter(value => part.Password = String.IsNullOrWhiteSpace(value) ? String.Empty : Convert.ToBase64String(_encryptionService.Encode(Encoding.UTF8.GetBytes(value)))); } public Localizer T { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.Email/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Email/Migrations.cs index 6cbc8aa28..86a388ece 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Migrations.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Migrations.cs @@ -5,18 +5,6 @@ namespace Orchard.Email { public int Create() { - SchemaBuilder.CreateTable("SmtpSettingsPartRecord", - table => table - .ContentPartRecord() - .Column("Address") - .Column("Host") - .Column("Port") - .Column("EnableSsl") - .Column("RequireCredentials") - .Column("UserName") - .Column("Password") - ); - return 1; } } diff --git a/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPart.cs b/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPart.cs index e371459b4..93f650998 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPart.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPart.cs @@ -3,7 +3,7 @@ using System; using Orchard.ContentManagement.Utilities; namespace Orchard.Email.Models { - public class SmtpSettingsPart : ContentPart { + public class SmtpSettingsPart : ContentPart { private readonly ComputedField _password = new ComputedField(); public ComputedField PasswordField { @@ -11,44 +11,44 @@ namespace Orchard.Email.Models { } public string Address { - get { return Record.Address; } - set { Record.Address = value; } + get { return this.Retrieve(x => x.Address); } + set { this.Store(x => x.Address, value); } } public string Host { - get { return Record.Host; } - set { Record.Host = value; } + get { return this.Retrieve(x => x.Host); } + set { this.Store(x => x.Host, value); } } public int Port { - get { return Record.Port; } - set { Record.Port = value; } + get { return this.Retrieve(x => x.Port); } + set { this.Store(x => x.Port, value); } } public bool EnableSsl { - get { return Record.EnableSsl; } - set { Record.EnableSsl = value; } + get { return this.Retrieve(x => x.EnableSsl); } + set { this.Store(x => x.EnableSsl, value); } } public bool RequireCredentials { - get { return Record.RequireCredentials; } - set { Record.RequireCredentials = value; } + get { return this.Retrieve(x => x.RequireCredentials); } + set { this.Store(x => x.RequireCredentials, value); } } public string UserName { - get { return Record.UserName; } - set { Record.UserName = value; } + get { return this.Retrieve(x => x.UserName); } + set { this.Store(x => x.UserName, value); } } public string Password { - get { return _password.Value; } - set { _password.Value = value; } + get { return this.Retrieve(x => x.Password); } + set { this.Store(x => x.Password, value); } } public bool IsValid() { - return !String.IsNullOrWhiteSpace(Record.Host) - && Record.Port > 0 - && !String.IsNullOrWhiteSpace(Record.Address); + return !String.IsNullOrWhiteSpace(Host) + && Port > 0 + && !String.IsNullOrWhiteSpace(Address); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPartRecord.cs b/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPartRecord.cs deleted file mode 100644 index 525702caf..000000000 --- a/src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPartRecord.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Orchard.ContentManagement.Records; - -namespace Orchard.Email.Models { - public class SmtpSettingsPartRecord : ContentPartRecord { - /// - /// From address in the mail message - /// - public virtual string Address { get; set; } - - /// - /// Server name hosting the SMTP service - /// - public virtual string Host { get; set; } - - /// - /// Port number on which SMTP service runs - /// - public virtual int Port { get; set; } - - /// - /// Whether to enable SSL communications with the server - /// - public virtual bool EnableSsl { get; set; } - - /// - /// Whether specific credentials should be used - /// - public virtual bool RequireCredentials { get; set; } - - /// - /// The username to connect to the SMTP server if DefaultCredentials is False - /// - public virtual string UserName { get; set; } - - /// - /// The password to connect to the SMTP server if DefaultCredentials is False - /// - public virtual string Password { get; set; } - - public SmtpSettingsPartRecord() { - Port = 25; - RequireCredentials = false; - EnableSsl = false; - } - } -} \ 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 3f26e5137..6a1f1937c 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj +++ b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj @@ -69,7 +69,6 @@ - diff --git a/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs b/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs index 16b11557a..b23726812 100644 --- a/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs +++ b/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs @@ -159,8 +159,23 @@ namespace Upgrade.Controllers { site.As().Store("RegistrationSettingsPart", "NotificationsRecipients", (bool)reader["NotificationsRecipients"]); site.As().Store("RegistrationSettingsPart", "EnableLostPassword", (bool)reader["EnableLostPassword"]); }); + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Orchard_Users_RegistrationSettingsPartRecord"), null); + // SmtpSettingsPartRecord + _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Orchard_Email_SmtpSettingsPartRecord"), + (reader, connection) => { + site.As().Store("SmtpSettingsPart", "Address", (string)reader["Address"]); + site.As().Store("SmtpSettingsPart", "Host", (string)reader["Host"]); + site.As().Store("SmtpSettingsPart", "Port", (int)reader["Port"]); + site.As().Store("SmtpSettingsPart", "EnableSsl", (bool)reader["EnableSsl"]); + site.As().Store("SmtpSettingsPart", "RequireCredentials", (bool)reader["RequireCredentials"]); + site.As().Store("SmtpSettingsPart", "UserName", (string)reader["UserName"]); + site.As().Store("SmtpSettingsPart", "Password", (string)reader["Password"]); + }); + + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Orchard_Email_SmtpSettingsPartRecord"), null); + _orchardServices.Notifier.Information(T("Site Settings migrated successfully")); return View();