Exemple #1
0
        protected override DriverResult Editor(ContentPart part, OptionSetField field, IUpdateModel updater, dynamic shapeHelper)
        {
            var viewModel = new OptionSetFieldViewModel {
                OptionItems = new List <OptionItemEntry>()
            };

            if (updater.TryUpdateModel(viewModel, GetPrefix(field, part), null, null))
            {
                var checkedTerms = viewModel.OptionItems
                                   .Where(t => (t.IsChecked || t.Id == viewModel.SingleTermId))
                                   .Select(t => GetOrCreateTerm(t, viewModel.OptionSetId, field))
                                   .Where(t => t != null).ToList();

                var settings = field.PartFieldDefinition.Settings.GetModel <OptionSetFieldSettings>();
                if (settings.Required && !checkedTerms.Any())
                {
                    updater.AddModelError(GetPrefix(field, part), T("The field {0} is mandatory.", T(field.DisplayName)));
                }
                else
                {
                    _optionSetService.UpdateTerms(part.ContentItem, checkedTerms, field.Name);
                }
            }

            return(Editor(part, field, shapeHelper));
        }
Exemple #2
0
        protected override DriverResult Editor(ContentPart part, OptionSetField field, dynamic shapeHelper)
        {
            return(ContentShape("Fields_OptionSetField_Edit", GetDifferentiator(field, part), () => {
                var settings = field.PartFieldDefinition.Settings.GetModel <OptionSetFieldSettings>();
                var appliedTerms = _optionSetService.GetOptionItemsForContentItem(part.ContentItem.Id, field.Name).Distinct(new TermPartComparer()).ToDictionary(t => t.Id, t => t);
                var optionSet = _optionSetService.GetOptionSet(settings.OptionSetId);
                var optionItems = optionSet != null
                    ? _optionSetService.GetOptionItems(optionSet.Id).Where(t => !string.IsNullOrWhiteSpace(t.Name)).Select(t => t.CreateTermEntry()).ToList()
                    : new List <OptionItemEntry>(0);

                optionItems.ForEach(t => t.IsChecked = appliedTerms.ContainsKey(t.Id));

                var viewModel = new OptionSetFieldViewModel
                {
                    Name = field.Name,
                    DisplayName = field.DisplayName,
                    OptionItems = optionItems,
                    Settings = settings,
                    SingleTermId = optionItems.Where(t => t.IsChecked).Select(t => t.Id).FirstOrDefault(),
                    OptionSetId = optionSet != null ? optionSet.Id : 0
                };

                return shapeHelper.EditorTemplate(TemplateName: "Fields/OptionSetField", Model: viewModel, Prefix: GetPrefix(field, part));
            }));
        }