private LayoutModel GetLayoutModel(string appName) { AppConf conf = BamConf.AppConfigs.FirstOrDefault(c => c.Name.Equals(appName)); LayoutConf defaultLayoutConf = new LayoutConf(conf); LayoutModel layoutModel = defaultLayoutConf.CreateLayoutModel(); return(layoutModel); }
protected internal LayoutModel GetLayoutModelForPath(string path) { if (path.Equals("/")) { path = "/{0}"._Format(AppConf.DefaultPage.Or(AppConf.DefaultLayoutConst)); } string absolutePath; string lowered = path.ToLowerInvariant(); string[] layoutSegments = string.Format("~/pages/{0}{1}", path, LayoutFileExtension).DelimitSplit("/", "\\"); string[] htmlSegments = string.Format("~/pages/{0}.html", path).DelimitSplit("/", "\\"); LayoutModel result = null; if (LayoutModelsByPath.ContainsKey(lowered)) { result = LayoutModelsByPath[lowered]; } else if (AppRoot.FileExists(out absolutePath, layoutSegments)) { LayoutConf layoutConf = new LayoutConf(AppConf); LayoutConf fromLayoutFile = FileCachesByExtension[LayoutFileExtension].GetText(new FileInfo(absolutePath)).FromJson <LayoutConf>(); layoutConf.CopyProperties(fromLayoutFile); result = layoutConf.CreateLayoutModel(htmlSegments); LayoutModelsByPath[lowered] = result; } else { LayoutConf defaultLayoutConf = new LayoutConf(AppConf); result = defaultLayoutConf.CreateLayoutModel(htmlSegments); FileInfo file = new FileInfo(AppRoot.GetAbsolutePath(layoutSegments)); if (!file.Directory.Exists) { file.Directory.Create(); } // write the file to disk defaultLayoutConf.ToJsonFile(file); LayoutModelsByPath[lowered] = result; } if (string.IsNullOrEmpty(Path.GetExtension(path))) { string page = path.TruncateFront(1); if (!string.IsNullOrEmpty(page)) { result.StartPage = page; } } return(result); }
private void RenderResult(string appName, string path, ExecutionRequest execRequest) { string ext = Path.GetExtension(path).ToLowerInvariant(); if (string.IsNullOrEmpty(ext)) { AppConf appConf = this.BamConf[appName]; if (appConf != null) { LayoutConf pageConf = new LayoutConf(appConf); string fileName = Path.GetFileName(path); string json = pageConf.ToJson(true); appConf.AppRoot.WriteFile("~/pages/{0}.layout"._Format(fileName), json); } } RendererFactory.Respond(execRequest, ContentResponder); }