void IContentHandler.UpdateEditorModel(UpdateEditorModelContext context)
 {
     _drivers.Invoke(driver => {
                         var result = driver.UpdateEditorModel(context);
                         if (result != null)
                             result.Apply(context);
                     }, Logger);
 }
        private void UpdateEditor(UpdateEditorModelContext context, CommonAspect instance) {
            // this event is hooked so the modified timestamp is changed when an edit-post occurs.
            // kind of a loose rule of thumb. may not be sufficient
            instance.ModifiedUtc = _clock.UtcNow;
            instance.VersionModifiedUtc = _clock.UtcNow;

            var currentUser = _authenticationService.GetAuthenticatedUser();
            if (!_authorizationService.TryCheckAccess(Permissions.ChangeOwner, currentUser, instance)) {
                return;
            }

            var viewModel = new OwnerEditorViewModel();
            if (instance.Owner != null)
                viewModel.Owner = instance.Owner.UserName;

            var priorOwner = viewModel.Owner;
            context.Updater.TryUpdateModel(viewModel, "CommonAspect", null, null);

            if (viewModel.Owner != null && viewModel.Owner != priorOwner) {
                var newOwner = _membershipService.GetUser(viewModel.Owner);
                if (newOwner == null) {
                    context.Updater.AddModelError("CommonAspect.Owner", T("Invalid user name"));
                }
                else {
                    instance.Owner = newOwner;
                }
            }

            context.AddEditor(new TemplateViewModel(viewModel, "CommonAspect") { TemplateName = "Parts/Common.Owner", ZoneName = "primary", Position = "999" });
        }