0
我有一個ribon規則來顯示或隱藏賬戶的停用按鈕。訪問JavaScript ribon /命令欄規則中的網絡資源
這是非常簡單的
if (typeof (XTC) == "undefined")
{ XTC= { __namespace: true }; }
XTC.RibbonRules = (function() {
AccountRules = {
//see if user has roles specified to have the Deactivate button enabled.
IsDeactivateEnabled: function() {
var orgName = Xrm.Page.context.getOrgUniqueName();
var validGuids;
var allowedRoles = [];
/*
put all roles needed to show Account Deactivate button here.
*/
allowedRoles.push('System Administrator');
allowedRoles.push('XTC Admin');
var userRoles = Xrm.Page.context.getUserRoles();
//user has no assigned roles...
if (userRoles.length < 1)
return false;
var matchingRoles = AccountRules.returnMatchingRoles(userRoles);
for (var x = 0; x < matchingRoles.length; x++) {
if ($.inArray(matchingRoles[x].Name, allowedRoles) != -1)
return true;
}
return false;
},
returnMatchingRoles: function (roles) {
var matches;
var serverUrl = location.protocol + '//' + location.host + '/' + Xrm.Page.context.getOrgUniqueName();
var queryUrl = serverUrl + '/XRMServices/2011/OrganizationData.svc/' + 'RoleSet?$filter=';
for (var x = 0; x < roles.length; x++) {
if (x == roles.length - 1) {
queryUrl += "RoleId eq guid'" + roles[x] + "'";
}
else {
queryUrl += "RoleId eq guid'" + roles[x] + "' or ";
}
}
$.ajax({
url: queryUrl,
type: "GET",
async: false,
contentType: "application/json; charset=utf-8",
datatype: "json",
beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); },
success: function (data, textStatus, XmlHttpRequest) {
matches = data.d;
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert('OData Select Failed: ' + textStatus + errorThrown + odataSelect);
}
});
return (matches.results.length > 0) ? matches.results : null;
}
};
return { AccountRules: AccountRules };
})();
因此,如果用戶沒有一個角色要麼兩個,按鈕被停用。
我的問題是,這不是在表單的上下文中運行,因此包括表單配置中的網絡資源不起作用。
出於某種原因,我無法弄清楚,從那裏,我有權訪問jQuery(2.1.1),但沒有其他資源。
有沒有一種方法可以將系統範圍內的Web資源包含進來,以便它可以在此代碼中使用,就像jQuery似乎是一樣?
謝謝,我以前見過這個,但我的ribon XML非常龐大,我擔心手動編輯它。我想知道是否有其他方式來做到這一點。看起來不像。 –
您可以使用Ribbon Workbench來添加庫,您不必手動編輯。請注意,如果工作臺不允許您選擇庫,因爲它不在下載的解決方案中,您仍然可以手動輸入它,只需確保包含$ webresource:前綴。 – Polshgiant
@Polshgiant 2016 beta版刪除了必須將適用的JS文件添加到功能區解決方案的要求。 ;) – Daryl