Ejemplo n.º 1
0
        public override async Task <IDisplayResult> UpdateAsync(YoutubeField field, IUpdateModel updater, UpdateFieldEditorContext context)
        {
            EditYoutubeFieldViewModel model = new EditYoutubeFieldViewModel();

            if (await updater.TryUpdateModelAsync(model, Prefix))
            {
                var settings = context.PartFieldDefinition.GetSettings <YoutubeFieldSettings>();
                if (settings.Required && String.IsNullOrWhiteSpace(model.RawAddress))
                {
                    updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["A value is required for '{0}'.", context.PartFieldDefinition.DisplayName()]);
                }
                else
                {
                    if (model.RawAddress != null)
                    {
                        var uri = new Uri(model.RawAddress);

                        // if it is a url with QueryString
                        if (!String.IsNullOrWhiteSpace(uri.Query))
                        {
                            var query = QueryHelpers.ParseQuery(uri.Query);
                            if (query.ContainsKey("v"))
                            {
                                model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{query["v"]}";
                            }
                            else
                            {
                                updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["The format of the url is invalid"]);
                            }
                        }
                        else
                        {
                            var path = uri.AbsolutePath.Split('?')[0];
                            model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{path}";
                        }

                        field.RawAddress      = model.RawAddress;
                        field.EmbeddedAddress = model.EmbeddedAddress;
                    }
                    else
                    {
                        field.RawAddress      = null;
                        field.EmbeddedAddress = null;
                    }
                }
            }

            return(Edit(field, context));
        }
        public override async Task <IDisplayResult> UpdateAsync(YoutubeField field, IUpdateModel updater, UpdateFieldEditorContext context)
        {
            EditYoutubeFieldViewModel model = new EditYoutubeFieldViewModel();

            await updater.TryUpdateModelAsync(model, Prefix);

            if (string.IsNullOrEmpty(model.RawAddress))
            {
                return(Edit(field, context));
            }

            var uri = new Uri(model.RawAddress);

            // if it is a url with QueryString
            if (!string.IsNullOrWhiteSpace(uri.Query))
            {
                var query = QueryHelpers.ParseQuery(uri.Query);
                if (query.ContainsKey("v"))
                {
                    model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{query["v"]}";
                }
                else
                {
                    updater.ModelState.AddModelError(Prefix + "." + nameof(model.RawAddress), "The url format is not correct");
                }
            }
            else
            {
                string path = uri.AbsolutePath.Split('?')[0];
                model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{path}";
            }

            field.RawAddress      = model.RawAddress;
            field.EmbeddedAddress = model.EmbeddedAddress;

            return(Edit(field, context));
        }