/// <summary> /// Render template using RazorEngine /// </summary> /// <param name="templateName"></param> /// <param name="model"></param> /// <param name="viewBag"></param> /// <returns></returns> public MvcHtmlString RenderTemplate(string templateName, dynamic model, dynamic viewBag) { var template = _widgetTemplateService.GetTemplateByName(templateName); if (template != null) { return(new MvcHtmlString(EzRazorEngineHelper.CompileAndRun(template.Content, model, viewBag, template.CacheName))); } return(new MvcHtmlString(string.Empty)); }
/// <summary> /// Render widget /// </summary> /// <param name="parameters"></param> /// <returns></returns> public override string Render(string[] parameters) { ParseParams(parameters); var model = new LocatorWidget(Country); var template = _widgetTemplateService.GetTemplateByName(Template) ?? _widgetTemplateService.GetTemplateByName(GetSetup().DefaultTemplate); return EzRazorEngineHelper.CompileAndRun(template.Content, model, null, template.CacheName); }
/// <summary> /// Generate virtual file from template /// </summary> /// <param name="virtualPath"></param> /// <param name="template"></param> public EzCMSVirtualFile(string virtualPath, PageTemplate template) : base(virtualPath) { var pageService = HostContainer.GetInstance <IPageService>(); var pageId = WorkContext.ActivePageId; var model = pageService.RenderContent(pageId); // Get raw page template var rawMasterHtml = template.Content; if (template.ParentId.HasValue) { rawMasterHtml = rawMasterHtml.InsertMasterPage(template.Parent.CacheName).ParseProperties(typeof(PageRenderModel)); } //Replace the @RenderBody() with markup to disable rendering body rawMasterHtml = rawMasterHtml.Replace(EzCMSContants.RenderBody, EzCMSContants.RenderBodyWidget); //Render master html var masterCacheName = template.Name.GetTemplateCacheName(rawMasterHtml); var masterHtml = EzRazorEngineHelper.CompileAndRun(rawMasterHtml, model, null, masterCacheName); // Parse the html masterHtml = masterHtml.ResolveContent(); //Adding the @RenderBody() back to use the template as Master masterHtml = masterHtml.Replace(EzCMSContants.RenderBodyWidget, EzCMSContants.RenderBody); //Convert content to Unicode //using (var memoryStream = new MemoryStream()) //{ // using (var writer = new StreamWriter(memoryStream, new UnicodeEncoding())) // { // writer.Write(content); // _data = memoryStream.ToArray(); // } //} _data = Encoding.UTF8.GetBytes(masterHtml); var firstBytes = new byte[] { 239, 187, 191 }; int newSize = firstBytes.Length + _data.Length; var ms = new MemoryStream(new byte[newSize], 0, newSize, true, true); ms.Write(firstBytes, 0, firstBytes.Length); ms.Write(_data, 0, _data.Length); _data = ms.GetBuffer(); }
/// <summary> /// Parse the Subscription /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="template"></param> /// <param name="model"></param> /// <returns></returns> public SubscriptionTemplateResponseModel ParseSubscription <TModel>(SubscriptionTemplate template, TModel model) { if (template == null) { return(null); } var bodyCacheName = template.Body.GetEnumName().GetTemplateCacheName(template.Body); var response = new SubscriptionTemplateResponseModel { Body = EzRazorEngineHelper.CompileAndRun(template.Body, model, bodyCacheName) }; return(response); }
/// <summary> /// Parse the notification /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="template"></param> /// <param name="model"></param> /// <returns></returns> public NotificationTemplateResponseModel ParseNotification <TModel>(NotificationTemplate template, TModel model) { if (template == null) { return(null); } var cacheName = template.Module.GetEnumName().GetTemplateCacheName(template.Body); var response = new NotificationTemplateResponseModel { Subject = template.Subject, Body = EzRazorEngineHelper.CompileAndRun(template.Body, model, cacheName) }; return(response); }
/// <summary> /// Render widget /// </summary> /// <param name="parameters"></param> /// <returns></returns> public override string Render(string[] parameters) { ParseParams(parameters); if (LocationId == 0) { return(string.Empty); } var model = _locationService.GetLocationWidget(LocationId); if (model == null) { return(_localizedResourceService.T("Widget_Location_Message_LocationNotFound")); } var template = _widgetTemplateService.GetTemplateByName(Template) ?? _widgetTemplateService.GetTemplateByName(GetSetup().DefaultTemplate); return(EzRazorEngineHelper.CompileAndRun(template.Content, model, null, template.CacheName)); }
/// <summary> /// Parse the email from template and model /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="template"></param> /// <param name="model"></param> /// <returns></returns> public EmailTemplateResponseModel ParseEmail <TModel>(EmailTemplate template, TModel model) { if (template == null) { return(null); } var subjectCacheName = template.Type.GetEnumName().GetTemplateCacheName(template.Subject); var bodyCacheName = template.Type.GetEnumName().GetTemplateCacheName(template.Body); var response = new EmailTemplateResponseModel { From = template.From, FromName = template.FromName, CC = MailUtilities.FormatEmailList(template.CC), CCList = MailUtilities.ParseEmailList(template.CC), BCC = MailUtilities.FormatEmailList(template.BCC), BCCList = MailUtilities.ParseEmailList(template.BCC), Subject = EzRazorEngineHelper.CompileAndRun(template.Subject, model, subjectCacheName), Body = EzRazorEngineHelper.CompileAndRun(template.Body, model, bodyCacheName) }; return(response); }
/// <summary> /// Parse template /// </summary> /// <param name="template"></param> /// <param name="model"></param> /// <param name="viewbag"></param> /// <returns></returns> public string ParseTemplate(WidgetTemplateRenderModel template, dynamic model, dynamic viewbag = null) { return(EzRazorEngineHelper.CompileAndRun(template.Content, model, viewbag, template.CacheName)); }
/// <summary> /// Render template using Razor engine /// </summary> /// <param name="template"></param> /// <param name="model"></param> /// <param name="cacheName"></param> /// <param name="resolveType"></param> /// <returns></returns> public static string CompileAndRun(string template, dynamic model, string cacheName = "", ResolveType resolveType = ResolveType.Global) { return(EzRazorEngineHelper.CompileAndRun(template, model, null, cacheName, resolveType)); }
/// <summary> /// Render template using RazorEngine /// </summary> /// <param name="templateName"></param> /// <param name="templateContent"></param> /// <param name="model"></param> /// <param name="viewBag"></param> /// <returns></returns> public MvcHtmlString RenderTemplate(string templateName, string templateContent, dynamic model, dynamic viewBag) { return(new MvcHtmlString(EzRazorEngineHelper.CompileAndRun(templateContent, model, viewBag, templateName.GetTemplateCacheName(templateContent)))); }