示例#1
0
        /// <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));
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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();
        }
示例#4
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#8
0
 /// <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));
 }
示例#9
0
 /// <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));
 }
示例#10
0
 /// <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))));
 }