Как получить AllowedContentTypes набора документов в JSOM sharepoint с полным идентификатором, а не родительским. в этом случае мы получим разрешенный тип содержимого внутри do c set, но идентификатор родителя мы получим не реальный. мы получим идентификатор типа контента, например '0x01010A', а не полный с guid и шестнадцатеричным, что я хотел сказать, когда мы используем код ниже:
<script type="text/javascript">
// ExecuteOrDelayUntilScriptLoaded(getCT, "sp.js");
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() {
SP.SOD.executeFunc('sp.documentmanagement.js', 'SP.DocumentSet.DocumentSet', function() {
var docSetUrl = getQueryStringValue("RootFolder"); //<- Doc Set Url
getDocumentSetContentTypes(docSetUrl,
function(ctIds)
{
//print content type ids
ctIds.get_data().forEach(function(ctId){
console.log(ctId.get_stringValue());
alert(ctId.get_stringValue());
});
},
logError);
});
});
function logError(sender,args){
console.log(args.get_message());
}
function getFolder(url,success,error)
{
var ctx = SP.ClientContext.get_current();
var folder = ctx.get_web().getFolderByServerRelativeUrl(url);
ctx.load(folder,'ListItemAllFields');
ctx.executeQueryAsync(
function(){
success(folder);
},
error);
}
function getDocumentSetContentTypes(folderUrl,success,error)
{
getFolder(folderUrl,
function(folder)
{
var folderItem = folder.get_listItemAllFields();
var ct = folderItem.get_contentType();
var ctx = folder.get_context();
var template = SP.DocumentSet.DocumentSetTemplate.getDocumentSetTemplate(ct);
var ctIds = template.get_allowedContentTypes();
ctx.load(ctIds);
ctx.executeQueryAsync(
function(){
success(ctIds);
},
error);
},
error);
}
function getQueryStringValue (key) {
return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(key).replace
(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
</script>