Esempio n. 1
0
        protected override DriverResult Editor(ContainablePart part, IUpdateModel updater, dynamic shapeHelper)
        {
            return(ContentShape(
                       "Parts_Containable_Edit",
                       () => {
                var settings = part.TypePartDefinition.Settings.GetModel <ContainableTypePartSettings>();
                var commonPart = part.As <CommonPart>();
                var model = new ContainableViewModel {
                    ShowContainerPicker = settings.ShowContainerPicker,
                    ShowPositionEditor = settings.ShowPositionEditor,
                    Position = part.Position
                };

                if (commonPart != null && commonPart.Container != null)
                {
                    model.ContainerId = commonPart.Container.Id;
                }

                if (part.Id == 0 && commonPart != null && commonPart.Container != null)
                {
                    part.Position = _containerService.GetFirstPosition(commonPart.Container.Id) + 1;
                }

                if (updater != null)
                {
                    var oldContainerId = model.ContainerId;
                    updater.TryUpdateModel(model, "Containable", null, new[] { "ShowContainerPicker", "ShowPositionEditor" });
                    if (oldContainerId != model.ContainerId)
                    {
                        if (commonPart != null)
                        {
                            var containerItem = _contentManager.Get(model.ContainerId, VersionOptions.Latest);
                            commonPart.Container = containerItem;
                        }
                    }
                    part.Position = model.Position;
                }

                var containers = _contentManager
                                 .Query <ContainerPart, ContainerPartRecord>(VersionOptions.Latest)
                                 .List()
                                 .Where(container => container.ItemContentTypes.Any(type => type.Name == part.TypeDefinition.Name));

                var listItems = new[] { new SelectListItem {
                                            Text = T("(None)").Text, Value = "0"
                                        } }
                .Concat(containers.Select(x => new SelectListItem {
                    Value = Convert.ToString(x.Id),
                    Text = x.ContentItem.TypeDefinition.DisplayName + ": " + _contentManager.GetItemMetadata(x.ContentItem).DisplayText,
                    Selected = x.Id == model.ContainerId,
                }))
                .ToList();

                model.AvailableContainers = new SelectList(listItems, "Value", "Text", model.ContainerId);
                model.Position = part.Position;

                return shapeHelper.EditorTemplate(TemplateName: "Containable", Model: model, Prefix: "Containable");
            }));
        }
Esempio n. 2
0
        protected override DriverResult Editor(ContainablePart part, IUpdateModel updater, dynamic shapeHelper)
        {
            return(ContentShape(
                       "Parts_Containable_Edit",
                       () => {
                var commonPart = part.As <CommonPart>();

                var model = new ContainableViewModel();
                if (commonPart != null && commonPart.Container != null)
                {
                    model.ContainerId = commonPart.Container.Id;
                }

                if (updater != null)
                {
                    var oldContainerId = model.ContainerId;
                    updater.TryUpdateModel(model, "Containable", null, null);
                    if (oldContainerId != model.ContainerId)
                    {
                        if (commonPart != null)
                        {
                            var containerItem = _contentManager.Get(model.ContainerId, VersionOptions.Latest);
                            commonPart.Container = containerItem;
                        }
                    }
                    part.Weight = model.Weight;
                }

                // note: string.isnullorempty not being recognized by linq-to-nhibernate hence the inline or
                var containers = _contentManager.Query <ContainerPart, ContainerPartRecord>(VersionOptions.Latest)
                                 .Where(ctr => ctr.ItemContentType == null || ctr.ItemContentType == "" || ctr.ItemContentType == part.ContentItem.ContentType).List();

                var listItems = new[] { new SelectListItem {
                                            Text = T("(None)").Text, Value = "0"
                                        } }
                .Concat(containers.Select(x => new SelectListItem {
                    Value = Convert.ToString(x.Id),
                    Text = x.ContentItem.TypeDefinition.DisplayName + ": " + _contentManager.GetItemMetadata(x.ContentItem).DisplayText,
                    Selected = x.Id == model.ContainerId,
                }))
                .ToList();

                model.AvailableContainers = new SelectList(listItems, "Value", "Text", model.ContainerId);
                model.Weight = part.Weight;

                model.ContentType = part.ContentItem.ContentType;

                return shapeHelper.EditorTemplate(TemplateName: "Containable", Model: model, Prefix: "Containable");
            }));
        }