示例#1
0
        /// <summary>
        /// Ensure a catalog
        /// </summary>
        /// <param name="web">The web object</param>
        /// <param name="catalog">The catalog</param>
        /// <returns>The list object</returns>
        public SPList EnsureCatalog(SPWeb web, CatalogInfo catalog)
        {
            // Set current culture to be able to set the "Title" of the list
            Thread.CurrentThread.CurrentUICulture = new CultureInfo((int)web.Language);

            // Create the list if doesn't exists
            var list = this.listHelper.EnsureList(web, catalog);

            if (catalog.TaxonomyFieldMap == null)
            {
                // Set the list as catalog without navigation
                if (catalog.IsAnonymous)
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name), true);
                }
                else
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name));
                }
            }
            else
            {
                // Set the list as catalog with navigation term
                if (catalog.IsAnonymous)
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name), catalog.TaxonomyFieldMap.InternalName, true);
                }
                else
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name), catalog.TaxonomyFieldMap.InternalName);
                }
            }

            return(list);
        }
示例#2
0
        /// <summary>
        /// Ensure a catalog
        /// </summary>
        /// <param name="web">The web object</param>
        /// <param name="catalog">The catalog</param>
        /// <returns>The list object</returns>
        public SPList EnsureCatalog(SPWeb web, CatalogInfo catalog)
        {
            // Set current culture to be able to set the "Title" of the list
            Thread.CurrentThread.CurrentUICulture = new CultureInfo((int)web.Language);

            // Create the list if doesn't exists
            var list = this.listHelper.EnsureList(web, catalog);

            if (catalog.TaxonomyFieldMap == null)
            {
                // Set the list as catalog without navigation
                if (catalog.IsAnonymous)
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name), true);
                }
                else
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name));
                }
            }
            else
            {
                // Set the list as catalog with navigation term
                if (catalog.IsAnonymous)
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name), catalog.TaxonomyFieldMap.InternalName, true);
                }
                else
                {
                    this.SetListAsCatalog(list, catalog.ManagedProperties.Select(x => x.Name), catalog.TaxonomyFieldMap.InternalName);
                }
            }

            return list;
        }
        public CatalogConnectionInfo(
            CatalogInfo catalog,
            string catalogTaxonomyManagedProperty,
            bool rewriteCatalogItemUrls,
            bool isManualCatalogItemUrlRewriteTemplate,
            bool isReusedWithPinning,
            string catalogItemUrlRewriteTemplate)
        {
            this.Catalog = catalog;
            this.CatalogTaxonomyManagedProperty        = catalogTaxonomyManagedProperty;
            this.RewriteCatalogItemUrls                = rewriteCatalogItemUrls;
            this.IsManualCatalogItemUrlRewriteTemplate = isManualCatalogItemUrlRewriteTemplate;
            this.IsReusedWithPinning           = isReusedWithPinning;
            this.CatalogItemUrlRewriteTemplate = catalogItemUrlRewriteTemplate;

            // By default, crush any existing matching catalog connection with our own definition
            this.OverwriteIfAlreadyExists = true;
        }
        public CatalogConnectionInfo(
            CatalogInfo catalog,
            string catalogTaxonomyManagedProperty,
            bool rewriteCatalogItemUrls,
            bool isManualCatalogItemUrlRewriteTemplate,
            bool isReusedWithPinning,
            string catalogItemUrlRewriteTemplate)
        {
            this.Catalog = catalog;
            this.CatalogTaxonomyManagedProperty = catalogTaxonomyManagedProperty;
            this.RewriteCatalogItemUrls = rewriteCatalogItemUrls;
            this.IsManualCatalogItemUrlRewriteTemplate = isManualCatalogItemUrlRewriteTemplate;
            this.IsReusedWithPinning = isReusedWithPinning;
            this.CatalogItemUrlRewriteTemplate = catalogItemUrlRewriteTemplate;

            // By default, crush any existing matching catalog connection with our own definition
            this.OverwriteIfAlreadyExists = true;
        }
示例#5
0
        public void CatalogInfo_ShouldSupportStringSerializationAndDeserialization()
        {
            var serializer = this.GetSerializer();

            var taxoFieldInfo = new TaxonomyFieldInfo("TaxoField", Guid.NewGuid(), "TaxoFieldName", "TaxoFieldDescr", "GroupKey");
            var objectToSerialize = new CatalogInfo("pathto/list", "NameKey", "DescrKey")
                {
                    ContentTypes = new[] 
                    {
                        new ContentTypeInfo(ContentTypeIdBuilder.CreateChild(BuiltInContentTypes.Item, Guid.NewGuid()), "CT1Name", "CT1Descr", "GroupKey"),
                        new ContentTypeInfo(ContentTypeIdBuilder.CreateChild(BuiltInContentTypes.Item, Guid.NewGuid()), "CT2Name", "CT2Descr", "GroupKey")
                    },
                    DraftVisibilityType = Microsoft.SharePoint.DraftVisibilityType.Approver,
                    TaxonomyFieldMap = taxoFieldInfo,
                    Overwrite = true,
                    ManagedProperties = new[] 
                    {
                        new ManagedPropertyInfo("Title")
                        {
                            SortableType = Microsoft.Office.Server.Search.Administration.SortableType.Enabled
                        },
                        new ManagedPropertyInfo("ows_taxid_TaxoFieldName")
                        {
                            SortableType = Microsoft.Office.Server.Search.Administration.SortableType.Latent,
                            Refinable = true
                        }
                    },
                    ListTemplateInfo = BuiltInListTemplates.CustomList,
                    FieldDefinitions = new[] 
                    {
                        taxoFieldInfo
                    }
                };

            string serializedRepresentation = serializer.Serialize(objectToSerialize);

            var deserializedObject = serializer.Deserialize<CatalogInfo>(serializedRepresentation);

            Assert.AreEqual(objectToSerialize.DisplayNameResourceKey, deserializedObject.DisplayNameResourceKey);
            Assert.AreEqual(objectToSerialize.DescriptionResourceKey, deserializedObject.DescriptionResourceKey);
            Assert.AreEqual(objectToSerialize.GroupResourceKey, deserializedObject.GroupResourceKey);

            Assert.AreEqual(objectToSerialize.DraftVisibilityType, deserializedObject.DraftVisibilityType);
            Assert.AreEqual(objectToSerialize.TaxonomyFieldMap.Id, deserializedObject.TaxonomyFieldMap.Id);
            Assert.AreEqual(objectToSerialize.TaxonomyFieldMap.InternalName, deserializedObject.TaxonomyFieldMap.InternalName);
            Assert.AreEqual(objectToSerialize.Overwrite, deserializedObject.Overwrite);

            // Check content types
            Assert.AreEqual(2, deserializedObject.ContentTypes.Count);
            Assert.AreEqual(objectToSerialize.ContentTypes.ElementAt(0).ContentTypeId, deserializedObject.ContentTypes.ElementAt(0).ContentTypeId);
            Assert.AreEqual(objectToSerialize.ContentTypes.ElementAt(0).DisplayNameResourceKey, deserializedObject.ContentTypes.ElementAt(0).DisplayNameResourceKey);
            Assert.AreEqual(objectToSerialize.ContentTypes.ElementAt(1).ContentTypeId, deserializedObject.ContentTypes.ElementAt(1).ContentTypeId);
            Assert.AreEqual(objectToSerialize.ContentTypes.ElementAt(1).DisplayNameResourceKey, deserializedObject.ContentTypes.ElementAt(1).DisplayNameResourceKey);

            // Managed properties
            Assert.AreEqual(2, deserializedObject.ManagedProperties.Count);
            Assert.AreEqual(objectToSerialize.ManagedProperties.ElementAt(0).Name, deserializedObject.ManagedProperties.ElementAt(0).Name);
            Assert.AreEqual(objectToSerialize.ManagedProperties.ElementAt(0).SortableType, deserializedObject.ManagedProperties.ElementAt(0).SortableType);
            Assert.AreEqual(objectToSerialize.ManagedProperties.ElementAt(1).Name, deserializedObject.ManagedProperties.ElementAt(1).Name);
            Assert.AreEqual(objectToSerialize.ManagedProperties.ElementAt(1).SortableType, deserializedObject.ManagedProperties.ElementAt(1).SortableType);
            Assert.AreEqual(objectToSerialize.ManagedProperties.ElementAt(1).Refinable, deserializedObject.ManagedProperties.ElementAt(1).Refinable);

            // List template
            Assert.AreEqual(objectToSerialize.ListTemplateInfo.ListTempateTypeId, deserializedObject.ListTemplateInfo.ListTempateTypeId);
            Assert.AreEqual(objectToSerialize.ListTemplateInfo.FeatureId, deserializedObject.ListTemplateInfo.FeatureId);
            
            // Field defs
            Assert.AreEqual(1, deserializedObject.FieldDefinitions.Count);
            Assert.AreEqual(objectToSerialize.FieldDefinitions.ElementAt(0).Id, deserializedObject.FieldDefinitions.ElementAt(0).Id);
            Assert.AreEqual(objectToSerialize.FieldDefinitions.ElementAt(0).InternalName, deserializedObject.FieldDefinitions.ElementAt(0).InternalName);

            Assert.AreEqual(objectToSerialize.FieldDefinitions.ElementAt(0).AssociatedValueType, deserializedObject.FieldDefinitions.ElementAt(0).AssociatedValueType);
        }