protected override object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            var templateNameGroup = match.Groups["templateName"];

            if (templateNameGroup == null)
                return "";

            var templateName = templateNameGroup.Value;

            var template = _templateStorage.Load(templateName, theme);

            if (template == null)
                return "";

            var settings = new Dictionary<string, object>();

            var settingsGroup = match.Groups["settings"];

            if (settingsGroup != null && !string.IsNullOrEmpty(settingsGroup.Value))
            {
                var settingsJson = settingsGroup.Value;

                if (!string.IsNullOrEmpty(settingsJson))
                {
                    var parsedSettings = JsonConvert.DeserializeObject<IDictionary<string, object>>(settingsJson);

                    foreach (var item in parsedSettings)
                        settings[item.Key] = item.Value;
                }
            }

            var renderResult = cmsRenderer.RenderTemplate(template, settings, context, theme);

            return renderResult.Read();
        }
        protected override object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            var componentNameGroup = match.Groups["componentName"];

            if (componentNameGroup == null)
                return "";

            var componentName = componentNameGroup.Value;

            var component = context.Filter(_components.Where(x => x.GetType().Name == componentName), theme).FirstOrDefault();

            if (component == null)
                return "";

            var settings = component.GetDefaultSettings();

            var settingsGroup = match.Groups["settings"];

            if (!string.IsNullOrEmpty(settingsGroup?.Value))
            {
                var settingsJson = settingsGroup.Value;

                if (!string.IsNullOrEmpty(settingsJson))
                {
                    var parsedSettings = JsonConvert.DeserializeObject<IDictionary<string, object>>(settingsJson);

                    foreach (var item in parsedSettings)
                        settings[item.Key] = item.Value;
                }
            }

            var renderResult = cmsRenderer.RenderComponent(component, settings, context, theme);

            return recurse(renderResult.Read());
        }
        protected override object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            var contextNameGroup = match.Groups["contextName"];

            if (contextNameGroup == null || string.IsNullOrEmpty(contextNameGroup.Value))
                return "";

            var path = match.Groups["contextName"].Value;

            var parts = path.Split('.');

            var contextName = parts.FirstOrDefault();

            var requestContext = context.FindContext(contextName);

            if (requestContext == null)
                return null;

            var settingsName = parts.Skip(1).FirstOrDefault();

            if (!requestContext.Data.ContainsKey(settingsName))
                return null;

            var value = _findParameterValueFromModel.Find(path.Substring(string.Format("{0}.{1}.", contextName, settingsName).Length), requestContext.Data[settingsName]);

            var stringValue = value as string;

            return stringValue != null ? recurse(stringValue) : value;
        }
        protected override object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            var localizationNamespace = _findCurrentLocalizationNamespace.Find();

            var key = !string.IsNullOrEmpty(localizationNamespace) ? string.Format("{0}:{1}", localizationNamespace, match.Groups["resource"].Value) : match.Groups["resource"].Value;

            var replacements = new Dictionary<string, string>();

            var replacementsGroup = match.Groups["replacements"];

            if (replacementsGroup != null && !string.IsNullOrEmpty(replacementsGroup.Value))
            {
                var replacementsData = replacementsGroup
                    .Value
                    .Split(',')
                    .Where(x => !string.IsNullOrEmpty(x))
                    .Select(x => x.Split(':'))
                    .Where(x => x.Length > 1 && !string.IsNullOrEmpty(x[0]) && !string.IsNullOrEmpty(x[1]))
                    .ToList();

                foreach (var item in replacementsData)
                    replacements[item[0]] = item[1];
            }

            var localized = _localizeText.Localize(key, _findCultureForRequest.FindUiCulture());

            localized = replacements.Aggregate(localized, (current, replacement) => current.Replace(string.Concat("{{", replacement.Key, "}}"), replacement.Value));

            return recurse(localized);
        }
예제 #5
0
        public string Parse(string text, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            var hash = CalculateHash(text);

            var template = ParsedTemplates.Get(hash, x => Template.Parse(text));

            var contexts = context
                .FindCurrentContexts()
                .ToDictionary(x => x.Name, x => (object)x.Data);

            return template.Render(Hash.FromDictionary(contexts));
        }
        protected override object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            var markdownParser = new Markdown(new MarkdownOptions
            {
                AutoNewLines = true
            });

            var mardown = match.Groups[1].Value;

            if (string.IsNullOrEmpty(mardown))
                return mardown;

            return markdownParser.Transform(mardown);
        }
예제 #7
0
        public string Parse(string text, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse)
        {
            text = text ?? "";

            text = GetRegexes().Aggregate(text, (current, regex) => regex.Replace(current, x =>
            {
                var value = FindParameterValue(x, cmsRenderer, context, theme, recurse);

                if (value == null) return "";

                var enumerableValue = value as IEnumerable;
                if (enumerableValue != null && !(value is string))
                {
                    var stringValues = enumerableValue.OfType<object>().Select(y => y.ToString()).ToList();

                    return string.Join(SeperateListItemsWith, stringValues);
                }

                return value.ToString();
            }));

            return text;
        }
예제 #8
0
 protected abstract object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func<string, string> recurse);
예제 #9
0
 public CmsEndpointWriter(IOutputWriter writer, ICmsRenderer cmsRenderer, ICmsContext cmsContext)
 {
     _writer      = writer;
     _cmsRenderer = cmsRenderer;
     _cmsContext  = cmsContext;
 }
예제 #10
0
 public RenderTemplateRenderInformation(ICmsRenderer cmsRenderer)
 {
     _cmsRenderer = cmsRenderer;
 }
예제 #11
0
 public Renderer(ICmsRenderer <TRenderInformation> renderer)
 {
     _renderer = renderer;
 }
예제 #12
0
 protected abstract object FindParameterValue(Match match, ICmsRenderer cmsRenderer, ICmsContext context, ITheme theme, Func <string, string> recurse);
예제 #13
0
 public RenderTextRenderInformation(ICmsRenderer cmsRenderer)
 {
     _cmsRenderer = cmsRenderer;
 }