http://code.msdn.microsoft.com/office/SharePoint-2013-Create-9bfa6f5c
vs2012->file->new->project c# ->office/SharePoint->apps->apps for SharePoint 2013-> "SP_Publishing_js"
vs2012->file->new->project c# ->office/SharePoint->apps->apps for SharePoint 2013-> "SP_Publishing_js"
Click on 'Ok' button
Click on 'Validate' button
Click on 'Sign in'
Now click on 'Finish' button
SP_Publishing_js -> Pages -> open 'Default.aspx'
Add below 'sp.publishing.js' javascript reference in 'PlaceHolderAdditionalPageHead'
The SP.Publishing.js file. This file is provided by SharePoint Server,
And has been added as a script link in the Default.aspx page,
Because that enables the script in App.js to use SP.Publishing classes.
<script type="text/javascript" src="/_layouts/15/sp.publishing.js"></script>
And add below div in 'PlaceHolderMain'
<asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server">
<div>
<p id="message">
initializing...
</p>
</div>
<div>
<input id="CreatePage" type="button" value="Create New Publishing
Page" />
<a id="linkToPage"></a>
</div>
</asp:Content>
SP_Publishing_js -> Scripts -> open 'App.js'
And add below javascript
'use
strict';
var context;
var web;
var pubWeb;
var pageInfo;
var newPage;
var listItem;
var user;
context
= SP.ClientContext.get_current();
user
= context.get_web().get_currentUser();
$(document).ready(function () {
web = context.get_web();
$('#CreatePage').click(function () { createPage(); });
getUserName();
});
function getUserName() {
context.load(user);
context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail);
}
function onGetUserNameSuccess() {
$('#message').text('Hello ' + user.get_title());
}
function onGetUserNameFail(sender, args) {
alert('Failed
to get user name. Error:' + args.get_message());
}
function createPage() {
context.load(web);
context.executeQueryAsync(
function () {
var hostUrl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
var hostcontext = new SP.AppContextSite(context, hostUrl);
web = hostcontext.get_web();
pubWeb =
SP.Publishing.PublishingWeb.getPublishingWeb(context, web);
context.load(web);
context.load(pubWeb);
context.executeQueryAsync(
function () {
pageInfo = new SP.Publishing.PublishingPageInformation();
newPage =
pubWeb.addPublishingPage(pageInfo);
context.load(newPage);
context.executeQueryAsync(
function () {
listItem = newPage.get_listItem();
context.load(listItem);
context.executeQueryAsync(
function () {
var link = document.getElementById("linkToPage");
link.setAttribute("href", web.get_url() + "/Pages/" + listItem.get_fieldValues().FileLeafRef);
link.innerText = "Go to new page!";
},
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 getQueryStringParameter(paramToRetrieve) {
var params =
document.URL.split("?")[1].split("&");
var strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == paramToRetrieve)
return singleParam[1];
}
}
SP_Publishing_js -> AppManifest.xml -> select 'Permission' Tab
Set web, site collection to 'FullControl' permission
SP_Publishing_js -> Deploy
Now it is asking 'Do you trust SP_Publishing_js?'
Click on 'Trust It'
Click on 'Create New Publishing Page' button
Now a page has been created in 'Pages' Library (if 'Page' Library is not their we need to activate publishing feature)
Thank You
Wonderful post!!Thank you for sharing this info with us.
ReplyDeleteMicrosoft Azure DevOps Online Training