Ejemplo n.º 1
0
        public async Task <IViewComponentResult> InvokeAsync(EntityDropDownViewModel model)
        {
            if (model == null)
            {
                model = new EntityDropDownViewModel();
            }

            model.Entities = await BuildSelectionsAsync(model);

            return(View(model));
        }
Ejemplo n.º 2
0
        public override async Task <IViewProviderResult> BuildEditAsync(Doc doc, IViewProviderContext updater)
        {
            // Get feature
            var feature = await _featureFacade.GetFeatureByIdAsync("Plato.Docs");

            if (feature == null)
            {
                throw new Exception("The feature Plato.Docs could not be found");
            }

            // Ensures we persist the message between post backs
            var message = doc.Message;

            if (_request.Method == "POST")
            {
                foreach (string key in _request.Form.Keys)
                {
                    if (key == EditorHtmlName)
                    {
                        message = _request.Form[key];
                    }
                }
            }

            // Build general model
            var viewModel = new EditEntityViewModel()
            {
                Id             = doc.Id,
                Title          = doc.Title,
                Message        = message,
                EditorHtmlName = EditorHtmlName,
                Alias          = doc.Alias
            };

            // Build drop down model
            var entityDropDownViewModel = new EntityDropDownViewModel()
            {
                Options = new EntityIndexOptions()
                {
                    FeatureId  = feature.Id,
                    CategoryId = doc.CategoryId
                },
                HtmlName       = ParentHtmlName,
                SelectedEntity = doc?.ParentId ?? 0
            };

            // Build view
            return(Views(
                       View <EditEntityViewModel>("Home.Edit.Header", model => viewModel).Zone("header"),
                       View <EditEntityViewModel>("Home.Edit.Content", model => viewModel).Zone("content"),
                       View <EntityDropDownViewModel>("Home.Edit.Sidebar", model => entityDropDownViewModel).Zone("sidebar"),
                       View <EditEntityViewModel>("Home.Edit.Footer", model => viewModel).Zone("Footer")
                       ));
        }
Ejemplo n.º 3
0
        private async Task <IList <Selection <Entity> > > BuildSelectionsAsync(EntityDropDownViewModel model)
        {
            if (model.Options.FeatureId == null)
            {
                throw new ArgumentNullException(nameof(model.Options.FeatureId));
            }

            var entities = await _entityStore.GetByFeatureIdAsync(model.Options.FeatureId.Value);

            var selections = entities?.Select(e => new Selection <Entity>
            {
                IsSelected = model.SelectedEntity.Equals(e.Id),
                Value      = e
            })
                             .ToList();

            return(selections);
        }