2

我正在創建一個SharePoint應用程序,我想要做以下事情。如何在SharePoint 2013 Online中使用JavaScript動態創建主頁面文件?

  1. 在母版頁庫中,複製當前母版頁並創建新母版頁。 (因爲我們手動執行新的SharePoint Designer)。
  2. 在新主頁面中注入JavaScript引用並保存它。
  3. 將新的母版頁應用爲默認母版頁。

所有這些都應該只使用JavaScript來完成。

有人知道該怎麼辦?

感謝 user988917

回答

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的好方法,您可能需要一些服務器端代碼來破解文件並注入新代碼,保存並上傳回去。

0

要修改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的應用程序一起使用,那麼我會考慮尋找替代方法。這樣的腳本注入是不允許的。

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()); 
}); 
} 
相關問題