Here is a JavaScript code to achieve the above requirement-
JavaScript code to create SharePoint publishing page:
JavaScript code to change page layout, title and url of the newly created publishing page:
JavaScript code to create SharePoint publishing page:
function createPublishingPage()
{
context = SP.ClientContext.get_current();
hostUrl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
hostcontext = new SP.AppContextSite(context, hostUrl);
web = hostcontext.get_web();
newPage = pubWeb.addPublishingPage(pageInfo);
context.load(newPage);
context.executeQueryAsync(
function () {
listItem = newPage.get_listItem();
context.load(listItem);
context.executeQueryAsync(
changePublishingPage(listItem.get_fieldValues().FileLeafRef, 'MyLayout.aspx', 'newpagename');
},
function (sender, args) {
alert('Failed to get new page: ' + args.get_message());
});
},
function (sender, args) {
alert('Failed to Add Page: ' + args.get_message());
});
},
function (sender, args) {
alert('Failed to get the PublishingWeb: ' + args.get_message());
});
},
function (sender, args) {
alert('Failed to get the hosting Web: ' + args.get_message());
});
}
function changePublishingPage(pageName, pageLayoutName, newpagename) {
var site = context.get_site();
var rootWeb = site.get_rootWeb();
context.load(rootWeb, 'ServerRelativeUrl');
context.load(site);
context.executeQueryAsync(function () {
var rootUrl = rootWeb.get_serverRelativeUrl();
//fetch the layout you want to set for newly created publishing page
var pageFromDocLayout = rootWeb.getFileByServerRelativeUrl(rootUrl + "_catalogs/masterpage/" + pageLayoutName);
var pageLayoutItem = pageFromDocLayout.get_listItemAllFields();
var pageFile = rootWeb.getFileByServerRelativeUrl(rootUrl + "/Pages/" + pageName);
var pageItem = pageFile.get_listItemAllFields();
context.load(pageItem);
context.executeQueryAsync(function () {
//change page layout
var itemValue = pageItem.get_item('PublishingPageLayout');
itemValue.set_url(web.get_url() + '/_catalogs/masterpage/' + pageLayoutName);
itemValue.set_description('Some description');
//change title and url of newly created publishing page
pageItem.set_item('PublishingPageLayout', itemValue);
pageItem.set_item('Title', newpagename);
pageItem.set_item('FileLeafRef', newpagename+'.aspx');
pageItem.update();
alert('success');
}, onFail);
}, onFail);
}
No comments:
Post a Comment