自定义 Sharepoint 托管加载项的 ECB 菜单

Customize ECB menu of Sharepoint hosted add-in

如何根据权限在 Sharepoint 加载项的 ECB 菜单中隐藏某些菜单项?我的 Sharepoint 应用程序是 Sharepoint 托管的,而不是提供商托管的,因此 javascript 注入方法不起作用。

谢谢

检查用户是否为指定组成员的函数

function IsCurrentUserMemberOfGroup(groupName, OnComplete) {

        var currentContext = new SP.ClientContext.get_current();
        var currentWeb = currentContext.get_web();

        var currentUser = currentContext.get_web().get_currentUser();
        currentContext.load(currentUser);

        var allGroups = currentWeb.get_siteGroups();
        currentContext.load(allGroups);

        var group = allGroups.getByName(groupName);
        currentContext.load(group);

        var groupUsers = group.get_users();
        currentContext.load(groupUsers);

        currentContext.executeQueryAsync(OnSuccess,OnFailure);

        function OnSuccess(sender, args) {
            var userInGroup = false;
            var groupUserEnumerator = groupUsers.getEnumerator();
            while (groupUserEnumerator.moveNext()) {
                var groupUser = groupUserEnumerator.get_current();
                if (groupUser.get_id() == currentUser.get_id()) {
                    userInGroup = true;
                    break;
                }
            }  
            OnComplete(userInGroup);
        }

        function OnFailure(sender, args) {
            OnComplete(false);
        }    
}

用法

function IsCurrentUserHasContribPerms() 
{
  IsCurrentUserMemberOfGroup("Members", function (isCurrentUserInGroup) {
    if(isCurrentUserInGroup)
    {
        // The current user is in the [Members] group!
    }
  });

}
ExecuteOrDelayUntilScriptLoaded(IsCurrentUserHasContribPerms, 'SP.js');

来源自here

感谢您的帮助。最后我得到了我想要在我的页面中自定义的内容。我通过创建另一个文件覆盖了 core.js 中的 CreateMenuOption(我使用 Chrome 获取代码)。我也使用了以下 js 文件:https://spservices.codeplex.com/ 以获得已连接用户的组。