protected override ModelDriverResult Update(ConnectorEventContext model, dynamic shapeHelper, Orchard.ContentManagement.IUpdateModel updater, ModelEditorShapeContext context)
        {
            var part = model.ConnectorContent.As <EffectiveRolesPart>();

            if (part == null)
            {
                return(new ModelDriverResult());
            }
            var viewModel = BuildViewModel(part);
            var prefix    = FullPrefix(context);

            if (updater.TryUpdateModel(viewModel, prefix, null, null))
            {
                // TODO: Check role exists and user is allowed permission
                part.EffectiveRoles = String.Join(" ", viewModel.SelectRoles.ToArray());
            }
            else
            {
                _notifier.Error(T("Error updating Effective Roles."));
            }
            return(ModelShape("Connector_Editors_EffectiveRoles",
                              () => shapeHelper.EditorTemplate(TemplateName: "Connector.Editors.EffectiveRoles", Model: viewModel, Prefix: prefix)));
        }
        protected override ModelDriverResult Editor(ConnectorEventContext model, dynamic shapeHelper, ModelEditorShapeContext context)
        {
            var part = model.ConnectorContent.As <EffectiveRolesPart>();

            if (part == null)
            {
                return(new ModelDriverResult());
            }
            var viewModel = BuildViewModel(part);

            return(ModelShape("Connector_Editors_EffectiveRoles",
                              () => shapeHelper.EditorTemplate(TemplateName: "Connector.Editors.EffectiveRoles", Model: viewModel, Prefix: FullPrefix(context))));
        }