private static void updatePart(TableOfContentsPart part, TableOfContentsPartViewModel viewModel)
 {
     part.Generate     = viewModel.Generate;
     part.Title        = viewModel.AllowTitle && !String.IsNullOrEmpty(viewModel.Title) ? viewModel.Title : null;
     part.RootSelector = viewModel.RootSelector;
     part.StartLevel   = viewModel.StartLevel;
     part.EndLevel     = viewModel.EndLevel;
     part.Affix        = viewModel.Affix;
     part.MakeTopLink  = viewModel.MakeTopLink;
     part.TopLinkText  = viewModel.TopLinkText;
 }
        protected override DriverResult Editor(TableOfContentsPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            var viewModel = new TableOfContentsPartViewModel();

            if (updater.TryUpdateModel(viewModel, Prefix, null, null))
            {
                updatePart(part, viewModel);
            }
            ;

            return(Editor(part, shapeHelper));
        }
        private static TableOfContentsPartViewModel getViewModel(TableOfContentsPart part)
        {
            var widget   = part.As <WidgetPart>();
            var settings = part.Settings.GetModel <TableOfContentsSettings>() ?? new TableOfContentsSettings();

            var viewModel = new TableOfContentsPartViewModel {
                OptIn        = settings.OptIn,
                AllowTitle   = settings.AllowTitle,
                Generate     = part.Generate.HasValue ? part.Generate.Value : settings.Generate,
                Title        = part.Title,
                RootSelector = part.RootSelector,
                StartLevel   = part.StartLevel,
                EndLevel     = part.EndLevel,
                Affix        = part.Affix,
                MakeTopLink  = part.MakeTopLink,
                TopLinkText  = part.TopLinkText,
                Name         = widget == null || String.IsNullOrEmpty(widget.Name) ? part.ContentItem.Id.ToString() : widget.Name
            };

            return(viewModel);
        }