Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
            }
        }