public static MvcHtmlString ExtDisplayNumberFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                         Expression <Func <TModel, TValue> > expression, NumberOptionLarge option = null, object htmlAttributes = null)
        {
            var html = htmlAttributes == null
                ? new RouteValueDictionary()
                : new RouteValueDictionary(htmlAttributes);
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(htmlHelper.ExtDisplayWidthId(expression, html).ToString());
            var controlId = HtmlAttributeHelper.GetControlIdFromExpression(expression);

            if (html.ContainsKey("id"))
            {
                var tempId = html["id"].ToString();
                if (!string.IsNullOrEmpty(tempId))
                {
                    controlId = tempId;
                }
            }
            stringBuilder.AppendLine("<script>$(function(){");
            var options = new List <string>()
            {
                "aSep: ','",
                "aDec: '.'"
            };

            if (option != null)
            {
                if (option.Min.HasValue)
                {
                    options.Add($"vMin: '{option.Min.Value}'");
                }
                if (option.Max.HasValue)
                {
                    options.Add($"vMax: '{option.Max.Value}'");
                }
                if (!string.IsNullOrEmpty(option.ASign))
                {
                    options.Add($"aSign: '{option.ASign}'");
                }
                if (!string.IsNullOrEmpty(option.PSign))
                {
                    options.Add($"pSign: '{option.PSign}'");
                }
                if (option.NumberOfDecimal.HasValue)
                {
                    options.Add($"mDec : {option.NumberOfDecimal.Value}");
                }
                if (!option.APad)
                {
                    options.Add($"aPad : {Convert.ToBoolean("false")}");
                }
            }
            var optionsStr = string.Join(", ", options);

            stringBuilder.AppendLine($"$('#{controlId}').autoNumeric('init', {{{optionsStr}}});");
            stringBuilder.AppendLine("});</script>");
            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     stringBuilder.ToString(), expression));
        }
Exemple #2
0
        public ISwModelViewTab <TControl> CreateDocumentTab <TControl>(ISwDocument doc)
        {
            var mdlViewMgr = doc.Model.ModelViewManager;

            return(CustomControlHelper.HostControl <TControl, SwModelViewTab <TControl> >(
                       (c, h, t, _) =>
            {
                if (mdlViewMgr.DisplayWindowFromHandlex64(t, h.Handle.ToInt64(), true))
                {
                    return new SwModelViewTab <TControl>(c, t, mdlViewMgr, (SwDocument)doc, Logger);
                }
                else
                {
                    throw new NetControlHostException(h.Handle);
                }
            },
                       (p, t, _) =>
            {
                var ctrl = (TControl)mdlViewMgr.AddControl3(t, p, "", true);

                if (ctrl == null)
                {
                    throw new ComControlHostException(p);
                }

                return new SwModelViewTab <TControl>(ctrl, t, mdlViewMgr, (SwDocument)doc, Logger);
            }));
        }
Exemple #3
0
        public static MvcHtmlString ExtCheckBoxFor <TModel>(this HtmlHelper <TModel> htmlHelper,
                                                            Expression <Func <TModel, bool> > expression, object htmlAttributes = null, string checkboxText = null, string selectfontweight = null, string tooltip = null)
        {
            var labelBuilder = new TagBuilder("label")
            {
                InnerHtml = htmlHelper.CheckBoxFor(expression, htmlAttributes).ToString()
            };

            if (!string.IsNullOrEmpty(checkboxText))
            {
                labelBuilder.InnerHtml          += checkboxText;
                labelBuilder.Attributes["style"] = "font-weight: normal";
            }
            if (!string.IsNullOrEmpty(selectfontweight) && selectfontweight == "bold")
            {
                labelBuilder.Attributes["style"] = "font-weight: bold";
            }
            if (!string.IsNullOrEmpty(tooltip))
            {
                labelBuilder.Attributes["title"] = tooltip;
            }

            var divBuilder = new TagBuilder("div")
            {
                InnerHtml = labelBuilder.ToString()
            };
            //divBuilder.AddCssClass("checkbox");

            var stringBuilder = new StringBuilder();

            stringBuilder.Append(divBuilder);

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper, stringBuilder.ToString(), expression));
        }
Exemple #4
0
        public static MvcHtmlString ExtNumberFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                  Expression <Func <TModel, TValue> > expression, NumberOption option = null, object htmlAttributes = null)
        {
            var html      = HtmlAttributeHelper.AddDefaultClass(htmlAttributes);
            var maxLength = expression.MaxLength();

            html = HtmlAttributeHelper.AddMaxLength(html, maxLength != 0 ? maxLength : 255);

            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(htmlHelper.TextBoxFor(expression, html).ToString());
            var controlId = HtmlAttributeHelper.GetControlIdFromExpression(expression);

            stringBuilder.AppendLine("<script>$(function(){");
            var options = new List <string>()
            {
                "aSep: ''",
                "aDec: '.'"
            };

            if (option != null)
            {
                if (option.Min.HasValue)
                {
                    options.Add($"vMin: '{option.Min.Value}'");
                }
                if (option.Max.HasValue)
                {
                    options.Add($"vMax: '{option.Max.Value}'");
                }
                if (!string.IsNullOrEmpty(option.ASign))
                {
                    options.Add($"aSign: '{option.ASign}'");
                }
                if (!string.IsNullOrEmpty(option.PSign))
                {
                    options.Add($"pSign: '{option.PSign}'");
                }
                if (!string.IsNullOrEmpty(option.MRound))
                {
                    options.Add($"mRound: '{option.MRound}'");
                }
                if (option.NumberOfDecimal.HasValue)
                {
                    options.Add($"mDec : {option.NumberOfDecimal.Value}");
                }
                if (!option.APad)
                {
                    options.Add("aPad : false");
                }
            }
            var optionsStr = string.Join(", ", options);

            stringBuilder.AppendLine($"$('#{controlId}').autoNumeric('init', {{{optionsStr}}});");
            stringBuilder.AppendLine("});</script>");
            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     stringBuilder.ToString(), expression));
        }
Exemple #5
0
        public static MvcHtmlString ExtDropDownListFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                        Expression <Func <TModel, TValue> > expression, IEnumerable <SelectListItem> selectList,
                                                                        string optionLabel = null, object htmlAttributes = null)
        {
            var html = HtmlAttributeHelper.AddDefaultClass(htmlAttributes);

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     htmlHelper.DropDownListFor(expression, selectList, optionLabel, html).ToString(), expression));
        }
Exemple #6
0
        private static MvcHtmlString ExtCheckBoxListSingleColumnFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                                     Expression <Func <TModel, IEnumerable <TValue> > > expression, IEnumerable <SelectListItem> values,
                                                                                     IEnumerable <TValue> selectedIds, object htmlAttributes = null)
        {
            var isDisabled = false;
            var html       = htmlAttributes == null
                ? new RouteValueDictionary()
                : new RouteValueDictionary(htmlAttributes);

            if (html["disabled"] != null && html["disabled"].ToString() == "disabled")
            {
                isDisabled = true;
            }

            var selectedValues = selectedIds.Select(x => x.ToString()).ToList();
            var variableName   = ExpressionHelper.GetExpressionText(expression);
            var stringBuilder  = new StringBuilder();

            foreach (var selectListItem in values)
            {
                var itemName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(variableName);
                var itemId   = itemName + CustomControlHelper.GetControlCount(itemName);

                var divBuilder = new TagBuilder("div");
                divBuilder.AddCssClass("checkbox");
                if (isDisabled)
                {
                    divBuilder.AddCssClass("disabled");
                }

                var labelBuilder = new TagBuilder("label");
                labelBuilder.MergeAttribute("for", itemId);

                var inputBuilder = new TagBuilder("input");
                if (selectedValues.Contains(selectListItem.Value))
                {
                    inputBuilder.MergeAttribute("checked", "checked");
                }
                if (isDisabled)
                {
                    inputBuilder.MergeAttribute("disabled", "disabled");
                }
                inputBuilder.MergeAttribute("id", itemId);
                inputBuilder.MergeAttribute("name", itemName);
                inputBuilder.MergeAttribute("type", "checkbox");
                inputBuilder.MergeAttribute("value", selectListItem.Value);

                var labelInner = inputBuilder + selectListItem.Text;
                labelBuilder.InnerHtml = labelInner;
                divBuilder.InnerHtml   = labelBuilder.ToString();
                stringBuilder.Append(divBuilder);
            }

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper, stringBuilder.ToString(), expression));
        }
Exemple #7
0
        public static MvcHtmlString ExtTextBoxFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                   Expression <Func <TModel, TValue> > expression, object htmlAttributes = null, string format = null)
        {
            var html      = HtmlAttributeHelper.AddDefaultClass(htmlAttributes);
            var maxLength = expression.MaxLength();

            html = HtmlAttributeHelper.AddMaxLength(html, maxLength != 0 ? maxLength : 255);

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     !string.IsNullOrEmpty(format)
                    ? htmlHelper.TextBoxFor(expression, format, html).ToString()
                    : htmlHelper.TextBoxFor(expression, html).ToString(), expression));
        }
Exemple #8
0
        public static MvcHtmlString ExtTextAreaFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                    Expression <Func <TModel, TValue> > expression, object htmlAttributes = null)
        {
            var html = HtmlAttributeHelper.AddDefaultClass(htmlAttributes);

            html = HtmlAttributeHelper.AddTextAreaStyle(html);
            var maxLength = expression.MaxLength();

            if (maxLength != 0)
            {
                html = HtmlAttributeHelper.AddMaxLength(html, maxLength);
            }

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     htmlHelper.TextAreaFor(expression, html).ToString(), expression));
        }
Exemple #9
0
        public ISwFeatureMgrTab <TControl> CreateFeatureManagerTab <TControl>(ISwDocument doc)
        {
            var mdlViewMgr = doc.Model.ModelViewManager;

            using (var iconsConv = m_SvcProvider.GetService <IIconsCreator>())
            {
                return(CustomControlHelper.HostControl <TControl, SwFeatureMgrTab <TControl> >(
                           (c, h, t, i) =>
                {
                    var imgPath = iconsConv.ConvertIcon(new FeatMgrViewIcon(i)).First();

                    var featMgr = mdlViewMgr.CreateFeatureMgrWindowFromHandlex64(
                        imgPath, h.Handle.ToInt64(), t, (int)swFeatMgrPane_e.swFeatMgrPaneBottom) as IFeatMgrView;

                    if (featMgr != null)
                    {
                        return new SwFeatureMgrTab <TControl>(c, featMgr, (SwDocument)doc, Logger);
                    }
                    else
                    {
                        throw new NetControlHostException(h.Handle);
                    }
                },
                           (p, t, i) =>
                {
                    var imgPath = iconsConv.ConvertIcon(new FeatMgrViewIcon(i)).First();

                    var featMgr = mdlViewMgr.CreateFeatureMgrControl3(imgPath, p, "", t,
                                                                      (int)swFeatMgrPane_e.swFeatMgrPaneBottom) as IFeatMgrView;

                    TControl ctrl = default;

                    if (featMgr != null)
                    {
                        ctrl = (TControl)featMgr.GetControl();
                    }

                    if (ctrl == null)
                    {
                        throw new ComControlHostException(p);
                    }

                    return new SwFeatureMgrTab <TControl>(ctrl, featMgr, (SwDocument)doc, Logger);
                }));
            }
        }
        protected override PropertyManagerPageCustomControl CreateControl(
            IPropertyManagerPageWindowFromHandle swCtrl, IAttributeSet atts, SwPropertyManagerPageHandler handler, short height)
        {
            if (height <= 0)
            {
                height = 50;
            }

            swCtrl.Height = height;

            var ctrlType = atts.Get <CustomControlAttribute>().ControlType;

            var ctrlFact = new Func <IXCustomControl>(() =>
                                                      CustomControlHelper.HostControl(ctrlType,
                                                                                      (c, h, t, _) =>
            {
                if (swCtrl.SetWindowHandlex64(h.Handle.ToInt64()))
                {
                    if (c is IXCustomControl)
                    {
                        return((IXCustomControl)c);
                    }
                    else
                    {
                        if (c is System.Windows.FrameworkElement)
                        {
                            return(new WpfCustomControl((System.Windows.FrameworkElement)c, h));
                        }

                        throw new NotSupportedException($"'{c.GetType()}' must implement '{typeof(IXCustomControl).FullName}' or inherit '{typeof(System.Windows.FrameworkElement).FullName}'");
                    }
                }
                else
                {
                    throw new NetControlHostException(h.Handle);
                }
            },
                                                                                      (p, t, _) =>
            {
                throw new NotImplementedException("ActiveX controls are not implemented yet");
            }));

            return(new PropertyManagerPageCustomControl(atts.Id, atts.Tag, swCtrl, handler, ctrlFact));
        }
Exemple #11
0
        public static MvcHtmlString ExtEditorFullFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                      Expression <Func <TModel, IEnumerable <TValue> > > expression, bool readOnly = false, object htmlAttributes = null)
        {
            var html = HtmlAttributeHelper.AddDefaultClass(htmlAttributes);

            html = HtmlAttributeHelper.AddTextAreaStyle(html);

            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(htmlHelper.TextAreaFor(expression, html).ToString());


            var controlId = HtmlAttributeHelper.GetControlIdFromExpression(expression);

            stringBuilder.AppendLine("<script>");
            stringBuilder.AppendLine(readOnly
                ? $"CKEDITOR.replace('{controlId}', {{ readOnly: true }})"
                : $"CKEDITOR.replace('{controlId}')");
            stringBuilder.AppendLine("</script>");

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper, stringBuilder.ToString(), expression));
        }
Exemple #12
0
        public ISwTaskPane <TControl> CreateTaskPane <TControl>(TaskPaneSpec spec)
        {
            if (spec == null)
            {
                spec = new TaskPaneSpec();
            }

            ITaskpaneView CreateTaskPaneView(IIconsCreator iconConv, IXImage icon, string title)
            {
                if (icon == null)
                {
                    if (spec.Icon != null)
                    {
                        icon = spec.Icon;
                    }
                }

                if (string.IsNullOrEmpty(title))
                {
                    if (spec != null)
                    {
                        title = spec.Title;
                    }
                }

                if (Application.Sw.SupportsHighResIcons(CompatibilityUtils.HighResIconsScope_e.TaskPane))
                {
                    string[] taskPaneIconImages = null;

                    if (icon != null)
                    {
                        taskPaneIconImages = iconConv.ConvertIcon(new TaskPaneHighResIcon(icon));
                    }

                    return(Application.Sw.CreateTaskpaneView3(taskPaneIconImages, title));
                }
                else
                {
                    var taskPaneIconImage = "";

                    if (icon != null)
                    {
                        taskPaneIconImage = iconConv.ConvertIcon(new TaskPaneIcon(icon)).First();
                    }

                    return(Application.Sw.CreateTaskpaneView2(taskPaneIconImage, title));
                }
            }

            using (var iconConv = m_SvcProvider.GetService <IIconsCreator>())
            {
                var taskPane = CustomControlHelper.HostControl <TControl, SwTaskPane <TControl> >(
                    (c, h, t, i) =>
                {
                    var v = CreateTaskPaneView(iconConv, i, t);

                    if (!v.DisplayWindowFromHandle(h.Handle.ToInt32()))
                    {
                        throw new NetControlHostException(h.Handle);
                    }

                    return(new SwTaskPane <TControl>(Application.Sw, v, c, spec, m_SvcProvider));
                },
                    (p, t, i) =>
                {
                    var v    = CreateTaskPaneView(iconConv, i, t);
                    var ctrl = (TControl)v.AddControl(p, "");

                    if (ctrl == null)
                    {
                        throw new ComControlHostException(p);
                    }

                    return(new SwTaskPane <TControl>(Application.Sw, v, ctrl, spec, m_SvcProvider));
                });

                m_Disposables.Add(taskPane);

                return(taskPane);
            }
        }
Exemple #13
0
        public static MvcHtmlString ExtMultiSuggestionFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                           Expression <Func <TModel, TValue> > expression, MultiSuggestionOption option, object htmlAttributes = null)
        {
            var html = htmlAttributes == null
                ? new RouteValueDictionary()
                : new RouteValueDictionary(htmlAttributes);
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(htmlHelper.TextBoxFor(expression, html).ToString());
            var controlId = HtmlAttributeHelper.GetControlIdFromExpression(expression);

            stringBuilder.AppendLine("<script>$(function(){");
            stringBuilder.AppendLine($"$('#{controlId}').tokenInput('{option.SearchUrl}',{{");
            stringBuilder.AppendLine("theme: 'facebook',");
            if (option.LimitedItem != 0)
            {
                stringBuilder.AppendLine($"tokenLimit: {option.LimitedItem},");
            }
            stringBuilder.AppendLine("method: 'POST',");
            stringBuilder.AppendLine("queryParam: 'query',");
            stringBuilder.AppendLine("tokenValue: 'Id',");
            stringBuilder.AppendLine($"required: {expression.IsRequired().ToString().ToLower()},");
            stringBuilder.AppendLine("propertyToSearch: 'Name',");
            stringBuilder.AppendLine("preventDuplicates: true,");
            stringBuilder.AppendLine("minChars: " + option.MinChars + ",");
            if (option.DefaultValues != null)
            {
                stringBuilder.AppendLine(
                    $"prePopulate: {JsonConvert.SerializeObject(option.DefaultValues).Replace("/", "\\/")},");
            }

            if (!string.IsNullOrEmpty(option.OnAdd))
            {
                stringBuilder.AppendLine($"onAdd: {option.OnAdd},");
            }

            if (!string.IsNullOrEmpty(option.OnDelete))
            {
                stringBuilder.AppendLine($"onDelete: {option.OnDelete},");
            }

            if (!string.IsNullOrEmpty(option.AdditionalParam))
            {
                stringBuilder.AppendLine($"additionalParam: {option.AdditionalParam},");
            }
            if (option.LocalData != null)
            {
                stringBuilder.AppendLine(
                    $"local_data: {JsonConvert.SerializeObject(option.LocalData)},");
            }
            if (option.CreateNew.HasValue)
            {
                stringBuilder.AppendLine($"createNew: {option.CreateNew.Value.ToString().ToLower()},");
            }
            if (!string.IsNullOrEmpty(option.OnResult))
            {
                stringBuilder.AppendLine($"onResult: {option.OnResult},");
            }

            stringBuilder.AppendLine("});});</script>");
            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     stringBuilder.ToString(), expression));
        }
Exemple #14
0
        public static MvcHtmlString ExtCheckBoxListFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                        Expression <Func <TModel, IEnumerable <TValue> > > expression, IEnumerable <SelectListItem> values,
                                                                        IEnumerable <TValue> selectedIds, int columnNumber = 1, object htmlAttributes = null)
        {
            if (columnNumber <= 1)
            {
                return(htmlHelper.ExtCheckBoxListSingleColumnFor(expression, values, selectedIds, htmlAttributes));
            }

            var isDisabled = false;
            var html       = htmlAttributes == null
                ? new RouteValueDictionary()
                : new RouteValueDictionary(htmlAttributes);

            if (html["disabled"] != null && html["disabled"].ToString() == "disabled")
            {
                isDisabled = true;
            }

            var variableName = ExpressionHelper.GetExpressionText(expression);
            var itemName     = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(variableName);

            var selectedValues  = selectedIds.Select(x => x.ToString()).ToList();
            var selectListItems = values.ToList();
            var rowNumber       = selectListItems.Count / columnNumber + 1;

            var tableBuilder = new TagBuilder("table");

            for (var rowIndex = 0; rowIndex < rowNumber; rowIndex++)
            {
                var trBuilder = new TagBuilder("tr");
                for (var columnIndex = 0; columnIndex < columnNumber; columnIndex++)
                {
                    var itemIndex = rowIndex * columnNumber + columnIndex;
                    if (itemIndex >= selectListItems.Count)
                    {
                        break;
                    }

                    var itemId = itemName + CustomControlHelper.GetControlCount(itemName);

                    var inputBuilder = new TagBuilder("input");
                    inputBuilder.MergeAttribute("id", itemId);
                    inputBuilder.MergeAttribute("name", itemName);
                    inputBuilder.MergeAttribute("type", "checkbox");
                    inputBuilder.MergeAttribute("value", selectListItems[itemIndex].Value);
                    if (selectedValues.Contains(selectListItems[itemIndex].Value))
                    {
                        inputBuilder.MergeAttribute("checked", "checked");
                    }
                    if (isDisabled)
                    {
                        inputBuilder.MergeAttribute("disabled", "disabled");
                    }

                    var labelInner = inputBuilder + selectListItems[itemIndex].Text;

                    var labelBuilder = new TagBuilder("label");
                    labelBuilder.MergeAttribute("for", itemId);
                    labelBuilder.InnerHtml = labelInner;

                    var divBuilder = new TagBuilder("div");
                    //divBuilder.AddCssClass("checkbox");
                    if (isDisabled)
                    {
                        divBuilder.AddCssClass("disabled");
                    }
                    divBuilder.InnerHtml = labelBuilder.ToString();

                    var tdBuilder = new TagBuilder("td")
                    {
                        InnerHtml = divBuilder.ToString()
                    };
                    trBuilder.InnerHtml += tdBuilder.ToString();
                }

                tableBuilder.InnerHtml += trBuilder.ToString();
            }

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper, tableBuilder.ToString(), expression));
        }
Exemple #15
0
        public static MvcHtmlString ExtRadioButtonFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                       Expression <Func <TModel, TValue> > expression, IEnumerable <SelectListItem> values,
                                                                       object htmlAttributes = null, bool isInline = false, int size = 1)
        {
            var isDisabled = false;
            var html       = htmlAttributes == null
                ? new RouteValueDictionary()
                : new RouteValueDictionary(htmlAttributes);

            if (html["disabled"] != null && html["disabled"].ToString() == "disabled")
            {
                isDisabled = true;
            }

            var stringBuilder = new StringBuilder();

            if (isInline)
            {
                foreach (var selectListItem in values)
                {
                    var input = htmlHelper.RadioButtonFor(expression, selectListItem.Value, html);
                    var label = selectListItem.Text;

                    var divBuilder = new TagBuilder("div");
                    if (isDisabled)
                    {
                        divBuilder.AddCssClass("disabled");
                    }
                    divBuilder.AddCssClass("col-xs-" + size);
                    divBuilder.InnerHtml = input + label;

                    stringBuilder.Append(divBuilder);
                }
            }
            else
            {
                foreach (var selectListItem in values)
                {
                    var input = htmlHelper.RadioButtonFor(expression, selectListItem.Value, html);
                    var label = selectListItem.Text;

                    var labelBuilder = new TagBuilder("label")
                    {
                        InnerHtml = input + label
                    };

                    var divBuilder = new TagBuilder("div");
                    divBuilder.AddCssClass("radio");
                    if (isDisabled)
                    {
                        divBuilder.AddCssClass("disabled");
                    }

                    divBuilder.InnerHtml = labelBuilder.ToString();

                    stringBuilder.Append(divBuilder);
                }
            }

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper, stringBuilder.ToString(), expression));
        }
Exemple #16
0
        public static MvcHtmlString ExtMultiSelectFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                       Expression <Func <TModel, IEnumerable <TValue> > > expression, IEnumerable <SelectListItem> values,
                                                                       IEnumerable <TValue> selectedIds, string controlId, object htmlAttributes = null)
        {
            var isDisabled = false;
            var html       = htmlAttributes == null
                ? new RouteValueDictionary()
                : new RouteValueDictionary(htmlAttributes);

            if (html["disabled"] != null && html["disabled"].ToString() == "disabled")
            {
                isDisabled = true;
            }

            var selectListItems = values.ToList();

            var leftListBuilder = new TagBuilder("select");

            leftListBuilder.AddCssClass("form-control");
            leftListBuilder.MergeAttribute("name", "leftList" + CustomControlHelper.GetControlCount("leftList"));
            leftListBuilder.MergeAttribute("id", controlId + "_from");
            leftListBuilder.MergeAttribute("size", "8");
            leftListBuilder.MergeAttribute("multiple", "multiple");
            if (isDisabled)
            {
                leftListBuilder.MergeAttribute("disabled", "disabled");
            }

            foreach (var selectListItem in selectListItems)
            {
                var optionBuilder = new TagBuilder("option");
                optionBuilder.MergeAttribute("value", selectListItem.Value);
                optionBuilder.SetInnerText(selectListItem.Text);
                leftListBuilder.InnerHtml += optionBuilder.ToString();
            }

            var leftColumnBuilder = new TagBuilder("div");

            leftColumnBuilder.AddCssClass("col-xs-5");
            leftColumnBuilder.InnerHtml = leftListBuilder.ToString();

            var rightAllIconBuilder = new TagBuilder("i");

            rightAllIconBuilder.AddCssClass("glyphicon");
            rightAllIconBuilder.AddCssClass("glyphicon-forward");

            var rightAllButtonBuilder = new TagBuilder("button");

            rightAllButtonBuilder.MergeAttribute("type", "button");
            rightAllButtonBuilder.MergeAttribute("id", controlId + "_rightAll");
            rightAllButtonBuilder.AddCssClass("btn");
            rightAllButtonBuilder.AddCssClass("btn-block");
            rightAllButtonBuilder.InnerHtml = rightAllIconBuilder.ToString();

            var rightSelectedIconBuilder = new TagBuilder("i");

            rightSelectedIconBuilder.AddCssClass("glyphicon");
            rightSelectedIconBuilder.AddCssClass("glyphicon-chevron-right");

            var rightSelectedButtonBuilder = new TagBuilder("button");

            rightSelectedButtonBuilder.MergeAttribute("type", "button");
            rightSelectedButtonBuilder.MergeAttribute("id", controlId + "_rightSelected");
            rightSelectedButtonBuilder.AddCssClass("btn");
            rightSelectedButtonBuilder.AddCssClass("btn-block");
            rightSelectedButtonBuilder.InnerHtml = rightSelectedIconBuilder.ToString();

            var leftSelectedIconBuilder = new TagBuilder("i");

            leftSelectedIconBuilder.AddCssClass("glyphicon");
            leftSelectedIconBuilder.AddCssClass("glyphicon-chevron-left");

            var leftSelectedButtonBuilder = new TagBuilder("button");

            leftSelectedButtonBuilder.MergeAttribute("type", "button");
            leftSelectedButtonBuilder.MergeAttribute("id", controlId + "_leftSelected");
            leftSelectedButtonBuilder.AddCssClass("btn");
            leftSelectedButtonBuilder.AddCssClass("btn-block");
            leftSelectedButtonBuilder.InnerHtml = leftSelectedIconBuilder.ToString();

            var leftAllIconBuilder = new TagBuilder("i");

            leftAllIconBuilder.AddCssClass("glyphicon");
            leftAllIconBuilder.AddCssClass("glyphicon-backward");

            var leftAllButtonBuilder = new TagBuilder("button");

            leftAllButtonBuilder.MergeAttribute("type", "button");
            leftAllButtonBuilder.MergeAttribute("id", controlId + "_leftAll");
            leftAllButtonBuilder.AddCssClass("btn");
            leftAllButtonBuilder.AddCssClass("btn-block");
            leftAllButtonBuilder.InnerHtml = leftAllIconBuilder.ToString();

            if (isDisabled)
            {
                rightAllButtonBuilder.AddCssClass("disabled");
                rightSelectedButtonBuilder.AddCssClass("disabled");
                leftSelectedButtonBuilder.AddCssClass("disabled");
                leftAllButtonBuilder.AddCssClass("disabled");
                rightAllButtonBuilder.MergeAttribute("disabled", "disabled");
                rightSelectedButtonBuilder.MergeAttribute("disabled", "disabled");
                leftSelectedButtonBuilder.MergeAttribute("disabled", "disabled");
                leftAllButtonBuilder.MergeAttribute("disabled", "disabled");
            }

            var middleColumnBuilder = new TagBuilder("div");

            middleColumnBuilder.AddCssClass("col-xs-2");
            middleColumnBuilder.InnerHtml += rightAllButtonBuilder.ToString();
            middleColumnBuilder.InnerHtml += rightSelectedButtonBuilder.ToString();
            middleColumnBuilder.InnerHtml += leftSelectedButtonBuilder.ToString();
            middleColumnBuilder.InnerHtml += leftAllButtonBuilder.ToString();

            var variableName = ExpressionHelper.GetExpressionText(expression);
            var itemName     = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(variableName);

            var rightListBuilder = new TagBuilder("select");

            rightListBuilder.AddCssClass("form-control");
            rightListBuilder.MergeAttribute("name", itemName);
            rightListBuilder.MergeAttribute("id", controlId + "_to");
            rightListBuilder.MergeAttribute("size", "8");
            rightListBuilder.MergeAttribute("multiple", "multiple");

            if (isDisabled)
            {
                rightListBuilder.MergeAttribute("disabled", "disabled");
            }

            foreach (var selectedId in selectedIds)
            {
                var selectedItem = selectListItems.FirstOrDefault(x => x.Value == selectedId.ToString());
                if (selectedItem == null)
                {
                    continue;
                }

                var optionBuilder = new TagBuilder("option");
                optionBuilder.MergeAttribute("value", selectedItem.Value);
                optionBuilder.SetInnerText(selectedItem.Text);
                rightListBuilder.InnerHtml += optionBuilder.ToString();
            }

            var rightColumnBuilder = new TagBuilder("div");

            rightColumnBuilder.AddCssClass("col-xs-5");
            rightColumnBuilder.InnerHtml = rightListBuilder.ToString();

            var rowBuilder = new TagBuilder("div");

            rowBuilder.AddCssClass("row");
            rowBuilder.InnerHtml  = leftColumnBuilder.ToString();
            rowBuilder.InnerHtml += middleColumnBuilder.ToString();
            rowBuilder.InnerHtml += rightColumnBuilder.ToString();

            var scriptBuilder = new TagBuilder("script");

            scriptBuilder.MergeAttribute("type", "text/javascript");
            scriptBuilder.InnerHtml = "jQuery(document).ready(function($) { $('#" + controlId + "').multiselect(); });";

            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(rowBuilder.ToString());
            stringBuilder.AppendLine(scriptBuilder.ToString());

            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper, stringBuilder.ToString(), expression));
        }
Exemple #17
0
        public static MvcHtmlString ExtDateTimeFor <TModel, TValue>(this HtmlHelper <TModel> htmlHelper,
                                                                    Expression <Func <TModel, TValue> > expression, DateTimeOption option = null, object htmlAttributes = null)
        {
            var html = HtmlAttributeHelper.AddDefaultClass(htmlAttributes);
            // html.Add("onkeydown", "return false");
            var maxLength = expression.MaxLength();

            if (maxLength != 0)
            {
                html = HtmlAttributeHelper.AddMaxLength(html, maxLength);
            }
            else
            {
                html = HtmlAttributeHelper.AddMaxLength(html, 255);
            }
            var controlId     = HtmlAttributeHelper.GetControlIdFromExpression(expression);
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("<div class='input-group date ' id='dv" + controlId + "'>");
            stringBuilder.AppendLine(htmlHelper.TextBoxFor(expression, html).ToString());



            var options = new List <string>();

            if (option != null)
            {
                if (!string.IsNullOrEmpty(option.ViewMode))
                {
                    options.Add(string.Format("viewMode: '{0}'", option.ViewMode));
                }
                if (!string.IsNullOrEmpty(option.Format))
                {
                    options.Add(string.Format("format: '{0}'", option.Format));
                    if (option.Format == "LT" || option.Format == "HH:mm" || option.Format == "HH:mm:ss")
                    {
                        stringBuilder.AppendLine("<span class='input-group-addon'><span class='glyphicon glyphicon-time'></span></span>");
                    }
                    else
                    {
                        stringBuilder.AppendLine("<span class='input-group-addon'><span class='glyphicon glyphicon-calendar'></span></span>");
                    }
                }
                if (option.DaysOfWeekDisabled != null)
                {
                    options.Add(string.Format("daysOfWeekDisabled: {0}", option.DaysOfWeekDisabled));
                }
                if (!string.IsNullOrEmpty(option.MinDate))
                {
                    options.Add(string.Format("minDate: {0}", option.MinDate));
                }
                else
                {
                    options.Add(string.Format("minDate: {0}", " moment('01/01/1990')"));
                }
                if (!string.IsNullOrEmpty(option.MaxDate))
                {
                    options.Add(string.Format("maxDate: {0}", option.MaxDate));
                }
                if (option.EnabledHours.HasValue)
                {
                    options.Add(string.Format("enabledHours : '{0}'", option.EnabledHours.Value));
                }
                if (option.ViewDate.HasValue)
                {
                    options.Add(string.Format("viewDate : {0}", option.ViewDate.Value));
                }
                if (option.Inline.HasValue)
                {
                    options.Add(string.Format("inline : {0}", option.Inline.Value));
                }
                // options.Add(string.Format("defaultDate:{0}", DateTime.Now.ToString("d")));
            }
            stringBuilder.AppendLine("</div><script>$(function(){");
            var optionsStr = string.Join(", ", options);

            stringBuilder.AppendLine(string.Format("$('#dv{0}').datetimepicker( {{{1}}});", controlId, optionsStr));
            //stringBuilder.AppendLine(string.Format("$('#{0}').datetimepicker('setDate',{1});", controlId,string.Format( "$('#{0}').val()",controlId)));
            stringBuilder.AppendLine("});</script>");

            if (option != null && option.IsValidationMessageSupported)
            {
                return(new MvcHtmlString(stringBuilder.ToString()));
            }
            return(CustomControlHelper.GenerateWithValidationMessage(htmlHelper,
                                                                     stringBuilder.ToString(), expression));
        }