Hi Everyone recently i uploaded a new version (1.1) of MyMasters solution.
the solution now covering fallowing questions’ answers :
* How to deploy a custom wellcome page to Personal Site ?
* How to add custom webparts to a page ?
* How to use XsltListViewWebPart and add a document library as a webpart ?
You can download new version from CodePlex site of MyMasters solution:
http://mymasters.codeplex.com/
Please visit related post about MyMasters:
http://blog.bugrapostaci.com/2011/10/24/attach-custom-master-page-to-personal-site-with-featurestabling-for-sharepoint-2010/
Here is a code sample for above questions :
as you guess CreateWellcomePage function has been calling in Feature Reciever class of MyMasters Feature.
- private void CreateWellcomePage(SPFeatureReceiverProperties properties)
- {
- SPSite site = (SPSite)properties.Feature.Parent;
- SPWeb web = site.OpenWeb();
- PublishingSite pSite = new PublishingSite(site); //Get Publishing Site Object
- SPContentType ctype = pSite.ContentTypes[“Welcome Page”]; //Get builtin “Wellcome Page” content type
- PageLayoutCollection pageLayouts = pSite.GetPageLayouts(ctype, true); //Get builtin pagelayouts for this content type
- PageLayout pageLayout = pageLayouts[0]; //Select first one which is BlankWebPartPage pagelayout
- PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(web); //Get Publishing Web.
- PublishingPageCollection pPages = pWeb.GetPublishingPages(); // Get Page Collection
- //TempFile for changing default page
- string tempFileName = “TempFileForChangeWellcomePage.aspx”;
- PublishingPage tempPage = null;
- try
- {
- //Get if there is an existing wellcome.aspx
- PublishingPage pPageExist = pPages[pWeb.Url + “/Pages/Wellcome.aspx”];
- if (pPageExist != null)
- {
- //Check wellcome.aspx is default page
- if (pWeb.DefaultPage.UniqueId == pPageExist.ListItem.File.UniqueId)
- {
- //if it is a default page we have to create a template page because the default page is not deleted.
- //Create a temporary page
- tempPage = pPages.Add(tempFileName, pageLayout);
- tempPage.ListItem.File.CheckIn(“Chk”);
- tempPage.ListItem.File.Publish(“Pub”);
- //Set this temporary file as default page so we can able to delete existing wellcome.aspx
- pWeb.DefaultPage = tempPage.ListItem.File;
- pWeb.Update();
- }
- //Delete Existing Wellcome.aspx
- if (pPageExist.ListItem.File.CheckedOutByUser != null)
- {
- pPageExist.ListItem.File.UndoCheckOut();
- }
- pPageExist.CheckOut();
- pPageExist.ListItem.Delete();
- pWeb.Update();
- }
- }
- catch(Exception ex)
- {
- }
- //Create a new Wellcome.aspx file
- PublishingPage pPage = pPages.Add(“Wellcome.aspx”, pageLayout);
- SPListItem newpage = pPage.ListItem;
- newpage[“Title”] = “Wellcome to my personal site”;
- //Add need webparts to page.
- using (SPLimitedWebPartManager wpMgr = web.GetLimitedWebPartManager(pPage.Url, PersonalizationScope.Shared))
- {
- //Get WebPart Catalog
- SPList webPartCatalog = web.GetCatalog(SPListTemplateType.WebPartCatalog);
- foreach (SPListItem item in webPartCatalog.Items)
- {
- if (item.DisplayName == “LatestBlogPostsPublic”)
- {
- string fileName = string.Format(“{0}/{1}”, item.Web.Url, item.File.Url);
- XmlTextReader reader = new XmlTextReader(new StringReader(item.Web.GetFileAsString(fileName)));
- string error;
- System.Web.UI.WebControls.WebParts.WebPart wx = wpMgr.ImportWebPart(reader, out error);
- wpMgr.AddWebPart(wx, “Header”, Convert.ToInt32(0));
- }
- }
- //Add existing Document Library views
- SPList SharedDocumentsList = web.Lists[“Shared Documents”];
- SPView SharedDocumentsListView = SharedDocumentsList.Views[0];
- SPList PersonalDocumentsList = web.Lists[“Personal Documents”];
- SPView PersonalDocumentsListView = PersonalDocumentsList.Views[0];
- XsltListViewWebPart wp = new XsltListViewWebPart();
- wp.ListId = SharedDocumentsList.ID;
- wp.Title = “Shared Documents”;
- wp.ChromeType = PartChromeType.TitleOnly;
- wp.ViewGuid = SharedDocumentsListView.ID.ToString();
- wp.XmlDefinition = SharedDocumentsListView.GetViewXml();
- wpMgr.AddWebPart(wp, “Header”, Convert.ToInt32(1));
- XsltListViewWebPart wp2 = new XsltListViewWebPart();
- wp2.ListId = PersonalDocumentsList.ID;
- wp2.Title = “Personal Documents”;
- wp2.ChromeType = PartChromeType.TitleOnly;
- wp2.ViewGuid = PersonalDocumentsListView.ID.ToString();
- wp2.XmlDefinition = PersonalDocumentsListView.GetViewXml();
- wpMgr.AddWebPart(wp2, “Header”, Convert.ToInt32(2));
- }
- newpage.File.CheckIn(“Administravily Check in”);
- newpage.File.Publish(“Administravily Published”);
- //set wellcome.aspx as default page.
- pWeb.DefaultPage = newpage.File;
- pWeb.Update();
- //delete if tempfile is exists.
- if (tempPage != null)
- {
- tempPage.ListItem.Delete();
- }
- pWeb.Update();
- }
Filed under: Sharepoint 2010 Tagged: deployment, Feature Reciever, MyMasters, Page, Sharepoint 2010, solution, Webpart, wellcome, XsltListViewWebPart