public FileProcessingResult Process(string path) { var isFileNameFlushed = false; var result = new FileProcessingResult { FileName = path }; foreach (var line in File.ReadLines(path)) { result.TotalLineCount++; if (linePattern.IsMatch(line)) { if (!isFileNameFlushed) { LogContext.Log(path); isFileNameFlushed = true; } LogContext.Log($" ---> {line.Trim()}"); foreach (Match match in argPattern.Matches(line)) { result.ReplacedLineCount++; LogContext.Log(match.Groups["arg"].Value); } } } return(result); }
private string ExecuteTemplate(Page page, TemplateManifest templateManifest, TemplateFiles files, FileUri templateUri, object model) { var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder; string output; Stopwatch stopwatch = null; if (LogContext.IsLogActive) { var logKey = "Render template"; LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", templateUri.FilePath); LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model); stopwatch = new Stopwatch(); stopwatch.Start(); } if (templateUri.Extension != ".hbs") { output = ExecuteRazor(templateUri, model); } else { HandlebarsEngine hbEngine = new HandlebarsEngine(); output = hbEngine.Execute(page, files, templateVirtualFolder, model); } if (stopwatch != null) { stopwatch.Stop(); var logKey = "Render template"; LogContext.Log(_module.ViewModule.ModuleID, logKey, "render time (ms)", stopwatch.ElapsedMilliseconds); stopwatch.Stop(); } return(output); }
public HttpResponseMessage Get(string entity, string id) { try { //if (entity == "items") var collection = App.Config.DefaultCollection; OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); JObject reqOptions = null; if (module.IsListMode()) { var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.TemplateDir, collection); //bool isEditable = ActiveModule.CheckIfEditable(PortalSettings); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions); dsContext.Collection = collection; var dsItem = ds.Get(dsContext, id); var res = new JObject(); res["meta"] = new JObject(); var items = new JArray(); if (dsItem != null) { var mf = new ModelFactorySingle(dsItem, module, collection); string raison = ""; if (!OpenContentUtils.HaveViewPermissions(dsItem, module.UserRoles.FromDnnRoles(), indexConfig, out raison)) { Exceptions.ProcessHttpException(new HttpException(404, "No detail view permissions for id=" + id + " (" + raison + ")")); //throw new UnauthorizedAccessException("No detail view permissions for id " + info.DetailItemId); } mf.Options = reqOptions; var model = mf.GetModelAsJson(false); items.Add(model); model["id"] = dsItem.Id; res["meta"]["total"] = dsItem == null ? 0 : 1; JsonUtils.IdJson(model); if (LogContext.IsLogActive) { var logKey = "Query"; LogContext.Log(module.ViewModule.ModuleId, logKey, "model", model); res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(module.ViewModule.ModuleId)); } } res[entity] = items; return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template ")); } } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
private string GenerateOutputSingle(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files) { if (template != null) { if (dataJson != null) { ModelFactorySingle mf; if (_renderinfo.Data == null) { // demo data mf = new ModelFactorySingle(_renderinfo.DataJson, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module); } else { mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module); } if (template.Extension != ".hbs") // razor { dynamic model = mf.GetModelAsDynamic(); if (LogContext.IsLogActive) { var logKey = "Render single item template"; LogContext.Log(_module.ViewModule.ModuleId, logKey, "template", template.FilePath); LogContext.Log(_module.ViewModule.ModuleId, logKey, "model", model); } return(ExecuteRazor(template, model)); } else // handlebars { object model; if (!App.Services.CreateGlobalSettingsRepository(PortalSettings.Current.PortalId).GetLegacyHandlebars()) { model = mf.GetModelAsDictionary(); } else { model = mf.GetModelAsDynamic(); } if (LogContext.IsLogActive) { var logKey = "Render single item template"; LogContext.Log(_module.ViewModule.ModuleId, logKey, "template", template.FilePath); LogContext.Log(_module.ViewModule.ModuleId, logKey, "model", model); } HandlebarsEngine hbEngine = new HandlebarsEngine(); return(hbEngine.Execute(page, template, model)); } } else { return(""); } } else { return(""); } }
private void RenderJsonException(InvalidJsonFileException ex, ModuleInfo module) { DotNetNuke.UI.Skins.Skin.AddModuleMessage(Page, "OpenContent RenderModule SkinObject", "<p><b>Json error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError); if (LogContext.IsLogActive) { var logKey = "Error in json"; LogContext.Log(module.ModuleID, logKey, "Error", ex.MessageAsList()); LogContext.Log(module.ModuleID, logKey, "Filename", ex.Filename); } LoggingUtils.ProcessLogFileException(this, module, ex); }
private void RenderHttpException(NotAuthorizedException ex) { DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Permission error</b></p>" + ex.Message.Replace("\n", "<br />"), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError); if (LogContext.IsLogActive) { var logKey = "Error accessing data"; LogContext.Log(ModuleContext.ModuleId, logKey, "Error", ex.MessageAsList()); //LogContext.Log(logKey, "StackTrace", ex.StackTrace); //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p>More info is availale on de browser console (F12)</p>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo); } LoggingUtils.ProcessLogFileException(this, ex); }
private void RenderTemplateException(TemplateException ex, ModuleInfo module) { DotNetNuke.UI.Skins.Skin.AddPageMessage(Page, "OpenContent RenderModule SkinObject", "<p><b>Template error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError); if (LogContext.IsLogActive) { var logKey = "Error in tempate"; LogContext.Log(module.ModuleID, logKey, "Error", ex.MessageAsList()); LogContext.Log(module.ModuleID, logKey, "Model", ex.TemplateModel); LogContext.Log(module.ModuleID, logKey, "Source", ex.TemplateSource); } LoggingUtils.ProcessLogFileException(this, module, ex); }
private void RenderJsonException(InvalidJsonFileException ex) { DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Json error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError); if (LogContext.IsLogActive) { var logKey = "Error in json"; LogContext.Log(ModuleContext.ModuleId, logKey, "Error", ex.MessageAsList()); LogContext.Log(ModuleContext.ModuleId, logKey, "Filename", ex.Filename); //LogContext.Log(logKey, "StackTrace", ex.StackTrace); //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p>More info is availale on de browser console (F12)</p>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo); } LoggingUtils.ProcessLogFileException(this, ex); }
public HttpResponseMessage Post(string entity, [FromBody] JObject value) { // Add try { OpenContentModuleInfo module = new OpenContentModuleInfo(ActiveModule); var manifest = module.Settings.Template.Manifest; string editRole = manifest.GetEditRole(); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); if (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, editRole, -1)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } ds.Add(dsContext, value.Properties().First().Value as JObject); var dsItem = ds.Get(dsContext, dsContext.Id); var res = new JObject(); res["meta"] = new JObject(); var items = new JArray(); if (dsItem != null) { var collection = AppConfig.DEFAULT_COLLECTION; var mf = new ModelFactorySingle(dsItem, module, PortalSettings, collection); var model = mf.GetModelAsJson(false); items.Add(model); model["id"] = dsContext.Id; res["meta"]["total"] = dsItem == null ? 0 : 1; JsonUtils.IdJson(model); if (LogContext.IsLogActive) { var logKey = "Query"; LogContext.Log(module.ViewModule.ModuleID, logKey, "model", model); res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(module.ViewModule.ModuleID)); } } res[entity] = items; return(Request.CreateResponse(HttpStatusCode.OK, res)); //return Request.CreateResponse(HttpStatusCode.OK, ""); } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
private string GenerateOutput(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files) { var ps = PortalSettings.Current; if (template != null) { string templateVirtualFolder = template.UrlFolder; string physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder); if (dataJson != null) { ModelFactory mf; int mainTabId = _settings.DetailTabId > 0 ? _settings.DetailTabId : _settings.TabId; if (_renderinfo.Data == null) { // demo data mf = new ModelFactory(_renderinfo.DataJson, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, ps, mainTabId, _settings.ModuleId); } else { mf = new ModelFactory(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, ps, mainTabId, _settings.ModuleId); } dynamic model = mf.GetModelAsDynamic(); if (LogContext.IsLogActive) { var logKey = "Render single item template"; LogContext.Log(_module.ModuleID, logKey, "template", template.FilePath); LogContext.Log(_module.ModuleID, logKey, "model", model); } if (template.Extension != ".hbs") { return(ExecuteRazor(template, model)); } else { HandlebarsEngine hbEngine = new HandlebarsEngine(); return(hbEngine.Execute(page, template, model)); } } else { return(""); } } else { return(""); } }
public virtual IDataItem Get(DataSourceContext context, string id) { OpenContentController ctrl = new OpenContentController(context.PortalId); OpenContentInfo content = null; if (!string.IsNullOrEmpty(id) && id != "-1") { /* * if (LogContext.IsLogActive) * { * LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}", Name, id)); * } */ content = ctrl.GetContent(GetModuleId(context), context.Collection, id); } else { /* * if (LogContext.IsLogActive) * { * LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}. Returning first item of module.", Name, id)); * } */ content = ctrl.GetFirstContent(GetModuleId(context)); // single item } if (content == null) { App.Services.Logger.Warn($"Item not shown because no content item found. Id [{id}]. Context TabId: [{GetTabId(context)}], ModuleId: [{GetModuleId(context)}]"); LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", "not item found with id " + id); } else if (content.ModuleId == GetModuleId(context) && content.Collection == context.Collection) { var dataItem = CreateDefaultDataItem(content); if (LogContext.IsLogActive) { LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", dataItem.Data); } return(dataItem); } else { if (LogContext.IsLogActive) { LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", $"no item returned as incompatible module ids {content.ModuleId}-{GetModuleId(context)}"); } } return(null); }
private static SelectQueryDefinition BuildQuery(DataSourceContext context, Select selectQuery) { SelectQueryDefinition def = new SelectQueryDefinition(); def.Build(selectQuery); if (LogContext.IsLogActive) { var logKey = "Lucene query"; LogContext.Log(context.ActiveModuleId, logKey, "Filter", def.Filter.ToString()); LogContext.Log(context.ActiveModuleId, logKey, "Query", def.Query.ToString()); LogContext.Log(context.ActiveModuleId, logKey, "Sort", def.Sort.ToString()); LogContext.Log(context.ActiveModuleId, logKey, "PageIndex", def.PageIndex); LogContext.Log(context.ActiveModuleId, logKey, "PageSize", def.PageSize); } return(def); }
private void RenderTemplateException(TemplateException ex) { DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Template error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError); //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Template source</b></p>" + Server.HtmlEncode(ex.TemplateSource).Replace("\n", "<br/>"), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo); //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Template model</b></p> <pre>" + JsonConvert.SerializeObject(ex.TemplateModel, Formatting.Indented)/*.Replace("\n", "<br/>")*/+"</pre>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo); //lErrorMessage.Text = ex.HtmlMessage; //lErrorModel.Text = "<pre>" + JsonConvert.SerializeObject(ex.TemplateModel, Formatting.Indented)/*.Replace("\n", "<br/>")*/+"</pre>"; if (LogContext.IsLogActive) { var logKey = "Error in tempate"; LogContext.Log(ModuleContext.ModuleId, logKey, "Error", ex.MessageAsList()); LogContext.Log(ModuleContext.ModuleId, logKey, "Model", ex.TemplateModel); LogContext.Log(ModuleContext.ModuleId, logKey, "Source", ex.TemplateSource); //LogContext.Log(logKey, "StackTrace", ex.StackTrace); //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p>More info is availale on de browser console (F12)</p>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo); } LoggingUtils.ProcessLogFileException(this, ex); }
public virtual IDataItems GetAll(DataSourceContext context, Select select) { if (select == null) { return(GetAll(context)); } else { OpenContentController ctrl = new OpenContentController(); SelectQueryDefinition def = new SelectQueryDefinition(); def.Build(@select); if (LogContext.IsLogActive) { var logKey = "Lucene query"; LogContext.Log(context.ActiveModuleId, logKey, "Filter", def.Filter.ToString()); LogContext.Log(context.ActiveModuleId, logKey, "Query", def.Query.ToString()); LogContext.Log(context.ActiveModuleId, logKey, "Sort", def.Sort.ToString()); LogContext.Log(context.ActiveModuleId, logKey, "PageIndex", def.PageIndex); LogContext.Log(context.ActiveModuleId, logKey, "PageSize", def.PageSize); } SearchResults docs = LuceneController.Instance.Search(GetModuleId(context).ToString(), def.Filter, def.Query, def.Sort, def.PageSize, def.PageIndex); int total = docs.TotalResults; var dataList = new List <IDataItem>(); foreach (string item in docs.ids) { var content = ctrl.GetContent(int.Parse(item)); if (content != null) { dataList.Add(CreateDefaultDataItem(content)); } else { Log.Logger.DebugFormat("OpenContentDataSource.GetAll() ContentItem not found [{0}]", item); } } return(new DefaultDataItems() { Items = dataList, Total = total, DebugInfo = def.Filter.ToString() + " - " + def.Query.ToString() + " - " + def.Sort.ToString() }); } }
/// <summary> /// Gets additional/related data of a datasource. /// </summary> /// <param name="context">The context.</param> /// <param name="scope">The Scope. (portal, tab, module, tabmodule)</param> /// <param name="key">The unique key in the scope</param> /// <returns></returns> public virtual IDataItem GetData(DataSourceContext context, string scope, string key) { string scopeStorage = AdditionalDataUtils.GetScope(scope, context.PortalId, context.TabId, GetModuleId(context), context.TabModuleId); var dc = new AdditionalDataController(); var data = dc.GetData(scopeStorage, key); if (data != null) { var dataItem = new DefaultDataItem { Data = data.Json.ToJObject("GetContent " + scope + "/" + key), CreatedByUserId = data.CreatedByUserId, Item = data }; LogContext.Log(context.ActiveModuleId, "Get Data", "Result", dataItem); return(dataItem); } return(null); }
private string ExecuteTemplate(Page page, TemplateManifest templateManifest, TemplateFiles files, FileUri templateUri, dynamic model) { var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder; if (LogContext.IsLogActive) { var logKey = "Render template"; LogContext.Log(_module.ModuleID, logKey, "template", templateUri.FilePath); LogContext.Log(_module.ModuleID, logKey, "model", model); } if (templateUri.Extension != ".hbs") { return(ExecuteRazor(templateUri, model)); } else { HandlebarsEngine hbEngine = new HandlebarsEngine(); return(hbEngine.Execute(page, files, templateVirtualFolder, model)); } }
public virtual IDataItem Get(DataSourceContext context, string id) { OpenContentController ctrl = new OpenContentController(); OpenContentInfo content = null; if (!string.IsNullOrEmpty(id) && id != "-1") { LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}", Name, id)); int idint; if (int.TryParse(id, out idint)) { content = ctrl.GetContent(idint); } } else { LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}. Returning first item of module.", Name, id)); content = ctrl.GetFirstContent(GetModuleId(context)); // single item } if (content == null) { Log.Logger.WarnFormat("Item not shown because no content item found. Id [{0}]. Context TabId: [{1}], ModuleId: [{2}]", id, GetTabId(context), GetModuleId(context)); LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", "not item found with id " + id); } else if (content.ModuleId == GetModuleId(context)) { var dataItem = CreateDefaultDataItem(content); LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", dataItem); return(dataItem); } else { LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", string.Format("no item returned as incompatible module ids {0}-{1}", content.ModuleId, GetModuleId(context))); } return(null); }
public void GetDetailData(RenderInfo info, OpenContentSettings settings) { info.ResetData(); var ds = DataSourceManager.GetDataSource(settings.Manifest.DataSource); var dsContext = new DataSourceContext() { ModuleId = info.ModuleId, ActiveModuleId = _module.ModuleID, TemplateFolder = settings.TemplateDir.FolderPath, Config = settings.Manifest.DataSourceConfig }; var dsItem = ds.Get(dsContext, info.DetailItemId); if (LogContext.IsLogActive) { var logKey = "Get detail data"; LogContext.Log(_module.ModuleID, logKey, "result", dsItem); } if (dsItem != null) { info.SetData(dsItem, dsItem.Data, settings.Data); } }
public FileProcessingResult Process(string path) { var isFileNameFlushed = false; var result = new FileProcessingResult { FileName = path }; foreach (var line in File.ReadLines(path)) { result.TotalLineCount++; if (pattern.IsMatch(line)) { result.ReplacedLineCount++; if (!isFileNameFlushed) { LogContext.Log(path); isFileNameFlushed = true; } LogContext.Log(line); } } return(result); }
public HttpResponseMessage List(RequestDTO req) { try { OpenContentModuleInfo module = new OpenContentModuleInfo(ActiveModule); JObject reqOptions = null; if (!string.IsNullOrEmpty(req.options)) { reqOptions = JObject.Parse(req.options); } if (module.IsListMode()) { var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.Template); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); bool isEditable = ActiveModule.CheckIfEditable(PortalSettings); queryBuilder.Build(module.Settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles); JplistQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, req.StatusLst, DnnLanguageUtils.GetCurrentCultureCode()); IDataItems dsItems; if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty) { dsItems = new DefaultDataItems() { Items = new List <DefaultDataItem>(), Total = 0 }; } else { IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions); dsItems = ds.GetAll(dsContext, queryBuilder.Select); } var mf = new ModelFactoryMultiple(dsItems.Items, module, PortalSettings); mf.Options = reqOptions; var model = mf.GetModelAsJson(false, req.onlyItems); //model["luceneQuery"] = dsItems.DebugInfo; if (LogContext.IsLogActive) { LogContext.Log(ActiveModule.ModuleID, "RequestContext", "IsEditable", isEditable); LogContext.Log(ActiveModule.ModuleID, "RequestContext", "UserRoles", PortalSettings.UserInfo.Social.Roles.Select(r => r.RoleName)); LogContext.Log(ActiveModule.ModuleID, "RequestContext", "CurrentUserId", PortalSettings.UserId); var logKey = "Query"; LogContext.Log(ActiveModule.ModuleID, logKey, "select", queryBuilder.Select); LogContext.Log(ActiveModule.ModuleID, logKey, "debuginfo", dsItems.DebugInfo); LogContext.Log(ActiveModule.ModuleID, logKey, "model", model); model["Logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(ActiveModule.ModuleID)); } var res = new ResultDTO() { data = model, count = dsItems.Total }; return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template ")); } } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
} // Only for Dnn Razor helpers public void Render(Page page) { _renderinfo.Template = _settings.Template; if (_settings.TabId > 0 && _settings.ModuleId > 0) // other module { ModuleController mc = new ModuleController(); _renderinfo.SetDataSourceModule(_settings.TabId, _settings.ModuleId, mc.GetModule(_renderinfo.ModuleId, _renderinfo.TabId, false), null, ""); } else // this module { _renderinfo.SetDataSourceModule(_settings.TabId, _module.ModuleID, _module, null, ""); } //start rendering if (_settings.Template != null) { if (!_settings.Template.DataNeeded()) { _renderinfo.SetData(null, new JObject(), _settings.Data); _renderinfo.OutputString = GenerateOutput(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main); } else if (_renderinfo.Template.IsListTemplate) { LogContext.Log(_module.ModuleID, "RequestContext", "QueryParam Id", ItemId); // Multi items template if (string.IsNullOrEmpty(ItemId)) { // List template if (_renderinfo.Template.Main != null) { // for list templates a main template need to be defined _renderinfo.Files = _renderinfo.Template.Main; string templateKey = GetDataList(_renderinfo, _settings, _renderinfo.Template.ClientSideData); if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey)) { _renderinfo.Files = _renderinfo.Template.Views[templateKey]; } if (!_renderinfo.SettingsMissing) { _renderinfo.OutputString = GenerateListOutput(page, _settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson); } } } else { // detail template if (_renderinfo.Template.Detail != null) { GetDetailData(_renderinfo, _settings); } if (_renderinfo.Template.Detail != null && !_renderinfo.ShowInitControl) { _renderinfo.Files = _renderinfo.Template.Detail; _renderinfo.OutputString = GenerateOutput(page, _settings.Template, _renderinfo.Template.Detail, _renderinfo.DataJson, _renderinfo.SettingsJson); } else // if itemid not corresponding to this module, show list template { // List template if (_renderinfo.Template.Main != null) { // for list templates a main template need to be defined _renderinfo.Files = _renderinfo.Template.Main; string templateKey = GetDataList(_renderinfo, _settings, _renderinfo.Template.ClientSideData); if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey)) { _renderinfo.Files = _renderinfo.Template.Views[templateKey]; } if (!_renderinfo.ShowInitControl) { _renderinfo.OutputString = GenerateListOutput(page, _settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson); } } } } } else { // single item template GetSingleData(_renderinfo, _settings); bool settingsNeeded = _renderinfo.Template.SettingsNeeded(); if (!_renderinfo.ShowInitControl && (!settingsNeeded || !string.IsNullOrEmpty(_renderinfo.SettingsJson))) { _renderinfo.OutputString = GenerateOutput(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main); } } } }
private string GetDataList(RenderInfo info, OpenContentModuleConfig ocModuleConfig) { var clientSide = info.Template.ClientSideData; string templateKey = ""; info.ResetData(); IDataSource ds = DataSourceManager.GetDataSource(_settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(ocModuleConfig); IEnumerable <IDataItem> resultList = new List <IDataItem>(); if (clientSide || !info.Files.DataInTemplate) { if (ds.Any(dsContext)) { info.SetData(resultList, ocModuleConfig.Settings.Data); info.DataExist = true; } if (info.Template.Views != null) { var indexConfig = OpenContentUtils.GetIndexConfig(info.Template); templateKey = GetTemplateKey(indexConfig); } } else { //server side bool useLucene = info.Template.Manifest.Index; if (useLucene) { var indexConfig = OpenContentUtils.GetIndexConfig(info.Template); if (info.Template.Views != null) { templateKey = GetTemplateKey(indexConfig); } bool isEditable = _module.ViewModule.CheckIfEditable(ocModuleConfig); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); queryBuilder.Build(ocModuleConfig.Settings.Query, !isEditable, ocModuleConfig.UserId, DnnLanguageUtils.GetCurrentCultureCode(), ocModuleConfig.UserRoles.FromDnnRoles(), QueryString); resultList = ds.GetAll(dsContext, queryBuilder.Select).Items; if (LogContext.IsLogActive) { //LogContext.Log(_module.ModuleID, "RequestContext", "EditMode", !addWorkFlow); LogContext.Log(_module.ViewModule.ModuleId, "RequestContext", "IsEditable", isEditable); LogContext.Log(_module.ViewModule.ModuleId, "RequestContext", "UserRoles", ocModuleConfig.UserRoles.Select(r => r.RoleName)); LogContext.Log(_module.ViewModule.ModuleId, "RequestContext", "CurrentUserId", ocModuleConfig.UserId); var logKey = "Query"; LogContext.Log(_module.ViewModule.ModuleId, logKey, "select", queryBuilder.Select); //LogContext.Log(_module.ModuleID, logKey, "result", resultList); } //App.Services.Logger.Debug($"Query returned [{0}] results.", total); if (!resultList.Any()) { //App.Services.Logger.Debug($"Query did not return any results. API request: [{0}], Lucene Filter: [{1}], Lucene Query:[{2}]", settings.Query, queryDef.Filter == null ? "" : queryDef.Filter.ToString(), queryDef.Query == null ? "" : queryDef.Query.ToString()); if (ds.Any(dsContext)) { info.SetData(resultList, ocModuleConfig.Settings.Data); info.DataExist = true; } } } else { resultList = ds.GetAll(dsContext, null).Items; //if (LogContext.IsLogActive) //{ // var logKey = "Get all data of module"; // LogContext.Log(_module.ModuleID, logKey, "result", resultList); //} } if (resultList.Any()) { info.SetData(resultList, ocModuleConfig.Settings.Data); } } return(templateKey); }
public HttpResponseMessage Get(string entity, string id) { try { //int ModuleId = int.Parse(Request.Headers.GetValues("ModuleId").First()); //int TabId = int.Parse(Request.Headers.GetValues("TabId").First()); ModuleController mc = new ModuleController(); ModuleInfo activeModule = ActiveModule; //mc.GetModule(ModuleId, TabId, false); OpenContentSettings settings = activeModule.OpenContentSettings(); ModuleInfo module = activeModule; if (settings.ModuleId > 0) { //ModuleController mc = new ModuleController(); module = mc.GetModule(settings.ModuleId, settings.TabId, false); } var manifest = settings.Template.Manifest; var templateManifest = settings.Template; JObject reqOptions = null; //if (!string.IsNullOrEmpty(req.options)) //{ // reqOptions = JObject.Parse(req.options); //} //string editRole = manifest.GetEditRole(); bool listMode = templateManifest != null && templateManifest.IsListTemplate; if (listMode) { var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); bool isEditable = ActiveModule.CheckIfEditable(PortalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit; queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles); //if (restSelect != null) //{ // RestQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, restSelect); //} queryBuilder.Select.Query.AddRule(new FilterRule() { Field = "$id", Value = new StringRuleValue(id) }); IDataItems dsItems; if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty) { dsItems = new DefaultDataItems() { Items = new List <DefaultDataItem>(), Total = 0 }; } else { var ds = DataSourceManager.GetDataSource(manifest.DataSource); var dsContext = new DataSourceContext() { ModuleId = module.ModuleID, UserId = UserInfo.UserID, TemplateFolder = settings.TemplateDir.FolderPath, Config = manifest.DataSourceConfig, Options = reqOptions }; dsItems = ds.GetAll(dsContext, queryBuilder.Select); } int mainTabId = settings.DetailTabId > 0 ? settings.DetailTabId : settings.TabId; ModelFactory mf = new ModelFactory(dsItems.Items, activeModule, PortalSettings, mainTabId); mf.Options = reqOptions; var model = mf.GetModelAsJson(false); var res = new JObject(); res["meta"] = new JObject(); res["meta"]["total"] = dsItems.Total; //model["luceneQuery"] = dsItems.DebugInfo; if (LogContext.IsLogActive) { var logKey = "Query"; LogContext.Log(activeModule.ModuleID, logKey, "select", queryBuilder.Select); LogContext.Log(activeModule.ModuleID, logKey, "result", dsItems); LogContext.Log(activeModule.ModuleID, logKey, "model", model); res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(activeModule.ModuleID)); } if (model["Items"] is JArray) { foreach (var item in (JArray)model["Items"]) { item["id"] = item["Context"]["Id"]; JsonUtils.IdJson(item); } } res[entity] = model["Items"]; return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template ")); } } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public override IDataItems GetAll(DataSourceContext context, Select selectQuery) { ReIndexIfNeeded(context.ModuleId, context.TabId, context.PortalId); if (context.Index && selectQuery != null) { SearchResults docs = LuceneUtils.Search(INDEX_SCOPE, selectQuery); if (LogContext.IsLogActive) { var logKey = "Lucene query"; LogContext.Log(context.ActiveModuleId, logKey, "Filter", docs.ResultDefinition.Filter); LogContext.Log(context.ActiveModuleId, logKey, "Query", docs.ResultDefinition.Query); LogContext.Log(context.ActiveModuleId, logKey, "Sort", docs.ResultDefinition.Sort); LogContext.Log(context.ActiveModuleId, logKey, "PageIndex", docs.ResultDefinition.PageIndex); LogContext.Log(context.ActiveModuleId, logKey, "PageSize", docs.ResultDefinition.PageSize); } int total = docs.TotalResults; var dataList = new List <IDataItem>(); foreach (string item in docs.ids) { var user = UserController.GetUserById(context.PortalId, int.Parse(item)); if (user != null) { dataList.Add(ToData(user)); } else { App.Services.Logger.Debug($"DnnUsersDataSource.GetAll() ContentItem not found [{item}]"); } } return(new DefaultDataItems() { Items = dataList, Total = total, DebugInfo = docs.ResultDefinition.Filter + " - " + docs.ResultDefinition.Query + " - " + docs.ResultDefinition.Sort }); } else { int pageIndex = 0; int pageSize = 1000; int total = 0; IEnumerable <UserInfo> users; if (selectQuery != null) { pageIndex = selectQuery.PageIndex; pageSize = selectQuery.PageSize; var ruleDisplayName = selectQuery.Query.FilterRules.FirstOrDefault(f => f.Field == "DisplayName"); var ruleRoles = selectQuery.Query.FilterRules.FirstOrDefault(f => f.Field == "Roles"); if (ruleDisplayName != null) { string displayName = ruleDisplayName.Value.AsString + "%"; users = UserController.GetUsersByDisplayName(context.PortalId, displayName, pageIndex, pageSize, ref total, true, false).Cast <UserInfo>(); } else { users = UserController.GetUsers(context.PortalId, pageIndex, pageSize, ref total, true, false).Cast <UserInfo>(); total = users.Count(); } if (ruleRoles != null) { var roleNames = ruleRoles.MultiValue.Select(r => r.AsString).ToList(); users = users.Where(u => u.Roles.Intersect(roleNames).Any()); } } else { users = UserController.GetUsers(context.PortalId, pageIndex, pageSize, ref total, true, false).Cast <UserInfo>(); } int excluded = users.Count() - users.Count(u => u.IsInRole("Administrators")); users = users.Where(u => !u.IsInRole("Administrators")); //users = users.Skip(pageIndex * pageSize).Take(pageSize); var dataList = new List <IDataItem>(); foreach (var user in users) { dataList.Add(ToData(user)); } return(new DefaultDataItems() { Items = dataList, Total = total - excluded, //DebugInfo = }); } }
public HttpResponseMessage Get(string entity, int pageIndex, int pageSize, string filter = null, string sort = null) { try { var collection = entity; //if (entity == "items") collection = AppConfig.DEFAULT_COLLECTION; // backward compatibility RestSelect restSelect = new RestSelect() { PageIndex = pageIndex, PageSize = pageSize }; if (!string.IsNullOrEmpty(filter)) { restSelect.Query = JsonConvert.DeserializeObject <RestGroup>(filter); } if (!string.IsNullOrEmpty(sort)) { restSelect.Sort = JsonConvert.DeserializeObject <List <RestSort> >(sort); } ModuleInfo activeModule = ActiveModule; OpenContentSettings settings = activeModule.OpenContentSettings(); OpenContentModuleInfo module = new OpenContentModuleInfo(ActiveModule); JObject reqOptions = null; if (module.IsListMode()) { var indexConfig = OpenContentUtils.GetIndexConfig(settings.TemplateDir, collection); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); bool isEditable = ActiveModule.CheckIfEditable(PortalSettings); queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles); RestQueryBuilder.MergeQuery(indexConfig, queryBuilder.Select, restSelect, DnnLanguageUtils.GetCurrentCultureCode()); IDataItems dsItems; if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty) { dsItems = new DefaultDataItems() { Items = new List <DefaultDataItem>(), Total = 0 }; } else { IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions); dsContext.Collection = collection; dsItems = ds.GetAll(dsContext, queryBuilder.Select); } var mf = new ModelFactoryMultiple(dsItems.Items, module, PortalSettings, collection); mf.Options = reqOptions; var model = mf.GetModelAsJson(false); var res = new JObject(); res["meta"] = new JObject(); if (LogContext.IsLogActive) { var logKey = "Query"; LogContext.Log(activeModule.ModuleID, logKey, "select", queryBuilder.Select); LogContext.Log(activeModule.ModuleID, logKey, "debuginfo", dsItems.DebugInfo); LogContext.Log(activeModule.ModuleID, logKey, "model", model); res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(activeModule.ModuleID)); if (restSelect != null) { //res["meta"]["select"] = JObject.FromObject(restSelect); } } foreach (var item in model["Items"] as JArray) { item["id"] = item["Context"]["Id"]; JsonUtils.IdJson(item); } res[entity] = model[collection]; res["meta"]["total"] = dsItems.Total; return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template ")); } } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public HttpResponseMessage List(RequestDTO req) { try { OpenContentSettings settings = ActiveModule.OpenContentSettings(); ModuleInfo module = ActiveModule; if (settings.ModuleId > 0) { ModuleController mc = new ModuleController(); module = mc.GetModule(settings.ModuleId, settings.TabId, false); } var manifest = settings.Template.Manifest; var templateManifest = settings.Template; JObject reqOptions = null; if (!string.IsNullOrEmpty(req.options)) { reqOptions = JObject.Parse(req.options); } //string editRole = manifest.GetEditRole(); bool listMode = templateManifest != null && templateManifest.IsListTemplate; if (listMode) { var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); bool isEditable = ActiveModule.CheckIfEditable(PortalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit; queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles); JplistQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, req.StatusLst, DnnLanguageUtils.GetCurrentCultureCode()); IDataItems dsItems; if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty) { dsItems = new DefaultDataItems() { Items = new List <DefaultDataItem>(), Total = 0 }; } else { var ds = DataSourceManager.GetDataSource(manifest.DataSource); var dsContext = new DataSourceContext() { ModuleId = module.ModuleID, ActiveModuleId = ActiveModule.ModuleID, UserId = UserInfo.UserID, TemplateFolder = settings.TemplateDir.FolderPath, Config = manifest.DataSourceConfig, Options = reqOptions }; dsItems = ds.GetAll(dsContext, queryBuilder.Select); } int mainTabId = settings.DetailTabId > 0 ? settings.DetailTabId : settings.TabId; ModelFactory mf = new ModelFactory(dsItems.Items, ActiveModule, PortalSettings, mainTabId); mf.Options = reqOptions; var model = mf.GetModelAsJson(false); //model["luceneQuery"] = dsItems.DebugInfo; if (LogContext.IsLogActive) { LogContext.Log(ActiveModule.ModuleID, "RequestContext", "IsEditable", isEditable); LogContext.Log(ActiveModule.ModuleID, "RequestContext", "UserRoles", PortalSettings.UserInfo.Social.Roles.Select(r => r.RoleName)); LogContext.Log(ActiveModule.ModuleID, "RequestContext", "CurrentUserId", PortalSettings.UserId); var logKey = "Query"; LogContext.Log(ActiveModule.ModuleID, logKey, "select", queryBuilder.Select); LogContext.Log(ActiveModule.ModuleID, logKey, "result", dsItems); LogContext.Log(ActiveModule.ModuleID, logKey, "model", model); model["Logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(ActiveModule.ModuleID)); } var res = new ResultDTO() { data = model, count = dsItems.Total }; return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template ")); } } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public string GetDataList(RenderInfo info, OpenContentSettings settings, bool clientSide) { string templateKey = ""; info.ResetData(); IDataSource ds = DataSourceManager.GetDataSource(Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(_module); IEnumerable <IDataItem> resultList = new List <IDataItem>(); if (clientSide || !info.Files.DataInTemplate) { if (ds.Any(dsContext)) { info.SetData(resultList, settings.Data); info.DataExist = true; } if (info.Template.Views != null) { var indexConfig = OpenContentUtils.GetIndexConfig(info.Template); templateKey = GetTemplateKey(indexConfig); } } else { //server side bool useLucene = info.Template.Manifest.Index; if (useLucene) { PortalSettings portalSettings = PortalSettings.Current; var indexConfig = OpenContentUtils.GetIndexConfig(info.Template); if (info.Template.Views != null) { templateKey = GetTemplateKey(indexConfig); } bool isEditable = _module.ViewModule.CheckIfEditable(portalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit; QueryBuilder queryBuilder = new QueryBuilder(indexConfig); queryBuilder.Build(settings.Query, !isEditable, portalSettings.UserId, DnnLanguageUtils.GetCurrentCultureCode(), portalSettings.UserInfo.Social.Roles, QueryString); resultList = ds.GetAll(dsContext, queryBuilder.Select).Items; if (LogContext.IsLogActive) { //LogContext.Log(_module.ModuleID, "RequestContext", "EditMode", !addWorkFlow); LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "IsEditable", isEditable); LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "UserRoles", portalSettings.UserInfo.Social.Roles.Select(r => r.RoleName)); LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "CurrentUserId", portalSettings.UserId); var logKey = "Query"; LogContext.Log(_module.ViewModule.ModuleID, logKey, "select", queryBuilder.Select); //LogContext.Log(_module.ModuleID, logKey, "result", resultList); } //Log.Logger.DebugFormat("Query returned [{0}] results.", total); if (!resultList.Any()) { /* * if (ds.Any(dsContext) && settings.Query.IsEmpty()) * { * //there seems to be data in de database, but we did not find it in Lucene, so probably the data isn't indexed anymore/yet * //Components.Lucene.LuceneController.Instance.ReIndexModuleData(_module.ViewModule.ModuleID, settings); * } */ //Log.Logger.DebugFormat("Query did not return any results. API request: [{0}], Lucene Filter: [{1}], Lucene Query:[{2}]", settings.Query, queryDef.Filter == null ? "" : queryDef.Filter.ToString(), queryDef.Query == null ? "" : queryDef.Query.ToString()); if (ds.Any(dsContext)) { info.SetData(resultList, settings.Data); info.DataExist = true; } } } else { resultList = ds.GetAll(dsContext, null).Items; //if (LogContext.IsLogActive) //{ // var logKey = "Get all data of module"; // LogContext.Log(_module.ModuleID, logKey, "result", resultList); //} } if (resultList.Any()) { info.SetData(resultList, settings.Data); } } return(templateKey); }
private string GenerateOutputSingle(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files) { if (template != null) { string templateVirtualFolder = template.UrlFolder; string physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder); if (dataJson != null) { ModelFactorySingle mf; if (_renderinfo.Data == null) { // demo data mf = new ModelFactorySingle(_renderinfo.DataJson, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current); } else { mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current); } if (template.Extension != ".hbs") // razor { dynamic model = mf.GetModelAsDynamic(); if (LogContext.IsLogActive) { var logKey = "Render single item template"; LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", template.FilePath); LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model); } return(ExecuteRazor(template, model)); } else // handlebars { object model; if (OpenContentControllerFactory.Instance.OpenContentGlobalSettingsController.GetFastHandlebars()) { model = mf.GetModelAsDictionary(); } else { model = mf.GetModelAsDynamic(); } if (LogContext.IsLogActive) { var logKey = "Render single item template"; LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", template.FilePath); LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model); } HandlebarsEngine hbEngine = new HandlebarsEngine(); return(hbEngine.Execute(page, template, model)); } } else { return(""); } } else { return(""); } }
public void Render(Page page) { //start rendering if (Settings.Template != null) { if (!Settings.Template.DataNeeded()) { // template without schema & options // render the template with no data _renderinfo.SetData(null, new JObject(), Settings.Data); _renderinfo.OutputString = GenerateOutputSingle(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main); } else if (_renderinfo.Template.IsListTemplate) { // Multi items template if (string.IsNullOrEmpty(ItemId)) { // List template if (_renderinfo.Template.Main != null) { // for list templates a main template need to be defined _renderinfo.Files = _renderinfo.Template.Main; string templateKey = GetDataList(_renderinfo, Settings, _renderinfo.Template.ClientSideData); if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey)) { _renderinfo.Files = _renderinfo.Template.Views[templateKey]; } if (!_renderinfo.ShowInitControl) { _renderinfo.OutputString = GenerateListOutput(page, Settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson); } } } else { LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "QueryParam Id", ItemId); // detail template if (_renderinfo.Template.Detail != null) { GetDetailData(_renderinfo, _module); } if (_renderinfo.Template.Detail != null && !_renderinfo.ShowInitControl) { _renderinfo.Files = _renderinfo.Template.Detail; _renderinfo.OutputString = GenerateOutputDetail(page, Settings.Template, _renderinfo.Template.Detail, _renderinfo.DataJson, _renderinfo.SettingsJson); } else // if itemid not corresponding to this module or no DetailTemplate present, show list template { // List template if (_renderinfo.Template.Main != null) { // for list templates a main template need to be defined _renderinfo.Files = _renderinfo.Template.Main; string templateKey = GetDataList(_renderinfo, Settings, _renderinfo.Template.ClientSideData); if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey)) { _renderinfo.Files = _renderinfo.Template.Views[templateKey]; } if (!_renderinfo.ShowInitControl) { _renderinfo.OutputString = GenerateListOutput(page, Settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson); } } } } } else { // single item template GetSingleData(_renderinfo, Settings); if (!_renderinfo.ShowInitControl) { _renderinfo.OutputString = GenerateOutputSingle(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main); } } } }