protected override IEnumerable <PageLayout> RetrieveDataObjects() { List <PageLayout> layouts = new List <PageLayout>(); SPWeb web = null; if (Web != null) { web = Web.Read(); if (!PublishingWeb.IsPublishingWeb(web)) { throw new ArgumentException("The specified web is not a publishing web."); } AssignmentCollection.Add(web); AssignmentCollection.Add(web.Site); } switch (ParameterSetName) { case "PageLayout": foreach (SPPageLayoutPipeBind pipeBind in PageLayout) { PageLayout layout = pipeBind.Read(web); SPContentType ct1 = null; if (AssociatedContentType != null) { ct1 = AssociatedContentType.Read(layout.ListItem.Web); } if (ct1 == null || ct1.Id == layout.AssociatedContentType.Id) { WriteResult(layout); } } break; case "SPWeb": PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web); SPContentType ct2 = null; if (AssociatedContentType != null) { ct2 = AssociatedContentType.Read(web); } if (ct2 == null) { WriteResult(pubWeb.GetAvailablePageLayouts()); } else { WriteResult(pubWeb.GetAvailablePageLayouts(ct2.Id)); } break; default: break; } return(null); }
// method for creating publising page private string CreatePublishingPage(string pageName, string pageLayoutName, bool isLandingPage) { string createdPageURL = string.Empty; // elevated privilages as not all user will have permission to create a new page SPSecurity.RunWithElevatedPrivileges(delegate() { // get current web SPWeb oWeb = SPContext.Current.Web; string fullPageUrl = string.Empty; PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(oWeb); /* Get the publishing web page collection list. */ PublishingPageCollection publishingPageCollection = publishingWeb.GetPublishingPages(); //GetPageLayoutName(application); if (!string.IsNullOrEmpty(pageLayoutName)) { /* Search for the page layout for creating the new page */ List <PageLayout> layouts = new List <PageLayout>(publishingWeb.GetAvailablePageLayouts()); PageLayout pageLayout = layouts.Find( delegate(PageLayout l) { return(l.Name.Equals(pageLayoutName, StringComparison.CurrentCultureIgnoreCase)); }); /*page layout exists*/ if (pageLayout != null) { PublishingPage newPage = null; newPage = publishingPageCollection.Add(pageName + ".aspx", pageLayout); newPage.Title = pageName; newPage.Update(); SPList li = newPage.ListItem.ParentList; if (li.EnableModeration == false) { li.EnableModeration = true; li.Update(); } newPage.CheckIn("page checked in"); newPage.ListItem.File.Publish("page published"); newPage.ListItem.File.Approve("page approved"); /* Set newly created page as a welcome page */ if (isLandingPage == true) { fullPageUrl = oWeb.Url + "/Pages/" + pageName + ".aspx"; SPFile fileNew = publishingWeb.Web.GetFile(fullPageUrl); publishingWeb.DefaultPage = fileNew; } publishingWeb.Update(); createdPageURL = newPage.Uri.AbsoluteUri.ToString(); } } }); // return new page url return(createdPageURL); }
private static SPFile CreateNewWelcomePage(SPWeb currentWeb, PublishingWeb publishingWeb, SPFile defaultPage) { PageLayout welcomeLayout = publishingWeb.GetAvailablePageLayouts(ContentTypeId.WelcomePage)[0]; PublishingPage welcomePage = publishingWeb.GetPublishingPages().Add(DefaultFileName, welcomeLayout); defaultPage = currentWeb.GetFile(welcomePage.Url); publishingWeb.DefaultPage = defaultPage; publishingWeb.Update(); //defaultPage.MoveTo("default.aspx", true); return(defaultPage); }
public override void FeatureActivated(SPFeatureReceiverProperties properties) { SPWeb web = properties.Feature.Parent as SPWeb; if (web != null) { if (PublishingWeb.IsPublishingWeb(web)) { PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web); PublishingPage page = pubWeb.GetPublishingPages()[PartnerLandingPageUrl]; if (page == null) { SPContentTypeId contentTypeId = new SPContentTypeId(welcomePageLayoutContentTypeId); PageLayout[] layouts = pubWeb.GetAvailablePageLayouts(contentTypeId); PageLayout welcomePageLayout = layouts[0]; page = pubWeb.GetPublishingPages().Add(PartnerLandingPageFileName, welcomePageLayout); } else { page.CheckOut(); } page.ListItem[titleFieldId] = PartnerLandingPageTile; page.ListItem[DescriptionField] = Resources.PageDescription; page.ListItem[pageContentFieldId] = Resources.PageContent; page.ListItem[partnerSpecificContentFieldId] = Resources.PartnerSpecificContent; page.Update(); SPFile welcomeFile = web.GetFile(page.Url); pubWeb.DefaultPage = welcomeFile; pubWeb.Update(); page.CheckIn(Resources.CheckInValue); } } }
public static PublishingPage CreatePage(this SPWeb web, string pageName, string pageLayoutName) { if (!PublishingWeb.IsPublishingWeb(web)) { return(null); } PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web); PageLayout pageLayout = publishingWeb.GetAvailablePageLayouts().FirstOrDefault( page => page.Name.Equals(pageLayoutName, StringComparison.InvariantCultureIgnoreCase)); if (pageLayout == null) { return(null); //throw new SPException(string.Format("Page layout with name {0} is not found.", pageLayoutName)); } PublishingPage newPage = publishingWeb.AddPublishingPage(pageName, pageLayout); return(newPage); }
public static PublishingPage CreatePage(SPWeb web, string pageName, string title, string layoutName, Dictionary <string, string> fieldDataCollection, bool test) { if (!PublishingWeb.IsPublishingWeb(web)) { throw new ArgumentException("The specified web is not a publishing web."); } PublishingWeb pubweb = PublishingWeb.GetPublishingWeb(web); PageLayout layout = null; string availableLayouts = string.Empty; foreach (PageLayout lo in pubweb.GetAvailablePageLayouts()) { availableLayouts += "\t" + lo.Name + "\r\n"; if (lo.Name.ToLowerInvariant() == layoutName.ToLowerInvariant()) { layout = lo; break; } } if (layout == null) { if (PublishingSite.IsPublishingSite(web.Site)) { Logger.WriteWarning("The specified page layout could not be found among the list of available page layouts for the web. Available layouts are:\r\n" + availableLayouts); availableLayouts = string.Empty; foreach (PageLayout lo in (new PublishingSite(web.Site).PageLayouts)) { availableLayouts += "\t" + lo.Name + "\r\n"; if (lo.Name.ToLowerInvariant() == layoutName.ToLowerInvariant()) { layout = lo; break; } } } if (layout == null) { throw new ArgumentException("The layout specified could not be found. Available layouts are:\r\n" + availableLayouts); } } if (!pageName.ToLowerInvariant().EndsWith(".aspx")) { pageName += ".aspx"; } PublishingPage page = null; SPListItem item = null; if (test) { Logger.Write("Page to be created at {0}", pubweb.Url); } else { page = pubweb.GetPublishingPages().Add(pageName, layout); page.Title = title; item = page.ListItem; } foreach (string fieldName in fieldDataCollection.Keys) { string fieldData = fieldDataCollection[fieldName]; try { SPField field = item.Fields.GetFieldByInternalName(fieldName); if (field.ReadOnlyField) { Logger.Write("Field '{0}' is read only and will not be updated.", field.InternalName); continue; } if (field.Type == SPFieldType.Computed) { Logger.Write("Field '{0}' is a computed column and will not be updated.", field.InternalName); continue; } if (!test) { if (field.Type == SPFieldType.URL) { item[field.Id] = new SPFieldUrlValue(fieldData); } else if (field.Type == SPFieldType.User) { Common.Pages.CreatePublishingPage.SetUserField(web, item, field, fieldData); } else { item[field.Id] = fieldData; } } else { Logger.Write("Field '{0}' would be set to '{1}'.", field.InternalName, fieldData); } } catch (ArgumentException ex) { Logger.WriteException(new ErrorRecord(new Exception(string.Format("Could not set field {0} for item {1}.", fieldName, item.ID), ex), null, ErrorCategory.InvalidArgument, item)); } } if (page != null) { page.Update(); } return(page); }
public PageLayout Read(PublishingWeb pubWeb) { // We don't dispose here as we'll add these objects // to the SPAssignmentCollection SPSite site = null; SPWeb web = null; if (pubWeb == null && _isAbsoluteUrl) { site = new SPSite(_fileUrl); web = site.OpenWeb(); if (!PublishingWeb.IsPublishingWeb(web)) { throw new ArgumentException("The specified web is not a publishing web."); } pubWeb = PublishingWeb.GetPublishingWeb(web); } else if (pubWeb == null && !_isAbsoluteUrl) { throw new FileNotFoundException("The specified layout could not be found.", _fileUrl); } else { web = pubWeb.Web; } PageLayout file = null; if (_isAbsoluteUrl) { foreach (PageLayout lo in pubWeb.GetAvailablePageLayouts()) { if (lo.ListItem.Web.Site.MakeFullUrl(lo.ServerRelativeUrl.ToLowerInvariant()) == _fileUrl.ToLowerInvariant()) { file = lo; break; } } } else { foreach (PageLayout lo in pubWeb.GetAvailablePageLayouts()) { if (lo.Name.ToLowerInvariant() == _fileUrl.ToLowerInvariant()) { file = lo; break; } } } if (file == null) { if (web != null) { web.Dispose(); } if (site != null) { site.Dispose(); } throw new SPCmdletPipeBindException(string.Format("SPPageLayoutPipeBind object not found ({0})", _fileUrl)); } return(file); }
// this method gets all publishing pages for the web private List <string> GetAllPublishingPage() { List <string> pgList = new List <string>(); SPWeb web = SPContext.Current.Web; string fullPageUrl = string.Empty; PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web); PublishingPageCollection publishingPageCollection = publishingWeb.GetPublishingPages(); List <PageLayout> layouts = new List <PageLayout>(publishingWeb.GetAvailablePageLayouts()); foreach (PageLayout pl in layouts) { pgList.Add(pl.Name); } return(pgList); }
public static SPWebCollection removePageLayoutFromWeb(SPWeb oWeb, string pageLayoutToRemove) { PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(oWeb); Console.Write("\n Doing " + oWeb.Url); if (!pWeb.IsInheritingAvailablePageLayouts) { Console.Write("\n Does not inherit. Searching..."); List <PageLayout> myArray = new List <PageLayout>(); var availablePageLayouts = pWeb.GetAvailablePageLayouts(); Console.Write("\n " + availablePageLayouts.Length.ToString() + " Page Layouts assoiciated with web."); if (availablePageLayouts.Length > 0) { for (int i = 1; i < availablePageLayouts.Length; i++) { Console.Out.Flush(); string strapl = availablePageLayouts[i].Name; if (strapl.Length == 0) { Console.Write("\nPage Layout without filename. Skipping " + availablePageLayouts[i].Title); } else { Console.Write("\n Comparing " + strapl + " with " + pageLayoutToRemove); if (strapl.CompareTo(pageLayoutToRemove) == 0) { var strrh = availablePageLayouts[i].Title; Console.Write("\n Removing page" + strapl + ". Press Enter to continue."); Console.ReadLine(); } else { Console.Write("\n Keeping page" + strapl); myArray.Add(availablePageLayouts[i]); } } } if (myArray.Count > 0) { Console.Write("\n Updating Web"); pWeb.SetAvailablePageLayouts(myArray.ToArray(), false); pWeb.Update(); } else { Console.Write("\n No pagelayouts to set. Skipping update. (At least one PageLayout must be left to do update)."); } } } else { Console.Write("\n Inherits. Skipping."); } Console.Write("\n"); return(oWeb.Webs); }
public override void FeatureActivated(SPFeatureReceiverProperties properties) { try { SPList objPagesList = null; Guid ListId; SPSite site = properties.Feature.Parent as SPSite; SPWeb web = null; if (site == null) { web = properties.Feature.Parent as SPWeb; if (web == null) { return; } site = web.Site; } else { web = site.RootWeb; } web.AllowUnsafeUpdates = true; #region Site navigation and welcome page //Assign default page of the site to home.aspx PublishingWeb objPublishingWeb = PublishingWeb.GetPublishingWeb(web); SPFile objHomePageFile = web.GetFile(objPublishingWeb.PagesListName + "/Home.aspx"); objPublishingWeb.DefaultPage = objHomePageFile; objPublishingWeb.Update(); web.Update(); //Hide the thanks.aspx page from the top navigation PublishingPageCollection pages = objPublishingWeb.GetPublishingPages(); foreach (PublishingPage page in pages) { if (page.Name.ToLower() == "thanks.aspx") { page.IncludeInGlobalNavigation = false; } } //Delete default.aspx page created when activated publishing feature //Get the Pages List for current Locale ListId = PublishingWeb.GetPagesListId(web); objPagesList = web.Lists[ListId]; string urlPagetoDelete = objPagesList.RootFolder.ServerRelativeUrl + "/default.aspx"; if (web.GetFile(urlPagetoDelete).Exists) { SPFile objFile = objPagesList.RootFolder.Files["default.aspx"]; if (objFile != null) { if (objFile.CheckOutStatus == SPFile.SPCheckOutStatus.None) { objFile.CheckOut(); } objFile.Delete(); } } #endregion #region Create Config List & Add Columns //Create Config List SPList configList; configList = web.Lists.TryGetList(Constants.CONFIG_LIST); if (configList == null) { web.Lists.Add(Constants.CONFIG_LIST, "This list contains the HTML for the Global Contact Us Control, Footer, Admin & Self Mail contents and subjects", SPListTemplateType.GenericList); configList = web.Lists.TryGetList(Constants.CONFIG_LIST); } //Add Columns in List if (configList != null) { if (!configList.Fields.ContainsField("Value")) { string FieldXML = "<Field Type='Note' Description='The list of Tokens that can be provided in this column are: \nName of User: #FROMNAME#\nCompany: #FROMCOMPANY#\nPhone: #FROMPHONE#\nEmail: #FROMEMAIL#\nUser Query: #BODY#' DisplayName='Value' Required='TRUE' NumLines='6' StaticName='Value' Name='Value' RichText='TRUE' RichTextMode='FullHtml' IsolateStyles='FALSE' />"; configList.Fields.AddFieldAsXml(FieldXML, true, SPAddFieldOptions.Default); //configList.Fields.Add("Value", SPFieldType.Note, false); configList.Update(); } } #endregion #region Add Configuration Items to Config List //Add Footer configuration value SPListItem itemFooter = configList.Items.Add(); itemFooter["Title"] = Constants.CONFIG_LIST_FOOTERVALUE; itemFooter["Value"] = Constants.FOOTER_VALUE; itemFooter.Update(); //Add Contact Us Control configuration value SPListItem itemContactInfo = configList.Items.Add(); itemContactInfo["Title"] = Constants.CONFIG_LIST_CONTACTVALUE; itemContactInfo["Value"] = Constants.CONTACT_CONTROL_VALUE; itemContactInfo.Update(); //Add Administrator mail content configuration value SPListItem itemAdminMailContent = configList.Items.Add(); itemAdminMailContent["Title"] = Constants.CONFIG_LIST_ADMINMAILVALUE; itemAdminMailContent["Value"] = Constants.ADMINMAILCONTENT_VALUE; itemAdminMailContent.Update(); //Add User mail content configuration value SPListItem itemUserMailContent = configList.Items.Add(); itemUserMailContent["Title"] = Constants.CONFIG_LIST_USERMAILVALUE; itemUserMailContent["Value"] = Constants.USERMAILCONTENT_VALUE; itemUserMailContent.Update(); //Add Admin mail Subject configuration value SPListItem itemAdminMailSubject = configList.Items.Add(); itemAdminMailSubject["Title"] = Constants.CONFIG_LIST_ADMINMAILSUBJECT; itemAdminMailSubject["Value"] = Constants.ADMINMAILSUBJECT_VALUE; itemAdminMailSubject.Update(); //Add User mail Subject configuration value SPListItem itemUserMailSubject = configList.Items.Add(); itemUserMailSubject["Title"] = Constants.CONFIG_LIST_USERMAILSUBJECT; itemUserMailSubject["Value"] = Constants.USERMAILSUBJECT_VALUE; itemUserMailSubject.Update(); #endregion #region Set Default page layout //Set default page layout of site to internal page layout if (objPublishingWeb != null) { PageLayout _pageLayout = (from _pl in objPublishingWeb.GetAvailablePageLayouts() where _pl.Name == "BrickRedSmallBusinessInnerPageLayout.aspx" select _pl).FirstOrDefault(); objPublishingWeb.SetDefaultPageLayout(_pageLayout, true); objPublishingWeb.Update(); } #endregion #region Apply Custom Theme //Apply brickRed Small Business theme to the site created using (ThmxTheme theme = ThmxTheme.Open(web.Site, "./_catalogs/theme/" + Constants.THEME_NAME + ".thmx")) { theme.ApplyTo(web, false); } #endregion #region Add Column and Item to the Service List SPList servicesList = web.Lists.TryGetList(Constants.SERVICES_LIST_NAME); if (servicesList != null) { if (!servicesList.Fields.ContainsField("DetailedDescription")) { //create the column if it does not exists string FieldXML = "<Field Type='Note' Description='Displays the detailed description of the services offered' DisplayName='Detailed Description' Required='TRUE' NumLines='6' StaticName='DetailedDescription' Name='DetailedDescription' RichText='TRUE' RichTextMode='FullHtml' IsolateStyles='FALSE' UnlimitedLengthInDocumentLibrary='TRUE'/>"; servicesList.Fields.AddFieldAsXml(FieldXML, true, SPAddFieldOptions.Default); servicesList.Update(); string[] DETAILED_DESCRIPTION_SERVICE = { "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis turpis eros, mattis et vestibulum in, suscipit et metus. Duis nec placerat felis. Nam eget pulvinar sem. Sed dictum gravida lobortis. Phasellus ut pretium diam. Vestibulum vel velit magna, congue sollicitudin orci. Donec quis mauris at ante volutpat ornare. Nulla metus enim, fringilla at eleifend a, pulvinar a turpis. Sed ut laoreet libero. Ut ipsum felis, varius eget pharetra et, mattis vitae augue. Aliquam erat volutpat. Quisque viverra turpis ut lorem gravida accumsan. Integer est risus, aliquam eget convallis id, malesuada vitae nunc. Ut eu ipsum velit, eget semper dui. </p><p>Integer commodo dui id nulla accumsan ullamcorper. Donec eu urna id lorem venenatis vestibulum. Donec nec nisl dolor. Nulla porta condimentum lacus eu adipiscing. Aliquam nec tellus eu lectus ultrices consequat et nec turpis. Suspendisse vehicula porta urna, ac lobortis nisl viverra at. Curabitur ac velit nibh. Mauris molestie, nibh quis vestibulum fringilla, arcu eros hendrerit mi, id tempor odio lacus in quam. Mauris tristique urna eget est condimentum mattis. Sed nec lacus massa, ut dignissim elit. Vivamus augue libero, varius dictum pretium quis, auctor eget urna. Donec semper luctus dolor, at dapibus nunc fermentum a. </p>", "<p>Suspendisse laoreet, nulla vitae volutpat commodo, nulla nunc porta risus, eget laoreet nunc augue in felis. Quisque sed felis felis, a dictum felis. Nullam vulputate rhoncus odio, vitae tincidunt nisl vehicula eget. Donec porttitor ante orci, nec luctus elit. Vivamus massa augue, consectetur in tempus sit amet, rhoncus tristique neque. Nam elit nibh, euismod auctor tristique ut, tincidunt sed nibh. Duis tempor, dui sit amet condimentum ullamcorper, eros risus interdum nulla, ut facilisis sapien neque nec urna. Suspendisse urna lorem, rutrum ac varius vel, tempor eget risus. Suspendisse potenti. Etiam tempus gravida erat, ut commodo leo vulputate non. Praesent et risus nisl. Mauris pharetra pellentesque enim, non pulvinar tortor eleifend congue.</p>Integer commodo dui id nulla accumsan ullamcorper. Donec eu urna id lorem venenatis vestibulum. Donec nec nisl dolor. Nulla porta condimentum lacus eu adipiscing. Aliquam nec tellus eu lectus ultrices consequat et nec turpis. Suspendisse vehicula porta urna, ac lobortis nisl viverra at. Curabitur ac velit nibh. Mauris molestie, nibh quis vestibulum fringilla, arcu eros hendrerit mi, id tempor odio lacus in quam. Mauris tristique urna eget est condimentum mattis. Sed nec lacus massa, ut dignissim elit. Vivamus augue libero, varius dictum pretium quis, auctor eget urna. Donec semper luctus dolor, at dapibus nunc fermentum a.</p>", "<p>Integer commodo dui id nulla accumsan ullamcorper. Donec eu urna id lorem venenatis vestibulum. Donec nec nisl dolor. Nulla porta condimentum lacus eu adipiscing. Aliquam nec tellus eu lectus ultrices consequat et nec turpis. Suspendisse vehicula porta urna, ac lobortis nisl viverra at. Curabitur ac velit nibh. Mauris molestie, nibh quis vestibulum fringilla, arcu eros hendrerit mi, id tempor odio lacus in quam. Mauris tristique urna eget est condimentum mattis. Sed nec lacus massa, ut dignissim elit. Vivamus augue libero, varius dictum pretium quis, auctor eget urna. Donec semper luctus dolor, at dapibus nunc fermentum a.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis turpis eros, mattis et vestibulum in, suscipit et metus. Duis nec placerat felis. Nam eget pulvinar sem. Sed dictum gravida lobortis. Phasellus ut pretium diam. Vestibulum vel velit magna, congue sollicitudin orci. Donec quis mauris at ante volutpat ornare. Nulla metus enim, fringilla at eleifend a, pulvinar a turpis. Sed ut laoreet libero. Ut ipsum felis, varius eget pharetra et, mattis vitae augue. Aliquam erat volutpat. Quisque viverra turpis ut lorem gravida accumsan. Integer est risus, aliquam eget convallis id, malesuada vitae nunc. Ut eu ipsum velit, eget semper dui. </p>", "<p>Integer commodo dui id nulla accumsan ullamcorper. Donec eu urna id lorem venenatis vestibulum. Donec nec nisl dolor. Nulla porta condimentum lacus eu adipiscing. Aliquam nec tellus eu lectus ultrices consequat et nec turpis. Suspendisse vehicula porta urna, ac lobortis nisl viverra at. Curabitur ac velit nibh. Mauris molestie, nibh quis vestibulum fringilla, arcu eros hendrerit mi, id tempor odio lacus in quam. Mauris tristique urna eget est condimentum mattis. Sed nec lacus massa, ut dignissim elit. Vivamus augue libero, varius dictum pretium quis, auctor eget urna. Donec semper luctus dolor, at dapibus nunc fermentum a. </p><p>Suspendisse laoreet, nulla vitae volutpat commodo, nulla nunc porta risus, eget laoreet nunc augue in felis. Quisque sed felis felis, a dictum felis. Nullam vulputate rhoncus odio, vitae tincidunt nisl vehicula eget. Donec porttitor ante orci, nec luctus elit. Vivamus massa augue, consectetur in tempus sit amet, rhoncus tristique neque. Nam elit nibh, euismod auctor tristique ut, tincidunt sed nibh. Duis tempor, dui sit amet condimentum ullamcorper, eros risus interdum nulla, ut facilisis sapien neque nec urna. Suspendisse urna lorem, rutrum ac varius vel, tempor eget risus. Suspendisse potenti. Etiam tempus gravida erat, ut commodo leo vulputate non. Praesent et risus nisl. Mauris pharetra pellentesque enim, non pulvinar tortor eleifend congue.</p>" }; //Enter the dummy data for (int i = 1; i <= servicesList.ItemCount; i++) { SPListItem item = servicesList.GetItemById(i); item["DetailedDescription"] = DETAILED_DESCRIPTION_SERVICE[i - 1]; item.Update(); } servicesList.Update(); } } #endregion web.AllowUnsafeUpdates = false; } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
private void DefaultPageLayoutProcess(SPWebEventProperties properties) { PageLayout _pageLayout; try { using (SPSite site = new SPSite(properties.SiteId)) { using (SPWeb web = site.OpenWeb()) { PublishingSite pubSiteCollection = new PublishingSite(site); PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(properties.Web); //check if pagelayout to be defaulted already exists in AvailablePageLayouts _pageLayout = (from _pl in publishingWeb.GetAvailablePageLayouts() where _pl.Name == defaultPageLayout select _pl).FirstOrDefault(); //if exists if (_pageLayout != null) { publishingWeb.SetDefaultPageLayout(_pageLayout, true); publishingWeb.Update(); } else //if does not exist { //get all AvailablePageLayouts PageLayout[] _allpageLayout = publishingWeb.GetAvailablePageLayouts(); PageLayout[] plarray = new PageLayout[_allpageLayout.Length + 1]; int ipl = -1; //transfer existing pagelayouts in AvailablePageLayouts to PageLayout[] foreach (PageLayout _itempl in _allpageLayout) { ipl++; plarray[ipl] = _itempl; } //PageLayout to be defaulted to _pageLayout = pubSiteCollection.PageLayouts["/_catalogs/masterpage/" + defaultPageLayout]; ipl++; //add to the PageLayout array plarray[ipl] = _pageLayout; //reset AvailablePageLayouts publishingWeb.SetAvailablePageLayouts(plarray, true); publishingWeb.Update(); //set DefaultPageLayout publishingWeb.SetDefaultPageLayout(_pageLayout, true); publishingWeb.Update(); web.Update(); } //Swap the page layout of the default.aspx page SwapPageLayout(publishingWeb, _pageLayout, web.Site.RootWeb.ContentTypes[_pageLayout.AssociatedContentType.Id]); } } } catch (Exception ex) { Logger.WriteLog("WebProvisioning.cs - DefaultPageLayoutProcess: " + ex.Message + " " + ex.StackTrace); } }
/// <summary> /// Runs the specified command. /// </summary> /// <param name="command">The command.</param> /// <param name="keyValues">The key values.</param> /// <param name="output">The output.</param> /// <returns></returns> public override int Execute(string command, StringDictionary keyValues, out string output) { output = string.Empty; #if !MOSS output = NOT_VALID_FOR_FOUNDATION; return((int)ErrorCodes.GeneralError); #endif string url = Params["url"].Value.TrimEnd('/'); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.AppendChild(xmlDoc.CreateElement("PageLayouts")); using (SPSite site = new SPSite(url)) using (SPWeb web = site.AllWebs[Utilities.GetServerRelUrlFromFullUrl(url)]) { PublishingWeb pubweb = PublishingWeb.GetPublishingWeb(web); foreach (PageLayout layout in pubweb.GetAvailablePageLayouts()) { XmlElement layoutNode = xmlDoc.CreateElement("PageLayout"); XmlElement node = xmlDoc.CreateElement("Name"); node.InnerText = layout.Name; layoutNode.AppendChild(node); node = xmlDoc.CreateElement("Title"); node.InnerText = layout.Title; layoutNode.AppendChild(node); node = xmlDoc.CreateElement("Id"); node.InnerText = layout.ListItem.ID.ToString(); layoutNode.AppendChild(node); node = xmlDoc.CreateElement("AssociatedContentType"); if (layout.AssociatedContentType != null) { node.InnerText = layout.AssociatedContentType.Name; } layoutNode.AppendChild(node); node = xmlDoc.CreateElement("ContentType"); if (layout.ListItem[FieldId.ContentType] != null) { node.InnerText = layout.ListItem[FieldId.ContentType].ToString(); } layoutNode.AppendChild(node); node = xmlDoc.CreateElement("Hidden"); if (layout.ListItem[FieldId.Hidden] != null) { node.InnerText = layout.ListItem[FieldId.Hidden].ToString(); } else { node.InnerText = "false"; } layoutNode.AppendChild(node); node = xmlDoc.CreateElement("FileUrl"); if (layout.ListItem.File != null) { node.InnerText = layout.ListItem.File.Url; } layoutNode.AppendChild(node); xmlDoc.DocumentElement.AppendChild(layoutNode); } } StringBuilder sb = new StringBuilder(); XmlTextWriter xmlWriter = new XmlTextWriter(new StringWriter(sb)); xmlWriter.Formatting = Formatting.Indented; xmlDoc.WriteContentTo(xmlWriter); xmlWriter.Flush(); output += sb.ToString(); return((int)ErrorCodes.NoError); }