protected override DriverResult Editor(SeoPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            return(ContentShape("Parts_Seo_Edit", () =>
            {
                var robots = part.MetaRobots?.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                var viewModel = new SeoPartViewModel
                {
                    PageTitle = part.PageTitle,
                    MetaRobotsFollow = robots?.Length > 0 ? robots[0] : "",
                    MetaRobotsIndex = robots?.Length > 1 ? robots[1] : "",
                    CustomMetaTags = part.CustomMetaTags,
                    MetaDescription = part.MetaDescription,
                    MetaKeywords = part.MetaKeywords
                };

                if (updater != null && updater.TryUpdateModel(viewModel, Prefix, null, null))
                {
                    var robotsValues = new[] { viewModel.MetaRobotsFollow?.Trim(), viewModel.MetaRobotsIndex?.Trim() };
                    part.MetaRobots = String.Join(",", robotsValues.Where(x => !String.IsNullOrEmpty(x)));
                    part.CustomMetaTags = viewModel.CustomMetaTags?.Trim();
                    part.MetaDescription = viewModel.MetaDescription?.Trim();
                    part.MetaKeywords = viewModel.MetaKeywords?.Trim();
                    part.PageTitle = viewModel.PageTitle?.Trim();
                }

                return shapeHelper.EditorTemplate(TemplateName: "Parts/Seo", Model: viewModel, Prefix: Prefix);
            }));
        }
 /// <summary>
 /// POST Editor.
 /// </summary>
 protected override DriverResult Editor(SeoPart part, IUpdateModel updater, dynamic shapeHelper)
 {
     if (_orchardServices.Authorizer.Authorize(Permissions.ManageSEO))
     {
         var vm = new SeoPartViewModel(_seoServices);
         updater.TryUpdateModel(vm, Prefix, null, null);
         vm.UpdatePart(part);
         return(Editor(part, shapeHelper));
     }
     else
     {
         return(null);
     }
 }