// ColorFieldSettings.Edit.cshtml file will contain the editor inputs.

        public override async Task <IDisplayResult> UpdateAsync(
            ContentPartFieldDefinition partFieldDefinition,
            UpdatePartFieldEditorContext context)
        {
            var model = new ColorFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            // A content field or a content part can have multiple settings. These settings are stored in a single JSON
            // object. This helper will merge our settings to this JSON object so these will be stored.
            context.Builder.MergeSettings <ColorFieldSettings>(settings => settings = model);
            return(Edit(partFieldDefinition));
        }
예제 #2
0
        public override async Task<IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (!String.Equals("TextField", partFieldDefinition.FieldDefinition.Name, StringComparison.Ordinal))
            {
                return null;
            }

            var model = new TextFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder.Hint(model.Hint);

            return Edit(partFieldDefinition);
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new BooleanFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder.Hint(model.Hint);
            context.Builder.WithSetting(nameof(model.Label), model.Label);

            return(Edit(partFieldDefinition));
        }
예제 #4
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new LinkFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder.MergeSettings(model);

            return(Edit(partFieldDefinition));
        }
예제 #5
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model    = new HtmlSettingsViewModel();
            var settings = new HtmlFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            settings.SanitizeHtml = model.SanitizeHtml;
            settings.Hint         = model.Hint;

            context.Builder.WithSettings(settings);

            return(Edit(partFieldDefinition));
        }
 public Task UpdatePartFieldEditorAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context)
 {
     return _partFieldDisplayDrivers.InvokeAsync(async contentDisplay =>
     {
         var result = await contentDisplay.UpdateEditorAsync(model, context);
         if (result != null)
             result.Apply(context);
     }, Logger);
 }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.Editor() == "PredefinedList")
            {
                var model    = new PredefinedListSettingsViewModel();
                var settings = new TextFieldPredefinedListEditorSettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix);

                try
                {
                    settings.DefaultValue = model.DefaultValue;
                    settings.Editor       = model.Editor;
                    settings.Options      = string.IsNullOrWhiteSpace(model.Options)
                        ? new ListValueOption[0]
                        : JsonConvert.DeserializeObject <ListValueOption[]>(model.Options);
                }
                catch
                {
                    context.Updater.ModelState.AddModelError(Prefix, S["The options are written in an incorrect format."]);
                    return(Edit(partFieldDefinition));
                }

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
예제 #8
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (!String.Equals(nameof(TextField), partFieldDefinition.FieldDefinition.Name, StringComparison.Ordinal))
            {
                return(null);
            }

            var model = new TextFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder.Hint(model.Hint);

            return(Edit(partFieldDefinition));
        }
예제 #9
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new UpdateResponsiveMediaFieldSettingsViewModel();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            var settings = new ResponsiveMediaFieldSettings
            {
                Hint     = model.Hint,
                Required = model.Required
            };

            try
            {
                settings.Breakpoints = model.Breakpoints;
                settings.GetBreakpoints();
            } catch
            {
                context.Updater.ModelState.AddModelError(Prefix, T["Failed to parse breakpoints, make sure it only contains numeric values."]);
            }

            context.Builder.MergeSettings(settings);

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new ContentPickerFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder.MergeSettings(model);
            context.Builder.WithSetting(nameof(ContentPickerFieldSettings.DisplayedContentTypes), model.DisplayedContentTypes);

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.DisplayMode() == "Header")
            {
                var model    = new HeaderSettingsViewModel();
                var settings = new TextFieldHeaderDisplaySettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix);

                settings.Level = model.Level;

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new UserPickerFieldSettingsViewModel();

            if (await context.Updater.TryUpdateModelAsync(model, Prefix))
            {
                var settings = new UserPickerFieldSettings
                {
                    Hint     = model.Hint,
                    Required = model.Required,
                    Multiple = model.Multiple
                };

                var selectedRoles = model.Roles.Where(x => x.IsSelected).Select(x => x.Role).ToArray();

                if (model.DisplayAllUsers || selectedRoles.Length == 0)
                {
                    // No selected role should have the same effect as display all users
                    settings.DisplayedRoles  = Array.Empty <string>();
                    settings.DisplayAllUsers = true;
                }
                else
                {
                    settings.DisplayedRoles  = selectedRoles;
                    settings.DisplayAllUsers = false;
                }

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition, context.Updater));
        }
예제 #13
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new ContentPickerFieldSettings();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            if (model.DisplayAllContentTypes)
            {
                model.DisplayedContentTypes = Array.Empty <String>();
            }

            context.Builder.WithSettings(model);

            return(Edit(partFieldDefinition));
        }
예제 #14
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model    = new UserPickerFieldSettingsViewModel();
            var settings = new UserPickerFieldSettings();

            if (await context.Updater.TryUpdateModelAsync(model, Prefix))
            {
                settings.Hint            = model.Hint;
                settings.Required        = model.Required;
                settings.Multiple        = model.Multiple;
                settings.DisplayAllUsers = model.DisplayAllUsers;
                if (settings.DisplayAllUsers)
                {
                    settings.DisplayedRoles = Array.Empty <String>();
                }
                else
                {
                    settings.DisplayedRoles = model.Roles.Where(x => x.IsSelected).Select(x => x.Role).ToArray();
                }

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
예제 #15
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var settings = new ValuesFieldSettings();

            if (await context.Updater.TryUpdateModelAsync(settings, Prefix))
            {
                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
        public Task<dynamic> UpdatePartFieldEditorAsync(ContentPartFieldDefinition contentPartFieldDefinition, IUpdateModel updater, string groupId = "")
        {
            if (contentPartFieldDefinition == null)
            {
                throw new ArgumentNullException(nameof(contentPartFieldDefinition));
            }

            var contentPartDefinition = contentPartFieldDefinition.PartDefinition;
            dynamic partFieldDefinitionShape = CreateContentShape("ContentPartFieldDefinition_Edit");

            _contentDefinitionManager.AlterPartDefinition(contentPartDefinition.Name, partBuilder =>
            {
                partBuilder.WithField(contentPartFieldDefinition.Name, async partFieldBuilder =>
                {
                    partFieldDefinitionShape.ContentField = contentPartFieldDefinition;

                    var fieldContext = new UpdatePartFieldEditorContext(
                        partFieldBuilder,
                        partFieldDefinitionShape,
                        groupId,
                        _shapeFactory,
                        _layoutAccessor.GetLayout(),
                        updater
                    );

                    await BindPlacementAsync(fieldContext);

                    await _handlers.InvokeAsync(handler => handler.UpdatePartFieldEditorAsync(contentPartFieldDefinition, fieldContext), Logger);
                });
            });

            return Task.FromResult<dynamic>(partFieldDefinitionShape);
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new TextProductAttributeSettingsViewModel();
            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder
            .WithSettings(new TextProductAttributeFieldSettings
            {
                Hint         = model.Hint,
                DefaultValue = model.DefaultValue,
                Required     = model.Required,
                Placeholder  = model.Placeholder,
                RestrictToPredefinedValues = model.RestrictToPredefinedValues,
                MultipleValues             = model.MultipleValues,
                PredefinedValues           = (model.PredefinedValues ?? "")
                                             .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                                             .Select(v => v.Trim())
                                             .Where(v => !String.IsNullOrWhiteSpace(v))
                                             .ToArray()
            });
            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.Editor() == "CKEditorClassic")
            {
                var model    = new HtmlFieldCKEditorClassicSettingsViewModel();
                var settings = new HtmlFieldCKEditorClassicSettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.SelectedConfigurationName);

                settings.ConfigurationName = model.SelectedConfigurationName;

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
예제 #19
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context)
        {
            var viewModel = new EditCodeFieldSettingsViewModel();

            if (await context.Updater.TryUpdateModelAsync(viewModel, Prefix))
            {
                context.Builder.WithSettings(new CodeFieldSettings
                {
                    Language = viewModel.Language
                });
            }

            return(Edit(model));
        }
예제 #20
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.Editor() == "Elastic")
            {
                var model = new ContentPickerFieldElasticEditorSettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix);

                context.Builder.WithSettings(model);
            }

            return(Edit(partFieldDefinition));
        }
예제 #21
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.Editor() == "Trumbowyg")
            {
                var model    = new TrumbowygSettingsViewModel();
                var settings = new HtmlFieldTrumbowygEditorSettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix);

                settings.InsertMediaWithUrl = model.InsertMediaWithUrl;

                try
                {
                    settings.Options = model.Options;
                    JObject.Parse(settings.Options);
                }
                catch
                {
                    context.Updater.ModelState.AddModelError(Prefix, S["The options are written in an incorrect format."]);
                    return(Edit(partFieldDefinition));
                }

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context)
        {
            var viewModel = new EditMultiSelectFieldSettingsViewModel();

            if (await context.Updater.TryUpdateModelAsync(viewModel, Prefix))
            {
                context.Builder.WithSettings(new MultiSelectFieldSettings
                {
                    Hint    = viewModel.Hint,
                    Options = string.IsNullOrWhiteSpace(viewModel.OptionsJson) ? Array.Empty <string>() : JsonConvert.DeserializeObject <string[]>(viewModel.OptionsJson)
                });
            }

            return(Edit(model));
        }
예제 #23
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model = new EditAccordionFieldSettingsViewModel();

            if (await context.Updater.TryUpdateModelAsync(model, Prefix))
            {
                context.Builder.WithSettings(new AccordionFieldSettings());
            }

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition contentPartFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (!await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext.User, Permissions.ManageIndexes))
            {
                return(null);
            }

            var model = new ContentIndexSettingsViewModel();

            await context.Updater.TryUpdateModelAsync(model, Prefix);

            context.Builder.WithSettings(model.ContentIndexSettings);

            return(await EditAsync(contentPartFieldDefinition, context.Updater));
        }
예제 #25
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var settings = new DictionaryFieldSettings();

            if (await context.Updater.TryUpdateModelAsync(settings, Prefix))
            {
                // This makes sure the JSON is correctly formatted as it comes from the front end
                // with incorrect casing
                try
                {
                    settings.DefaultData = JsonConvert.SerializeObject(JsonConvert.DeserializeObject <IList <DictionaryItem> >(settings.DefaultData));
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error parsing DefaultData for DictionaryFieldSettings");
                }

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.DisplayMode() == "Prism")
            {
                var model    = new PrismSettingsViewModel();
                var settings = new HtmlFieldPrismDisplaySettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix);

                settings.Theme = model.Theme;

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            if (partFieldDefinition.Editor() == "Monaco")
            {
                var model    = new MonacoSettingsViewModel();
                var settings = new TextFieldMonacoEditorSettings();

                await context.Updater.TryUpdateModelAsync(model, Prefix);

                if (!model.Options.IsJson())
                {
                    context.Updater.ModelState.AddModelError(Prefix + "." + nameof(MonacoSettingsViewModel.Options), S["The options are written in an incorrect format."]);
                }
                else
                {
                    settings.Options = model.Options;
                    context.Builder.WithSettings(settings);
                }
            }

            return(Edit(partFieldDefinition, context.Updater));
        }
예제 #28
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context)
        {
            var viewModel = new EditColourFieldSettingsViewModel();

            if (await context.Updater.TryUpdateModelAsync(viewModel, Prefix))
            {
                context.Builder.WithSettings(new ColourFieldSettings
                {
                    AllowCustom      = viewModel.AllowCustom,
                    AllowTransparent = viewModel.AllowTransparent,
                    Colours          = JsonConvert.DeserializeObject <ColourItem[]>(viewModel.Colours),
                    DefaultValue     = viewModel.DefaultValue,
                    Hint             = viewModel.Hint,
                    UseGlobalColours = viewModel.UseGlobalColours
                });
            }

            return(Edit(model));
        }
예제 #29
0
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context)
        {
            var viewModel = new UpdateResponsiveMediaFieldSettingsViewModel();

            await context.Updater.TryUpdateModelAsync(viewModel, Prefix);

            var settings = new ResponsiveMediaFieldSettings
            {
                AllowMediaText = viewModel.AllowMediaText,
                Hint           = viewModel.Hint,
                Multiple       = viewModel.Multiple,
                Required       = viewModel.Required,
                FallbackData   = JsonConvert.SerializeObject(ResponsiveMediaUtils.ParseMedia(_mediaFileStore, viewModel.FallbackData))
            };

            try
            {
                settings.Breakpoints = viewModel.Breakpoints;
                settings.GetBreakpoints();
            } catch
            {
                context.Updater.ModelState.AddModelError(Prefix, T["Failed to parse breakpoints, make sure it only contains numeric values."]);
            }

            context.Builder.WithSettings(settings);

            return(Edit(model));
        }
        public override async Task <IDisplayResult> UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context)
        {
            var model    = new MultiTextFieldSettingsViewModel();
            var settings = new MultiTextFieldSettings();

            if (await context.Updater.TryUpdateModelAsync(model, Prefix))
            {
                settings.Required = model.Required;
                settings.Hint     = model.Hint;
                try
                {
                    settings.Options = JsonConvert.DeserializeObject <MultiTextFieldValueOption[]>(model.Options);
                }
                catch
                {
                    context.Updater.ModelState.AddModelError(Prefix, S["The options are written in an incorrect format."]);
                    return(Edit(partFieldDefinition));
                }

                context.Builder.WithSettings(settings);
            }

            return(Edit(partFieldDefinition));
        }