public static RenderRespnose RenderHtml(RenderContext Context, RenderOption option, string relativeurl) { var sourceprovider = GetSourceProvider(Context, option); RenderRespnose response = new RenderRespnose(); response.ContentType = "text/html"; string minetype = IOHelper.MimeType(relativeurl); if (!string.IsNullOrEmpty(minetype)) { response.ContentType = minetype; } if (Context == null || sourceprovider == null) { return(response); } string htmlbody = sourceprovider.GetString(Context, relativeurl); if (string.IsNullOrEmpty(htmlbody)) { return(response); } var hashid = Lib.Security.Hash.ComputeHashGuid(htmlbody); var EvaluatorOption = new EvaluatorOption(); EvaluatorOption.EnableImageBrowserCache = true; EvaluatorOption.EnableJsCssBrowserCache = true; EvaluatorOption.Evaluators = Kooboo.Render.Components.EvaluatorContainer.ListWithServerComponent; var RenderPlan = RenderPlanCache.GetOrAddRenderPlan(hashid, () => RenderEvaluator.Evaluate(htmlbody, EvaluatorOption)); // set the culture... string culture = Context.Culture; if (!string.IsNullOrEmpty(culture)) { Context.DataContext.Push("culture", culture); } string result = Kooboo.Sites.Render.RenderHelper.Render(RenderPlan, Context); string finalreseult = null; if (!string.IsNullOrEmpty(finalreseult)) { response.Body = finalreseult; } else { response.Body = result; } return(response); }
public void RenderView(string ViewBody) { var options = RenderOptionHelper.GetViewOption(context, default(Guid)); var renderplan = RenderEvaluator.Evaluate(ViewBody, options); var result = RenderHelper.Render(renderplan, this.context); if (!string.IsNullOrWhiteSpace(result)) { write(result); } }
public static RenderRespnose RenderHtml(RenderContext Context, SpaRenderOption option, string relativeurl) { var sourceprovider = GetSourceProvider(Context, option); RenderRespnose response = new RenderRespnose(); response.ContentType = "text/html"; string minetype = IOHelper.MimeType(relativeurl); if (!string.IsNullOrEmpty(minetype)) { response.ContentType = minetype; } if (Context == null || sourceprovider == null) { return(response); } string htmlbody = sourceprovider.GetString(Context, relativeurl); if (string.IsNullOrEmpty(htmlbody)) { return(response); } var hashid = Lib.Security.Hash.ComputeHashGuid(htmlbody); var EvaluatorOption = new EvaluatorOption(); EvaluatorOption.IgnoreEvaluators = EnumEvaluator.Form | EnumEvaluator.LayoutCommand; EvaluatorOption.Evaluators = Kooboo.Render.Components.EvaluatorContainer.ListWithServerComponent; var RenderPlan = RenderPlanCache.GetOrAddRenderPlan(hashid, () => RenderEvaluator.Evaluate(htmlbody, EvaluatorOption)); string result = Sites.Render.RenderHelper.Render(RenderPlan, Context); string finalreseult = null; if (!string.IsNullOrEmpty(finalreseult)) { response.Body = finalreseult; } else { response.Body = result; } return(response); }
public Task <string> RenderMockAsync(RenderContext context, ComponentSetting setting) { var frontcontext = context.GetItem <FrontContext>(); DateTime logstart = DateTime.UtcNow; View view = context.WebSite.SiteDb().Views.GetByNameOrId(setting.NameOrId); view = CheckAlternativeView(view, frontcontext); frontcontext.ExecutingView = view; string viewBody = null; frontcontext.Views.Add(view); if (setting.Settings != null && setting.Settings.Count() > 0) { context.DataContext.Push(setting.Settings); } viewBody = view.Body; Guid viewid = view.Id; List <IRenderTask> renderplan; string returnstring = string.Empty; var options = RenderOptionHelper.GetViewOption(context, viewid); options.MockData = true; renderplan = RenderEvaluator.Evaluate(viewBody, options); returnstring += RenderHelper.Render(renderplan, frontcontext.RenderContext); 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)); }
private List <IRenderTask> GetBodyTask(string body) { if (bodyRenderTask == null) { bodyRenderTask = RenderEvaluator.Evaluate(body, new EvaluatorOption()); _bodyhash = Lib.Security.Hash.ComputeHashGuid(body); } else { var hash = Lib.Security.Hash.ComputeHashGuid(body); if (hash != _bodyhash) { bodyRenderTask = RenderEvaluator.Evaluate(body, new EvaluatorOption()); _bodyhash = hash; } } return(bodyRenderTask); }
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 Task <string> RenderAsync(RenderContext context, ComponentSetting settings) { if (settings == null || string.IsNullOrWhiteSpace(settings.NameOrId)) { return(null); } var sitedb = context.WebSite.SiteDb(); var formid = Data.IDGenerator.GetOrGenerate(settings.NameOrId, ConstObjectType.Form); var form = sitedb.Forms.Get(formid); if (form == null) { return(null); } var formsetting = sitedb.FormSetting.GetByFormId(form.Id); string body = form.Body; if (body.IndexOf("<form", StringComparison.OrdinalIgnoreCase) == -1) { body = "<form>" + body + "</form>"; } if (formsetting == null || formsetting.Enable == false || string.IsNullOrWhiteSpace(formsetting.FormSubmitter)) { return(Task.FromResult(body)); } var computeHash = Lib.Security.Hash.ComputeHashGuid(body); if (computeHash != this.FormHash) { this.FormHash = computeHash; // reset form... var el = GetFormElement(body); this.FormAttributes = new Dictionary <string, string>(); foreach (var item in el.attributes) { this.FormAttributes.Add(item.name, item.value); } var option = RenderOptionHelper.GetFormOption(context, form.Id); this.bodyRenderTask = RenderEvaluator.Evaluate(el.InnerHtml, option); } string submiturl = Kooboo.Sites.HtmlForm.FormManager.GetSubmitUrl(form, formsetting, context); Dictionary <string, string> attributes = new Dictionary <string, string>(this.FormAttributes); attributes["action"] = submiturl; attributes["method"] = string.IsNullOrEmpty(formsetting.Method) ? "post" : formsetting.Method; if (formsetting.AllowAjax) { attributes["onsubmit"] = "return false;"; } string key = "kform_" + Lib.Security.ShortGuid.GetNewShortId(); /// append additional koobooform id..... if (form.FormType == Models.FormType.KoobooForm) { attributes["id"] = key; } string opentag = Kooboo.Sites.Service.DomService.GenerateOpenTag(attributes, "form"); if (formsetting.IsSelfRefresh) { opentag = opentag + "<input type='hidden' name=\"" + Sites.HtmlForm.FormManager.FormUrlName + "\" value=\"" + context.Request.RawRelativeUrl + "\" />"; } // If ajax, append the additional text here... //opentag += JsString(key, formsetting.SuccessCallBack, formsetting.FailedCallBack); string result = opentag + RenderHelper.Render(GetBodyTask(form.Body), context) + "</form>"; result += JsString(key, formsetting.SuccessCallBack, formsetting.FailedCallBack, formsetting.AllowAjax); return(Task.FromResult(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); }