Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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");
            }
        }
Example #4
0
        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;
                }
            }
        }
Example #6
0
        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));
        }
Example #7
0
        // 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));
        }
Example #8
0
        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);
        }
Example #9
0
        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();
        }
Example #11
0
        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);
            }));
        }
Example #12
0
        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"));
        }
Example #13
0
 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"));
 }
Example #15
0
        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);
        }
Example #18
0
        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));
        }
Example #19
0
        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");
            }
        }
Example #20
0
        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 }));
        }
Example #21
0
        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();
 }
Example #24
0
        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);
        }
Example #25
0
        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);
        }
Example #30
0
 /// <summary>
 /// This method of rendering is safe even in background tasks.
 /// </summary>
 private string RenderShape(dynamic shape)
 {
     using (_staticHttpContextScopeFactory.CreateStaticScope()) {
         return(_shapeDisplay.Display(shape));
     }
 }
Example #31
0
        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");
            }
        }