SenseNet.Portal.Page.GetPersonalizationXml C# (CSharp) Method

GetPersonalizationXml() public static method

public static GetPersonalizationXml ( HttpContext context, Page pageNode ) : XmlDocument
context System.Web.HttpContext
pageNode Page
return System.Xml.XmlDocument
        public static XmlDocument GetPersonalizationXml(HttpContext context, Page pageNode)
        {
            XmlDocument xml = new XmlDocument();
            xml.AppendChild(xml.CreateElement("webPartZones"));

            string virtualPath = CreateVirtualPath(pageNode.Path);
            PageBase page = InstantiatePage(context, virtualPath, pageNode);

            page.PreLoad += delegate
            {
                WebPartManager wpm = WebPartManager.GetCurrentWebPartManager(page);
                WebPartZoneCollection webPartZones = wpm.Zones;

                foreach (WebPartZone zone in webPartZones)
                {
                    XmlElement zoneElement = xml.CreateElement("webPartZone");
                    XmlAttribute zoneId = xml.CreateAttribute("id");
                    zoneId.Value = zone.ID;
                    zoneElement.SetAttributeNode(zoneId);
                    xml.DocumentElement.AppendChild(zoneElement);

                    WebPartCollection webParts = zone.WebParts;

                    foreach (WebPart webPart in webParts)
                    {
                        if (!webPart.IsStatic)
                        {
                            XmlDocument xmlFragment = new XmlDocument();
                            using (StringWriter sw = new StringWriter())
                            {
                                using (XmlWriter writer = new XmlTextWriter(sw))
                                {
                                    webPart.ExportMode = WebPartExportMode.All; // Force exporting of all information
                                    wpm.ExportWebPart(webPart, writer);
                                    writer.Flush();
                                }
                                xmlFragment.LoadXml(sw.ToString());
                            }
                            zoneElement.AppendChild(xml.ImportNode(xmlFragment.FirstChild.FirstChild, true));
                        }
                    }
                }
            };

            ExecutePage(context, virtualPath, page, pageNode, true);

            return xml;
        }

Same methods

Page::GetPersonalizationXml ( HttpContext context ) : XmlDocument