Merge remote-tracking branch 'remotes/Laser.Orchard/1.10.x' into 1.10.x

Ho fatto pull della 1.10 remota di Orchard
This commit is contained in:
matteo.piovanelli 2016-10-24 09:24:57 +02:00
commit f6cfe324b1
5 changed files with 42 additions and 9 deletions

View File

@ -1,4 +1,6 @@
namespace Orchard.Email.Models { using System.Collections.Generic;
namespace Orchard.Email.Models {
public class EmailMessage { public class EmailMessage {
public string Subject { get; set; } public string Subject { get; set; }
public string Body { get; set; } public string Body { get; set; }
@ -7,5 +9,9 @@
public string From { get; set; } public string From { get; set; }
public string Bcc { get; set; } public string Bcc { get; set; }
public string Cc { get; set; } public string Cc { get; set; }
/// <summary>
/// IEnumerable of strings representing attachments paths
/// </summary>
public IEnumerable<string> Attachments { get; set; }
} }
} }

View File

@ -9,6 +9,8 @@ using Orchard.ContentManagement;
using Orchard.DisplayManagement; using Orchard.DisplayManagement;
using Orchard.Logging; using Orchard.Logging;
using Orchard.Email.Models; using Orchard.Email.Models;
using System.Linq;
using System.IO;
namespace Orchard.Email.Services { namespace Orchard.Email.Services {
public class SmtpMessageChannel : Component, ISmtpChannel, IDisposable { public class SmtpMessageChannel : Component, ISmtpChannel, IDisposable {
@ -51,7 +53,8 @@ namespace Orchard.Email.Services {
ReplyTo = Read(parameters, "ReplyTo"), ReplyTo = Read(parameters, "ReplyTo"),
From = Read(parameters, "From"), From = Read(parameters, "From"),
Bcc = Read(parameters, "Bcc"), Bcc = Read(parameters, "Bcc"),
Cc = Read(parameters, "CC") Cc = Read(parameters, "CC"),
Attachments = (IEnumerable<string>)(parameters.ContainsKey("Attachments") ? parameters["Attachments"] : new List<string>())
}; };
if (emailMessage.Recipients.Length == 0) { if (emailMessage.Recipients.Length == 0) {
@ -105,8 +108,7 @@ namespace Orchard.Email.Services {
if (!String.IsNullOrWhiteSpace(emailMessage.From)) { if (!String.IsNullOrWhiteSpace(emailMessage.From)) {
mailMessage.From = new MailAddress(emailMessage.From); mailMessage.From = new MailAddress(emailMessage.From);
} } else {
else {
// Take 'From' address from site settings or web.config. // Take 'From' address from site settings or web.config.
mailMessage.From = !String.IsNullOrWhiteSpace(_smtpSettings.Address) mailMessage.From = !String.IsNullOrWhiteSpace(_smtpSettings.Address)
? new MailAddress(_smtpSettings.Address) ? new MailAddress(_smtpSettings.Address)
@ -119,9 +121,15 @@ namespace Orchard.Email.Services {
} }
} }
foreach (var attachmentPath in emailMessage.Attachments) {
if (File.Exists(attachmentPath)) {
mailMessage.Attachments.Add(new Attachment(attachmentPath));
} else {
throw new FileNotFoundException(T("One or more attachments not found.").Text);
}
}
_smtpClientField.Value.Send(mailMessage); _smtpClientField.Value.Send(mailMessage);
} } catch (Exception e) {
catch (Exception e) {
Logger.Error(e, "Could not send email"); Logger.Error(e, "Could not send email");
} }
} }
@ -129,7 +137,7 @@ namespace Orchard.Email.Services {
private SmtpClient CreateSmtpClient() { private SmtpClient CreateSmtpClient() {
// If no properties are set in the dashboard, use the web.config value. // If no properties are set in the dashboard, use the web.config value.
if (String.IsNullOrWhiteSpace(_smtpSettings.Host)) { if (String.IsNullOrWhiteSpace(_smtpSettings.Host)) {
return new SmtpClient(); return new SmtpClient();
} }
var smtpClient = new SmtpClient { var smtpClient = new SmtpClient {
@ -155,7 +163,7 @@ namespace Orchard.Email.Services {
} }
private IEnumerable<string> ParseRecipients(string recipients) { private IEnumerable<string> ParseRecipients(string recipients) {
return recipients.Split(new[] {',', ';'}, StringSplitOptions.RemoveEmptyEntries); return recipients.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
} }
} }
} }

View File

@ -41,6 +41,7 @@ namespace Orchard.OutputCache.Filters {
private readonly ICacheService _cacheService; private readonly ICacheService _cacheService;
private readonly ISignals _signals; private readonly ISignals _signals;
private readonly ShellSettings _shellSettings; private readonly ShellSettings _shellSettings;
private readonly ICachingEventHandler _cachingEvents;
private bool _isDisposed = false; private bool _isDisposed = false;
public ILogger Logger { get; set; } public ILogger Logger { get; set; }
@ -55,7 +56,8 @@ namespace Orchard.OutputCache.Filters {
IClock clock, IClock clock,
ICacheService cacheService, ICacheService cacheService,
ISignals signals, ISignals signals,
ShellSettings shellSettings) { ShellSettings shellSettings,
ICachingEventHandler cachingEvents) {
_cacheManager = cacheManager; _cacheManager = cacheManager;
_cacheStorageProvider = cacheStorageProvider; _cacheStorageProvider = cacheStorageProvider;
@ -67,6 +69,7 @@ namespace Orchard.OutputCache.Filters {
_cacheService = cacheService; _cacheService = cacheService;
_signals = signals; _signals = signals;
_shellSettings = shellSettings; _shellSettings = shellSettings;
_cachingEvents = cachingEvents;
Logger = NullLogger.Instance; Logger = NullLogger.Instance;
} }
@ -616,6 +619,9 @@ namespace Orchard.OutputCache.Filters {
} }
} }
//make CacheKey morphable by external modules
_cachingEvents.KeyGenerated(keyBuilder);
return keyBuilder.ToString(); return keyBuilder.ToString();
} }

View File

@ -0,0 +1,12 @@
using Orchard.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace Orchard.OutputCache {
public interface ICachingEventHandler : IEventHandler {
void KeyGenerated(StringBuilder key);
}
}

View File

@ -103,6 +103,7 @@
<Content Include="Web.config" /> <Content Include="Web.config" />
<Content Include="Scripts\Web.config" /> <Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" /> <Content Include="Styles\Web.config" />
<Compile Include="ICachingEventHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Content Include="Module.txt" /> <Content Include="Module.txt" />
</ItemGroup> </ItemGroup>