public SPOWebPart(WebPart webPart, SPOWebPartDefinition webPartDefinition)
 {
     _webPart           = webPart;
     _webPartDefinition = webPartDefinition;
 }
Exemplo n.º 2
0
 public SPOWebPart(WebPart webPart, SPOWebPartDefinition webPartDefinition)
 {
     _webPart = webPart;
     _webPartDefinition = webPartDefinition;
 }
Exemplo n.º 3
0
        public SPOWebPartDefinition AddWebPartToWikiPage(string webPartXml, string title, int row, int col, bool addSpace)
        {
            string wikiField = (string)ListItemAllFields["WikiField"];
            XmlDocument xd = new XmlDocument();
            xd.PreserveWhitespace = true;
            xd.LoadXml(wikiField);

            // Sometimes the wikifield content seems to be surrounded by an additional div?
            XmlElement layoutsTable = xd.SelectSingleNode("div/div/table") as XmlElement;
            if (layoutsTable == null)
            {
                layoutsTable = xd.SelectSingleNode("div/table") as XmlElement;
            }

            XmlElement layoutsZoneInner = layoutsTable.SelectSingleNode(string.Format("tbody/tr[{0}]/td[{1}]/div/div", row, col)) as XmlElement;
            if (layoutsZoneInner == null)
                throw new ArgumentException("Unable to locate row and/or column to insert HTML into.");

            LimitedWebPartManager limitedWebPartManager = File.GetLimitedWebPartManager(PersonalizationScope.Shared);
            WebPartDefinition webPartDefinition = limitedWebPartManager.ImportWebPart(webPartXml);
            var wpdNew = limitedWebPartManager.AddWebPart(webPartDefinition.WebPart, "wpz", 0);
            File.Context.Load(wpdNew, w => w.Id, w => w.WebPart);
            File.Context.ExecuteQuery();

            // - space element
            XmlElement space = xd.CreateElement("p");
            XmlText text = xd.CreateTextNode(" ");
            space.AppendChild(text);

            // - wpBoxDiv
            XmlElement wpBoxDiv = xd.CreateElement("div");
            layoutsZoneInner.AppendChild(wpBoxDiv);

            if (addSpace)
            {
                layoutsZoneInner.AppendChild(space);
            }

            XmlAttribute attribute = xd.CreateAttribute("class");
            wpBoxDiv.Attributes.Append(attribute);
            attribute.Value = "ms-rtestate-read ms-rte-wpbox";
            attribute = xd.CreateAttribute("contentEditable");
            wpBoxDiv.Attributes.Append(attribute);
            attribute.Value = "false";
            // - div1
            XmlElement div1 = xd.CreateElement("div");
            wpBoxDiv.AppendChild(div1);
            div1.IsEmpty = false;
            attribute = xd.CreateAttribute("class");
            div1.Attributes.Append(attribute);
            attribute.Value = "ms-rtestate-read " + wpdNew.Id.ToString("D");
            attribute = xd.CreateAttribute("id");
            div1.Attributes.Append(attribute);
            attribute.Value = "div_" + wpdNew.Id.ToString("D");
            // - div2
            XmlElement div2 = xd.CreateElement("div");
            wpBoxDiv.AppendChild(div2);
            div2.IsEmpty = false;
            attribute = xd.CreateAttribute("style");
            div2.Attributes.Append(attribute);
            attribute.Value = "display:none";
            attribute = xd.CreateAttribute("id");
            div2.Attributes.Append(attribute);
            attribute.Value = "vid_" + wpdNew.Id.ToString("D");

            var listItem = ListItemAllFields;
            listItem["WikiField"] = xd.OuterXml;
            listItem.Update();

            var spowpd = new SPOWebPartDefinition(wpdNew);
            if (spowpd.WebPart.Title != title)
            {
                spowpd.WebPart.Title = title;
                spowpd.SaveWebPartChanges();
            }
            return spowpd;
        }
Exemplo n.º 4
0
        public SPOWebPartDefinition AddWebPartToWebPartPage(string webPartXml, string zone, int index, string title)
        {
            LimitedWebPartManager limitedWebPartManager = File.GetLimitedWebPartManager(PersonalizationScope.Shared);
            WebPartDefinition webPartDefinition = limitedWebPartManager.ImportWebPart(webPartXml);

            var wpd = limitedWebPartManager.AddWebPart(webPartDefinition.WebPart, zone, index);
            File.Context.Load(wpd, w => w.Id, w => w.WebPart);
            File.Context.ExecuteQuery();

            var spowpd = new SPOWebPartDefinition(wpd);
            if (spowpd.WebPart.Title != title)
            {
                spowpd.WebPart.Title = title;
                spowpd.SaveWebPartChanges();
            }
            return spowpd;
        }