我正在创建一个 SharePoint 应用程序,我想执行以下操作。
- 在母版页
- 样式库中,复制当前母版页并创建新的母版页。(就像我们手动执行新的SharePoint Designer一样。
- 在新母版页中注入 JavaScript 引用并保存。 应用新母版页
- 作为默认母版页。
所有这些都应该只使用 JavaScript 来完成。
有人知道该怎么做吗?
谢谢用户988917
若要获取当前母版页,请向以下终结点发出 GET 请求
/_api/Web?$select=CustomMasterUrl,MasterUrl
若要更改当前母版页,
function MastePageChange() {
var clientcontext;
var cweb;
var customMasterURL = '/_catalogs/masterpage/NewMasterPage.master';
clientcontext = new SP.ClientContext.get_current();
cweb = clientcontext.get_web();
cweb.set_customMasterUrl(masterPageUrl);
cweb.set_masterUrl(masterPageUrl);
cweb.update();
clientcontext.executeQueryAsync(function() {
alert("Master Page has been changed successfully n" + customMasterURL);
}, function(sender, args) {
alert("Error: " + args.get_message());
});
}
我没有在 JS 中尝试过这个,但通常有等效的方法,所以查看服务器端代码会有所帮助。 http://blog.vegaitsourcing.rs/2008/10/programmatically-uploading-master-pages.html 这里还有如何使用JS上传文件的示例(我相信仅适用于HTML5浏览器(http://msdn.microsoft.com/en-us/library/jj163201.aspx
棘手的事情将是文件操作(注入 JS(......我看不到纯粹从JS中做到这一点的好方法,您可能需要一些服务器端代码来破解文件并注入新代码,保存它,然后将其上传回去。
要修改母版页,我建议查看这两个资源。
首先,介绍如何应用母版页的博客文章:
arichterwork.blogspot.com/2008/03/programmatically-inherit-master-page.html
例如 web.MasterUrl = "/_layouts/custom.master"
接下来是关于核心对象的 SharePoint JavaScript API 参考,在本例中为 Web:
msdn.microsoft.com/EN-US/library/office/jj245288.aspx
您可以看到 masterUrl 和 customMasterUrl 都可用 R/W。
最后,您需要执行一些基本的文件操作。以下是 MSDN 资源:
msdn.microsoft.com/en-us/library/jj163201.aspx#BasicOps_FileTasks
还有两个挑战。第一个是关于权限:更新母版页库是一项高特权操作。这里另一个风险更大的挑战是,您将JS注入页面,并且JS可以被恶意使用。
如果您计划将此方法与 SharePoint 相关应用程序一起使用,我会考虑寻找替代方法。不允许像这样的脚本注入。