コード例 #1
0
        private bool Validate(EncryptedStringFieldEditViewModel viewModel, EncryptedStringField field, string prefix, IUpdateModel updater)
        {
            var settings = field.PartFieldDefinition.Settings.GetModel <EncryptedStringFieldSettings>();

            if (settings.Required)
            {
                if (settings.IsVisible && string.IsNullOrWhiteSpace(viewModel.Value))
                {
                    updater.AddModelError(prefix, T("The field {0} is mandatory.", T(field.DisplayName)));
                    return(false);
                }

                if (!settings.IsVisible && string.IsNullOrWhiteSpace(viewModel.Value) && string.IsNullOrWhiteSpace(field.Value))
                {
                    updater.AddModelError(prefix, T("The field {0} is mandatory.", T(field.DisplayName)));
                    return(false);
                }

                if (!settings.IsVisible && string.IsNullOrWhiteSpace(viewModel.Value) && !string.IsNullOrWhiteSpace(field.Value))
                {
                    // Keep the already saved Value without showing a error.
                    return(false);
                }
            }

            if (!settings.IsVisible && string.IsNullOrWhiteSpace(viewModel.Value) && !string.IsNullOrWhiteSpace(field.Value) && !viewModel.SaveIfEmpty)
            {
                // Keep the already saved Value without showing a error.
                return(false);
            }

            if (settings.ConfirmRequired && !viewModel.Value.Equals(viewModel.ConfirmValue))
            {
                updater.AddModelError(prefix, T("The value of the field {0} must match the Confirm value.", T(field.DisplayName), settings.Pattern));
                return(false);
            }

            if (!CheckPattern(viewModel.Value, settings.Pattern))
            {
                updater.AddModelError(prefix, T("The value of the field {0} is not valid." + Environment.NewLine + "Pattern: {1}", T(field.DisplayName), settings.Pattern));
                return(false);
            }

            return(true);
        }
コード例 #2
0
        private EncryptedStringFieldEditViewModel CreateViewModel(EncryptedStringField field)
        {
            var settings = field.PartFieldDefinition.Settings.GetModel <EncryptedStringFieldSettings>();

            var vm = new EncryptedStringFieldEditViewModel(settings)
            {
                //Settings = settings,
                DisplayName = field.PartFieldDefinition.DisplayName,
                HasValue    = !string.IsNullOrWhiteSpace(field.Value)
            };

            // Show the value if it's visible only.
            if (settings.IsVisible)
            {
                vm.Value = _secureFieldService.DecodeValue(field);
            }

            return(vm);
        }
コード例 #3
0
        // This function saves the field after a post, then shows the field form again.
        protected override DriverResult Editor(ContentPart part, EncryptedStringField field, IUpdateModel updater, dynamic shapeHelper)
        {
            if (AuthorizeEdit(part, field))
            {
                var    viewModel = new EncryptedStringFieldEditViewModel(field.PartFieldDefinition.Settings.GetModel <EncryptedStringFieldSettings>());
                string prefix    = GetPrefix(field, part);

                if (updater.TryUpdateModel(viewModel, prefix, null, null))
                {
                    if (Validate(viewModel, field, prefix, updater))
                    {
                        _secureFieldService.EncodeValue(part, field, viewModel.Value);
                    }
                    else
                    {
                        return(ContentShapeFromViewModel(part, field, ShapeTypeAuthorized, TemplateNameAuthorized, viewModel, shapeHelper));
                    }
                }
            }

            // Call the function to show the view.
            return(Editor(part, field, shapeHelper));
        }
コード例 #4
0
 private DriverResult ContentShapeFromViewModel(ContentPart part, EncryptedStringField field, string shapeType, string templateName, EncryptedStringFieldEditViewModel viewModel, dynamic shapeHelper)
 {
     return(ContentShape(shapeType, GetDifferentiator(field, part),
                         () => {
         return shapeHelper.EditorTemplate(
             TemplateName: templateName,
             Model: viewModel,
             Prefix: GetPrefix(field, part));
     }));
 }