public void SendChallengeEmail(IUser user, Func <string, string> createUrl) { string nonce = CreateNonce(user, DelayToValidate); string url = createUrl(nonce); if (user != null) { var site = _siteService.GetSiteSettings(); var template = _shapeFactory.Create("Template_User_Validated", Arguments.From(new { RegisteredWebsite = site.As <RegistrationSettingsPart>().ValidateEmailRegisteredWebsite, ContactEmail = site.As <RegistrationSettingsPart>().ValidateEmailContactEMail, ChallengeUrl = url })); template.Metadata.Wrappers.Add("Template_User_Wrapper"); var parameters = new Dictionary <string, object> { { "Subject", T("Verification E-Mail").Text }, { "Body", _shapeDisplay.Display(template) }, { "Recipients", user.Email } }; _messageService.Send("Email", parameters); } }
string BuildDisplay(string placeholderText) { // If the item is not in the cache, we need to build it. var cacheToken = GetCacheTokenFromString(placeholderText); if (cacheToken == null) { return(null); } var contentItem = mContentManager.Get(cacheToken.ContentItemId); if (contentItem == null) { return(null); } var shape = mContentManager.BuildDisplay(contentItem, cacheToken.DisplayType); shape.BypassDonutTokenization = true; mResourceCapture.BeginCapture(); var markup = (string)mShapeDisplay.Display(shape); var cacheItem = mResourceCapture.EndCapture(markup); // Give the markup to the donut cache service which will cache it if required. mItemLevelCacheService.CacheItem(contentItem, cacheToken.DisplayType, cacheItem); return(cacheItem.Markup); }
public void SendNotificationEmail(CommentPart commentPart) { try { var commentedOn = _orchardServices.ContentManager.Get(commentPart.CommentedOn); if (commentedOn == null) { return; } var owner = commentedOn.As <CommonPart>().Owner; if (owner == null) { return; } var template = _shapeFactory.Create("Template_Comment_Notification", Arguments.From(new { CommentPart = commentPart, CommentApproveUrl = CreateProtectedUrl("Approve", commentPart), CommentModerateUrl = CreateProtectedUrl("Moderate", commentPart), CommentDeleteUrl = CreateProtectedUrl("Delete", commentPart) })); var parameters = new Dictionary <string, object> { { "Subject", T("Comment notification").Text }, { "Body", _shapeDisplay.Display(template) }, { "Recipients", owner.Email } }; _messageService.Send("Email", parameters); } catch (Exception e) { Logger.Error(e, "An unexpected error occured while sending a notification email"); } }
private string RenderContentItem(ContentItem contentItem, string displayType) { var shape = _contentManager.BuildDisplay(contentItem, displayType ?? ""); shape.Ajaxified = true; return(_shapeDisplay.Display(shape)); }
private void Invalidate(ItemLevelCachePart part) { InitializeSettings(part); foreach (var settings in part.ItemLevelCacheSettings) { var displayType = settings.Key; switch (settings.Value.InvalidationAction) { case ItemLevelCacheInvalidationAction.Evict: mCacheService.RemoveByTag(ItemLevelCacheTag.For(part, displayType)); break; case ItemLevelCacheInvalidationAction.PreRender: var shape = mContentManager.BuildDisplay(part.ContentItem, displayType); shape.BypassDonutTokenization = true; var markup = (string)mShapeDisplay.Display(shape); var cacheItem = new ItemLevelCacheItem(markup); mCacheService.RemoveByTag(ItemLevelCacheTag.For(part, displayType)); // Give the markup to the item-level cache service which will cache it if required. mItemLevelCacheService.CacheItem(part.ContentItem, displayType, cacheItem); break; } } }
private string ReplaceVideoPlaceholder(string text) { var document = ParseHtml(text); var cloudVideoNodes = HarvestCloudVideoNodes(document); var cloudVideos = cloudVideoNodes.Any() ? _contentManager.GetMany <CloudVideoPart>(cloudVideoNodes.Keys, VersionOptions.Published, QueryHints.Empty).ToDictionary(x => x.Id) : default(IDictionary <int, CloudVideoPart>); if (cloudVideos == null || !cloudVideos.Any()) { return(text); } foreach (var item in cloudVideoNodes) { var videoId = item.Key; var cloudVideoPart = cloudVideos.ContainsKey(videoId) ? cloudVideos[videoId] : default(CloudVideoPart); if (cloudVideoPart == null) { continue; } var node = item.Value; var playerShape = CreatePlayershape(cloudVideoPart, node); var playerHtml = _shapeDisplay.Display(playerShape); node.Attributes.RemoveAll(); node.InnerHtml = playerHtml; } return(ToHtml(document)); }
// for some reason this doesn't work, in the "callsite" bit returns the shape as null. works fine in other places... public ActionResult TestShape(string shape) { var test = Shape.Create(shape); var html = shapeDisplay.Display(shape); return(Json(html, JsonRequestBehavior.AllowGet)); }
public bool SendChallengeMail(ApplicationRecord app, IUser user, Func <string, string> createUrl) { string nonce = CreateNonce(user, DelayToValidate, app.AppKey); string url = createUrl(nonce); var site = _siteService.GetSiteSettings(); var template = _shapeFactory.Create("Template_User_Validation", Arguments.From(new { RegisteredWebsite = app.Name, //site.As<RegistrationSettingsPart>().ValidateEmailRegisteredWebsite, ContactEmail = site.As <RegistrationSettingsPart>().ValidateEmailContactEMail, ChallengeUrl = url, ChallengeText = app.Name + " Registration" })); template.Metadata.Wrappers.Add("Template_User_Wrapper"); var parameters = new Dictionary <string, object> { { "Application", app.AppKey }, { "Subject", T("Verification E-Mail").Text }, { "Body", _shapeDisplay.Display(template) }, { "Recipients", user.Email } }; _messageService.Send("Email", parameters); return(true); }
private object TokenValue(EvaluateContext context, string shapeName, string data) { var parameters = Arguments.From(context.Data.Values, context.Data.Keys); var shape = _shapeFactory.Create(shapeName, parameters); return(_shapeDisplay.Display(shape)); }
private void IndexLayout(IndexContentContext context, LayoutPart part) { var layoutShape = _contentPartDisplay.BuildDisplay(part); var layoutHtml = _shapeDisplay.Display(layoutShape); context.DocumentIndex .Add("body", layoutHtml).RemoveTags().Analyze() .Add("format", "html").Store(); }
protected override DriverResult Display(DashboardShapePart part, string displayType, dynamic shapeHelper) { return(ContentShape("Parts_DashboardShapePart", () => { var shape = shapeFactory.Create(part.Shape); var html = shapeDisplay.Display(shape); return shapeHelper.Parts_DashboardShapePart(Html: html); })); }
public ContentResult Get(string id) { var shapeType = String.Format("LayoutEditor_Template_{0}", id); var content = _cacheManager.Get(shapeType, context => { var shape = _shapeFactory.Value.Create(shapeType); return(_shapeDisplay.Display(shape)); }); return(Content(content, "text/html")); }
protected override DriverResult Display(LayoutPart part, string displayType, dynamic shapeHelper) { return(Combined( ContentShape("Parts_Layout", () => { var elements = _layoutManager.LoadElements(part); var layoutRoot = _elementDisplay.DisplayElements(elements, part, displayType: displayType); return shapeHelper.Parts_Layout(LayoutRoot: layoutRoot); }), ContentShape("Parts_Layout_Summary", () => { var layoutShape = _contentPartDisplay.Value.BuildDisplay(part); var layoutHtml = _shapeDisplay.Display(layoutShape); return shapeHelper.Parts_Layout_Summary(LayoutHtml: layoutHtml); }))); }
public void FromElement(Element element, DescribeElementsContext describeContext, JToken node) { node["data"] = element.Data.Serialize(); node["htmlId"] = element.HtmlId; node["htmlClass"] = element.HtmlClass; node["htmlStyle"] = element.HtmlStyle; node["isTemplated"] = element.IsTemplated; node["hasEditor"] = element.HasEditor; node["contentType"] = element.Descriptor.TypeName; node["contentTypeLabel"] = element.Descriptor.DisplayText.Text; node["contentTypeClass"] = element.DisplayText.Text.HtmlClassify(); node["contentTypeDescription"] = element.Descriptor.Description.Text; node["html"] = _shapeDisplay.Display(_elementDisplay.DisplayElement(element, content: describeContext.Content, displayType: "Design")); }
public void Process(IDictionary <string, object> parameters) { if (!_smtpSettings.IsValid()) { return; } var emailMessage = new EmailMessage { Body = parameters["Body"] as string, Subject = parameters["Subject"] as string, Recipients = parameters["Recipients"] as string }; if (emailMessage.Recipients.Length == 0) { Logger.Error("Email message doesn't have any recipient"); return; } // Applying default Body alteration for SmtpChannel var template = _shapeFactory.Create("Template_Smtp_Wrapper", Arguments.From(new { Content = new MvcHtmlString(emailMessage.Body) })); var mailMessage = new MailMessage { Subject = emailMessage.Subject, Body = _shapeDisplay.Display(template), IsBodyHtml = true }; var section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); mailMessage.From = !String.IsNullOrWhiteSpace(_smtpSettings.Address) ? new MailAddress(_smtpSettings.Address) : new MailAddress(section.From); try { foreach (var recipient in emailMessage.Recipients.Split(new [] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.To.Add(new MailAddress(recipient)); } _smtpClientField.Value.Send(mailMessage); } catch (Exception e) { Logger.Error(e, "Could not send email"); } }
private string TokenValue(string elementTypeName, string value) { var describeContext = DescribeElementsContext.Empty; var elementDescriptor = _elementManager.GetElementDescriptorByTypeName(describeContext, elementTypeName); if (elementDescriptor == null) { return(""); } var element = _elementManager.ActivateElement(elementDescriptor); var elementShape = _elementDisplay.DisplayElement(element, null); var elementHtml = _shapeDisplay.Display(elementShape); return(elementHtml); }
private string ContentEvaluator(Match match) { string result = ""; int contentId = 0; int.TryParse(match.Groups["id"].Value, out contentId); if (contentId > 0) { var content = _contentManager.Get(contentId); if (content != null) { var shape = _contentManager.BuildDisplay(content); shape.ShortCoded = true; result = _shapeDisplay.Display(shape); } } return(result); }
private dynamic BeginRenderItem(IContent content, string displayType, string groupId) { WorkContext workContext = _workContextAccessor.GetContext(); var output = _shapeDisplay.Display(BuildShape(content, displayType, groupId)); _cacheSettings = GetOutputCacheSettings(content); _cacheKey = ComputeCacheKey(content, displayType, groupId); _invariantCacheKey = string.Format("tenant={0};id={1};", _shellSettings.Name, content.ContentItem.Id); var cacheItem = new CacheItem() { CachedOnUtc = _now, ValidFor = _cacheSettings.CacheDuration, Output = _jsonConverter.Serialize(new OutputCacheItem { Id = content.ContentItem.Id, Output = output, Resources = _resourceManager.GetRequiredResources("script") .Concat(_resourceManager.GetRequiredResources("stylesheet")).Select(GetCacheItemResource).ToList() }), ContentType = content.ContentItem.ContentType, QueryString = workContext.HttpContext.Request.Url.Query, CacheKey = _cacheKey, InvariantCacheKey = _invariantCacheKey, Url = workContext.HttpContext.Request.Url.AbsolutePath, Tenant = _shellSettings.Name, StatusCode = workContext.HttpContext.Response.StatusCode, Tags = new[] { _invariantCacheKey, content.ContentItem.Id.ToString(CultureInfo.InvariantCulture) } }; _cacheStorageProvider.Remove(_cacheKey); _cacheStorageProvider.Set(_cacheKey, cacheItem); foreach (var tag in cacheItem.Tags) { _tagCache.Tag(tag, _cacheKey); } return(ServeCachedItem(cacheItem, content, displayType, groupId)); }
public void SendNotificationEmail(BidPart bidPart) { try { var bidedOn = _orchardServices.ContentManager.Get(bidPart.BidedOn); if (bidedOn == null) { return; } var owner = bidedOn.As <CommonPart>().Owner; if (owner == null) { return; } var template = _shapeFactory.Create("Template_Bid_Notification", Arguments.From(new { ContentItem = bidedOn, BidPart = bidPart, BidUrl = CreateUrl(bidedOn), })); var parameters = new Dictionary <string, object> { { "Subject", T("Bid notification").Text }, { "Body", _shapeDisplay.Display(template) }, { "Recipients", owner.Email } }; _messageService.Send("Email", parameters); } catch (Exception e) { Logger.Error(e, "An unexpected error occured while sending a notification email"); } }
public ActionResult SendMail(int id) { var casePart = _contentManager.Get <ContentPart>(id, VersionOptions.Published); var sender = Services.WorkContext.CurrentUser; var recipient = Request.Form["txtEmail"]; if (sender != null && recipient != string.Empty) { dynamic shape = Services.ContentManager.BuildDisplay(casePart.ContentItem); var parameters = new Dictionary <string, object> { { "Subject", T("FastReport.org: Case details").Text }, { "Body", _shapeDisplay.Display(shape) }, { "From", sender.Email }, { "Recipients", recipient } }; _messageService.Send("Email", parameters); //return View((object)shape); } return(RedirectToAction("Index", new { id = id })); }
private string RenderWidget(IContent widget) { var widgetShape = _orchardServices.ContentManager.BuildDisplay(widget); return(_shapeDisplay.Display(widgetShape)); }
private string GetMarkup(dynamic shape) { return((string)mShapeDisplay.Display(shape)); }
public void CallDisplay(IShapeDisplay display) { display.Display(); }
public IUser CreateUser(CreateUserParams createUserParams) { Logger.Information("CreateUser {0} {1}", createUserParams.Username, createUserParams.Email); var registrationSettings = _orchardServices.WorkContext.CurrentSite.As <RegistrationSettingsPart>(); var user = _orchardServices.ContentManager.New <UserPart>("User"); user.UserName = createUserParams.Username; user.Email = createUserParams.Email; user.NormalizedUserName = createUserParams.Username.ToLowerInvariant(); user.HashAlgorithm = PBKDF2; SetPassword(user, createUserParams.Password); if (registrationSettings != null) { user.RegistrationStatus = registrationSettings.UsersAreModerated ? UserStatus.Pending : UserStatus.Approved; user.EmailStatus = registrationSettings.UsersMustValidateEmail ? UserStatus.Pending : UserStatus.Approved; } if (createUserParams.IsApproved) { user.RegistrationStatus = UserStatus.Approved; user.EmailStatus = UserStatus.Approved; } var userContext = new UserContext { User = user, Cancel = false, UserParameters = createUserParams }; _userEventHandlers.Creating(userContext); if (userContext.Cancel) { return(null); } _orchardServices.ContentManager.Create(user); _userEventHandlers.Created(userContext); if (user.RegistrationStatus == UserStatus.Approved) { _userEventHandlers.Approved(user); } if (registrationSettings != null && registrationSettings.UsersAreModerated && registrationSettings.NotifyModeration && !createUserParams.IsApproved) { var usernames = String.IsNullOrWhiteSpace(registrationSettings.NotificationsRecipients) ? new string[0] : registrationSettings.NotificationsRecipients.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (var userName in usernames) { if (String.IsNullOrWhiteSpace(userName)) { continue; } var recipient = GetUser(userName); if (recipient != null) { var template = _shapeFactory.Create("Template_User_Moderated", Arguments.From(createUserParams)); template.Metadata.Wrappers.Add("Template_User_Wrapper"); var parameters = new Dictionary <string, object> { { "Subject", T("New account").Text }, { "Body", _shapeDisplay.Display(template) }, { "Recipients", new [] { recipient.Email } } }; _messageService.Send("Email", parameters); } } } return(user); }
public void Process(IDictionary <string, object> parameters) { if (!_smtpSettings.IsValid()) { return; } var emailMessage = new EmailMessage { Body = Read(parameters, "Body"), Subject = Read(parameters, "Subject"), Recipients = Read(parameters, "Recipients"), ReplyTo = Read(parameters, "ReplyTo"), From = Read(parameters, "From"), Bcc = Read(parameters, "Bcc"), Cc = Read(parameters, "CC") }; if (emailMessage.Recipients.Length == 0) { Logger.Error("Email message doesn't have any recipient"); return; } var mailMessage = new MailMessage { Subject = emailMessage.Subject, Body = System.Web.HttpUtility.HtmlDecode(_shapeDisplay.Display(emailMessage.Body)), IsBodyHtml = true }; if (parameters.ContainsKey("Message")) { // A full message object is provided by the sender. var oldMessage = mailMessage; mailMessage = (MailMessage)parameters["Message"]; if (String.IsNullOrWhiteSpace(mailMessage.Subject)) { mailMessage.Subject = oldMessage.Subject; } if (String.IsNullOrWhiteSpace(mailMessage.Body)) { mailMessage.Body = oldMessage.Body; mailMessage.IsBodyHtml = oldMessage.IsBodyHtml; } } try { foreach (var recipient in ParseRecipients(emailMessage.Recipients)) { mailMessage.To.Add(new MailAddress(recipient)); } if (!String.IsNullOrWhiteSpace(emailMessage.Cc)) { foreach (var recipient in ParseRecipients(emailMessage.Cc)) { mailMessage.CC.Add(new MailAddress(recipient)); } } if (!String.IsNullOrWhiteSpace(emailMessage.Bcc)) { foreach (var recipient in ParseRecipients(emailMessage.Bcc)) { mailMessage.Bcc.Add(new MailAddress(recipient)); } } if (!String.IsNullOrWhiteSpace(emailMessage.From)) { mailMessage.From = new MailAddress(emailMessage.From); } else { // Take 'From' address from site settings or web.config. mailMessage.From = !String.IsNullOrWhiteSpace(_smtpSettings.Address) ? new MailAddress(_smtpSettings.Address) : new MailAddress(((SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp")).From); } if (!String.IsNullOrWhiteSpace(emailMessage.ReplyTo)) { foreach (var recipient in ParseRecipients(emailMessage.ReplyTo)) { mailMessage.ReplyToList.Add(new MailAddress(recipient)); } } _smtpClientField.Value.Send(mailMessage); } catch (Exception e) { Logger.Error(e, "Could not send email"); if (RaiseExceptionForFailedMessages) { parameters.Add("ERROR", e); throw new OrchardException(T("Error in sending email"), e); } } }
public void Process(IDictionary <string, object> parameters) { if (!_smtpSettings.IsValid()) { return; } var emailMessage = new EmailMessage { Body = Read(parameters, "Body"), Subject = Read(parameters, "Subject"), Recipients = Read(parameters, "Recipients"), ReplyTo = Read(parameters, "ReplyTo"), From = Read(parameters, "From"), Bcc = Read(parameters, "Bcc"), Cc = Read(parameters, "CC") }; if (emailMessage.Recipients.Length == 0) { Logger.Error("Email message doesn't have any recipient"); return; } // Apply default Body alteration for SmtpChannel. var template = _shapeFactory.Create("Template_Smtp_Wrapper", Arguments.From(new { Content = new MvcHtmlString(emailMessage.Body) })); var mailMessage = new MailMessage { Subject = emailMessage.Subject, Body = _shapeDisplay.Display(template), IsBodyHtml = true }; if (parameters.ContainsKey("Message")) { // A full message object is provided by the sender. var oldMessage = mailMessage; mailMessage = (MailMessage)parameters["Message"]; if (String.IsNullOrWhiteSpace(mailMessage.Subject)) { mailMessage.Subject = oldMessage.Subject; } if (String.IsNullOrWhiteSpace(mailMessage.Body)) { mailMessage.Body = oldMessage.Body; mailMessage.IsBodyHtml = oldMessage.IsBodyHtml; } } try { foreach (var recipient in ParseRecipients(emailMessage.Recipients)) { mailMessage.To.Add(new MailAddress(recipient)); } if (!String.IsNullOrWhiteSpace(emailMessage.Cc)) { foreach (var recipient in ParseRecipients(emailMessage.Cc)) { mailMessage.CC.Add(new MailAddress(recipient)); } } if (!String.IsNullOrWhiteSpace(emailMessage.Bcc)) { foreach (var recipient in ParseRecipients(emailMessage.Bcc)) { mailMessage.Bcc.Add(new MailAddress(recipient)); } } if (!String.IsNullOrWhiteSpace(emailMessage.From)) { mailMessage.From = new MailAddress(emailMessage.From); } else { // Take 'From' address from site settings or web.config. mailMessage.From = !String.IsNullOrWhiteSpace(_smtpSettings.Address) ? new MailAddress(_smtpSettings.Address) : new MailAddress(((SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp")).From); } if (!String.IsNullOrWhiteSpace(emailMessage.ReplyTo)) { foreach (var recipient in ParseRecipients(emailMessage.ReplyTo)) { mailMessage.ReplyToList.Add(new MailAddress(recipient)); } } _smtpClientField.Value.Send(mailMessage); } catch (Exception e) { Logger.Error(e, "Could not send email"); } }
private string RenderElement(Element element, DescribeElementsContext describeContext, string displayType = "Design") { return(_shapeDisplay.Display(_elementDisplay.DisplayElement(element, describeContext.Content, displayType))); }
private XElement CreatePackage(PackagePart package, UrlHelper urlHelper, string baseUrl, IShapeDisplay shapeDisplay, dynamic shapeFactory) { var element = new XElement(atomns + "entry"); dynamic content = package.ContentItem; string iconUrl = null; if (content.Package.Icon != null && content.Package.Icon.FirstMediaUrl != null) { iconUrl = (string)content.Package.Icon.FirstMediaUrl; iconUrl = shapeDisplay.Display(shapeFactory.ResizeMediaUrl(Path: iconUrl, Width: 64, Heigth: 64)); } var screenshots = new XElement(atomns + "link", new XAttribute("rel", "http://schemas.microsoft.com/ado/2007/08/dataservices/related/Screenshots"), new XAttribute("type", "application/atom+xml;type=feed"), new XAttribute("title", "Screenshots"), new XAttribute("href", "Packages(Id='" + package.PackageId + "')/Screenshots") ); foreach (var media in (IEnumerable<dynamic>)content.Package.Screenshots.MediaParts) { string screenshotUrl = media.MediaUrl; screenshotUrl = shapeDisplay.Display(shapeFactory.ResizeMediaUrl(Path: screenshotUrl, Width: 164, Heigth: 128)); screenshots.Add( new XElement(mns + "inline", new XElement(atomns + "feed", new XElement(atomns + "title", "Screenshots", new XAttribute("type", "text")), new XElement(atomns + "id", urlHelper.MakeAbsolute("/FeedService/Packages(Id='" + package.PackageId + "')/Screenshots", baseUrl)), new XElement(atomns + "link", new XAttribute("rel", "self"), new XAttribute("title", "Screenshots"), new XAttribute("href", "Packages(Id='" + package.PackageId + "')/Screenshots") ), new XElement(atomns + "entry", new XElement(atomns + "id", urlHelper.MakeAbsolute("/FeedService.svc/Screenshots(" + (string)media.Id.ToString() + ")", baseUrl)), new XElement(atomns + "title", media.ContentItem.TitlePart.Title, new XAttribute("type", "text")), new XElement(atomns + "content", new XAttribute("type", "application/xml"), new XElement(mns + "properties", new XElement(dns + "Id", media.ContentItem.Id, new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "PublishedPackageId", package.PackageId), new XElement(dns + "ScreenshotUri", urlHelper.MakeAbsolute(screenshotUrl, baseUrl)), new XElement(dns + "Caption", new XAttribute(mns + "null", "true")) ) ) ) ) ) ); } element.Add( new XElement(atomns + "id", urlHelper.MakeAbsolute(urlHelper.ItemDisplayUrl(package), baseUrl)), new XElement(atomns + "title", package.TitlePart.Title, new XAttribute("type", "text")), new XElement(atomns + "summary", package.Summary, new XAttribute("type", "text")), new XElement(atomns + "updated", package.LatestVersionUtc.ToString("o")), new XElement(atomns + "author", new XElement(atomns + "name", package.CommonPart.Owner.UserName) ), screenshots, // edit-media // edit //new XElement(atomns + "category", // new XAttribute("term", "Gallery.Infrastructure.FeedModels.PublishedPackage"), // new XAttribute("scheme", "http://schemas.microsoft.com/ado/2007/08/dataservices/scheme") // ), new XElement(atomns + "content", new XAttribute("type", "application/zip"), new XAttribute("src", urlHelper.MakeAbsolute(urlHelper.Action("Download", "PackageVersion", new { id = package.PackageId, version = package.LatestVersion, area = "Orchard.Gallery" }), baseUrl)) ), new XElement(mns + "properties", new XElement(dns + "Id", package.PackageId), new XElement(dns + "Version", package.LatestVersion), new XElement(dns + "Title", package.TitlePart.Title), new XElement(dns + "Authors", package.CommonPart.Owner.UserName), new XElement(dns + "PackageType", package.ExtensionType), new XElement(dns + "Summary", package.Summary), new XElement(dns + "Description", package.BodyPart.Text), new XElement(dns + "Copyright", "", new XAttribute(mns + "null", "true")), new XElement(dns + "PackageHashAlgorithm", ""), new XElement(dns + "PackageHash", ""), new XElement(dns + "PackageSize", new XAttribute(mns + "type", "Edm.Int64"), "0"), new XElement(dns + "Price", "0", new XAttribute(mns + "type", "Edm.Decimal")), new XElement(dns + "RequireLicenseAcceptance", "false", new XAttribute(mns + "type", "Edm.Boolean")), new XElement(dns + "IsLatestVersion", "true", new XAttribute(mns + "type", "Edm.Boolean")), new XElement(dns + "VersionRating", "5", new XAttribute(mns + "type", "Edm.Double")), new XElement(dns + "VersionRatingsCount", "0", new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "VersionDownloadCount", package.DownloadCount, new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "Created", package.CommonPart.CreatedUtc.Value.ToString("o"), new XAttribute(mns + "type", "Edm.DateTime")), new XElement(dns + "LastUpdated", package.LatestVersionUtc.ToString("o"), new XAttribute(mns + "type", "Edm.DateTime")), new XElement(dns + "Published", package.CommonPart.PublishedUtc.Value.ToString("o"), new XAttribute(mns + "type", "Edm.DateTime")), new XElement(dns + "ExternalPackageUrl", "", new XAttribute(mns + "null", "true")), new XElement(dns + "ProjectUrl", package.ProjectUrl), new XElement(dns + "LicenseUrl", package.LicenseUrl, new XAttribute(mns + "null", "true")), new XElement(dns + "IconUrl", iconUrl), new XElement(dns + "Rating", "5", new XAttribute(mns + "type", "Edm.Double")), new XElement(dns + "RatingsCount", "0", new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "DownloadCount", package.DownloadCount, new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "Categories", ""), new XElement(dns + "Tags", new XAttribute(XNamespace.Xml + "space", "preserve"), String.Join(" ", package.TagsPart.CurrentTags.ToArray())), new XElement(dns + "Dependencies", ""), new XElement(dns + "ReportAbuseUrl", ""), new XElement(dns + "GalleryDetailsUrl", "") ) ); return element; }
private XElement CreatePackage(PackagePart package, UrlHelper urlHelper, string baseUrl, IShapeDisplay shapeDisplay, dynamic shapeFactory) { var element = new XElement(atomns + "entry"); dynamic content = package.ContentItem; string iconUrl = null; if (content.Package.Icon != null && content.Package.Icon.FirstMediaUrl != null) { iconUrl = (string)content.Package.Icon.FirstMediaUrl; iconUrl = shapeDisplay.Display(shapeFactory.ResizeMediaUrl(Path: iconUrl, Width: 64, Heigth: 64)); } var screenshots = new XElement(atomns + "link", new XAttribute("rel", "http://schemas.microsoft.com/ado/2007/08/dataservices/related/Screenshots"), new XAttribute("type", "application/atom+xml;type=feed"), new XAttribute("title", "Screenshots"), new XAttribute("href", "Packages(Id='" + package.PackageId + "')/Screenshots") ); foreach (var media in (IEnumerable <dynamic>)content.Package.Screenshots.MediaParts) { string screenshotUrl = media.MediaUrl; screenshotUrl = shapeDisplay.Display(shapeFactory.ResizeMediaUrl(Path: screenshotUrl, Width: 164, Heigth: 128)); screenshots.Add( new XElement(mns + "inline", new XElement(atomns + "feed", new XElement(atomns + "title", "Screenshots", new XAttribute("type", "text")), new XElement(atomns + "id", urlHelper.MakeAbsolute("/FeedService/Packages(Id='" + package.PackageId + "')/Screenshots", baseUrl)), new XElement(atomns + "link", new XAttribute("rel", "self"), new XAttribute("title", "Screenshots"), new XAttribute("href", "Packages(Id='" + package.PackageId + "')/Screenshots") ), new XElement(atomns + "entry", new XElement(atomns + "id", urlHelper.MakeAbsolute("/FeedService.svc/Screenshots(" + (string)media.Id.ToString() + ")", baseUrl)), new XElement(atomns + "title", media.ContentItem.TitlePart.Title, new XAttribute("type", "text")), new XElement(atomns + "content", new XAttribute("type", "application/xml"), new XElement(mns + "properties", new XElement(dns + "Id", media.ContentItem.Id, new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "PublishedPackageId", package.PackageId), new XElement(dns + "ScreenshotUri", urlHelper.MakeAbsolute(screenshotUrl, baseUrl)), new XElement(dns + "Caption", new XAttribute(mns + "null", "true")) ) ) ) ) ) ); } element.Add( new XElement(atomns + "id", urlHelper.MakeAbsolute(urlHelper.ItemDisplayUrl(package), baseUrl)), new XElement(atomns + "title", package.TitlePart.Title, new XAttribute("type", "text")), new XElement(atomns + "summary", package.Summary, new XAttribute("type", "text")), new XElement(atomns + "updated", package.LatestVersionUtc.ToString("o")), new XElement(atomns + "author", new XElement(atomns + "name", package.CommonPart.Owner.UserName) ), screenshots, // edit-media // edit //new XElement(atomns + "category", // new XAttribute("term", "Gallery.Infrastructure.FeedModels.PublishedPackage"), // new XAttribute("scheme", "http://schemas.microsoft.com/ado/2007/08/dataservices/scheme") // ), new XElement(atomns + "content", new XAttribute("type", "application/zip"), new XAttribute("src", urlHelper.MakeAbsolute(urlHelper.Action("Download", "PackageVersion", new { id = package.PackageId, version = package.LatestVersion, area = "Orchard.Gallery" }), baseUrl)) ), new XElement(mns + "properties", new XElement(dns + "Id", package.PackageId), new XElement(dns + "Version", package.LatestVersion), new XElement(dns + "Title", package.TitlePart.Title), new XElement(dns + "Authors", package.CommonPart.Owner.UserName), new XElement(dns + "PackageType", package.ExtensionType), new XElement(dns + "Summary", package.Summary), new XElement(dns + "Description", package.BodyPart.Text), new XElement(dns + "Copyright", "", new XAttribute(mns + "null", "true")), new XElement(dns + "PackageHashAlgorithm", ""), new XElement(dns + "PackageHash", ""), new XElement(dns + "PackageSize", new XAttribute(mns + "type", "Edm.Int64"), "0"), new XElement(dns + "Price", "0", new XAttribute(mns + "type", "Edm.Decimal")), new XElement(dns + "RequireLicenseAcceptance", "false", new XAttribute(mns + "type", "Edm.Boolean")), new XElement(dns + "IsLatestVersion", "true", new XAttribute(mns + "type", "Edm.Boolean")), new XElement(dns + "VersionRating", "5", new XAttribute(mns + "type", "Edm.Double")), new XElement(dns + "VersionRatingsCount", "0", new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "VersionDownloadCount", package.DownloadCount, new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "Created", package.CommonPart.CreatedUtc.Value.ToString("o"), new XAttribute(mns + "type", "Edm.DateTime")), new XElement(dns + "LastUpdated", package.LatestVersionUtc.ToString("o"), new XAttribute(mns + "type", "Edm.DateTime")), new XElement(dns + "Published", package.CommonPart.PublishedUtc.Value.ToString("o"), new XAttribute(mns + "type", "Edm.DateTime")), new XElement(dns + "ExternalPackageUrl", "", new XAttribute(mns + "null", "true")), new XElement(dns + "ProjectUrl", package.ProjectUrl), new XElement(dns + "LicenseUrl", package.LicenseUrl, new XAttribute(mns + "null", "true")), new XElement(dns + "IconUrl", iconUrl), new XElement(dns + "Rating", "5", new XAttribute(mns + "type", "Edm.Double")), new XElement(dns + "RatingsCount", "0", new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "DownloadCount", package.DownloadCount, new XAttribute(mns + "type", "Edm.Int32")), new XElement(dns + "Categories", ""), new XElement(dns + "Tags", new XAttribute(XNamespace.Xml + "space", "preserve"), String.Join(" ", package.TagsPart.CurrentTags.ToArray())), new XElement(dns + "Dependencies", ""), new XElement(dns + "ReportAbuseUrl", ""), new XElement(dns + "GalleryDetailsUrl", "") ) ); return(element); }
/// <summary> /// This method of rendering is safe even in background tasks. /// </summary> private string RenderShape(dynamic shape) { using (_staticHttpContextScopeFactory.CreateStaticScope()) { return(_shapeDisplay.Display(shape)); } }
public void Process(IDictionary <string, object> parameters) { if (!_smtpSettings.IsValid()) { return; } var emailMessage = new EmailMessage { }; object temp; if (parameters.TryGetValue("Body", out temp)) { emailMessage.Body = temp as string; } if (parameters.TryGetValue("Subject", out temp)) { emailMessage.Subject = temp as string; } if (parameters.TryGetValue("Recipients", out temp)) { emailMessage.Recipients = temp as string; } if (parameters.TryGetValue("From", out temp)) { emailMessage.From = temp as string; } if (parameters.TryGetValue("FromName", out temp)) { emailMessage.FromName = temp as string; } if (parameters.TryGetValue("HideRecipients", out temp)) { emailMessage.HideRecipients = temp as bool?; } if (emailMessage.Recipients.Length == 0) { Logger.Error("Email message doesn't have any recipient"); return; } // Applying default Body alteration for SmtpChannel var template = _shapeFactory.Create("Template_Smtp_Wrapper", Arguments.From(new { Content = new MvcHtmlString(emailMessage.Body) })); var mailMessage = new MailMessage { Subject = emailMessage.Subject, Body = _shapeDisplay.Display(template), IsBodyHtml = true }; var section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); mailMessage.From = (!String.IsNullOrWhiteSpace(emailMessage.From) ? new MailAddress(emailMessage.From, string.IsNullOrWhiteSpace(emailMessage.FromName) ? emailMessage.From : emailMessage.FromName) : null) ?? (!String.IsNullOrWhiteSpace(_smtpSettings.Address) ? new MailAddress(_smtpSettings.Address) : new MailAddress(section.From)); try { var isBCC = (emailMessage.HideRecipients.HasValue && emailMessage.HideRecipients.Value); foreach (var recipient in emailMessage.Recipients.Split(new [] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries)) { if (isBCC) { mailMessage.Bcc.Add(new MailAddress(recipient)); } else { mailMessage.To.Add(new MailAddress(recipient)); } } _smtpClientField.Value.Send(mailMessage); } catch (Exception e) { Logger.Error(e, "Could not send email"); } }