Esempio n. 1
0
        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());
        }