Archives

Archives / 2004 / August
  • Register site in Sharepoint programatically

            /// <summary>
            /// Eventhandler that invokes the RegisterInSiteDirectory method. Will only run on the SPS server 
            /// with SPS admin as current identity.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, System.EventArgs e)
            {
                Hashtable itemData = new Hashtable();
                itemData.Add("CustomCategory", "SomeData");
                this.RegisterInSiteDirectory("SiteDirectory", "Sites", "Generated Site Name", "Some Description", "http://sps2003base:8080/sites/genepool", itemData);
            }
            /// <summary>
            /// Registers a site in a given site directory and enlists site for search in the same manner as 
            /// the Sharepoint Site Directory Area UI
            /// </summary>
            /// <param name="siteDirectoryAreaName">Name of the Site Directory area.</param>
            /// <param name="siteDirectoryName">Name of the Site Directory List.</param>
            /// <param name="title">Site Title to be used in the list and search entry.</param>
            /// <param name="description">Site Description to be used in the list and search entry.</param>
            /// <param name="siteUrl">Site Description to be used in the list and for crawling.</param>
            /// <param name="itemData">Custom site metadata used in the list and included in portal content search.</param>
            public void RegisterInSiteDirectory(string siteDirectoryAreaName, string siteDirectoryName, string title, string description, string siteUrl, Hashtable itemData)
            {
                SPSite portalSite = new SPSite("http://sps2003base:8080");
                SPWeb siteDirectoryArea = portalSite.AllWebs[siteDirectoryAreaName];
                SPList siteDirectoryList = siteDirectoryArea.Lists[siteDirectoryName];
                
                // Create new item in the list
                SPListItem item = siteDirectoryList.Items.Add();
                
                // Set default and required values
                item["SiteTitle"] = title;
                item["SiteURL"] = siteUrl;
                item["Description"] = description;
                
                // Add custom metadata
                foreach(DictionaryEntry entry in itemData)
                {
                    item[entry.Key.ToString()] = entry.Value;
                }
                
                item.Update();
                // Register the site for search
                Uri siteUri = new Uri("http://sps2003base:8080"); 
                TopologyManager tm = new TopologyManager(); 
                PortalSite site = tm.PortalSites[siteUri]; 
                PortalContext portalContext = PortalApplication.GetContext(site); 
                AreaManager.SuggestDeepCrawl( portalContext, 
                    title, 
                    description, 
                    siteUrl, 
                    "" /* LargeIconUrl */, 
                    "" /* SmallIconUrl */, 
                    "$$$default$$$" /* Index Catalog */, 
                    "$$$default$$$" /* Index Scope */); 
            }