Beispiel #1
0
        public async Task <object> Get(string path, string dataId = null)
        {
            var moduleDefinition = await _moduleRepository.GetModuleDefinitionByIdAsync(path).ConfigureAwait(false);

            if (moduleDefinition == null)
            {
                return(this.NotFound());
            }

            return(Json(await _modelProvider.GetModelForModuleAsync(moduleDefinition, dataId).ConfigureAwait(false)));
        }
Beispiel #2
0
        public virtual void RenderModule(string moduleId, string skin, string dataVariation, object model, RenderingContext context)
        {
            string variation;
            object variationObj;

            if (string.IsNullOrEmpty(dataVariation) && context.Data.TryGetValue("data_variation", out variationObj))
            {
                variation = variationObj as string;
            }
            else
            {
                variation = dataVariation;
            }

            var moduleDefinition = _moduleRepository.GetModuleDefinitionByIdAsync(moduleId).Result;

            if (moduleDefinition != null)
            {
                TemplateInfo templateInfo;
                if (string.IsNullOrEmpty(skin) || moduleDefinition.Skins == null ||
                    !moduleDefinition.Skins.TryGetValue(skin, out templateInfo))
                {
                    templateInfo = moduleDefinition.DefaultTemplate;
                }

                var view = _viewEngine.CreateViewAsync(templateInfo).Result;
                if (view != null)
                {
                    var moduleModel = _modelProvider.GetModelForModuleAsync(moduleDefinition, variation).Result;
                    if (context.Data.ContainsKey("siteDefinition") && context.Data.ContainsKey("short_module"))
                    {
                        context.Data["siteDefinition"] = JsonConvert.DeserializeObject <ModuleViewDefinition>(JsonConvert.SerializeObject(moduleModel));
                    }

                    view.Render(moduleModel, new RenderingContext(context.Writer, context));

                    return;
                }
            }

            throw new ArgumentException("Problem loading template " + moduleId +
                                        (!string.IsNullOrEmpty(skin) ? "-" + skin : string.Empty));
        }