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); }
protected override void ProcessCore(TagHelperContext context, TagHelperOutput output) { if (!ShowPaginator || ListItems == null || ListItems.TotalCount == 0 || ListItems.TotalPages <= 1) { output.SuppressOutput(); return; } var items = CreateItemList(); output.Attributes.Add("aria-label", "Page navigation"); var itemsUl = new TagBuilder("ul"); itemsUl.AppendCssClass("pagination"); // Size if (Size == PagerSize.Large) { itemsUl.AppendCssClass("pagination-lg"); } else if (Size == PagerSize.Small) { itemsUl.AppendCssClass("pagination-sm"); } else if (Size == PagerSize.Mini) { itemsUl.AppendCssClass("pagination-xs"); } // Alignment if (Alignment == PagerAlignment.Centered) { itemsUl.AppendCssClass("justify-content-center"); output.AppendCssClass("text-center"); } else if (Alignment == PagerAlignment.Right) { itemsUl.AppendCssClass("justify-content-end"); output.AppendCssClass("text-right"); } foreach (var item in items) { AppendItem(itemsUl, item); } output.TagName = "nav"; output.TagMode = TagMode.StartTagAndEndTag; output.Content.AppendHtml(itemsUl); }
protected override async Task ProcessCoreAsync(TagHelperContext context, TagHelperOutput output) { await output.LoadAndSetChildContentAsync(); // TODO: (mh) (core) This should be a menu tag but is not displayed nice currently > Alter this when it's time to do some css. output.TagName = "div"; var menu = await MenuService.GetMenuAsync(Id); var model = menu.CreateModel(Template, (ControllerContext)ActionContextAccessor.ActionContext); var root = model.Root; if (root == null) { return; } var isFirst = true; var hasIcons = root.Children.Any(x => x.Value.Icon.HasValue()); var hasImages = root.Children.Any(x => x.Value.ImageUrl.HasValue()); // TODO: (mh) (core) Respect rtl... //var rtl = WorkContext.WorkingLanguage.Rtl; // INFO: This is for testing only. Not the final impplementation!!! Please do not review yet. // TODO: (mh) (core) Finish the job... // TODO: (mh) (core) Implement seperate Taghelpers for each MenuType. Maybe according to MediaTagHelper... if (Template == "LinkList") { output.AppendCssClass("cms-menu cms-menu-linklist"); output.Attributes.Add("data-menu-name", model.Name?.ToLower()); var list = new TagBuilder("ul"); list.AppendCssClass("list-unstyled"); foreach (var node in root.Children) { var item = node.Value; if (!item.Visible) { continue; } var itemText = node.GetItemText(T); var itemUrl = item.GenerateUrl(ViewContext); var li = new TagBuilder("li"); if (item.IsGroupHeader) { if (!isFirst) { var hr = new TagBuilder("hr"); hr.AppendCssClass("my-2"); li.InnerHtml.AppendHtml(hr); } if (itemText.HasValue() && item.Text != "[SKIP]") { li.AppendCssClass("menu-header h5 mt-2"); li.InnerHtml.Append(itemText); } isFirst = false; list.InnerHtml.AppendHtml(li); continue; } var attrs = item.GetCombinedAttributes().PrependCssClass("menu-link"); var a = new TagBuilder("a"); attrs.Add("href", itemUrl); a.Attributes.AddRange(attrs); // TODO: (mh) (core) Icons var span = new TagBuilder("span"); span.InnerHtml.Append(itemText); a.InnerHtml.AppendHtml(span); li.InnerHtml.AppendHtml(a); list.InnerHtml.AppendHtml(li); } output.Content.AppendHtml(list); } // INFO: This code can render views. Maybe this will come in handy for MegaMenu. //var sw = new StringWriter(); //ViewDataDictionary viewData = new(ViewContext.ViewData); //viewData.Model = model; //var viewContext = new ViewContext(ViewContext, ViewContext.View, viewData, ViewContext.TempData, sw, new HtmlHelperOptions()); //output.Content.AppendHtml(await RenderPartialView(viewContext, Template)); }
protected override void ProcessCore(TagHelperContext context, TagHelperOutput output) { output.SuppressOutput(); if (!ShowPaginator || ListItems == null || ListItems.TotalCount == 0 || ListItems.TotalPages <= 1) { return; } var items = CreateItemList(); // Alignment if (Alignment == PagerAlignment.Right) { output.AppendCssClass("text-right"); } else if (Alignment == PagerAlignment.Centered) { output.AppendCssClass("text-center"); } output.Attributes.Add("aria-label", "Page navigation"); if (ShowSummary && ListItems.TotalPages > 1) { var summarDiv = new TagBuilder("div"); summarDiv.AppendCssClass("pagination-summary float-left"); summarDiv.InnerHtml.AppendHtml(Pager.CurrentPageText.FormatInvariant(ListItems.PageNumber, ListItems.TotalPages, ListItems.TotalCount)); output.Content.AppendHtml(summarDiv); } var itemsUl = new TagBuilder("ul"); itemsUl.AppendCssClass(Style == PagerStyle.Pagination ? "pagination" : "pagination"); // Size if (Size == PagerSize.Large) { itemsUl.AppendCssClass("pagination-lg"); } else if (Size == PagerSize.Small) { itemsUl.AppendCssClass("pagination-sm"); } else if (Size == PagerSize.Mini) { itemsUl.AppendCssClass("pagination-xs"); } // BS 4 alignment if (Alignment == PagerAlignment.Centered) { itemsUl.AppendCssClass("justify-content-center"); } else if (Alignment == PagerAlignment.Right) { itemsUl.AppendCssClass("justify-content-end"); } foreach (var item in items) { AppendItem(itemsUl, item); } output.TagName = "nav"; output.TagMode = TagMode.StartTagAndEndTag; output.Content.AppendHtml(itemsUl); }