예제 #1
0
        public static IHtmlString CompiledContent(this IDynamicContent contentItem, bool trustContent = false)
        {
            if (contentItem == null)
            {
                return(NonEncodedHtmlString.Empty);
            }

            switch (contentItem.ContentType)
            {
            case DynamicContentType.Markdown:
                var md = new Markdown
                {
                    AutoHeadingIDs            = true,
                    ExtraMode                 = true,
                    NoFollowLinks             = !trustContent,
                    SafeMode                  = false,
                    NewWindowForExternalLinks = true,
                };

                var contents = contentItem.Content;
                // TODO contents = CodeBlockFinder.Replace(contents, match => GenerateCodeBlock(match.Groups[1].Value.Trim(), match.Groups[2].Value));
                contents = md.Transform(contents);
                return(new NonEncodedHtmlString(contents));

            case DynamicContentType.Html:
                return(trustContent ? new NonEncodedHtmlString(contentItem.Content) : NonEncodedHtmlString.Empty);
            }
            return(NonEncodedHtmlString.Empty);
        }
예제 #2
0
 public static IHtmlString CompiledContent(this IDynamicContent contentItem, bool trustContent = false)
 {
     if (contentItem == null)
     {
         return(NonEncodedHtmlString.Empty);
     }
     return(CompiledStringContent(contentItem.Content, contentItem.ContentType, trustContent));
 }
예제 #3
0
        public static MvcHtmlString CompiledContent(this IDynamicContent contentItem, bool trustContent)
        {
            if (contentItem == null)
            {
                return(MvcHtmlString.Empty);
            }

            switch (contentItem.ContentType)
            {
            case DynamicContentType.Markdown:
                var md = new Markdown
                {
                    AutoHeadingIDs            = true,
                    ExtraMode                 = true,
                    NoFollowLinks             = !trustContent,
                    SafeMode                  = false,
                    NewWindowForExternalLinks = true,
                };

                var contents = contentItem.Body;
                contents = CodeBlockFinder.Replace(contents, match => GenerateCodeBlock(match.Groups[1].Value.Trim(), match.Groups[2].Value));

                try
                {
                    contents = md.Transform(contents);
                }
                catch (Exception)
                {
                    contents = string.Format("<pre>{0}</pre>", HttpUtility.HtmlEncode(contents));
                }

                return(MvcHtmlString.Create(contents));

            case DynamicContentType.Html:
                return(trustContent ? MvcHtmlString.Create(contentItem.Body) : MvcHtmlString.Empty);
            }
            return(MvcHtmlString.Empty);
        }
예제 #4
0
 public string GetMarkup(IDynamicContent dynamicContent)
 {
     return string.Format(@"<span class=""nonEditable""><dynamiccontent state=""{0}"">{{DynamicContent:{1}}}</dynamiccontent></span>",
         dynamicContent.State, TypeToNameMap[dynamicContent.GetType()]);
 }