private void SetupControlState()
        {
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();
            var allTypes   = assemblies.SelectMany(x => x.GetTypes()).ToList();


            var extendableClrTypes = allTypes
                                     .HavingAttribute <WarpCoreEntityAttribute>()
                                     .Where(x => typeof(WarpCoreEntity).IsAssignableFrom(x));
            //.ToLookup(x => x.GetCustomAttribute<WarpCoreEntityAttribute>().TypeExtensionUid);

            List <EntityViewModel> vms = new List <EntityViewModel>();
            var allDynamicContentTypes = new ContentTypeMetadataRepository().Find();

            foreach (var t in allDynamicContentTypes)
            {
                vms.Add(new EntityViewModel {
                    DisplayName = t.Name, ContentTypeId = t.ContentId
                });
            }

            foreach (var t in extendableClrTypes)
            {
                var contentTypeId = t.GetCustomAttribute <WarpCoreEntityAttribute>().TypeExtensionUid;
                vms.Add(new EntityViewModel {
                    DisplayName = t.Name, ContentTypeId = contentTypeId
                });
            }


            var repo = new ContentInterfaceRepository();
            var contentInterfaceLookup = repo.Find().ToLookup(x => x.ContentTypeId);

            foreach (var entityViewModel in vms)
            {
                var appliedInterfaces = contentInterfaceLookup[entityViewModel.ContentTypeId];
                foreach (var contentInterface in appliedInterfaces)
                {
                    entityViewModel.EditableInterfaces.Add(new EntityInterfaceViewModel
                    {
                        InterfaceId = contentInterface.ContentId,
                        Name        = contentInterface.InterfaceName
                    });
                }
            }

            _controlState.Entities = vms.ToList();

            //var repo = new ContentInterfaceRepository();
            //var allEntities = repo.Find()
            //    .Select(x => new EntityViewModel
            //    {
            //        ContentTypeId = x.ContentTypeId,
            //        DisplayName = clrLookup[x.ContentTypeId].FirstOrDefault()?.Name

            //    });

            //_controlState.Entities = allEntities.ToList();
        }
        protected void Finish_OnClick(object sender, EventArgs e)
        {
            var interfaceId = Request["wc-interface"];
            var intf        = new ContentInterfaceRepository().GetById(new Guid(interfaceId));
            //intf.InterfaceFields = _controlState.Properties.Select(x=> new ChoiceInterfaceField
            //{


            //})

            //throw new NotImplementedException();
        }
Exemplo n.º 3
0
        public void SetupCustomFields()
        {
            var mgr       = new ContentInterfaceRepository();
            var extension = mgr.GetCustomFieldsTypeExtension(new Guid(CmsPage.ApiId));

            extension.InterfaceFields.Add(new ChoiceInterfaceField
            {
                PropertyName     = "DisplayInNav",
                PropertyTypeName = typeof(bool).FullName
            });

            mgr.Save(extension);
        }
        private static List <DynamicPropertyViewModel> GetAllDynamicFields(Guid interfaceId)
        {
            var intf = new ContentInterfaceRepository().GetById(interfaceId);

            var dynamicPropertyViewModels =
                intf.InterfaceFields.Select(x => new DynamicPropertyViewModel
            {
                Id        = x.PropertyId,
                Name      = x.PropertyName,
                FieldType = x.PropertyTypeName
            }).ToList();

            return(dynamicPropertyViewModels);
        }
Exemplo n.º 5
0
        public void SetupDynamicTypes()
        {
            var fullDynamicTypeId = Guid.NewGuid();

            var repositories = new RepositoryMetadataManager();

            repositories.Save(new RepositoryMetdata
            {
                CustomRepositoryName = "Article",
                IsDynamic            = true,
                ApiId = fullDynamicTypeId
            });

            var mgr  = new ContentInterfaceRepository();
            var ext1 = new ContentInterface
            {
                ContentTypeId = fullDynamicTypeId,
                InterfaceName = KnownTypeExtensionNames.CustomFields
            };
            var ext2 = new ContentInterface
            {
                ContentTypeId = fullDynamicTypeId,
                InterfaceName = "SomePluginInfo"
            };

            mgr.Save(ext1);
            mgr.Save(ext2);

            var extension = mgr.GetCustomFieldsTypeExtension(fullDynamicTypeId);

            extension.InterfaceFields.Add(new ChoiceInterfaceField
            {
                PropertyName     = "IsFeatured",
                PropertyTypeName = typeof(bool).FullName
            });

            mgr.Save(extension);

            var repo = RepositoryActivator.ActivateRepository <ISupportsCmsForms>(fullDynamicTypeId);

            repo.Save(new DynamicVersionedContent(fullDynamicTypeId));
            //var drafts = repo.FindContentVersions("", ContentEnvironment.Draft);
            //if (!drafts.Any())
            //    throw new Exception();
        }
Exemplo n.º 6
0
        public static void RegisterExtensibleTypesWithApi(AppDomain domain)
        {
            var assemblies = domain.GetAssemblies();
            var allTypes   = assemblies.SelectMany(x => x.GetTypes()).ToList();

            var repositoryDescriptions = TypeSearcher.FindRepositoriesKnownToWarpCore(allTypes);

            foreach (var repositoryDescription in repositoryDescriptions)
            {
                BuildUpRepositoryMetadata(repositoryDescription);
            }

            //Break this one out later.
            var entities = TypeSearcher.FindEntitiesKnownToWarpCore(allTypes);

            var contentTypeMetadataRepository = new ContentTypeMetadataRepository();

            var typeExtensionRepo = new ContentInterfaceRepository();

            foreach (var entityType in entities)
            {
                var repositoryUid = entityType.GetCustomAttribute <WarpCoreEntityAttribute>();

                var preexistingContentType = contentTypeMetadataRepository.Find().SingleOrDefault(x => x.TypeResolverId == repositoryUid.TypeExtensionUid);
                if (preexistingContentType == null)
                {
                    preexistingContentType = new DynamicContentType
                    {
                        TypeResolverId = repositoryUid.TypeExtensionUid,
                    }
                }
                ;

                preexistingContentType.ContentNameSingular = repositoryUid.ContentNameSingular;
                preexistingContentType.ContentNamePlural   = repositoryUid.ContentNamePlural;

                if (string.IsNullOrWhiteSpace(preexistingContentType.ContentNameSingular))
                {
                    preexistingContentType.ContentNameSingular = entityType.Name;
                }

                if (string.IsNullOrWhiteSpace(preexistingContentType.ContentNamePlural))
                {
                    //todo: replace
                    //PluralizationService.CreateService(CultureInfo.CurrentCulture)
                    //    .Pluralize(preexistingContentType.ContentNameSingular);
                }
                preexistingContentType.SupportsCustomFields = repositoryUid.SupportsCustomFields;
                preexistingContentType.TitleProperty        = repositoryUid.TitleProperty;

                contentTypeMetadataRepository.Save(preexistingContentType);

                if (preexistingContentType.SupportsCustomFields)
                {
                    var preexisting = typeExtensionRepo.Find().SingleOrDefault(x =>
                                                                               x.ContentTypeId == repositoryUid.TypeExtensionUid &&
                                                                               x.InterfaceName == KnownTypeExtensionNames.CustomFields);
                    if (preexisting == null)
                    {
                        typeExtensionRepo.Save(new ContentInterface
                        {
                            ContentTypeId = repositoryUid.TypeExtensionUid,
                            InterfaceName = KnownTypeExtensionNames.CustomFields
                        });
                    }
                }
            }
        }