コード例 #1
0
ファイル: PageExtensions.cs プロジェクト: jimblanchard/PnP
        /// <summary>
        /// Applies a layout to a wiki page
        /// </summary>
        /// <param name="web">Site to be processed - can be root web or sub site</param>
        /// <param name="folder">System name of the wiki page library - typically sitepages</param>
        /// <param name="layout">Wiki page layout to be applied</param>
        /// <param name="page">Name of the page that will get a new wiki page layout</param>
        /// <exception cref="System.ArgumentException">Thrown when folder or page is a zero-length string or contains only white space</exception>
        /// <exception cref="System.ArgumentNullException">Thrown when folder or page is null</exception>
        public static void AddLayoutToWikiPage(this Web web, string folder, WikiPageLayout layout, string page)
        {
            if (string.IsNullOrEmpty(folder))
            {
                throw (folder == null)
                  ? new ArgumentNullException("folder")
                  : new ArgumentException(CoreResources.Exception_Message_EmptyString_Arg, "folder");
            }

            if (string.IsNullOrEmpty(page))
            {
                throw (page == null)
                  ? new ArgumentNullException("page")
                  : new ArgumentException(CoreResources.Exception_Message_EmptyString_Arg, "page");
            }

            string html = "";
            switch (layout)
            {
                case WikiPageLayout.OneColumn:
                    html = WikiPage_OneColumn;
                    break;
                case WikiPageLayout.OneColumnSideBar:
                    html = WikiPage_OneColumnSideBar;
                    break;
                case WikiPageLayout.TwoColumns:
                    html = WikiPage_TwoColumns;
                    break;
                case WikiPageLayout.TwoColumnsHeader:
                    html = WikiPage_TwoColumnsHeader;
                    break;
                case WikiPageLayout.TwoColumnsHeaderFooter:
                    html = WikiPage_TwoColumnsHeaderFooter;
                    break;
                case WikiPageLayout.ThreeColumns:
                    html = WikiPage_ThreeColumns;
                    break;
                case WikiPageLayout.ThreeColumnsHeader:
                    html = WikiPage_ThreeColumnsHeader;
                    break;
                case WikiPageLayout.ThreeColumnsHeaderFooter:
                    html = WikiPage_ThreeColumnsHeaderFooter;
                    break;
                default:
                    break;
            }

            web.AddHtmlToWikiPage(folder, html, page);
        }
コード例 #2
0
ファイル: PageExtensions.cs プロジェクト: jimblanchard/PnP
        /// <summary>
        /// Adds a wiki page by Url
        /// </summary>
        /// <param name="web">The web to process</param>
        /// <param name="serverRelativePageUrl">Server relative URL of the wiki page to process</param>
        /// <param name="html">HTML to add to wiki page</param>
        /// <exception cref="System.ArgumentException">Thrown when serverRelativePageUrl is a zero-length string or contains only white space</exception>
        /// <exception cref="System.ArgumentNullException">Thrown when serverRelativePageUrl is null</exception>
        public static void AddWikiPageByUrl(this Web web, string serverRelativePageUrl, string html = null)
        {
            if (string.IsNullOrEmpty(serverRelativePageUrl))
            {
                throw (serverRelativePageUrl == null)
                  ? new ArgumentNullException("serverRelativePageUrl")
                  : new ArgumentException(CoreResources.Exception_Message_EmptyString_Arg, "serverRelativePageUrl");
            }

            string folderName = serverRelativePageUrl.Substring(0, serverRelativePageUrl.LastIndexOf("/"));
            Folder folder = web.GetFolderByServerRelativeUrl(folderName);
            File file = folder.Files.AddTemplateFile(serverRelativePageUrl, TemplateFileType.WikiPage);

            web.Context.ExecuteQuery();
            if (html != null)
            {
                web.AddHtmlToWikiPage(serverRelativePageUrl, html);
            }
        }
コード例 #3
0
ファイル: PageExtensions.cs プロジェクト: jimblanchard/PnP
        /// <summary>
        /// Applies a layout to a wiki page
        /// </summary>
        /// <param name="web">Site to be processed - can be root web or sub site</param>
        /// <param name="layout">Wiki page layout to be applied</param>
        /// <param name="serverRelativePageUrl"></param>
        /// <exception cref="System.ArgumentException">Thrown when serverRelativePageUrl is a zero-length string or contains only white space</exception>
        /// <exception cref="System.ArgumentNullException">Thrown when serverRelativePageUrl is null</exception>
        public static void AddLayoutToWikiPage(this Web web, WikiPageLayout layout, string serverRelativePageUrl)
        {
            if (string.IsNullOrEmpty(serverRelativePageUrl))
            {
                throw (serverRelativePageUrl == null)
                  ? new ArgumentNullException("serverRelativePageUrl")
                  : new ArgumentException(CoreResources.Exception_Message_EmptyString_Arg, "serverRelativePageUrl");
            }

            string html = "";
            switch (layout)
            {
                case WikiPageLayout.OneColumn:
                    html = WikiPage_OneColumn;
                    break;
                case WikiPageLayout.OneColumnSideBar:
                    html = WikiPage_OneColumnSideBar;
                    break;
                case WikiPageLayout.TwoColumns:
                    html = WikiPage_TwoColumns;
                    break;
                case WikiPageLayout.TwoColumnsHeader:
                    html = WikiPage_TwoColumnsHeader;
                    break;
                case WikiPageLayout.TwoColumnsHeaderFooter:
                    html = WikiPage_TwoColumnsHeaderFooter;
                    break;
                case WikiPageLayout.ThreeColumns:
                    html = WikiPage_ThreeColumns;
                    break;
                case WikiPageLayout.ThreeColumnsHeader:
                    html = WikiPage_ThreeColumnsHeader;
                    break;
                case WikiPageLayout.ThreeColumnsHeaderFooter:
                    html = WikiPage_ThreeColumnsHeaderFooter;
                    break;
                default:
                    break;
            }

            web.AddHtmlToWikiPage(serverRelativePageUrl, html);
        }
コード例 #4
0
ファイル: PageExtensions.cs プロジェクト: BNATENSTEDT/PnP
        /// <summary>
        /// Applies a layout to a wiki page
        /// </summary>
        /// <param name="web">Site to be processed - can be root web or sub site</param>
        /// <param name="folder">System name of the wiki page library - typically sitepages</param>
        /// <param name="layout">Wiki page layout to be applied</param>
        /// <param name="page">Name of the page that will get a new wiki page layout</param>
        public static void AddLayoutToWikiPage(this Web web, string folder, WikiPageLayout layout, string page)
        {
            string html = "";
            switch (layout)
            {
                case WikiPageLayout.OneColumn:
                    html = WikiPage_OneColumn;
                    break;
                case WikiPageLayout.OneColumnSideBar:
                    html = WikiPage_OneColumnSideBar;
                    break;
                case WikiPageLayout.TwoColumns:
                    html = WikiPage_TwoColumns;
                    break;
                case WikiPageLayout.TwoColumnsHeader:
                    html = WikiPage_TwoColumnsHeader;
                    break;
                case WikiPageLayout.TwoColumnsHeaderFooter:
                    html = WikiPage_TwoColumnsHeaderFooter;
                    break;
                case WikiPageLayout.ThreeColumns:
                    html = WikiPage_ThreeColumns;
                    break;
                case WikiPageLayout.ThreeColumnsHeader:
                    html = WikiPage_ThreeColumnsHeader;
                    break;
                case WikiPageLayout.ThreeColumnsHeaderFooter:
                    html = WikiPage_ThreeColumnsHeaderFooter;
                    break;
                default:
                    break;
            }

            web.AddHtmlToWikiPage(folder, html, page);
        }
コード例 #5
0
        /// <summary>
        /// Adds a wiki page by Url
        /// </summary>
        /// <param name="web">The web to process</param>
        /// <param name="serverRelativePageUrl">Server relative URL of the wiki page to process</param>
        /// <param name="pageLayoutUrl">Server relative URL of the publishing page layout</param>
        /// <param name="html">HTML to add to wiki page</param>
        /// <exception cref="System.ArgumentException">Thrown when serverRelativePageUrl is a zero-length string or contains only white space</exception>
        /// <exception cref="System.ArgumentNullException">Thrown when serverRelativePageUrl is null</exception>
        public static void AddPublishingPageByUrl(this Web web, string serverRelativePageUrl, string pageLayoutUrl, string title, string html = null)
        {
            if (string.IsNullOrEmpty(serverRelativePageUrl))
            {
                throw (serverRelativePageUrl == null)
                  ? new ArgumentNullException("serverRelativePageUrl")
                  : new ArgumentException(CoreResources.Exception_Message_EmptyString_Arg, "serverRelativePageUrl");
            }

            var context = web.Context as ClientContext;

            var list = context.Site.GetCatalog((int)ListTemplateType.MasterPageCatalog);
            var qry = new CamlQuery();
            qry.ViewXml = string.Format("<View><Query><Where><Contains><FieldRef Name=\"FileRef\"/><Value Type=\"Url\">{0}</Value></Contains></Where></Query></View>", pageLayoutUrl.Substring(pageLayoutUrl.IndexOf("_catalogs")));
            var layouts = list.GetItems(qry);
            context.Load(layouts);
            context.ExecuteQueryRetry();
            var layoutEnum = layouts.GetEnumerator();
            ListItem layoutItem = null;
            while (layoutEnum.MoveNext()) {
                layoutItem = layoutEnum.Current;
                break;
            }

            PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(context, web);
            context.Load(publishingWeb);

            int idx = serverRelativePageUrl.LastIndexOf('/');
            string folderUrl = serverRelativePageUrl.Substring(0, idx);
            string pageName = serverRelativePageUrl.Substring(idx + 1);

            Folder folder = web.GetFolderByServerRelativeUrl(folderUrl);

            PublishingPageInformation publishingPageInfo = new PublishingPageInformation();
            publishingPageInfo.Folder = folder;
            publishingPageInfo.Name = pageName;
            publishingPageInfo.PageLayoutListItem = layoutItem;

            PublishingPage publishingPage = publishingWeb.AddPublishingPage(publishingPageInfo);

            publishingPage.ListItem["Title"] = title;
            publishingPage.ListItem.Update();
            context.ExecuteQueryRetry();
            if (!string.IsNullOrEmpty(html))
            {
                web.AddHtmlToWikiPage(serverRelativePageUrl, html);
            }

            publishingPage.ListItem.File.CheckIn(string.Empty, CheckinType.MajorCheckIn);
            publishingPage.ListItem.File.Publish(string.Empty);

            context.ExecuteQueryRetry();
        }
コード例 #6
0
ファイル: PageExtensions.cs プロジェクト: JohnKozell/PnP
        public static void AddWikiPageByUrl(this Web web, string serverRelativePageUrl, string html = null)
        {
            string folderName = serverRelativePageUrl.Substring(0, serverRelativePageUrl.LastIndexOf("/"));
            Folder folder = web.GetFolderByServerRelativeUrl(folderName);
            File file = folder.Files.AddTemplateFile(serverRelativePageUrl, TemplateFileType.WikiPage);

            web.Context.ExecuteQuery();
            if (html != null)
            {
                web.AddHtmlToWikiPage(serverRelativePageUrl, html);
            }
        }
コード例 #7
0
ファイル: PageExtensions.cs プロジェクト: JohnKozell/PnP
        public static void AddLayoutToWikiPage(this Web web, WikiPageLayout layout, string serverRelativePageUrl)
        {

            string html = "";
            switch (layout)
            {
                case WikiPageLayout.OneColumn:
                    html = WikiPage_OneColumn;
                    break;
                case WikiPageLayout.OneColumnSideBar:
                    html = WikiPage_OneColumnSideBar;
                    break;
                case WikiPageLayout.TwoColumns:
                    html = WikiPage_TwoColumns;
                    break;
                case WikiPageLayout.TwoColumnsHeader:
                    html = WikiPage_TwoColumnsHeader;
                    break;
                case WikiPageLayout.TwoColumnsHeaderFooter:
                    html = WikiPage_TwoColumnsHeaderFooter;
                    break;
                case WikiPageLayout.ThreeColumns:
                    html = WikiPage_ThreeColumns;
                    break;
                case WikiPageLayout.ThreeColumnsHeader:
                    html = WikiPage_ThreeColumnsHeader;
                    break;
                case WikiPageLayout.ThreeColumnsHeaderFooter:
                    html = WikiPage_ThreeColumnsHeaderFooter;
                    break;
                default:
                    break;
            }

            web.AddHtmlToWikiPage(serverRelativePageUrl, html);
        }