我正在創建一個SharePoint應用程序,我想要做以下事情。如何在SharePoint 2013 Online中使用JavaScript動態創建主頁面文件?
- 在母版頁庫中,複製當前母版頁並創建新母版頁。 (因爲我們手動執行新的SharePoint Designer)。
- 在新主頁面中注入JavaScript引用並保存它。
- 將新的母版頁應用爲默認母版頁。
所有這些都應該只使用JavaScript來完成。
有人知道該怎麼辦?
感謝 user988917
我正在創建一個SharePoint應用程序,我想要做以下事情。如何在SharePoint 2013 Online中使用JavaScript動態創建主頁面文件?
所有這些都應該只使用JavaScript來完成。
有人知道該怎麼辦?
感謝 user988917
我沒有在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的好方法,您可能需要一些服務器端代碼來破解文件並注入新代碼,保存並上傳回去。
要修改Masterpages,我建議看看這兩個資源。
首先,博客文章,介紹瞭如何應用母版頁:
arichterwork.blogspot.com/2008/03/programmatically-inherit-master-page.html
例如web.MasterUrl = "/_layouts/custom.master"
下一頁上的核心對象在SharePoint的JavaScript API參考,在這種情況下,網址:
msdn.microsoft.com/EN-US/library/office/jj245288.aspx
你可以看到,masterUrl和customMasterUrl都是可用的R/W。
最後,你會想做一些基本的文件操作。下面是MSDN資源:
msdn.microsoft.com/en-us/library/jj163201.aspx#BasicOps_FileTasks
有兩個更多的挑戰。首先是關於權限:更新masterpage庫是一個高權限操作。另一個風險更大的挑戰在於,您將JS注入頁面,而JS可以被惡意使用。
如果您計劃將此方法與SharePoint的應用程序一起使用,那麼我會考慮尋找替代方法。這樣的腳本注入是不允許的。
爲了得到當前母版頁,做一個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());
});
}