Example #1
0
 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, 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);
        }
 private static void UpdateVariableValueItem(MultivariateTestValueItem variableValue,
                                             VariableValueItemStub variableStub)
 {
     Assert.ArgumentNotNull(variableValue, "variableValue");
     UpdateVariableValueItem(variableValue, variableStub, variableValue.InnerItem.Appearance.Sortorder);
 }