protected override void Evaluate(CustomizeRenderingArgs args) { Sitecore.Diagnostics.Assert.ArgumentNotNull(args, "args"); Sitecore.Layouts.RenderingReference renderingReference = SelectVariation.GetRenderingReference(args.Rendering, Context.Language, args.PageContext.Database); if (string.IsNullOrEmpty(renderingReference.Settings.MultiVariateTest)) { return; } using (new Sitecore.SecurityModel.SecurityDisabler()) { Sitecore.Data.Items.Item item = args.PageContext.Database.GetItem(renderingReference.Settings.GetMultiVariateTestForLanguage(Context.Language)); if (item == null) { return; } MultivariateTestValueItem variation = this.GetVariation(item); if (variation == null) { return; } ComponentTestContext context = new ComponentTestContext(variation, renderingReference, new List <Sitecore.Layouts.RenderingReference> { renderingReference }); this.ApplyVariation(args, context); } args.IsCustomized = true; }
private static bool IsVariableValueChanged(MultivariateTestValueItem variableItem, VariableValueItemStub variableStub) { Assert.ArgumentNotNull(variableItem, "variableItem"); return((variableItem["Name"] != variableStub.Name) || ((variableItem.Datasource.Path != variableStub.Datasource) || ((variableItem.ReplacementComponent.Path != variableStub.ReplacementComponent) || (variableItem.HideComponent != variableStub.HideComponent)))); }
private static void UpdateVariableValueItem(MultivariateTestValueItem variableValue, VariableValueItemStub variableStub, int sortOrder) { Assert.ArgumentNotNull(variableValue, "variableValue"); using (new EditContext(variableValue)) { variableValue["Name"] = variableStub.Name; variableValue.Datasource.Path = variableStub.Datasource; variableValue.HideComponent = variableStub.HideComponent; variableValue.ReplacementComponent.Path = variableStub.ReplacementComponent; variableValue.InnerItem.Appearance.Sortorder = sortOrder; } }
private static void UpdateVariableValueItem(MultivariateTestValueItem variableValue, VariableValueItemStub variableStub) { Assert.ArgumentNotNull(variableValue, "variableValue"); UpdateVariableValueItem(variableValue, variableStub, variableValue.InnerItem.Appearance.Sortorder); }
private static bool IsVariableValueChanged(MultivariateTestValueItem variableItem, VariableValueItemStub variableStub) { Assert.ArgumentNotNull(variableItem, "variableItem"); return ((variableItem["Name"] != variableStub.Name) || ((variableItem.Datasource.Path != variableStub.Datasource) || ((variableItem.ReplacementComponent.Path != variableStub.ReplacementComponent) || (variableItem.HideComponent != variableStub.HideComponent)))); }
protected virtual bool UpdateVariableValues(MultivariateTestVariableItem variableItem, out List <ID> modifiedVariations) { Assert.ArgumentNotNull(variableItem, "variableItem"); modifiedVariations = new List <ID>(); List <VariableValueItemStub> variableValues = VariableValues; var list2 = new List <MultivariateTestValueItem>(TestingUtil.MultiVariateTesting.GetVariableValues(variableItem)); var comparer = new DefaultComparer(); list2.Sort((lhs, rhs) => comparer.Compare(lhs, rhs)); int num = (list2.Count > 0) ? (list2[0].InnerItem.Appearance.Sortorder - 1) : Settings.DefaultSortOrder; var templateID = new TemplateID(MultivariateTestValueItem.TemplateID); var list3 = new List <KeyValuePair <MultivariateTestValueItem, VariableValueItemStub> >(); var list4 = new List <KeyValuePair <int, VariableValueItemStub> >(); for (int i = variableValues.Count - 1; i >= 0; i--) { VariableValueItemStub stub = variableValues[i]; ID currentId = stub.Id; int index = list2.FindIndex(item => item.ID == currentId); if (index < 0) { var pair = new KeyValuePair <int, VariableValueItemStub>(num--, stub); list4.Add(pair); } else { MultivariateTestValueItem item = list2[index]; if (IsVariableValueChanged(item, stub)) { list3.Add(new KeyValuePair <MultivariateTestValueItem, VariableValueItemStub>(item, stub)); } list2.RemoveAt(index); } } if (list2.Count != 0) { } foreach (Item item2 in list2) { modifiedVariations.Add(item2.ID); item2.Delete(); } foreach (var pair2 in list4) { VariableValueItemStub variableStub = pair2.Value; int key = pair2.Key; string name = variableStub.Name; if (ContainsNonASCIISymbols(name)) { Item item3 = variableItem.Database.GetItem(templateID.ID); name = (item3 != null) ? item3.Name : "Unnamed item"; } if (!ItemUtil.IsItemNameValid(name)) { try { name = ItemUtil.ProposeValidItemName(name); } catch (Exception) { return(false); } } name = ItemUtil.GetUniqueName(variableItem, name); Item item4 = variableItem.InnerItem.Add(name, templateID); Assert.IsNotNull(item4, "newVariableValue"); UpdateVariableValueItem((MultivariateTestValueItem)item4, variableStub, key); } foreach (var pair3 in list3) { MultivariateTestValueItem variableValue = pair3.Key; VariableValueItemStub stub3 = pair3.Value; modifiedVariations.Add(variableValue.ID); UpdateVariableValueItem(variableValue, stub3); } return(true); }