【问题标题】:SharePoint 2010 - enable custom ribbon button only if user has permission to edit selected itemSharePoint 2010 - 仅当用户有权编辑所选项目时才启用自定义功能区按钮
【发布时间】:2013-09-20 02:55:48
【问题描述】:

我在功能区中有一个自定义操作,只有当当前用户有权编辑项目(贡献角色)时,我才需要启用该按钮。我有一个 PageComponent 来告诉 UI 是否可以处理命令,但我可以弄清楚如何在 javascript 中检查用户对某个项目的权限。

这是在我的页面组件中:

        canHandleCommand: function (commandId) {
            switch (commandId) {
                case 'Command1':
                    var ids = getSelectedIds(); // gets an array of selected ids

                    var selectionChanged = false;
                    if (ids.length != this.previousIds.length) {
                        selectionChanged = true;
                    } else {
                        for (var index in ids) {
                            if (ids[index] != this.previousIds[index]) {
                                selectionChanged = true;
                            }
                        }
                    }

                    if (selectionChanged) {
                        this.enabledStatusChecked = false;
                    }

                    this.previousIds = ids;

                    if (!this.enabledStatusChecked) {
                        this.checkIsEnabled(ids);
                    }

                    return this.isEnabled;
            }

            return false;
        },
        checkIsEnabled: function (ids) {
            this.enabledStatusChecked = true;
            this.isEnabled = false;

            if (ids.length != 1) {
                return;
            }

            var id = ids[0];

            var context = SP.ClientContext.get_current();
            var web = context.get_web();

            var list = web.get_lists().getById(SP.ListOperation.Selection.getSelectedList());
            var item = list.getItemById(id);

            context.load(item);
            context.executeQueryAsync(Function.createDelegate(this, function () {
                var contentTypeId = item.get_item('ContentTypeId').toString();
                if (!contentTypeId.lastIndexOf(Constants.InternalNormContentTypeId, 0)) {
                    this.isEnabled = true;
                    // !! need to check permissions here !!
                }
                RefreshCommandUI();
            }), Function.createDelegate(this, function () {
                RefreshCommandUI();
            }));
        },

此代码仅在选择 1 个项目并且它是指定的内容类型时才启用按钮。有人知道如何通过 javascript 检查权限吗?

【问题讨论】:

    标签: sharepoint sharepoint-2010


    【解决方案1】:

    在我看来。你有两种方法,第一种在 html/master 页面中添加标签: http://buyevich.blogspot.com/2010/08/hide-ribbon-from-visitorsanonimus-users_31.html 或创建asp控件并将其带到页面: http://dicemastersharespoint.blogspot.com/2011/02/hiding-buttonscontrols-on-sharepoint.html

    写回您的解决方案是否可行。

    最好的问候

    马丁

    【讨论】:

    • 没有。如果您知道用户在服务器上拥有什么权限,这些解决方案就会起作用。但是每次用户选择不同的项目时我都需要启用/禁用按钮(这意味着没有回发),并且我为每个项目设置了不同的权限。
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2016-08-21
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    相关资源
    最近更新 更多