private static IEnumerable <Item> GetMultiVariateTestDataSourceItems(this RenderingReference reference) { var list = new List <Item>(); if (reference != null && !string.IsNullOrEmpty(reference.Settings.MultiVariateTest)) { using (new SecurityDisabler()) { // Sitecore 7 to Sitecore 8: //var mvVariateTestForLang = Sitecore.Analytics.Testing.TestingUtils.TestingUtil.MultiVariateTesting.GetVariableItem(reference); // Sitecore 8.1 and above: var contentTestStore = new Sitecore.ContentTesting.Data.SitecoreContentTestStore(); var mvVariateTestForLang = contentTestStore.GetMultivariateTestVariable(reference, reference.Language); var variableItem = (mvVariateTestForLang != null) ? mvVariateTestForLang.InnerItem : null; if (variableItem == null) { return(list); } foreach (Item mvChild in variableItem.Children) { var mvDataSourceItem = mvChild.GetInternalLinkFieldItem("Datasource"); if (mvDataSourceItem != null) { list.Add(mvDataSourceItem); } } } } return(list); }
protected override void ApplyVariation(CustomizeRenderingArgs args, ComponentTestContext context) { // Begin copied from sitecore Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(context, "context"); ComponentTestRunner componentTestRunner = new ComponentTestRunner(); try { componentTestRunner.Run(context); } catch (Exception exception1) { Exception exception = exception1; string str = (ItemUtil.IsNull(context.Component.RenderingID) ? string.Empty : context.Component.RenderingID.ToString()); string str1 = (args.PageContext.Item != null ? args.PageContext.Item.ID.ToString() : string.Empty); Log.Warn("Failed to execute MV testing on component with id \"{0}\". Item ID:\"{1}\"".FormatWith(new object[] { str, str1 }), exception, this); } RenderingReference renderingReference = context.Components.FirstOrDefault <RenderingReference>((RenderingReference c) => c.UniqueId == context.Component.UniqueId); if (renderingReference == null) { args.Renderer = new EmptyRenderer(); return; } this.ApplyChanges(args.Rendering, renderingReference); // End copied from sitecore // Apply Parameters Too TransferRenderingParameters(args.Rendering, renderingReference); }
private static IEnumerable <Item> GetMultiVariateTestDataSources(this RenderingReference reference) { var list = new List <Item>(); if (reference != null && !string.IsNullOrEmpty(reference.Settings.MultiVariateTest)) { using (new SecurityDisabler()) { var testStore = new Sitecore.ContentTesting.Data.SitecoreContentTestStore(); var tests = testStore.GetMultivariateTestVariable(reference, reference.Language); if (tests != null && tests.InnerItem != null) { foreach (Item child in tests.InnerItem.Children) { var datasource = child.GetInternalLinkFieldItem("Datasource"); if (datasource != null) { list.Add(datasource); } } } } } return(list); }
public GetCompatibleRenderingsRuleContext(RenderingReference currentRendering, IEnumerable <ID> compatibleRenderings, Item item) : base(currentRendering == null ? ID.Null : currentRendering.RenderingID) { CurrentRendering = currentRendering; CompatibleRenderings = new List <ID>(compatibleRenderings); Item = item; }
/// <summary> /// Renders the control page design mode. /// /// </summary> /// <param name="output">The output.</param><param name="isDesignAllowed">if set to <c>true</c> [is design allowed].</param><param name="control">The control.</param> private void RenderControlPageDesignMode(HtmlTextWriter output, bool isDesignAllowed, Control control) { Assert.ArgumentNotNull((object)output, "output"); Assert.ArgumentNotNull((object)control, "control"); RenderingReference renderingReference = Client.Page.GetRenderingReference(control); bool flag = false; if (renderingReference != null) { string uniqueId = renderingReference.UniqueId; if (Sitecore.Data.ID.IsID(uniqueId)) { string controlId = ShortID.Encode(uniqueId); Item obj = this.GetItem(); Assert.IsNotNull((object)obj, "item"); ChromeData controlData = Placeholder72.GetControlData(renderingReference, obj); output.Write(Placeholder72.GetControlStartMarker(controlId, controlData, isDesignAllowed)); control.RenderControl(output); output.Write(Placeholder72.GetControlEndMarker(controlData)); flag = true; } } if (flag) { return; } control.RenderControl(output); }
public override void Apply(T ruleContext) { if (RenderingId != null) { Assert.IsNotNullOrEmpty(RenderingId, "RenderingID"); if (RenderingId != null) { var rendering = Context.Database.GetItem(RenderingId); if (rendering != null) { Assert.IsNotNull(rendering, "rendering"); if (rendering != null) { var rendRef = new RenderingReference(rendering); if (!String.IsNullOrEmpty(Placeholder) && String.Compare(Placeholder, "specific", StringComparison.OrdinalIgnoreCase) != 0) { rendRef.Placeholder = Placeholder; } if (ruleContext != null) { ruleContext.References.Add(rendRef); } } } } } }
private static RenderingReference GetRenderingByItemId(Guid itemId, string placeholder) { var renderingItem = (RenderingItem)Context.Database.GetItem(new ID(itemId)); if (renderingItem == null) { return(null); } var renderingReference = new RenderingReference(renderingItem); renderingReference.Settings.Caching = renderingItem.Caching; renderingReference.Settings.Conditions = renderingItem.Conditions; renderingReference.Settings.DataSource = renderingItem.DataSource; renderingReference.Settings.MultiVariateTest = renderingItem.MultiVariateTest; renderingReference.Settings.Parameters = renderingItem.Parameters; renderingReference.Settings.Placeholder = renderingItem.Placeholder; if (!string.IsNullOrWhiteSpace(placeholder)) { renderingReference.Placeholder = placeholder; } return(renderingReference); }
private static void GetCustomRules(Sitecore.Pipelines.InsertRenderings.InsertRenderingsArgs args, Sitecore.Data.Items.Item item, RenderingReference reference) { string configId = Sitecore.Configuration.Settings.GetSetting("customRulesConfigFolder"); if (string.IsNullOrEmpty(configId)) { Error("Sitecore setting 'customRulesConfigFolder' not found", args.ContextItem); return; } Database db = Sitecore.Context.ContentDatabase ?? Sitecore.Context.Database; Item configFolder = db.GetItem(configId); if (configFolder == null) { Error(string.Format("Config folder {0} not found", configId), args.ContextItem); return; } if (configFolder.HasChildren && configFolder.Children.Any(r => !string.IsNullOrEmpty(r["rendering"]) && new ID(r["rendering"]) == reference.RenderingID)) { Item configItem = configFolder.Children.First(r => new ID(r["rendering"]) == reference.RenderingID); Item datasourceItem = db.GetItem(configItem["item"]); if (datasourceItem == null) { Error(string.Format("No Item containing rules set on config item at {0}", configItem.Paths.FullPath), args.ContextItem); return; } string fieldName = configItem["rule field"]; RunPromoRule(args, item, reference, datasourceItem, fieldName); } }
protected override void Evaluate(CustomizeRenderingArgs args) { Assert.ArgumentNotNull(args, "args"); Item item = args.PageContext.Item; if (item != null) { RenderingReference renderingReference = CustomizeRenderingProcessor.GetRenderingReference(args.Rendering, Context.Language, args.PageContext.Database); GetRenderingRulesArgs getRenderingRulesArgs = new GetRenderingRulesArgs(item, renderingReference); GetRenderingRulesPipeline.Run(getRenderingRulesArgs); RuleList <ConditionalRenderingsRuleContext> ruleList = getRenderingRulesArgs.RuleList; if (ruleList != null && ruleList.Count != 0) { List <RenderingReference> references = new List <RenderingReference> { renderingReference }; ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(references, renderingReference) { Item = item }; conditionalRenderingsRuleContext.Parameters["mvc.rendering"] = args.Rendering; RunRules(ruleList, conditionalRenderingsRuleContext); ApplyActions(args, conditionalRenderingsRuleContext); args.IsCustomized = true; } } }
/// <summary> /// This function is responsible for pulling the actual Rendering for current device that's loaded and /// essentially /// </summary> /// <param name="rootItem">The root item in which we need to get the child items to render.</param> /// <param name="placeholder">The place holder in which we want to place the child items into.</param> private void RenderChildItems(Item rootItem, PlaceHolder placeholder) { rootItem.GetChildren() .ToList() .ForEach(item => { // We need to get the path of the actual Sublayout's path // First we need to get the device's rendering for this child item (assume the first returned rendering) RenderingReference renderingReference = item .Visualization .GetRenderings(Sitecore.Context.Device, false) .First(); // Now, get the actual sublayout item itself Item sublayoutItem = Sitecore.Context.Database .GetItem(renderingReference.RenderingID); // Create a new sublayout with the sublayout's path and data item path. Sublayout sublayout = new Sublayout { Path = sublayoutItem["Path"], DataSource = item.Paths.Path }; // now place this sublayout on the grid. placeholder.Controls.Add(sublayout); }); }
private static string GetDisplayName(RenderingReference rendering) { return((rendering.RenderingItem != null && !string.IsNullOrEmpty(rendering.RenderingItem.DisplayName)) ? rendering.RenderingItem.DisplayName : string.Empty); }
/// <summary> /// Create a Sublayout that supports the Rendering for the specified item /// </summary> /// <param name="item"></param> /// <returns></returns> public static Sublayout GetSublayoutForItem(Sitecore.Data.Items.Item item) { RenderingReference rendering = item.Visualization.GetRenderings(Sitecore.Context.Device, false).FirstOrDefault(); if (null != rendering) { var sublayout = new Sublayout(); sublayout.DataSource = item.ID.ToString(); sublayout.Path = rendering.RenderingItem.InnerItem["Path"]; sublayout.Cacheable = rendering.RenderingItem.Caching.Cacheable; // Copy cache settings if (rendering.RenderingItem.Caching.Cacheable) { sublayout.VaryByData = rendering.RenderingItem.Caching.VaryByData; sublayout.VaryByDevice = rendering.RenderingItem.Caching.VaryByDevice; sublayout.VaryByLogin = rendering.RenderingItem.Caching.VaryByLogin; sublayout.VaryByParm = rendering.RenderingItem.Caching.VaryByParm; sublayout.VaryByQueryString = rendering.RenderingItem.Caching.VaryByQueryString; sublayout.VaryByUser = rendering.RenderingItem.Caching.VaryByUser; } return(sublayout); } return(null); }
/// <summary> /// Gets the control data. /// /// </summary> /// <param name="reference">The reference.</param><param name="item">The item.</param> /// <returns> /// The chrome data. /// </returns> public static ChromeData GetControlData(RenderingReference reference, Item item) { Assert.ArgumentNotNull((object)reference, "reference"); Assert.ArgumentNotNull((object)item, "item"); Item obj = item; if (!string.IsNullOrEmpty(reference.Settings.DataSource)) { if (MainUtil.IsFullPath(reference.Settings.DataSource)) { if (Sitecore.Context.Database != null) { obj = Sitecore.Context.Database.GetItem(reference.Settings.DataSource); } } else { obj = item.Axes.GetItem(reference.Settings.DataSource); } } GetChromeDataArgs args = new GetChromeDataArgs("rendering", obj ?? item); args.CustomData["renderingReference"] = (object)reference; GetChromeDataPipeline.Run(args); return(args.ChromeData); }
protected virtual void Evaluate(CustomizeRenderingArgs args) { Assert.ArgumentNotNull(args, "args"); Item item = args.PageContext.Item; if (item != null) { RenderingReference renderingReference = GetRenderingReference(args.Rendering, args.Rendering.Item.Language, args.Rendering.Item.Database); GetRenderingRulesArgs getRenderingRulesArgs = new GetRenderingRulesArgs(item, renderingReference); GetRenderingRulesPipeline.Run(getRenderingRulesArgs); RuleList <ConditionalRenderingsRuleContext> ruleList = getRenderingRulesArgs.RuleList; if (ruleList != null && ruleList.Count != 0) { List <RenderingReference> references = new List <RenderingReference> { renderingReference }; ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(references, renderingReference) { Item = item }; conditionalRenderingsRuleContext.Parameters["mvc.rendering"] = args.Rendering; var matchingRule = GetMatchingRule(ruleList, conditionalRenderingsRuleContext); ApplyActions(args, conditionalRenderingsRuleContext, matchingRule); } } }
/// <summary> /// Sets rendering data source based on cascaded value or the item specified. /// </summary> /// <param name="renderingReference"></param> private void SetRenderingDataSource(RenderingReference rendering) { var parameters = WebUtil.ParseQueryString(rendering.Settings.Parameters); if (DataSourceIsEmpty(rendering.Settings.DataSource) && parameters.ContainsKey(Cascade)) { RenderingReference renderingOnOtherItem = null; var shouldCascade = parameters[Cascade]; /* If not, check if 'cascade' is checked */ if ("1".Equals(shouldCascade)) { RenderingReference remoteItemRendering = GetRemoteItemRendering(parameters, rendering); /* Otherwise loop through ancestors */ if (remoteItemRendering == null) { renderingOnOtherItem = FindRenderingOnAncestor(Context.Item.Parent, rendering); if (renderingOnOtherItem != null) { rendering.Settings.DataSource = renderingOnOtherItem.Settings.DataSource; } } else { rendering.Settings.DataSource = remoteItemRendering.Settings.DataSource; } } } }
public static Item GetDataSourceItem(this RenderingReference reference) { if (reference != null) { return GetDataSourceItem(reference.Settings.DataSource, reference.Database); } return null; }
public static Item GetDataSourceItem(this RenderingReference reference, Language itemLanguage) { if (reference != null) { return(GetDataSourceItem(reference.Settings.DataSource, reference.Database, itemLanguage)); } return(null); }
private static bool IncludeRendering(RenderingReference rendering) { if (rendering == null) { return(false); } return(!string.IsNullOrEmpty(rendering.Settings.DataSource)); }
private void InjectScript(Literal literal) { RenderingReference reference = new RenderingReference(literal) { Placeholder = "webedit", AddToFormIfUnused = true }; Sitecore.Context.Page.AddRendering(reference); }
private static IEnumerable <Item> GetPersonalizationDataSourceItem(this RenderingReference reference) { var list = new List <Item>(); if (reference != null && reference.Settings.Rules != null && reference.Settings.Rules.Count > 0) { list.AddRange(reference.Settings.Rules.Rules.SelectMany(r => r.Actions).OfType <SetDataSourceAction <ConditionalRenderingsRuleContext> >().Select(setDataSourceAction => GetDataSourceItem(setDataSourceAction.DataSource, reference.Database)).Where(dataSourceItem => dataSourceItem != null)); } return(list); }
private static void RunPromoRule(Sitecore.Pipelines.InsertRenderings.InsertRenderingsArgs args, Sitecore.Data.Items.Item item, RenderingReference reference, Item promo, string fieldName) { if (promo != null && !string.IsNullOrEmpty(fieldName)) { RuleList<ConditionalRenderingsRuleContext> rules = RuleFactory.GetRules<ConditionalRenderingsRuleContext>(promo.Fields[fieldName]); var ruleContext = new ConditionalRenderingsRuleContext(args.Renderings, reference); ruleContext.Item = item; rules.Run(ruleContext); } }
protected override void ApplyActions(CustomizeRenderingArgs args, ConditionalRenderingsRuleContext context) { base.ApplyActions(args, context); RenderingReference renderingReference = context.References.Find((RenderingReference r) => r.UniqueId == context.Reference.UniqueId); if (renderingReference != null) { ExtensionMethods.TransferRenderingParameters(args.Rendering, renderingReference); } }
public override void Insert() { SiteContext site = Context.Site; if (((site != null) && (site.EnableWebEdit && (site.DisplayMode == DisplayMode.Edit))) && (WebUtil.GetQueryString("sc_webedit") != "0")) { RenderingReference reference = new RenderingReference(new TaxonomyScriptRegister()) { Placeholder = "webedit", AddToFormIfUnused = true }; Context.Page.AddRendering(reference); } }
protected override void ApplyVariation(CustomizeRenderingArgs args, ComponentTestContext context) { base.ApplyVariation(args, context); RenderingReference renderingReference = context.Components.FirstOrDefault((RenderingReference c) => c.UniqueId == context.Component.UniqueId); if (renderingReference != null) { ExtensionMethods.TransferRenderingParameters(args.Rendering, renderingReference); } }
//public override void Process(CustomizeRenderingArgs args) //{ // Assert.ArgumentNotNull(args, "args"); // if (Tracker.IsActive) // { // Evaluate(args); // } //} //protected override void Evaluate(CustomizeRenderingArgs args) //{ // Assert.ArgumentNotNull(args, "args"); // Item item = args.PageContext.Item; // if (item != null) // { // RenderingReference renderingReference = CustomizeRenderingProcessor.GetRenderingReference(args.Rendering, Context.Language, args.PageContext.Database); // GetRenderingRulesArgs getRenderingRulesArgs = new GetRenderingRulesArgs(item, renderingReference); // GetRenderingRulesPipeline.Run(getRenderingRulesArgs); // RuleList<ConditionalRenderingsRuleContext> ruleList = getRenderingRulesArgs.RuleList; // if (ruleList != null && ruleList.Count != 0) // { // List<RenderingReference> references = new List<RenderingReference> // { // renderingReference // }; // ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(references, renderingReference) // { // Item = item // }; // conditionalRenderingsRuleContext.Parameters["mvc.rendering"] = args.Rendering; // RunRules(ruleList, conditionalRenderingsRuleContext); // ApplyActions(args, conditionalRenderingsRuleContext); // args.IsCustomized = true; // //var matchingRule = GetMatchingRule(ruleList, conditionalRenderingsRuleContext); // //ApplyActions(args, conditionalRenderingsRuleContext, matchingRule); // } // } //} //protected override void ApplyActions(CustomizeRenderingArgs args, ConditionalRenderingsRuleContext context) //{ // Assert.ArgumentNotNull(args, "args"); // Assert.ArgumentNotNull(context, "context"); // RenderingReference renderingReference = context.References.Find((RenderingReference r) => r.UniqueId == context.Reference.UniqueId); // if (renderingReference == null) // { // args.Renderer = new EmptyRenderer(); // } // else // { // ApplyChanges(args.Rendering, renderingReference); // } //} ////protected virtual void ApplyActions(CustomizeRenderingArgs args, ConditionalRenderingsRuleContext context, Rule<ConditionalRenderingsRuleContext> matchingRule) ////{ //// Assert.ArgumentNotNull(args, "args"); //// Assert.ArgumentNotNull(context, "context"); //// Assert.ArgumentNotNull(matchingRule, "matchingRule"); //// matchingRule.Actions?.Each(a => a.Apply(context)); //// var parameters = WebUtil.ParseQueryString(context.Reference.Settings.Parameters, true); //// if (!string.IsNullOrWhiteSpace(parameters["FieldNames"])) //// { //// args.Rendering.Parameters["FieldNames"] = parameters["FieldNames"]; //// } ////} //protected virtual Rule<ConditionalRenderingsRuleContext> GetMatchingRule(RuleList<ConditionalRenderingsRuleContext> rules, ConditionalRenderingsRuleContext context) //{ // Assert.ArgumentNotNull(rules, "rules"); // Assert.ArgumentNotNull(context, "context"); // var matchingRule = rules.Rules.FirstOrDefault(r => r.Evaluate(context)) ?? rules.Rules.FirstOrDefault(r => r.UniqueId == ID.Null); // return matchingRule; //} //protected override void ApplyChanges(Rendering rendering, RenderingReference reference) //{ // Assert.ArgumentNotNull(rendering, "rendering"); // Assert.ArgumentNotNull(reference, "reference"); // TransferRenderingVariant(rendering, reference); //} private static void TransferRenderingVariant(Rendering rendering, RenderingReference reference, string variantId) { Assert.ArgumentNotNull(rendering, "rendering"); Assert.ArgumentNotNull(reference, "reference"); if (reference.RenderingItem != null && !string.IsNullOrWhiteSpace(variantId)) { var parameters = WebUtil.ParseQueryString(reference.Settings.Parameters, true); //rendering.Parameters["FieldNames"] = "{4C961442-BEA7-4759-9AA2-A8DF74357451}";//parameters["FieldNames"]; rendering.Parameters["FieldNames"] = variantId; } }
public override void Insert() { SiteContext siteContext = Context.Site; if (((siteContext != null) && (siteContext.EnableWebEdit && (siteContext.DisplayMode == DisplayMode.Edit))) && (WebUtil.GetQueryString("sc_webedit") != "0")) { UserControlRenderer editControl = new UserControlRenderer { Src = "/sitecore/shell/Applications/Taxonomy/Controls/PageEditor/TaxomomiesRendering.ascx" }; RenderingReference menuRenderingReference = new RenderingReference(editControl) { Placeholder = "webedit", AddToFormIfUnused = true }; Context.Page.AddRendering(menuRenderingReference); } }
protected virtual ITemplate GetColumnRendering(Item item) { if (item.Visualization.GetRenderings(Sitecore.Context.Device, true).Length > 0) { RenderingReference reference = item.Visualization.GetRenderings(Sitecore.Context.Device, true).FirstOrDefault <RenderingReference>(); if (reference != null) { return(reference.GetControl() as ITemplate); } } return(null); }
/// <summary> /// Returns matching rendering on an ancestor item. /// </summary> /// <param name="item"></param> /// <param name="rendering"></param> /// <returns></returns> private static RenderingReference FindRenderingOnAncestor(Item item, RenderingReference rendering) { if (item == null) return null; var renderingOnParentItem = GetSameRenderingOnItem(item, rendering); if (renderingOnParentItem != null && renderingOnParentItem.Settings.DataSource != "") { return renderingOnParentItem; } return FindRenderingOnAncestor(item.Parent, rendering); }
protected override void ApplyActions(CustomizeRenderingArgs args, ConditionalRenderingsRuleContext context) { Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(context, "context"); RenderingReference renderingReference = context.References.Find((RenderingReference r) => r.UniqueId == context.Reference.UniqueId); if (renderingReference == null) { args.Renderer = new EmptyRenderer(); return; } this.ApplyChanges(args.Rendering, renderingReference); }
protected override RenderingReference DoActivateCondition(RenderingDefinition rendering, ID conditionID, Language lang, Database database, Item item, SiteContext site) { // Copied from Sitecore Assert.ArgumentNotNull(rendering, "rendering"); Assert.ArgumentNotNull(conditionID, "conditionID"); Assert.ArgumentNotNull(lang, "lang"); Assert.ArgumentNotNull(database, "database"); Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(site, "site"); RenderingReference renderingReference = new RenderingReference(rendering, lang, database); RuleList <ConditionalRenderingsRuleContext> rules = renderingReference.Settings.Rules; Rule <ConditionalRenderingsRuleContext> rule = rules.Rules.FirstOrDefault <Rule <ConditionalRenderingsRuleContext> >((Rule <ConditionalRenderingsRuleContext> r) => r.UniqueId == conditionID); if (rule == null) { return(renderingReference); } List <RenderingReference> renderingReferences = new List <RenderingReference>() { renderingReference }; ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(renderingReferences, renderingReference) { Item = item }; rule.SetCondition(new TrueCondition <ConditionalRenderingsRuleContext>()); rules = new RuleList <ConditionalRenderingsRuleContext>(rule); using (SiteContextSwitcher siteContextSwitcher = new SiteContextSwitcher(site)) { using (DatabaseSwitcher databaseSwitcher = new DatabaseSwitcher(item.Database)) { rules.Run(conditionalRenderingsRuleContext); } } Assert.IsTrue(conditionalRenderingsRuleContext.References.Count == 1, "The references count should equal 1"); RenderingReference renderingReference1 = conditionalRenderingsRuleContext.References[0]; Assert.IsNotNull(renderingReference1, "result"); rendering.Datasource = renderingReference1.Settings.DataSource; if (renderingReference1.RenderingItem != null) { rendering.ItemID = renderingReference1.RenderingItem.ID.ToString(); } // End copied from Sitecore // Apply Parameters Too rendering.Parameters = renderingReference1.Settings.Parameters; return(renderingReference1); }
public override void Process(HttpRequestArgs args) { if (Context.Item != null && Context.Item.Fields["MVCPlaceHolderKey"] != null) { var reference = new RenderingReference(new MvcRouterControl()) { Placeholder = Context.Item.Fields["MVCPlaceHolderKey"].GetValue(true) }; Context.Page.AddRendering(reference); } base.Process(args); }
/// <summary> /// Returns matching rendering on an ancestor item. /// </summary> /// <param name="item"></param> /// <param name="rendering"></param> /// <returns></returns> private static RenderingReference FindRenderingOnAncestor(Item item, RenderingReference rendering) { if (item == null) { return(null); } var renderingOnParentItem = GetSameRenderingOnItem(item, rendering); if (renderingOnParentItem != null && renderingOnParentItem.Settings.DataSource != "") { return(renderingOnParentItem); } return(FindRenderingOnAncestor(item.Parent, rendering)); }
protected override void ApplyActions(CustomizeRenderingArgs args, ConditionalRenderingsRuleContext context) { // Begin copied from sitecore Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(context, "context"); RenderingReference renderingReference = context.References.Find((RenderingReference r) => r.UniqueId == context.Reference.UniqueId); if (renderingReference == null) { args.Renderer = new EmptyRenderer(); return; } this.ApplyChanges(args.Rendering, renderingReference); // End copied from sitecore // Apply Parameters Too TransferRenderingParameters(args.Rendering, renderingReference); }
protected override void Evaluate(CustomizeRenderingArgs args) { Assert.ArgumentNotNull(args, "args"); Item item = args.PageContext.Item; if (item == null) { return; } RenderingReference renderingReference = CustomizeRenderingProcessor.GetRenderingReference(args.Rendering, Context.Language, args.PageContext.Database); GetRenderingRulesArgs expr_3E = new GetRenderingRulesArgs(item, renderingReference); GetRenderingRulesPipeline.Run(expr_3E); RuleList <ConditionalRenderingsRuleContext> ruleList = expr_3E.RuleList; if (ruleList == null || ruleList.Count == 0) { return; } // after the ruleList has been retrieved AND ruleList > 0, instantiate a new personalization rulelist which has a fix to continue evaluation of conditions // even when some exceptions occur. PersonalizationRuleList <ConditionalRenderingsRuleContext> personalizationRuleList = new PersonalizationRuleList <ConditionalRenderingsRuleContext>(); foreach (var r in ruleList.Rules) { personalizationRuleList.Add(r); } ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(new List <RenderingReference> { renderingReference }, renderingReference) { Item = item }; conditionalRenderingsRuleContext.Parameters["mvc.rendering"] = args.Rendering; // runRules for the personalizationRuleList this.RunRules(personalizationRuleList, conditionalRenderingsRuleContext); this.ApplyActions(args, conditionalRenderingsRuleContext); args.IsCustomized = true; }
/// <summary> /// Get rendering on specified item. /// </summary> /// <param name="item"></param> /// <param name="rendering"></param> /// <returns></returns> private static RenderingReference GetSameRenderingOnItem(Item item, RenderingReference rendering) { LayoutField layoutField = item.Fields[FieldIDs.LayoutField]; if (layoutField == null) { return(null); } RenderingReference[] references = layoutField.GetReferences(Context.Device); if (references == null || references.Length == 0) { return(null); } var renderingOnParentItem = references.FirstOrDefault(r => r.UniqueId == rendering.UniqueId); return(renderingOnParentItem); }
/// <summary> /// Gets the matching rendering item on the remote item specified, if one has been specified. /// </summary> /// <returns></returns> private RenderingReference GetRemoteItemRendering(SafeDictionary<string> parameters, RenderingReference rendering) { RenderingReference renderingReference = null; var cascadeItem = parameters[RemoteItem]; if (!String.IsNullOrEmpty(cascadeItem)) { Guid itemReference = Guid.Empty; if (Guid.TryParse(cascadeItem, out itemReference)) { Item referenceItem = Sitecore.Context.Database.GetItem(new ID(itemReference)); if (referenceItem != null) { renderingReference = GetSameRenderingOnItem(referenceItem, rendering); } } } return renderingReference; }
/// <summary> /// Get rendering on specified item. /// </summary> /// <param name="item"></param> /// <param name="rendering"></param> /// <returns></returns> private static RenderingReference GetSameRenderingOnItem(Item item, RenderingReference rendering) { LayoutField layoutField = item.Fields[FieldIDs.LayoutField]; if (layoutField == null) return null; RenderingReference[] references = layoutField.GetReferences(Context.Device); if (references == null || references.Length == 0) return null; var renderingOnParentItem = references.FirstOrDefault(r => r.UniqueId == rendering.UniqueId); return renderingOnParentItem; }
private static string GetDisplayName(RenderingReference rendering) { return (rendering.RenderingItem != null && !string.IsNullOrEmpty(rendering.RenderingItem.DisplayName)) ? rendering.RenderingItem.DisplayName : string.Empty; }