Я пытаюсь исправить свой код, опубликованный для этого вопроса VisualForce: преобразование возврата каретки в разрывы строк HTML в длинном текстовом поле
Как вы можете видеть в этой публикации, для страницы Visualforce есть настраиваемый контроллер, содержащий вкладки для Case. Единственный способ перечислить CaseComments - использовать пользовательский Apex. Контроллер выполняет простой запрос, чтобы получить все CaseComments для текущего дела.
Я хочу отображать ссылку «Изменить» только в том случае, если текущий пользователь имеет разрешение на редактирование экземпляра конкретного комментария к делу.
Я нашел здесь хороший блог о динамическом рендеринге компонентов на основе безопасности на уровне объекта: http://forcearchitects.deliveredinnovation.com/2011/02/05/render-visualforce-components-dynamically-based-on-object-level-security/
Основываясь на этой публикации, я попытался использовать
$ObjectType.CaseComment.updateable
Как в следующем:
<apex:repeat value="{!comments}" var="c">
<tr>
<td class="commentsActionColumn">
<!-- open the case comment for edit -->
<apex:outputLink title=""
rendered="{!$ObjectType.CaseComment.updateable}"
value="/{!c.id}/e?parent_id={!c.parentId}&retURL=/apex/{!$CurrentPage.Name}%3Fid={!case.id}" style="font-weight:bold">Edit</apex:outputLink>
</td>
<td>
<!-- display the case comment formatted using the apex outputField -->
<div class="commentTdClass">
<apex:outputField value="{!c.commentbody}"></apex:outputField>
</div>
</td>
</tr>
</apex:repeat>
К сожалению, тест на возможность обновления находится на уровне объекта, поэтому он возвращает true для всех CaseComment, если текущий пользователь имеет разрешение на редактирование любого CaseComment.
Мне нужна проверка уровня записи, чтобы отображать действие «Изменить» только в том случае, если конкретная строка может быть изменена текущим пользователем.
Любые идеи?
Обновить Перечитывая свой вопрос, я вижу, что он не так ясен, как должен быть.
Когда я перебираю набор CaseComment для данного Case, мне нужно знать, может ли текущий пользователь безопасно редактировать конкретный CaseComment, не видя «у вас нет страницы разрешений». Этот тест должен проводиться на уровне записи CaseComment за CaseComment, потому что в любом конкретном Case будет много CaseComments, все из которых внесены разными пользователями.