protected override void OnOK(object sender, EventArgs args)
        {
            DeviceDefinition device = Device;

            Assert.IsNotNull(device, "device");
            MultivariateTestDefinitionItem testDefinition = TestingUtil.MultiVariateTesting.GetTestDefinition(device,
                                                                                                              new ID(
                                                                                                                  RenderingUniqueId),
                                                                                                              Client.
                                                                                                              ContentDatabase);

            if (testDefinition == null)
            {
                ItemUri contextItemUri = ContextItemUri;
                if (contextItemUri == null)
                {
                    return;
                }
                Item item = Client.ContentDatabase.GetItem(contextItemUri.ToDataUri());
                if (item != null)
                {
                    testDefinition = TestingUtil.MultiVariateTesting.AddTestDefinition(item);
                }
            }
            if (testDefinition == null)
            {
                SheerResponse.Alert("The action cannot be executed because of security restrictions.", new string[0]);
            }
            else if (Rendering != null)
            {
                MultivariateTestVariableItem variableItem = TestingUtil.MultiVariateTesting.GetVariableItem(Rendering,
                                                                                                            Client.ContentDatabase);
                if (variableItem == null)
                {
                    variableItem = TestingUtil.MultiVariateTesting.AddVariable(testDefinition, Rendering, Client.ContentDatabase);
                }
                if (variableItem == null)
                {
                    SheerResponse.Alert("The action cannot be executed because of security restrictions.", new string[0]);
                }
                else
                {
                    List <ID> list;
                    if (!UpdateVariableValues(variableItem, out list))
                    {
                        SheerResponse.Alert("The action cannot be executed because of security restrictions.", new string[0]);
                    }
                    else
                    {
                        SheerResponse.SetDialogValue(SetTestDetailsOptions.GetDialogResut(variableItem.ID, list));
                        SheerResponse.CloseWindow();
                    }
                }
            }
        }
예제 #2
0
        protected override MultivariateTestValueItem GetVariation(Sitecore.Data.Items.Item variableItem)
        {
            Sitecore.Diagnostics.Assert.ArgumentNotNull(variableItem, "variableItem");
            MultivariateTestVariableItem multivariateTestVariableItem = (MultivariateTestVariableItem)variableItem;

            if (multivariateTestVariableItem == null)
            {
                return(null);
            }
            MultivariateTestDefinitionItem multivariateTestDefinitionItem = (MultivariateTestDefinitionItem)variableItem.Parent;

            if (multivariateTestDefinitionItem != null)
            {
                Genworth.SitecoreExt.Pipelines.Response.CustomizeRendering.ExperienceEditor.SelectVariation.UpdateTestSettings(multivariateTestDefinitionItem);
            }
            return(TestingUtil.MultiVariateTesting.GetVariableValues(multivariateTestVariableItem).LastOrDefault <MultivariateTestValueItem>());
        }
        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;
        }
        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);
        }