コード例 #1
0
        private IHtmlContent SettingOverrideCheckboxInternal(StoreDependingSettingData data)
        {
            var fieldPrefix = HtmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix;
            var settingKey  = For.Name;

            if (fieldPrefix.HasValue())
            {
                settingKey = fieldPrefix + "." + settingKey;
            }
            else if (data.RootSettingClass.HasValue() && !settingKey.StartsWith(data.RootSettingClass + '.', StringComparison.OrdinalIgnoreCase))
            {
                settingKey = data.RootSettingClass + '.' + settingKey;
            }

            var overrideForStore = data.OverrideSettingKeys.Contains(settingKey);
            var fieldId          = settingKey.EnsureEndsWith("_OverrideForStore");

            var switchLabel = new TagBuilder("label");

            switchLabel.AppendCssClass("switch switch-blue multi-store-override-switch");

            var overrideInput = new TagBuilder("input");

            overrideInput.Attributes["class"]   = "multi-store-override-option";
            overrideInput.Attributes["type"]    = "checkbox";
            overrideInput.Attributes["id"]      = fieldId;
            overrideInput.Attributes["name"]    = fieldId;
            overrideInput.Attributes["onclick"] = "Smartstore.Admin.checkOverriddenStoreValue(this)";
            overrideInput.Attributes["data-parent-selector"] = ParentSelector.EmptyNull();

            if (overrideForStore)
            {
                overrideInput.Attributes["checked"] = "checked";
            }

            var toggleSpan = new TagBuilder("span");

            toggleSpan.AppendCssClass("switch-toggle");
            toggleSpan.Attributes.Add("data-on", T("Common.On").Value.Truncate(3));
            toggleSpan.Attributes.Add("data-off", T("Common.Off").Value.Truncate(3));

            switchLabel.InnerHtml.AppendHtml(overrideInput);
            switchLabel.InnerHtml.AppendHtml(toggleSpan);

            return(switchLabel);
        }
コード例 #2
0
        private static MvcHtmlString SettingOverrideCheckboxInternal <TModel, TValue>(
            this HtmlHelper <TModel> helper,
            Expression <Func <TModel, TValue> > expression,
            StoreDependingSettingData data,
            string parentSelector = null)
        {
            var fieldPrefix     = helper.ViewData.TemplateInfo.HtmlFieldPrefix;
            var settingKey      = ExpressionHelper.GetExpressionText(expression);
            var localizeService = EngineContext.Current.Resolve <ILocalizationService>();

            if (fieldPrefix.HasValue())
            {
                settingKey = string.Concat(fieldPrefix, ".", settingKey);
            }
            else if (!settingKey.Contains("."))
            {
                settingKey = string.Concat(data.RootSettingClass, ".", settingKey);
            }

            var overrideForStore = (data.OverrideSettingKeys.FirstOrDefault(x => x.IsCaseInsensitiveEqual(settingKey)) != null);
            var fieldId          = settingKey + (settingKey.EndsWith("_OverrideForStore") ? "" : "_OverrideForStore");

            var sb = new StringBuilder();

            sb.Append("<label class='switch switch-blue multi-store-override-switch'>");

            sb.AppendFormat("<input type='checkbox' id='{0}' name='{0}' class='multi-store-override-option'", fieldId);
            sb.AppendFormat(" onclick='SmartStore.Admin.checkOverriddenStoreValue(this)' data-parent-selector='{0}'{1} />",
                            parentSelector.EmptyNull(), overrideForStore ? " checked" : "");

            sb.AppendFormat("<span class='switch-toggle' data-on='{0}' data-off='{1}'></span>",
                            localizeService.GetResource("Common.On").Truncate(3),
                            localizeService.GetResource("Common.Off").Truncate(3));
            //sb.Append("</label>");
            // Controls are not floating, so line-break prevents different distances between them.
            sb.Append("</label>\r\n");

            return(MvcHtmlString.Create(sb.ToString()));
        }