public ActionResult AddOrEditSublayer(SublayerModel model) { var isImage = false; if (string.Equals(model.Tag, "img", StringComparison.InvariantCultureIgnoreCase)) { if (string.IsNullOrEmpty(model.ImageSource)) { return(new AjaxResult().CloseModalDialog()); } isImage = true; } var sb = new StringBuilder(); var textWriter = new StringWriter(sb); var writer = new HtmlTextWriter(textWriter, string.Empty) { Indent = 0, NewLine = string.Empty }; writer.AddAttribute(HtmlTextWriterAttribute.Id, "sublayer-" + Guid.NewGuid()); writer.AddAttribute(HtmlTextWriterAttribute.Class, "ls-s ls-s-1"); writer.AddStyleAttribute(HtmlTextWriterStyle.Position, "absolute"); writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "pointer"); writer.AddStyleAttribute(HtmlTextWriterStyle.Top, model.Top); writer.AddStyleAttribute(HtmlTextWriterStyle.Left, model.Left); if (!string.IsNullOrEmpty(model.BackgroundColor)) { writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, model.BackgroundColor); } if (!string.IsNullOrEmpty(model.SlideDirection)) { writer.AddStyleAttribute("slidedirection", model.SlideDirection); } if (!string.IsNullOrEmpty(model.SlideOutDirection)) { writer.AddStyleAttribute("slideoutdirection", model.SlideOutDirection); } if (model.DurationIn.HasValue) { writer.AddStyleAttribute("durationin", model.DurationIn.Value.ToString(CultureInfo.InvariantCulture)); } if (model.DurationOut.HasValue) { writer.AddStyleAttribute("durationout", model.DurationOut.Value.ToString(CultureInfo.InvariantCulture)); } if (!string.IsNullOrEmpty(model.EasingIn)) { writer.AddStyleAttribute("easingin", model.EasingIn); } if (!string.IsNullOrEmpty(model.EasingOut)) { writer.AddStyleAttribute("easingout", model.EasingOut); } if (model.RotateIn.HasValue) { writer.AddStyleAttribute("rotatein", model.RotateIn.Value.ToString(CultureInfo.InvariantCulture)); } if (model.RotateOut.HasValue) { writer.AddStyleAttribute("rotateout", model.RotateOut.Value.ToString(CultureInfo.InvariantCulture)); } if (isImage) { writer.AddAttribute(HtmlTextWriterAttribute.Src, model.ImageSource); writer.RenderBeginTag(HtmlTextWriterTag.Img); writer.RenderEndTag(); // img } else { if (!string.IsNullOrEmpty(model.FontFamily)) { writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, model.FontFamily); } if (!string.IsNullOrEmpty(model.FontSize)) { writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, model.FontSize); } if (!string.IsNullOrEmpty(model.Color)) { writer.AddStyleAttribute(HtmlTextWriterStyle.Color, model.Color); } writer.RenderBeginTag(model.Tag); writer.Write(Server.HtmlEncode(model.HtmlContent)); writer.RenderEndTag(); } if (string.IsNullOrEmpty(model.Id)) { return(new AjaxResult() .ExecuteScript(string.Format("$('#sublayers-container', window.parent.document).append('{0}'); parent.jQuery('#sublayers-container .ls-s', window.parent.document).draggable({{cursor:'pointer'}});", sb)) .CloseModalDialog()); } return(new AjaxResult() .ExecuteScript(string.Format("$('#sublayers-container #{1}', window.parent.document).replaceWith('{0}'); parent.jQuery('#sublayers-container .ls-s', window.parent.document).draggable({{cursor:'pointer'}});", sb, model.Id)) .CloseModalDialog()); }
public ActionResult AddOrEditSublayer(string tag, string id) { var model = new SublayerModel { Id = id, Tag = tag }; var result = new ControlFormResult <SublayerModel>(model) { Title = T("Sublayer"), UpdateActionName = "UpdateSublayer" }; if (string.Equals(tag, "img", StringComparison.InvariantCultureIgnoreCase)) { result.ExcludeProperty(x => x.HtmlContent); result.ExcludeProperty(x => x.FontFamily); result.ExcludeProperty(x => x.FontSize); result.ExcludeProperty(x => x.Color); } else { result.ExcludeProperty(x => x.ImageSource); } if (!string.IsNullOrEmpty(id)) { var script = new StringBuilder(); script.AppendLine(@"function colorToHex(color) { if(!color) return ''; if (color.substr(0, 1) === '#') { return color; } var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color); if(!digits) return color; var red = parseInt(digits[2]); var green = parseInt(digits[3]); var blue = parseInt(digits[4]); var rgb = blue | (green << 8) | (red << 16); return digits[1] + '#' + rgb.toString(16); };"); script.AppendLine(@"function getStyleValue(style, name){ var split = style.split(';'); for(var i = 0; i < split.length; i++){ if(split[i].indexOf(name + ':') == 0){ return $.trim(split[i].replace(name + ':', '')); } } return ''; }"); script.AppendFormat("var element = $('#{0}', window.parent.document);", id); script.Append("var elementStyle = element.prop('style');"); script.Append("var style = element.attr('style');"); script.Append("$('#Top').val(element.css('top'));"); script.Append("$('#Left').val(element.css('left'));"); script.Append("$('#BackgroundColor').val(colorToHex(elementStyle[$.camelCase('backround-color')]));"); script.Append("$('#SlideDirection').val(getStyleValue(style, 'slidedirection'));"); script.Append("$('#SlideOutDirection').val(getStyleValue(style, 'slideoutdirection'));"); script.Append("$('#DurationIn').val(getStyleValue(style, 'durationin'));"); script.Append("$('#DurationOut').val(getStyleValue(style, 'durationout'));"); script.Append("$('#EasingIn').val(getStyleValue(style, 'easingin'));"); script.Append("$('#EasingOut').val(getStyleValue(style, 'easingout'));"); script.Append("$('#RotateIn').val(getStyleValue(style, 'rotatein'));"); script.Append("$('#RotateOut').val(getStyleValue(style, 'rotateout'));"); if (string.Equals(tag, "img", StringComparison.InvariantCultureIgnoreCase)) { script.Append("$('#ImageSource').val(element.attr('src'));"); script.Append("$('#ImageSource_UploadList').html(element.attr('src'));"); } else { script.Append("$('#HtmlContent').val(element.html());"); script.Append("$('#FontFamily').val(elementStyle[$.camelCase('font-family')]);"); script.Append("$('#FontSize').val(elementStyle[$.camelCase('font-size')]);"); script.Append("$('#Color').val(colorToHex(elementStyle[$.camelCase('color')]));"); } var scriptRegister = new ScriptRegister(WorkContext); scriptRegister.IncludeInline(script.ToString()); result.AddAction(true) .HasName("Delete") .HasButtonStyle(ButtonStyle.Danger) .HasText(T("Delete")) .HasIconCssClass("cx-icon cx-icon-remove") .HasValue(id); } result.RegisterExternalDataSource(x => x.SlideDirection, "left", "right", "top", "bottom", "fade"); result.RegisterExternalDataSource(x => x.SlideOutDirection, "left", "right", "top", "bottom", "fade"); var easings = new[] { "linear", "swing", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInSine", "easeOutSine", "easeInOutSine", "easeInCirc", "easeOutCirc", "easeInOutCirc", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBounce", "easeOutBounce", "easeInOutBounce" }; result.RegisterExternalDataSource(x => x.EasingIn, easings); result.RegisterExternalDataSource(x => x.EasingOut, easings); return(result); }