示例#1
0
        public void ShouldGetGeneratedCodeFromTemplate()
        {
            string template1   = @"Hello @user, it's @Datetime.Now";
            string resultCode1 = RazorEngineHelper.GenerateSourceCode(template1);

            Assert.IsNotNullOrEmpty(resultCode1);
        }
示例#2
0
        public void ShouldUseJsonAsModelForTemplate()
        {
            dynamic modelSource = new ExpandoObject();

            modelSource.Speaker = "Rui";
            dynamic track1 = new ExpandoObject();

            track1.Title = "MongoDB en C#";
            track1.Date  = new DateTime(2011, 2, 8, 17, 30, 0);
            dynamic track2 = new ExpandoObject();

            track2.Title         = "Asp.Net MVC3";
            track2.Date          = new DateTime(2011, 2, 9, 17, 30, 0);
            modelSource.Sessions = new[] { track1, track2 };
            string  json        = JsonConvert.SerializeObject(modelSource, Formatting.Indented);
            dynamic actualModel = JsonConvert.DeserializeObject <ExpandoObject>(json);

            string templateSource = @"Session presented by @Model.Speaker, Total Sessions : @Model.Sessions.Count";

            string actual   = RazorEngineHelper.ProcessGeneratedCode(templateSource, actualModel);
            string expected = "Session presented by Rui, Total Sessions : 2";

            Assert.IsNotNullOrEmpty(actual);
            Assert.AreEqual(expected, actual);
        }
示例#3
0
        protected string GetHtml(string templateName, object model)
        {
            var template = GetTemplate(templateName);
            var body     = RazorEngineHelper.Render(template, model);

            return(body);
        }
示例#4
0
        public override ControllerResult Execute()
        {
            if (!string.IsNullOrEmpty(ArgumentModel.TemplateFile))
            {
                if (File.Exists(ArgumentModel.TemplateFile))
                {
                    ArgumentModel.TemplateContent = File.ReadAllText(ArgumentModel.TemplateFile);
                }
            }

            if (!string.IsNullOrEmpty(ArgumentModel.ModelFile))
            {
                if (File.Exists(ArgumentModel.ModelFile))
                {
                    ArgumentModel.ModelContent = File.ReadAllText(ArgumentModel.ModelFile);
                }
            }

            string result = string.Empty;

            if (string.IsNullOrEmpty(ArgumentModel.ModelContent))
            {
                result = ArgumentModel.TemplateContent;
            }
            else
            {
                switch (ArgumentModel.Type)
                {
                case ModelType.Json:
                    result = RazorEngineHelper.ProcessTemplateWithJsonModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent);
                    break;

                case ModelType.Dictionary:
                case ModelType.Properties:
                    result = RazorEngineHelper.ProcessTemplateWithPropertiesModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent);
                    break;

                case ModelType.Csv:
                case ModelType.Xml:
                    result = RazorEngineHelper.ProcessTemplateWithXmlModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent);
                    break;

                case ModelType.Binary:
                case ModelType.Scalar:
                default:
                    result = RazorEngineHelper.ProcessTemplateWithJsonModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent);
                    break;
                }
            }

            if (!string.IsNullOrEmpty(ArgumentModel.ResultFile))
            {
                return(new FileResult(result, ArgumentModel.ResultFile));
            }
            else
            {
                return(new StringResult(result));
            }
        }
示例#5
0
        /// <summary>
        /// Load embedded script
        /// </summary>
        /// <param name="formId"></param>
        /// <returns></returns>
        public string LoadEmbeddedScript(int formId)
        {
            var form = GetById(formId);

            if (form != null)
            {
                var formRenderModel = new FormWidget(form);

                var formBuilderSetting = _siteSettingService.LoadSetting <FormBuilderSetting>();
                var cacheName          = SettingNames.FormBuilderSetting.GetTemplateCacheName(formBuilderSetting.EmbeddedTemplate);

                return(RazorEngineHelper.CompileAndRun(formBuilderSetting.EmbeddedTemplate, formRenderModel, null,
                                                       cacheName));
            }
            return(HtmlUtilities.BuildScript(ScriptAction.Alert, T("Form_Message_InvalidFormId")));
        }
示例#6
0
        /// <summary>
        /// Reformat form content
        /// </summary>
        /// <param name="name"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public string ParseForm(string name, string content)
        {
            if (string.IsNullOrEmpty(content))
            {
                return(content);
            }

            content = content.ParseProperties(typeof(FormElementsModel), true);
            var cacheName         = name.GetTemplateCacheName(content);
            var formElementsModel = new FormElementsModel();

            content = RazorEngineHelper.CompileAndRun(content, formElementsModel, null, cacheName);

            // Remove hidden html
            content = content.Replace(EzCMSContants.AddElementClass, string.Empty);
            return(content.RemoveElementsHasClass(EzCMSContants.RemoveElementClass));
        }
示例#7
0
        /// <summary>
        /// Render widget
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public override string Render(string[] parameters)
        {
            ParseParams(parameters);

            var form = _formService.GetById(FormId);

            if (form == null)
            {
                return(_localizedResourceService.T("Widget_Form_Message_InvalidFormId"));
            }

            var formRenderModel = new FormWidget(form);

            var formBuilderSetting = _siteSettingService.LoadSetting <FormBuilderSetting>();
            var cacheName          = SettingNames.FormBuilderSetting.GetTemplateCacheName(formBuilderSetting.EmbeddedTemplate);

            return(RazorEngineHelper.CompileAndRun(formBuilderSetting.EmbeddedTemplate, formRenderModel, null, cacheName));
        }
        public static HtmlString SecureControl(this HtmlHelper htmlHelper, SecureControlType controlType, object model = null)
        {
            if (_controls == null)
            {
                InitializeControls(htmlHelper);
            }

            var secureControl = _controls[controlType];
            var userRoles     = Roles.GetRolesForUser(HttpContext.Current.User.Identity.Name);

            var content = userRoles.Intersect(secureControl.AllowedRoles).Any() ?
                          RazorEngineHelper.Render(@"SecuredControls\" + secureControl.SecuredPartial, model) :
                          string.IsNullOrEmpty(secureControl.DefaultPartial) ?
                          string.Empty :
                          RazorEngineHelper.Render(@"DefaultControls\" + secureControl.DefaultPartial, model);


            return(new HtmlString(content));
        }
示例#9
0
        /// <summary>
        /// Submit form
        /// </summary>
        /// <param name="formId"></param>
        /// <param name="contact"></param>
        /// <param name="communication"></param>
        /// <param name="collection"></param>
        /// <returns></returns>
        public ResponseModel SubmitForm(string formId, Contact contact, ContactCommunication communication,
                                        NameValueCollection collection)
        {
            try
            {
                var id = PasswordUtilities.ComplexDecrypt(formId).ToInt();

                var form = GetById(id);

                if (form != null)
                {
                    var formData = collection.AllKeys.SelectMany(collection.GetValues, (k, v) => new ContactInformation
                    {
                        Key   = k,
                        Value = v
                    }).ToList();

                    //Save contact and communication
                    contact = _contactService.SaveForm(contact, communication, formData);

                    #region Form Data

                    var formEmailModel =
                        collection.AllKeys.SelectMany(collection.GetValues, (k, v) => new ContactInformation
                    {
                        Key   = k.CamelFriendly(),
                        Value = v
                    }).ToList();

                    var formBuilderSetting = _siteSettingService.LoadSetting <FormBuilderSetting>();

                    var cacheName =
                        SettingNames.FormBuilderSetting.GetTemplateCacheName(formBuilderSetting.SubmitFormBodyTemplate);

                    var formDataBody = RazorEngineHelper.CompileAndRun(formBuilderSetting.SubmitFormBodyTemplate,
                                                                       formEmailModel, null, cacheName);

                    #endregion

                    if (form.SendSubmitFormEmail && !string.IsNullOrEmpty(form.EmailTo))
                    {
                        var email = new EmailLog
                        {
                            From     = form.FromEmail,
                            FromName = form.FromName,
                            To       = form.EmailTo,
                            ToName   = form.EmailTo,
                            Subject  = formBuilderSetting.SubmitFormSubject,
                            Body     = formDataBody
                        };

                        _emailLogService.CreateEmail(email, true);
                    }

                    if (form.SendNotificationEmail && !string.IsNullOrEmpty(form.NotificationEmailTo))
                    {
                        var notificationBodyStringBuilder = new StringBuilder();
                        notificationBodyStringBuilder.AppendLine(form.NotificationBody);
                        notificationBodyStringBuilder.AppendLine(formDataBody);

                        var email = new EmailLog
                        {
                            From     = form.FromEmail,
                            FromName = form.FromName,
                            To       = form.NotificationEmailTo,
                            ToName   = form.NotificationEmailTo,
                            Subject  = form.NotificationSubject,
                            Body     = notificationBodyStringBuilder.ToString()
                        };

                        _emailLogService.CreateEmail(email, true);
                    }

                    if (form.SendAutoResponse)
                    {
                        // Get email from form data
                        var emailAddress =
                            formData.FirstOrDefault(
                                f => f.Key.Contains("Email", StringComparison.CurrentCultureIgnoreCase));

                        if (emailAddress != null && !string.IsNullOrEmpty(emailAddress.Value))
                        {
                            var toName = contact.FullName;
                            var email  = new EmailLog
                            {
                                From     = form.FromEmail,
                                FromName = form.FromName,
                                To       = emailAddress.Value,
                                ToName   = string.IsNullOrWhiteSpace(toName) ? emailAddress.Value : toName,
                                Subject  = form.AutoResponseSubject,
                                Body     = form.AutoResponseBody
                            };

                            _emailLogService.CreateEmail(email, true);
                        }
                    }

                    return(new ResponseModel
                    {
                        Success = true,
                        Message = form.ThankyouMessage
                    });
                }
            }
            catch (Exception)
            {
                // Form parameters invalid
            }

            return(new ResponseModel
            {
                Success = false,
                Message = T("Form_Message_InvalidFormId")
            });
        }