public static HtmlString ClickFieldAttribute([NotNull] this SitecoreHelper htmlHelper, [NotNull] Item item, [NotNull] string clickFieldName) { Assert.ArgumentNotNull(htmlHelper, "htmlHelper"); Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(clickFieldName, "clickFieldName"); if (string.IsNullOrEmpty(clickFieldName)) { clickFieldName = "$itemid"; } var click = item.GetField(clickFieldName); if (string.IsNullOrEmpty(click)) { return MvcHtmlString.Empty; } if (click.StartsWith("trigger:", StringComparison.InvariantCultureIgnoreCase) || click.StartsWith("action:", StringComparison.InvariantCultureIgnoreCase)) { var args = new GetClickArgs(click); ClientHost.Pipelines.Run(PipelineNames.GetClick, args); if (string.IsNullOrEmpty(args.Click)) { return MvcHtmlString.Empty; } var name = item.Name.GetSafeIdentifier() + "Click"; return new HtmlString(string.Format("data-sc-id=\"{0}\" data-sc-presenter=\"{1}\" data-sc-component=\"Bootstrap3-Click\" data-sc-require=\"/sitecore/shell/-/speak/v1/client/Bootstrap3-Click.js\" data-bind=\"click: click, enable: isEnabled, visible: isVisible\" data-sc-properties=\"{{ "isEnabled":"true", "isVisible":"true" }}\" data-sc-click=\"{2}\"", name, SpeakSettings.Components.KnockoutPresenter, HttpUtility.HtmlAttributeEncode(args.Click))); } if (click.StartsWith("javascript:", StringComparison.InvariantCultureIgnoreCase)) { var args = new GetClickArgs(click); ClientHost.Pipelines.Run(PipelineNames.GetClick, args); if (string.IsNullOrEmpty(args.Click)) { return MvcHtmlString.Empty; } return new HtmlString(string.Format("onclick=\"{0}\"", HttpUtility.HtmlAttributeEncode(args.Click))); } return new HtmlString("data-sc-click=\"" + HttpUtility.HtmlAttributeEncode(click) + "\""); }
public static HtmlString HrefAttribute([NotNull] this SitecoreHelper htmlHelper, [NotNull] Item item, [NotNull] string clickFieldName) { Assert.ArgumentNotNull(htmlHelper, "htmlHelper"); Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(clickFieldName, "clickFieldName"); if (string.IsNullOrEmpty(clickFieldName)) { clickFieldName = "$itemid"; } if (clickFieldName.StartsWith("#") && clickFieldName.Length > 1) { var link = "#" + item.GetField(clickFieldName.Mid(1)); return new HtmlString("href=\"" + HttpUtility.HtmlAttributeEncode(link) + "\""); } var click = item.GetField(clickFieldName); if (string.IsNullOrEmpty(click)) { return MvcHtmlString.Empty; } if (click.StartsWith("trigger:", StringComparison.InvariantCultureIgnoreCase) || click.StartsWith("action:", StringComparison.InvariantCultureIgnoreCase)) { var args = new GetClickArgs(click); ClientHost.Pipelines.Run(PipelineNames.GetClick, args); click = args.Click; if (string.IsNullOrEmpty(click)) { return MvcHtmlString.Empty; } var name = item.Name.GetSafeIdentifier() + "Click"; return new HtmlString(string.Format("href=\"#\" data-sc-id=\"{0}\" data-sc-presenter=\"{1}\" data-sc-component=\"Bootstrap3-Click\" data-sc-require=\"/sitecore/shell/-/speak/v1/client/Bootstrap3-Click.js\" data-bind=\"click: click, enable: isEnabled, visible: isVisible\" data-sc-properties=\"{{ "isEnabled":"true", "isVisible":"true" }}\" data-sc-click=\"{2}\"", name, SpeakSettings.Components.KnockoutPresenter, HttpUtility.HtmlAttributeEncode(click))); } if (ID.IsID(click)) { var target = item.Database.GetItem(click); if (target != null) { var options = new UrlOptions { AddAspxExtension = false }; var itemUrl = LinkManager.GetItemUrl(target, options); return new HtmlString("href=\"" + HttpUtility.HtmlAttributeEncode(itemUrl) + "\""); } } return new HtmlString("href=\"" + HttpUtility.HtmlAttributeEncode(click) + "\""); }