public static List <IRenderTask> GetLayoutPlan(string NameOrId, RenderContext context) { var layout = context.WebSite.SiteDb().Layouts.GetByNameOrId(NameOrId); if (layout == null) { return(null); } List <IRenderTask> renderplans = null; EvaluatorOption options = new EvaluatorOption(); options.RenderHeader = true; options.OwnerObjectId = layout.Id; if (context.Request.Channel == RequestChannel.InlineDesign) { string body = DomService.ApplyKoobooId(layout.Body); options.RequireBindingInfo = true; renderplans = RenderEvaluator.Evaluate(body, options); } else { renderplans = Cache.RenderPlan.GetOrAddRenderPlan(context.WebSite.SiteDb(), layout.Id, () => RenderEvaluator.Evaluate(layout.Body, options)); } return(renderplans); }
public static async Task <string> RenderPageAsync(FrontContext context) { if (context.Page.Parameters.Count > 0) { context.RenderContext.DataContext.Push(context.Page.Parameters); } string result = string.Empty; List <IRenderTask> RenderPlan = null; var option = RenderOptionHelper.GetPageOption(context); if (option.RequireBindingInfo) { string html = DomService.ApplyKoobooId(context.Page.Body); RenderPlan = RenderEvaluator.Evaluate(html, option); var traceability = new ComponentTrace(context.Page.Id.ToString(), "page"); var bindingTask = new BindingRenderTask(traceability, new Dictionary <string, string> { { "scope", "true" } }); RenderPlan.Insert(0, bindingTask); RenderPlan.Add(bindingTask.BindingEndRenderTask); result = RenderHelper.Render(RenderPlan, context.RenderContext); result = DomService.EnsureDocType(result); } else { RenderPlan = Cache.RenderPlan.GetOrAddRenderPlan(context.SiteDb, context.Page.Id, () => RenderEvaluator.Evaluate(context.Page.Body, option)); result = RenderHelper.Render(RenderPlan, context.RenderContext); } if (context.Page.Type == Models.PageType.RichText) { //special for richtext editor. meta name = "viewport" content = "width=device-width, initial-scale=1" var header = new Models.HtmlHeader(); Dictionary <string, string> content = new Dictionary <string, string>(); content.Add("", "width=device-width, initial-scale=1"); header.Metas.Add(new Models.HtmlMeta() { name = "viewport", content = content }); result = HtmlHeadService.SetHeaderToHtml(result, header); } return(result); }
public static async Task <string> RenderPageAsync(FrontContext context) { if (context.Page.Parameters.Count > 0) { context.RenderContext.DataContext.Push(context.Page.Parameters); } string result = string.Empty; List <IRenderTask> RenderPlan = null; if (context.RenderContext.Request.Channel != Data.Context.RequestChannel.InlineDesign) { RenderPlan = Cache.RenderPlan.GetOrAddRenderPlan(context.SiteDb, context.Page.Id, () => RenderEvaluator.Evaluate(context.Page.Body, GetPageOption(context))); result = RenderHelper.Render(RenderPlan, context.RenderContext); } else { string html = DomService.ApplyKoobooId(context.Page.Body); RenderPlan = RenderEvaluator.Evaluate(html, GetPageOption(context)); RenderPlan.Insert(0, new BindingObjectRenderTask() { ObjectType = "page", NameOrId = context.Page.Id.ToString() }); result = RenderHelper.Render(RenderPlan, context.RenderContext); result = DomService.EnsureDocType(result); } if (context.Page.Type == Models.PageType.RichText) { //special for richtext editor. meta name = "viewport" content = "width=device-width, initial-scale=1" var header = new Models.HtmlHeader(); Dictionary <string, string> content = new Dictionary <string, string>(); content.Add("", "width=device-width, initial-scale=1"); header.Metas.Add(new Models.HtmlMeta() { name = "viewport", content = content }); result = HtmlHeadService.SetHeaderToHtml(result, header); } return(result); }
public Task <string> RenderAsync(RenderContext context, ComponentSetting settings) { if (settings != null && !string.IsNullOrEmpty(settings.NameOrId)) { HtmlBlock htmlBlock = context.WebSite.SiteDb().HtmlBlocks.GetByNameOrId(settings.NameOrId); if (htmlBlock != null) { var result = htmlBlock.GetValue(context.Culture).ToString(); if (context.Request.Channel == RequestChannel.InlineDesign) { result = DomService.ApplyKoobooId(result); } return(Task.FromResult(result)); } } return(Task.FromResult(string.Empty)); }
public static List <IRenderTask> GetLayoutPlan(string NameOrId, RenderContext context) { var layout = context.WebSite.SiteDb().Layouts.GetByNameOrId(NameOrId); if (layout == null) { return(null); } List <IRenderTask> renderplans = null; EvaluatorOption options = RenderOptionHelper.GetLayoutOption(context, layout.Id); if (options.RequireBindingInfo) { string body = DomService.ApplyKoobooId(layout.Body); renderplans = RenderEvaluator.Evaluate(body, options); } else { renderplans = Cache.RenderPlan.GetOrAddRenderPlan(context.WebSite.SiteDb(), layout.Id, () => RenderEvaluator.Evaluate(layout.Body, options)); } return(renderplans); }
public Task <string> RenderAsync(RenderContext context, ComponentSetting setting) { var frontcontext = context.GetItem <FrontContext>(); DateTime logstart = DateTime.UtcNow; View view = null; if (context.WebSite.EnableFrontEvents && context.IsSiteBinding) { view = Kooboo.Sites.FrontEvent.Manager.RaiseViewEvent(FrontEvent.enumEventType.ViewFinding, context, setting); if (view == null) { view = context.WebSite.SiteDb().Views.GetByNameOrId(setting.NameOrId); if (view != null) { var result = FrontEvent.Manager.RaiseViewEvent(FrontEvent.enumEventType.ViewFound, context, setting, view); if (result != null) { view = result; } } else { view = FrontEvent.Manager.RaiseViewEvent(FrontEvent.enumEventType.ViewNotFound, context, setting); } } } if (view == null) { view = context.WebSite.SiteDb().Views.GetByNameOrId(setting.NameOrId); } if (view == null) { frontcontext.AddLogEntry("view", "", logstart, 404); return(Task.FromResult(string.Empty)); } view = CheckAlternativeView(view, frontcontext); frontcontext.ExecutingView = view; var dataResults = new Dictionary <string, object>(); string viewBody = null; frontcontext.Views.Add(view); if (setting.Settings != null && setting.Settings.Count() > 0) { context.DataContext.Push(setting.Settings); } var allviewdatamethods = Cache.SiteObjectCache <ViewDataMethod> .List(frontcontext.SiteDb).Where(o => o.ViewId == view.Id).ToList(); foreach (var datemethod in allviewdatamethods) { frontcontext.ViewDataMethods.Add(datemethod); var result = DataSources.DataMethodExecutor.ExecuteViewDataMethod(frontcontext, datemethod); if (result != null) { if (result is PagedResult) { var pagedresult = result as PagedResult; dataResults[datemethod.AliasName] = pagedresult.DataList; dataResults[datemethod.AliasName + ".TotalPages"] = pagedresult.TotalPages; List <int> PageNrs = new List <int>(); for (int i = 1; i <= pagedresult.TotalPages; i++) { PageNrs.Add(i); } dataResults[datemethod.AliasName + ".CurrentPage"] = pagedresult.PageNumber; dataResults[datemethod.AliasName + ".Pages"] = PageNrs; } else { //if (result is DataMethodResult) //{ // var methodresult = result as DataMethodResult; // if (methodresult.Value is PagedResult) // { // var pagedresult = methodresult.Value as PagedResult; // dataResults[datemethod.AliasName + ".TotalPages"] = pagedresult.TotalPages; // List<int> PageNrs = new List<int>(); // for (int i = 1; i <= pagedresult.TotalPages; i++) // { // PageNrs.Add(i); // } // dataResults[datemethod.AliasName + ".CurrentPage"] = pagedresult.PageNumber; // dataResults[datemethod.AliasName + ".Pages"] = PageNrs; // } //} dataResults[datemethod.AliasName] = result; } } } if (dataResults.Count > 0) { context.DataContext.Push(dataResults); } viewBody = view.Body; Guid viewid = view.Id; List <IRenderTask> renderplan; string returnstring = string.Empty; var options = RenderOptionHelper.GetViewOption(context, viewid); if (options.RequireBindingInfo) { viewBody = DomService.ApplyKoobooId(viewBody); renderplan = RenderEvaluator.Evaluate(viewBody, options); } else { renderplan = Cache.RenderPlan.GetOrAddRenderPlan(frontcontext.SiteDb, viewid, () => RenderEvaluator.Evaluate(viewBody, options)); } returnstring += RenderHelper.Render(renderplan, frontcontext.RenderContext); if (dataResults.Count > 0) { context.DataContext.Pop(); } if (setting.Settings != null && setting.Settings.Count() > 0) { context.DataContext.Pop(); } frontcontext.AddLogEntry("view", view.Name, logstart, 200); frontcontext.ExecutingView = null; return(Task.FromResult(returnstring)); }
public static async Task <string> RenderPageAsync(FrontContext context) { if (context.Page.Parameters.Count > 0) { context.RenderContext.DataContext.Push(context.Page.Parameters); } string result = string.Empty; List <IRenderTask> RenderPlan = null; var option = RenderOptionHelper.GetPageOption(context); if (option.RequireBindingInfo) { string html = DomService.ApplyKoobooId(context.Page.Body); RenderPlan = RenderEvaluator.Evaluate(html, option); var traceability = new ComponentTrace(context.Page.Id.ToString(), "page"); var bindingTask = new BindingRenderTask(traceability, new Dictionary <string, string> { { "scope", "true" } }); RenderPlan.Insert(0, bindingTask); RenderPlan.Add(bindingTask.BindingEndRenderTask); result = RenderHelper.Render(RenderPlan, context.RenderContext); result = DomService.EnsureDocType(result); } else { RenderPlan = Cache.RenderPlan.GetOrAddRenderPlan(context.SiteDb, context.Page.Id, () => RenderEvaluator.Evaluate(context.Page.Body, option)); // check the cache. if (context.Page.EnableCache) { Dictionary <string, string> querystring = null; if (!string.IsNullOrWhiteSpace(context.Page.CacheQueryKeys)) { //querystring = RequestManager.GetQueryString(context.RenderContext.Request); querystring = GetParaValues(context.RenderContext, context.Page.CacheKeys); } if (context.Page.CacheByVersion) { result = PageCache.PageCache.GetByVersion(context.SiteDb.Id, context.Page.Id, context.Page.Version, querystring); } else { result = PageCache.PageCache.GetByMinutes(context.SiteDb.Id, context.Page.Id, context.Page.CacheMinutes, querystring, context.Page.Version); } if (string.IsNullOrEmpty(result)) { result = RenderHelper.Render(RenderPlan, context.RenderContext); Kooboo.Sites.Render.PageCache.PageCache.Set(context.SiteDb.Id, context.Page.Id, result, context.Page.Version, querystring); } // cache result may have replacement. } else { result = RenderHelper.Render(RenderPlan, context.RenderContext); } } if (context.Page.Type == Models.PageType.RichText) { //special for richtext editor. meta name = "viewport" content = "width=device-width, initial-scale=1" var header = new Models.HtmlHeader(); Dictionary <string, string> content = new Dictionary <string, string>(); content.Add("", "width=device-width, initial-scale=1"); header.Metas.Add(new Models.HtmlMeta() { name = "viewport", content = content }); result = HtmlHeadService.SetHeaderToHtml(result, header); } return(result); }
public string Execute(RenderContext context, Dictionary <string, string> Paras, EvaluatorOption options) { if (Paras != null && Paras.Count() > 0) { Dictionary <string, string> datavalue = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); foreach (var item in Paras) { if (item.Key.ToLower() != "file" && item.Key.ToLower() != "virtual") { datavalue.Add(item.Key, item.Value); } } if (datavalue.Count() > 0) { context.DataContext.Push(datavalue); } } var file = GetFilePath(context, Paras); var source = GetSourceFromDb(context, file); if (!string.IsNullOrEmpty(source)) { List <IRenderTask> renderplan; if (options == null) { options = new EvaluatorOption(); options.RenderUrl = true; options.RenderHeader = false; } Guid sourceid = Lib.Security.Hash.ComputeGuidIgnoreCase(source); if (context.Request.Channel == RequestChannel.InlineDesign) { source = DomService.ApplyKoobooId(source); options.RequireBindingInfo = true; renderplan = RenderEvaluator.Evaluate(source, options); } else { SiteDb sitedb; if (context.WebSite == null) { var site = new WebSite() { Name = "__Koobootemp" }; sitedb = site.SiteDb(); } else { sitedb = context.WebSite.SiteDb(); } renderplan = Cache.RenderPlan.GetOrAddRenderPlan(sitedb, sourceid, () => RenderEvaluator.Evaluate(source, options)); } return(RenderHelper.Render(renderplan, context)); } return(null); }
public string Execute(RenderContext context, Dictionary <string, string> Paras, EvaluatorOption options) { if (Paras != null && Paras.Count() > 0) { Dictionary <string, string> datavalue = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); foreach (var item in Paras) { if (item.Key.ToLower() != "name" && item.Key.ToLower() != "id") { datavalue.Add(item.Key, item.Value); } } if (datavalue.Count() > 0) { context.DataContext.Push(datavalue); } } string layoutNameOrId = GetLayoutNameOrId(Paras); string layoutbody = null; if (!string.IsNullOrEmpty(layoutNameOrId)) { layoutbody = GetSourceFromDb(context, layoutNameOrId); if (!string.IsNullOrEmpty(layoutbody)) { List <IRenderTask> renderplan; if (options == null) { options = new EvaluatorOption(); options.RenderUrl = false; options.RenderHeader = false; options.EnableImageBrowserCache = true; options.EnableJsCssBrowserCache = true; } Guid sourceid = Lib.Security.Hash.ComputeHashGuid(layoutbody); // GetLayoutGuid(layoutNameOrId); if (context.Request.Channel == RequestChannel.InlineDesign) { layoutbody = DomService.ApplyKoobooId(layoutbody); options.RequireBindingInfo = true; renderplan = RenderEvaluator.Evaluate(layoutbody, options); } else { SiteDb sitedb; if (context.WebSite == null) { var site = new WebSite() { Name = "__Koobootemp" }; sitedb = site.SiteDb(); } else { sitedb = context.WebSite.SiteDb(); } renderplan = Cache.RenderPlan.GetOrAddRenderPlan(sitedb, sourceid, () => RenderEvaluator.Evaluate(layoutbody, options)); } return(RenderHelper.Render(renderplan, context)); } } return(null); }