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); }
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())); }