public void Process(RenderVariantFieldArgs args) { if (args.VariantField is VariantSection variantSection) { if (variantSection.IsLink && string.IsNullOrWhiteSpace(variantSection.Tag)) { // known link types are Hyperlink and RenderRenderingVariantFieldProcessor+RenderFieldControl if (args.ResultControl is Control link && link.Controls.Count == 1) { if (link.Controls[0] is HtmlGenericControl unwantedContainer) { var unwantedTags = new[] { "div", "span" }; if (unwantedTags.Any(tag => string.Equals(unwantedContainer.TagName, tag, StringComparison.OrdinalIgnoreCase))) { // act only if dummy <div> or <span> without attributes if (unwantedContainer.Attributes.Count == 0) { // act only if there are controls in it if (unwantedContainer.Controls.Count > 0) { ReplaceContainerWithItsChildren(unwantedContainer); // re-render control since it's changed args.Result = RenderControl(args.ResultControl); } } } } } } } }
public override void RenderField(RenderVariantFieldArgs args) { Sitecore.XA.Foundation.RenderingVariants.Fields.VariantField variantField = args.VariantField as Sitecore.XA.Foundation.RenderingVariants.Fields.VariantField; if (variantField == null) { return; } FileField fileField = args.Item.Fields[variantField.ItemName]; // If not a file field, continue with normal processing if (fileField == null) { base.RenderField(args); return; } MediaItem mediaItem = fileField.MediaItem; // Get media item from file field, check for svg if (mediaItem == null || mediaItem.Extension != "svg") { base.RenderField(args); return; } args.ResultControl = new LiteralControl() { Text = GenerateSvgHtml(mediaItem) }; args.Result = RenderControl(args.ResultControl); }
public new void Process(RenderVariantFieldArgs args) { if (args.VariantField is VariantSection variantSection) { if (variantSection.IsLink && string.IsNullOrWhiteSpace(variantSection.Tag)) { var linkAttributes = variantSection.LinkAttributes; if (linkAttributes.Count > 0) { if (args.ResultControl is RenderFieldControl link) { // RenderFieldControl is not a real control, but dirty hack which consists of // two strings: FirstPart and LastPart, and which is being rendered as // > return FirstPart + RenderChildControls() + LastPart // so we have to use dirty hack to extract href var href = ExtractHref(args.Result); if (string.IsNullOrWhiteSpace(href)) { return; } // recreate hyperlink using good-working piece of SXA code var newHyperLink = CreateHyperLink(href, args.Item, false, variantSection.LinkAttributes); // move children MoveChildControls(link, newHyperLink); // save new control and re-render args.ResultControl = newHyperLink; args.Result = RenderControl(newHyperLink); } } } } }
public override void RenderField(RenderVariantFieldArgs args) { var variantField = args.VariantField as VariantScriptReferenceTag; if (variantField != null) { var id = variantField?.ScriptMedia; if (string.IsNullOrWhiteSpace(id)) { return; } var scriptItem = Context.Database.GetItem(new ID(id)); if (scriptItem == null) { return; } var url = MediaManager.GetMediaUrl(scriptItem); var tag = new HtmlGenericControl(variantField.Tag); tag.Attributes.Add("type", "text/javascript"); tag.Attributes.Add("defer", String.Empty); tag.Attributes.Add("src", url); args.ResultControl = tag; args.Result = RenderControl(args.ResultControl); } }
public override void RenderField(RenderVariantFieldArgs args) { var variantField = args.VariantField as HandlebarVariantTemplate; if (variantField != null) { HtmlGenericControl htmlGenericControl = new HtmlGenericControl((string.IsNullOrWhiteSpace(variantField.Tag) ? "div" : variantField.Tag)); this.AddClass(htmlGenericControl, variantField.CssClass); this.AddWrapperDataAttributes(variantField, args, htmlGenericControl); if (HttpContext.Current.Items["htmlHelper"] == null) { HttpContext.Current.Items.Add("htmlHelper", args.HtmlHelper); } var content = HandlebarManager.GetTemplatedContent(variantField.TemplateItem, args.Item, args.Model); htmlGenericControl.InnerHtml = content.ToHtmlString(); args.ResultControl = htmlGenericControl; args.Result = this.RenderControl(args.ResultControl); } }
public override void RenderField(RenderVariantFieldArgs args) { var variantField = args.VariantField as VariantScript; if (variantField != null) { args.ResultControl = RenderScriptField(variantField, args); args.Result = RenderControl(args.ResultControl); } }
public override void RenderField(RenderVariantFieldArgs args) { var variantField = args.VariantField as VariantQueryString; if (variantField != null) { args.ResultControl = RenderQueryStringValue(variantField, args); args.Result = RenderControl(args.ResultControl); } }
protected virtual Control RenderScriptField(VariantScript variantScript, RenderVariantFieldArgs args) { if (!string.IsNullOrWhiteSpace(variantScript.Script)) { var tag = new HtmlGenericControl("script") { InnerHtml = variantScript.Script }; tag.Attributes.Add("defer", String.Empty); return(tag); } return(new LiteralControl()); }
public override void RenderField(RenderVariantFieldArgs args) { string styleInlineValue = String.Empty; var variantField = args.VariantField as VariantImageSection; if (!string.IsNullOrWhiteSpace(variantField?.ImageFieldName) && args.Item != null) { ImageField imgField = args.Item.Fields[variantField.ImageFieldName]; if (imgField?.MediaItem != null) { string url = MediaManager.GetMediaUrl(imgField.MediaItem); styleInlineValue = $"background-image: url({url})"; } } var tag = new HtmlGenericControl(string.IsNullOrWhiteSpace(variantField.Tag) ? "div" : variantField.Tag); if (styleInlineValue.Length > 0) { tag.Attributes.Add("style", styleInlineValue); } AddClass(tag, variantField.CssClass); AddWrapperDataAttributes(variantField, args, tag); foreach (BaseVariantField sectionField in variantField.SectionFields) { var variantFieldArgs = new RenderVariantFieldArgs { VariantField = sectionField, Item = args.Item, HtmlHelper = args.HtmlHelper, IsControlEditable = args.IsControlEditable, IsFromComposite = args.IsFromComposite, RendererMode = args.RendererMode, Model = args.Model }; CorePipeline.Run("renderVariantField", variantFieldArgs); if (variantFieldArgs.ResultControl != null) { tag.Controls.Add(variantFieldArgs.ResultControl); } } args.ResultControl = variantField.IsLink ? InsertHyperLink(tag, args.Item, variantField.LinkAttributes, variantField.LinkField, false, args.HrefOverrideFunc) : tag; args.Result = RenderControl(args.ResultControl); }
public override void RenderField(RenderVariantFieldArgs args) { var variantField = args.VariantField as VariantImageWithClass; if (args.Item.Paths.IsMediaItem) { args.ResultControl = CreateResponsiveImage(args.Item, variantField, args.Item[Templates.Image.Fields.Alt]); args.Result = RenderControl(args.ResultControl); } else { if (string.IsNullOrWhiteSpace(variantField != null ? variantField.FieldName : null)) { return; } if (PageMode.IsExperienceEditorEditing) { args.ResultControl = new FieldRenderer() { Item = args.Item, FieldName = variantField.FieldName, DisableWebEditing = !args.IsControlEditable }; args.Result = RenderControl(args.ResultControl); } else { Field field1 = args.Item.Fields[variantField.FieldName]; if (field1 == null) { return; } ImageField field2 = FieldTypeManager.GetField(field1) as ImageField; if ((field2 != null ? field2.MediaItem : null) == null) { return; } string altText = string.IsNullOrWhiteSpace(field2.Alt) ? field2.MediaItem[Templates.Image.Fields.Alt] : field2.Alt; args.ResultControl = CreateResponsiveImage(field2.MediaItem, variantField, altText); args.Result = RenderControl(args.ResultControl); } } }
public override void RenderField(RenderVariantFieldArgs args) { var variantField = args.VariantField as VariantImageLink; var link = Render(variantField.RenderLinkFromVariantItem ? variantField.VariantItem : args.Item, variantField.LinkFieldName, variantField.LinkClass); var image = Render(variantField.RenderImageFromVariantItem ? variantField.VariantItem : args.Item, variantField.MediaFieldName, variantField.ImageClass); if (!string.IsNullOrWhiteSpace(image)) { var htmlOutput = string.IsNullOrWhiteSpace(link) ? image : Regex.Replace(link, @">.*<", $">{image}<"); args.ResultControl = new LiteralControl(htmlOutput); args.Result = RenderControl(args.ResultControl); } }
protected virtual Control RenderQueryStringValue(VariantField variantField, RenderVariantFieldArgs args) { var queryString = HttpContext.Current.Request.QueryString; if (!string.IsNullOrEmpty(variantField.FieldName) && !string.IsNullOrWhiteSpace(variantField.Tag)) { if (queryString.HasKeys() && queryString[variantField.FieldName] != null) { var tag = new HtmlGenericControl(variantField.Tag); AddClass(tag, (variantField.CssClass + " " + GetFieldCssClass(variantField.FieldName)).Trim()); tag.InnerText = queryString[variantField.FieldName]; return(tag); } if (args.IsControlEditable && PageMode.IsExperienceEditorEditing) { return(GetVariantFieldNameLiteral(variantField.FieldName)); } } return(new LiteralControl()); }
public override void RenderField(RenderVariantFieldArgs args) { var control = new PlaceHolder(); var variantItemReference = args.VariantField as VariantItemReference; if (!string.IsNullOrWhiteSpace(variantItemReference?.PassThroughItem)) { var newContextItem = Sitecore.Context.Database.GetItem(new ID(variantItemReference.PassThroughItem)); if (newContextItem != null) { foreach (BaseVariantField referencedItem in variantItemReference.NestedFields) { RenderVariantFieldArgs variantFieldArgs = new RenderVariantFieldArgs { VariantField = referencedItem, Item = newContextItem, HtmlHelper = args.HtmlHelper, IsControlEditable = args.IsControlEditable, IsFromComposite = args.IsFromComposite, RendererMode = args.RendererMode, Model = args.Model }; CorePipeline.Run("renderVariantField", variantFieldArgs); if (variantFieldArgs.ResultControl != null) { control.Controls.Add(variantFieldArgs.ResultControl); } } } } args.ResultControl = control; args.Result = RenderControl(args.ResultControl); }
public override void RenderField(RenderVariantFieldArgs args) => throw new NotImplementedException();