SharePoint 2010 - включите пользовательскую кнопку ленты, только если у пользователя есть разрешение на редактирование выбранного элемента - PullRequest
3 голосов
/ 14 июля 2011

У меня есть настраиваемое действие на ленте, и мне нужно активировать кнопку только в том случае, если текущий пользователь имеет разрешение на редактирование элемента (роль Contribute). У меня есть PageComponent, чтобы сказать пользовательскому интерфейсу, если команда может быть обработана, но я могу выяснить, как проверить права пользователя для элемента в 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?

1 Ответ

1 голос
/ 14 июля 2011

с моей точки зрения.У вас есть два способа, первый добавить тег на html / master page: 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

Напишите, возможно ли это для вашего решения или нет.

С наилучшими пожеланиями

Мартин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...