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); }
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); }
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); } } }
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); }
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(); } } } }
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); } } } } }
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); }
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); }
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); }
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); }
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(); } } }