コード例 #1
0
        private Item InstallAttribute(DemandbaseAttribute attribute, Item attributeFolder)
        {
            Item ret = attributeFolder.Database.DataManager.DataEngine.CreateItem(
                ItemUtil.ProposeValidItemName(attribute.Name),
                FindParent(attribute, attributeFolder.Database),
                new ID(DemandbaseConstants.AttributeTemplateId),
                GuidUtility.GetId("demandbase" + attributeFolder.ID, attribute.Id));

            ret.BeginVersionCheckEditing();
            ret["Name"] = attribute.Name;
            ret["Id"]   = attribute.Id;
            ret.Editing.EndEdit();
            return(ret);
        }
コード例 #2
0
        private void ProcessDefault(Database db, string type, string name, Item ruleElement, string attributeFolder, bool accountWatch)
        {
            Item attributeFolderItem = db.GetItem(attributeFolder);

            if (attributeFolderItem == null || !attributeFolderItem.Children.Any())
            {
                return;
            }
            Item condition = db.GetItem(GuidUtility.GetId("demandbaseconditiondefault", name + accountWatch));

            if (condition == null)
            {
                condition = InstallCondition(ruleElement, type, accountWatch, name, attributeFolder, type);
            }
            else
            {
                SetCondition($"{(accountWatch ? "Watch List " : "")} " + DefaultAttributeSelector.FormatWith(attributeFolder), type, condition, null, accountWatch, false, "25");
            }
            DemandbaseScrubber.tracker.Add(condition.ID);
        }
コード例 #3
0
        protected virtual void AddTokenManagerMainRteButtons()
        {
            using (new SecurityDisabler())
            {
                var db = Factory.GetDatabase("core", false);

                foreach (Item parent in db.DataManager.DataEngine
                         .GetItem(new ID(Constants.Core.RteParent), LanguageManager.DefaultLanguage, Sitecore.Data.Version.Latest).Axes
                         .GetDescendants().Where(x =>
                                                 x.Name == "Toolbar 1" && x.TemplateID.ToString() == "{0E0DA701-BC94-4855-A0C3-92063E64BA1F}"))
                {
                    ID   buttonId = GuidUtility.GetId("tokenmanager", $"tokenmanager{parent.ID}");
                    Item button   = db.DataManager.DataEngine.GetItem(buttonId, LanguageManager.DefaultLanguage, Sitecore.Data.Version.Latest);

                    if (button != null)
                    {
                        if (
                            button["Click"] == "TokenSelector" &&
                            button[FieldIDs.DisplayName] == "Insert A Token" &&
                            button[FieldIDs.Sortorder] == "5" &&
                            button[FieldIDs.Icon] == "Office/32x32/registry.png")
                        {
                            continue;
                        }
                    }
                    else
                    {
                        button = db.DataManager.DataEngine.CreateItem("Insert A Token", parent, new ID(Constants.Core.ButtonTemplate), buttonId);
                    }

                    button.Editing.BeginEdit();
                    button["Click"] = "TokenSelector";
                    button[FieldIDs.DisplayName] = "Insert A Token";
                    button[FieldIDs.Sortorder]   = "5";
                    button[FieldIDs.Icon]        = "Office/32x32/registry.png";
                    button.Editing.EndEdit(false, true);
                    button.Database.Caches.ItemCache.RemoveItem(buttonId);
                    button.Database.Caches.DataCache.RemoveItemInformation(buttonId);
                }
            }
        }
コード例 #4
0
        private void ProcessAttributes(Database db, DemandbaseAttribute attribute, Item ruleElement, bool accountWatch)
        {
            string valueFolderId = "";

            if (attribute.DefaultValues.Any())
            {
                valueFolderId = accountWatch
                ? GuidUtility.GetId("demandbasevaluefolder" + DemandbaseConstants.AccountWatchDefaultValuesFolderId, attribute.Id).ToString()
                : GuidUtility.GetId("demandbasevaluefolder" + DemandbaseConstants.DefaultValuesFolderId, attribute.Id).ToString();
            }
            Item condition = db.GetItem(GuidUtility.GetId("demandbasecondition", attribute.Id));

            if (condition == null)
            {
                condition = InstallCondition(attribute, ruleElement, accountWatch, accountWatch ? DemandbaseConstants.AccountWatchAttributesFolderId : DemandbaseConstants.AttributesFolderId, valueFolderId);
            }
            else
            {
                SetCondition(attribute.Name, attribute.Type, condition, valueFolderId, accountWatch);
            }
            DemandbaseScrubber.tracker.Add(condition.ID);
        }
コード例 #5
0
        public IEnumerable <ID> LoadAutoToken(AutoToken token)
        {
            using (new SecurityDisabler())
            {
                if (TokenCollections.ContainsKey(token.CollectionName))
                {
                    TokenCollections[token.CollectionName].AddOrUpdateToken(token.Token, token);
                }
                else
                {
                    TokenCollections[token.CollectionName] = new AutoTokenCollection(token);
                    TokenCollections[token.CollectionName].AddOrUpdateToken(token.Token, token);
                }
                var db = Factory.GetDatabase("core", false);
                if (db == null)
                {
                    yield break;
                }

                TokenButton tb = token.TokenButton();
                foreach (Item parent in db.DataManager.DataEngine
                         .GetItem(new ID(Constants.Core.RteParent), LanguageManager.DefaultLanguage, Sitecore.Data.Version.Latest).Axes
                         .GetDescendants().Where(x =>
                                                 x.Name == "Toolbar 1" && x.TemplateID.ToString() == "{0E0DA701-BC94-4855-A0C3-92063E64BA1F}"))
                {
                    ID buttonId = GuidUtility.GetId("tokenmanager", $"{token.CollectionName}{token.Token}{parent.ID}");

                    Item button = db.DataManager.DataEngine.GetItem(buttonId, LanguageManager.DefaultLanguage, Sitecore.Data.Version.Latest);

                    if (tb != null)
                    {
                        yield return(buttonId);

                        if (button != null)
                        {
                            if (
                                button["Click"] == $"TokenSelector{Regex.Replace(token.CollectionName, "[^A-Za-z0-9_]", "")}{Regex.Replace(token.Token, "[^A-Za-z0-9_]", "")}" &&
                                button[FieldIDs.DisplayName] == tb.Name &&
                                button["Shortcut"] == $"?Category={token.CollectionName}&Token={token.Token}" &&
                                button[FieldIDs.Sortorder] == tb.SortOrder.ToString() &&
                                button[FieldIDs.Icon] == (string.IsNullOrWhiteSpace(tb.Icon) ? token.TokenIcon : tb.Icon))
                            {
                                continue;
                            }
                        }
                        else
                        {
                            button = db.DataManager.DataEngine.CreateItem(tb.Name, parent, new ID(Constants.Core.ButtonTemplate), buttonId);
                        }

                        button.Editing.BeginEdit();
                        button["Click"] = $"TokenSelector{Regex.Replace(token.CollectionName, "[^A-Za-z0-9_]", "")}{Regex.Replace(token.Token, "[^A-Za-z0-9_]", "")}";
                        button[FieldIDs.DisplayName] = tb.Name;
                        button["Shortcut"]           = $"?Category={token.CollectionName}&Token={token.Token}";
                        button[FieldIDs.Sortorder]   = tb.SortOrder.ToString();
                        button[FieldIDs.Icon]        = string.IsNullOrWhiteSpace(tb.Icon) ? token.TokenIcon : tb.Icon;
                        button.Editing.EndEdit(false, true);
                        button.Database.Caches.ItemCache.RemoveItem(buttonId);
                        button.Database.Caches.DataCache.RemoveItemInformation(buttonId);
                    }
                    else
                    {
                        button?.Recycle();
                    }
                }
            }
        }
コード例 #6
0
        private IEnumerable <DemandbaseAttribute> ProcessXmlAttributes(Item attributesFolder, XmlNodeList attributes, Database db, Item defaultValuesFolder, bool accountWatch)
        {
            using (new SecurityDisabler())
            {
                if (attributes != null)
                {
                    foreach (XmlNode key in attributes)
                    {
                        var attribute = new DemandbaseAttribute(key, accountWatch);
                        yield return(attribute);

                        if (!_generate)
                        {
                            continue;
                        }
                        Item itemAttribute = null;
                        if (attribute.Customizable || (!attribute.Customizable && !attribute.DefaultValues.Any()))
                        {
                            itemAttribute = db.GetItem(GuidUtility.GetId("demandbase" + FindParent(attribute, db).ID, attribute.Id));
                            if (itemAttribute == null || itemAttribute["Name"] != attribute.Name || itemAttribute["Id"] != attribute.Id)
                            {
                                itemAttribute = InstallAttribute(attribute, attributesFolder);
                            }
                            DemandbaseScrubber.tracker.Add(itemAttribute.ID);
                        }

                        Item valueFolder = null;
                        valueFolder = db.GetItem(GuidUtility.GetId("demandbasevaluefolder" + defaultValuesFolder.ID, attribute.Id));
                        if (valueFolder == null && attribute.DefaultValues.Any())
                        {
                            valueFolder = InstallValueFolder(attribute, defaultValuesFolder);
                        }
                        else if (valueFolder != null)
                        {
                            if (valueFolder["Attribute Id"] != attribute.Id)
                            {
                                valueFolder.BeginVersionCheckEditing();
                                valueFolder["Attribute Id"] = attribute.Id;
                                valueFolder.Editing.EndEdit();
                            }
                            foreach (Item valueItem in valueFolder.Children.Where(x => !attribute.DefaultValues.Contains(x["Value"])))
                            {
                                valueItem.Delete();
                            }
                            foreach (string value in attribute.DefaultValues)
                            {
                                Item valueItem = db.GetItem(GuidUtility.GetId("demandbasevalue" + defaultValuesFolder.ID + attribute.Id, value)) ??
                                                 InstallValue(attribute, value, valueFolder);
                                if (valueItem["Value"] == value)
                                {
                                    continue;
                                }
                                valueItem.BeginVersionCheckEditing();
                                valueItem["Value"] = value;
                                valueItem.Editing.EndEdit();
                            }
                        }
                        if (attribute.DefaultValues.Any())
                        {
                            DemandbaseScrubber.tracker.Add(valueFolder.ID);
                        }
                    }
                }
            }
        }
コード例 #7
0
        private Item InstallValueFolder(DemandbaseAttribute attribute, Item defaultValuesFolder)
        {
            Item folder = defaultValuesFolder.Database.DataManager.DataEngine.CreateItem(ItemUtil.ProposeValidItemName(attribute.Name),
                                                                                         defaultValuesFolder, new ID(DemandbaseConstants.ValueListTemplateId),
                                                                                         GuidUtility.GetId("demandbasevaluefolder" + defaultValuesFolder.ID, attribute.Id));

            folder.BeginVersionCheckEditing();
            folder["Attribute Id"] = attribute.Id;
            folder.Editing.EndEdit();
            foreach (string value in attribute.DefaultValues)
            {
                InstallValue(attribute, value, folder);
            }
            return(folder);
        }
コード例 #8
0
        private Item InstallValue(DemandbaseAttribute attribute, string value, Item valueFolder)
        {
            Item ret = valueFolder.Database.DataManager.DataEngine.CreateItem(ItemUtil.ProposeValidItemName(value), valueFolder,
                                                                              new ID(DemandbaseConstants.ValueTemplateId), GuidUtility.GetId("demandbasevalue" + valueFolder.ID + attribute.Id, value));

            ret.BeginVersionCheckEditing();
            ret["Value"] = value;
            ret.Editing.EndEdit();
            return(ret);
        }
コード例 #9
0
        private Item InstallCondition(Item ruleElement, string type, bool accountWatch, string name, string attributeFolder, string attributeType)
        {
            Item condition = ruleElement.Database.DataManager.DataEngine.CreateItem(ItemUtil.ProposeValidItemName(name),
                                                                                    ruleElement, new ID(DemandbaseConstants.RuleCondition), GuidUtility.GetId("demandbaseconditiondefault", name + accountWatch));

            SetCondition($"{(accountWatch ? "Watch List " : "")} " + DefaultAttributeSelector.FormatWith(attributeFolder), attributeType, condition, null, accountWatch, false, "25");
            return(condition);
        }
コード例 #10
0
        private Item InstallCondition(DemandbaseAttribute attribute, Item ruleElement, bool accountWatch, string attributeFolderId, string valuesFolderId)
        {
            Item condition = ruleElement.Database.DataManager.DataEngine.CreateItem(ItemUtil.ProposeValidItemName(attribute.Name),
                                                                                    ruleElement, new ID(DemandbaseConstants.RuleCondition), GuidUtility.GetId("demandbasecondition" + attributeFolderId, attribute.Id));

            SetCondition(attribute.Name, attribute.Type, condition, valuesFolderId, accountWatch, attribute.DefaultValues.Any());
            return(condition);
        }
コード例 #11
0
        public void LoadAutoToken(AutoToken token)
        {
            using (new SecurityDisabler())
            {
                if (TokenCollections.ContainsKey(token.CollectionName))
                {
                    TokenCollections[token.CollectionName].AddOrUpdateToken(token.Token, token);
                }
                else
                {
                    TokenCollections[token.CollectionName] = new AutoTokenCollection(token);
                    TokenCollections[token.CollectionName].AddOrUpdateToken(token.Token, token);
                }
                var db = Factory.GetDatabase("core", false);
                if (db == null)
                {
                    return;
                }

                TokenButton tb = token.TokenButton();

                ID buttonId = GuidUtility.GetId("tokenmanager", $"{token.CollectionName}{token.Token}");

                Item button = db.DataManager.DataEngine.GetItem(buttonId, LanguageManager.DefaultLanguage, Sitecore.Data.Version.Latest);

                if (tb != null)
                {
                    if (button != null)
                    {
                        if (
                            button["Click"] == $"TokenSelector{Regex.Replace(token.CollectionName, "[^A-Za-z0-9_]", "")}{Regex.Replace(token.Token, "[^A-Za-z0-9_]", "")}" &&
                            button[FieldIDs.DisplayName] == tb.Name &&
                            button["Shortcut"] == $"?Category={token.CollectionName}&Token={token.Token}" &&
                            button[FieldIDs.Sortorder] == tb.SortOrder.ToString() &&
                            button[FieldIDs.Icon] == (string.IsNullOrWhiteSpace(tb.Icon) ? token.TokenIcon : tb.Icon))
                        {
                            return;
                        }
                    }
                    else
                    {
                        Item parent = db.DataManager.DataEngine.GetItem(new ID(Constants.Core.RteParent), LanguageManager.DefaultLanguage, Sitecore.Data.Version.Latest);

                        if (parent == null)
                        {
                            return;
                        }

                        button = db.DataManager.DataEngine.CreateItem(tb.Name, parent, new ID(Constants.Core.ButtonTemplate), buttonId);
                    }

                    button.Editing.BeginEdit();
                    button["Click"] = $"TokenSelector{Regex.Replace(token.CollectionName, "[^A-Za-z0-9_]", "")}{Regex.Replace(token.Token, "[^A-Za-z0-9_]", "")}";
                    button[FieldIDs.DisplayName] = tb.Name;
                    button["Shortcut"]           = $"?Category={token.CollectionName}&Token={token.Token}";
                    button[FieldIDs.Sortorder]   = tb.SortOrder.ToString();
                    button[FieldIDs.Icon]        = string.IsNullOrWhiteSpace(tb.Icon) ? token.TokenIcon : tb.Icon;
                    button.Editing.EndEdit(false, true);
                    button.Database.Caches.ItemCache.RemoveItem(buttonId);
                    button.Database.Caches.DataCache.RemoveItemInformation(buttonId);
                }
                else if (button != null)
                {
                    button.Recycle();
                }
            }
        }