如何在SharePoint 2013 Online中使用JavaScript动态创建母版页文件?

时间:2013-10-04 12:19:30

标签: javascript sharepoint master-pages sharepoint-2013 sharepoint-apps

我正在创建一个我想要执行的SharePoint应用程序。

  1. 在母版页库中,复制当前母版页并创建新母版页。 (因为我们手动执行新的SharePoint Designer。)
  2. 在新的母版页中注入JavaScript参考并保存。
  3. 将新母版页应用为默认母版页。
  4. 所有这些都应该只使用JavaScript来完成。

    有人知道该怎么做吗?

    由于 user988917

3 个答案:

答案 0 :(得分:1)

要获取当前母版页,请向后续终点发出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());
});
}

答案 1 :(得分:0)

我没有在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做到这一点,你可能需要一些服务器端代码来破解文件和注入新代码,保存然后再上传。

答案 2 :(得分:0)

要修改主页,我建议您查看这两个资源。

首先,一篇解释如何应用母版页的博客文章:

arichterwork.blogspot.com/2008/03/programmatically-inherit-master-page.html

E.g。 web.MasterUrl = "/_layouts/custom.master"

接下来是关于Core对象的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应用程序一起使用,我会考虑寻找替代方法。不允许这样的脚本注入。