Beispiel #1
0
        public static MvcHtmlString ImageUploaderFor <TModel, TValue>(
            this HtmlHelper <TModel> helper,
            Expression <Func <TModel, TValue> > expression,
            ImageUploaderOptions options = null,
            object htmlAttributes        = null)
        {
            var html            = new StringBuilder();
            var metaData        = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
            var panelTag        = new TagBuilder("div");
            var panelBodyTag    = new TagBuilder("div");
            var imgTag          = new TagBuilder("img");
            var panelFooterTag  = new TagBuilder("div");
            var panelFooterHtml = new StringBuilder();

            options = options ?? new ImageUploaderOptions();

            panelTag.AddCssClass("upload-panel " + options.ContainerCssClass);
            panelTag.Attributes.Add("id", options.ContainerId ?? RandomHelper.RandomString(10));
            panelTag.Attributes.Add("data-upload-link", options.UploadUrl);
            panelTag.Attributes.Add("data-min-width", options.MinWidth.ToString());
            panelTag.Attributes.Add("data-max-width", options.MaxWidth.ToString());
            panelTag.Attributes.Add("data-crop-width", options.CropWidth.ToString());
            panelTag.Attributes.Add("data-min-height", options.MinHeight.ToString());
            panelTag.Attributes.Add("data-max-height", options.MaxHeight.ToString());
            panelTag.Attributes.Add("data-crop-height", options.CropHeight.ToString());

            imgTag.AddCssClass("img-upload");
            imgTag.Attributes.Add("style", "max-height:" + options.ContainerHeight + "px");
            imgTag.Attributes.Add("src", metaData.Model != null ? (options.IsImageUploader ? metaData.Model.ToString() : options.UploadedFileImageSrc) : (options.IsImageUploader ? options.NoPicImageSrc : options.NoFileImageSrc));
            imgTag.Attributes.Add("data-uploading-img", options.UploadingImageSrc);
            imgTag.Attributes.Add("data-nopic-img", options.IsImageUploader ? options.NoPicImageSrc : options.NoFileImageSrc);
            imgTag.Attributes.Add("data-original", metaData.Model != null ? ((options.CropWidth > 0 && options.CropHeight > 0) ? IoHelper.GetSubName(metaData.Model.ToString(), "_original") : metaData.Model.ToString()) : String.Empty);

            panelBodyTag.AddCssClass("upload-area rel" + (metaData.Model != null ? " uploaded" : null));
            panelBodyTag.Attributes.Add("style", String.Format("height:{0}px;line-height:{0}px;", options.ContainerHeight));
            panelBodyTag.InnerHtml = imgTag.ToString() + html
                                     .Append("<div class=\"upload-area-btns\">")
                                     .Append(options.AllowEdit ? ("<span style=\"display:" + (metaData.Model != null ? "inline-block" : "none") + "\" class=\"btn-edit\" title=\"Edit\"><span class=\"" + options.EditButtonCssClass + "\"></span>" + options.EditButtonText + "</span>") : null)
                                     .Append("<a href=\"" + metaData.Model + "\" target=\"_blank\" style=\"display:" + (metaData.Model != null ? "inline-block" : "none") + "\" class=\"btn-view\" title=\"").Append("View").Append("\"><span class=\"").Append(options.ViewButtonCssClass).Append("\"></span>").Append(options.ViewButtonText).Append("</a>")
                                     .Append("<span style=\"display:" + (metaData.Model != null ? "inline-block" : "none") + "\" class=\"btn-delete\" title=\"").Append("Delete").Append("\"><span class=\"").Append(options.DeleteButtonCssClass).Append("\"></span>").Append(options.DeleteButtonText).Append("</span>")
                                     .Append("</div>")
                                     .Append(options.AllowEdit ? "<div class='upload-remodal remodal-sm'></div>" : null).ToString();

            panelFooterTag.AddCssClass("upload-controls");
            panelFooterTag.InnerHtml = panelFooterHtml
                                       .Append("<div class=\"input-group\">")
                                       .Append(helper.TextBoxFor(expression, htmlAttributes).ToHtmlString())
                                       .Append("<div class=\"input-group-btn\">")
                                       .Append("<span style=\"display:" + (metaData.Model != null ? "block" : "none") + "\" class=\"btn-delete\" title=\"").Append("Delete").Append("\"><span class=\"").Append(options.DeleteButtonCssClass).Append("\"></span>").Append(options.DeleteButtonText).Append("</span>")
                                       .Append("<button type=\"button\" class=\"btn btn-" + options.UploadButtonBsColor + " btn-upload\" title=\"").Append("Upload").Append("\"><span class=\"").Append(options.UploadButtonCssClass).Append("\"></span>").Append(options.UploadButtonText).Append("</button>")
                                       .Append("</div>")
                                       .Append("</div>").ToString();


            panelTag.InnerHtml += panelBodyTag.ToString();
            panelTag.InnerHtml += panelFooterTag.ToString();

            return(MvcHtmlString.Create(panelTag.ToString()));
        }
Beispiel #2
0
        public static MvcHtmlString SimpleUploaderFor <TModel, TValue>(
            this HtmlHelper <TModel> helper,
            Expression <Func <TModel, TValue> > expression,
            String title = null,
            ImageUploaderOptions options = null,
            object htmlAttributes        = null,
            string helpText         = null,
            string helpTextPosition = "right")
        {
            var controlHtml = helper.ImageUploaderFor(expression, options, htmlAttributes).ToHtmlString();
            var control     = WrapInFormGroup <TModel, TValue>(helper, expression, title, controlHtml, false, null, helpText, helpTextPosition);

            return(MvcHtmlString.Create(control));
        }