protected override void InitializeDataSourceSettings(Item item) { Assert.ArgumentNotNull(item, nameof(item)); base.InitializeDataSourceSettings(item); var queryStringId = WebUtil.GetSafeQueryString("id"); if (string.IsNullOrEmpty(DefaultSelection) && string.IsNullOrEmpty(queryStringId) && !ShowItems) { var settings = DataSourceSettingsManager.GetSettings(item); if (settings != null) { Items.Clear(); Items.AddRange(settings); } } if (!string.IsNullOrEmpty(DefaultSelection) || (!string.IsNullOrEmpty(queryStringId) && ID.IsID(queryStringId))) { if (!ShowItems && Items.Count > 0) { Items.Clear(); } string itName, itValue; itName = itValue = string.Empty; var it = Context.Database.GetItem(queryStringId); if (it != null) { itName = it.Fields.FirstOrDefault(f => f.Name.ToLower() == "name")?.Value?.ToString(); if (string.IsNullOrEmpty(itName)) { itName = it.DisplayName; } itValue = it.Fields.FirstOrDefault(f => f.Name.ToLower() == "email")?.Value?.ToString(); DefaultSelection = $"{itValue};{itName}"; var itemPassed = Items.FirstOrDefault(i => i.Text.ToLower() == itName); var isItemPassed = itemPassed != null; if (!isItemPassed) { itemPassed = new ListFieldItem { Text = itName }; } itemPassed.ItemId = queryStringId; itemPassed.Text = itName; itemPassed.Value = ShowValues ? itValue : queryStringId; itemPassed.Selected = true; if (!isItemPassed) { Items.Add(itemPassed); } } } }
private void RenderListItems(Item item, string selectedManagerRootId) { var database = Context.ContentDatabase ?? Context.Database; // ReSharper disable once UnusedVariable var isValid = Guid.TryParse(selectedManagerRootId, out var guidOutput); if (!isValid) { _logger.LogError($"No Valid Manager Root: {selectedManagerRootId}!"); return; } var managerRoot = _managerRootService.GetManagerRoot(new Guid(selectedManagerRootId)); if (managerRoot == null) { _logger.LogError($"You have to select a valid Manager Root: {selectedManagerRootId}!"); return; } var marketingPreferences = GetMarketingPreferences(managerRoot); var marketingCategoryGroups = managerRoot.Settings.MarketingCategoryGroups.Select(database.GetItem).ToList(); if (!marketingCategoryGroups.Any()) { _logger.LogWarn("no marketing groups are associated to the manager root!"); return; } foreach (var marketingCategoryGroup in marketingCategoryGroups) { var marketingCategories = marketingCategoryGroup.Children; foreach (Item marketingCategory in marketingCategories) { var categoryListItem = new ListFieldItem(); categoryListItem.ItemId = categoryListItem.Value = marketingCategory.ID.ToString(); categoryListItem.Text = marketingCategory.DisplayName; categoryListItem.Selected = IsSelected(marketingPreferences, marketingCategory); Items.Add(categoryListItem); } } using (new SecurityDisabler()) { base.UpdateDataSourceSettings(item); } }