Я пытаюсь исправить свой код, опубликованный для этого вопроса 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 для всех CaseComments, если текущий пользователь имеет разрешение на редактирование любого CaseComment.
Мне нужна проверка уровня записи, чтобы показать действие «Редактировать» только в том случае, если конкретный ряд может быть изменен текущим пользователем.
Есть идеи?
Обновление Перечитывая свой вопрос, я вижу, что он не так понятен, как следовало бы.
Поскольку я перебираю набор CaseComments, для данного Case мне нужно знать, может ли текущий пользователь безопасноотредактируйте конкретный CaseComment, не видя «у вас нет страницы разрешения».Этот тест должен проводиться на основе уровня записей CaseComment на уровне записей CaseComment, поскольку в каждом конкретном случае будет много CaseComments, представленных разными пользователями