Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }