public SPWebInstance Add(string strWebUrl)
        {
            var result = m_webCollection.Add(strWebUrl);

            return(result == null
                ? null
                : new SPWebInstance(Engine, result));
        }
        /// <summary>
        /// Creates a subsite for a SharePoint v3 site
        /// </summary>
        /// <param name="ParentSiteURL">SharePoint v3 site URL</param>
        /// <param name="SiteURLName">Subsite name</param>
        /// <param name="SiteTitle">Subsite title</param>
        /// <param name="SiteDescription">Subsite description</param>
        /// <param name="SiteLCID">Sibsite LCID</param>
        /// <param name="OverwriteIfExists">if true, the existing subsite with the same name will be deleted and created again.</param>
        /// <param name="OutNewSiteURL">the method will return the full URL of the subsite</param>
        /// <param name="ResultText">the method will return text log of the operations performed.</param>
        /// <returns>true if the subsite is successfully created.</returns>
        public bool CreateSite(string parentSiteURL, string siteURLName, string siteTitle,
                               string siteDescription, uint siteLCID, bool overwriteIfExists,
                               ref string outNewSiteURL, ref string resultText)
        {
            bool result = false;
            //string testResult = "";
            string subSiteFullName = CleanURL(parentSiteURL) + "/" + siteURLName;

            outNewSiteURL = subSiteFullName;
            resultText    = String.Format(TextResources.AttemptingToCreateSite, subSiteFullName) + Environment.NewLine;
            //wrapping in try catch as this will be executed in a different thread
            try
            {
                SPSite          parentSite      = new SPSite(parentSiteURL);
                SPWeb           siteWeb         = parentSite.OpenWeb();
                SPWebCollection subSites        = siteWeb.Webs;
                string          currentTemplate = siteWeb.WebTemplate;
                string          siteTestStatus;
                if (TestSharePointV3Site(subSiteFullName, out siteTestStatus))
                {
                    //site already exists
                    resultText += TextResources.SiteExists + System.Environment.NewLine;
                    if (overwriteIfExists)
                    {
                        //delete site
                        SPUserCollection siteUsers = siteWeb.SiteUsers;
                        //emptying site users collection
                        int numUsers = siteUsers.Count;
                        for (int userIndex = numUsers; userIndex == 1; userIndex--)
                        {
                            if (!(parentSite.Owner.Sid == siteWeb.SiteUsers[userIndex].Sid))
                            {
                                siteWeb.SiteUsers.Remove(userIndex);
                            }
                        }
                        subSites.Delete(siteURLName);
                    }
                    else
                    {
                        //dont need to overwrite, exiting
                        result = true;
                        return(result);
                    }
                }

                subSites.Add(siteURLName, siteTitle, siteDescription, siteLCID, currentTemplate, true, false);
                string siteTestResult;
                if (TestSharePointV3Site(subSiteFullName, out siteTestResult))
                {
                    result      = true;
                    resultText += TextResources.SiteCreated + System.Environment.NewLine;
                }
            }
            catch (System.Exception ex)
            {
                resultText += ex.Message + System.Environment.NewLine;
            }
            return(result);
        }
示例#3
0
        void btnAddSite_Click(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(txtNewSiteTitle.Text.ToString()))
            {
                //         SP.UI.Notify.addNotification('<img src="/layours/images/loadinccirclests16.gif" style="vertical-align:top;"/> Operation in progress...',true);
                try
                {
                    SPWeb           thisSite        = SPContext.Current.Web;
                    SPWebCollection subSites        = thisSite.Webs;
                    string          currentTemplate = thisSite.WebTemplate;
                    string          user            = thisSite.CurrentUser.Name.ToString();

                    string siteUrl         = MakeStringSPSafe(txtNewSiteTitle.Text.ToString());
                    string siteTitle       = txtNewSiteTitle.Text.ToString();
                    string siteDescription = "Site " + txtNewSiteTitle.Text.ToString() +
                                             ", Created by " + user + " on " + DateTime.Today.ToString("MM/dd/yyyy");
                    subSites.Add(siteUrl, siteTitle, siteDescription, 1033,
                                 currentTemplate, true, false);
                    string newSiteAbsoluteUrl = thisSite.Url + "/" + siteUrl;

                    // reset thisSite to scope of new site
                    thisSite = subSites[siteUrl];
                    // Create a members group for the newly created site
                    string membersGroupName = MakeStringSPSafe(siteTitle) + " Members";
                    thisSite.SiteGroups.Add(membersGroupName, thisSite.CurrentUser, thisSite.CurrentUser, "Members of the site " + siteTitle);
                    thisSite.AssociatedGroups.Add(thisSite.SiteGroups[membersGroupName]);
                    thisSite.Update();
                    SPRoleAssignment assignment = new SPRoleAssignment(thisSite.SiteGroups[membersGroupName]);
                    SPRoleDefinition _role      = thisSite.RoleDefinitions["Contribute"];
                    assignment.RoleDefinitionBindings.Add(_role);
                    thisSite.RoleAssignments.Add(assignment);
                    string membersGroupId   = thisSite.SiteGroups[membersGroupName].ID.ToString();
                    string manageMembersUrl = newSiteAbsoluteUrl + "/_layouts/15/people.aspx?MembershipGroupId=" + membersGroupId;

                    lblResult.Text = "Site Successfully Created at <a href='" + newSiteAbsoluteUrl + "'>" + newSiteAbsoluteUrl + "</a>";
                    lblResult.Text = lblResult.Text + "<br><a href='" + manageMembersUrl + "'> Add Members to Site";
                }
                catch (Exception ex)
                {
                    lblResult.Text = "An Error Occured: " + ex.Message;
                }
                finally
                {
                    txtNewSiteTitle.Text = null;
                    PleaseWait.Visible   = false;
                }
            }
        }
示例#4
0
        public void CreateWebSite(string url, string title, string description, string siteTemplate)
        {
            using (SPWeb web = oSPSite.OpenWeb(oSPSite.RootWeb.ID))
            {
                try
                {
                    web.AllowUnsafeUpdates = true;


                    // Site creation with unique permissions
                    SPWebCollection webs   = web.Webs;
                    SPWeb           newWeb = webs.Add(url, title, description, 1033, siteTemplate, true, false);

                    // Owners, members and visitors groups creation
                    SPGroup owners   = SPGroupsHelper.AddGroup(newWeb, SPGroupsHelper.AssociatedGroupTypeEnum.Owners);
                    SPGroup members  = SPGroupsHelper.AddGroup(newWeb, SPGroupsHelper.AssociatedGroupTypeEnum.Members);
                    SPGroup visitors = SPGroupsHelper.AddGroup(newWeb, SPGroupsHelper.AssociatedGroupTypeEnum.Visitors);

                    // Changing the request access email to current user
                    newWeb.RequestAccessEmail = newWeb.CurrentUser.Email;

                    // Save changes
                    newWeb.Update();

                    // Disposing new web object
                    newWeb.Dispose();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    web.AllowUnsafeUpdates = false;
                }
            }
        }