Мои комментарии к статьям имеют обязательный Fivestar рейтинг поле под названием «Звезды», и я спрятал его с помощью следующего пользовательского модуля (см: https://drupal.stackexchange.com/questions/90629/how-to-hide-rating-field-when-adding-comment-to-own-node):Как скрыть поле Fivestar при редактировании комментария от другого пользователя?
function hiderating_form_alter(&$form, &$form_state, $form_id) {
global $user;
if ($form_id == "comment_node_article_form") {
if ($form['#node']->uid == $user->uid) {
unset($form['field_stars']);
}
}
}
Как администратор, я имею разрешение на редактирование комментарии других пользователей. Предположим, что пользователь прокомментировал свою статью. Это означает, что ему не нужно было устанавливать поле «Звезды» из-за вышеприведенного кода. Но когда я пытаюсь отредактировать этот комментарий, я должен выбрать значение для «Звезды». do.
Как я могу предотвратить это? Достаточно проверить, что uid от пользователя, который написал комментарий, отличается от uid от пользователя, который редактирует комментарий. Наконец, отметьте, что обязательство выбирать звезды, когда я оставляю новый комментарий, должно быть сохранено!
Edit: Я попытался следующий код:
function hiderating_form_alter(&$form, &$form_state, $form_id) {
global $user;
$comment->uid = $form_state['values']['uid'];
if ($form_id == "comment_node_article_form") {
if ($comment->uid != $user->uid) {
unset($form['field_stars']);
}
}
}
Видимо, $form_state['values']
не определена, потому что я получаю следующее сообщение об ошибке:
"Notice: Undefined index: values in hiderating_form_alter()".
Что правильно код?
'$ form_state ['values']' присутствует только после отправки. Не следует отметить, хотите ли вы удалить поле 'field_stars', если пользователь является владельцем комментария или администратором (как определено« любым пользователем, имеющим роль администратора »)? – bishop
@bishop: 'field_stars' не должен отображаться, когда uid от пользователя, который написал комментарий, отличается от uid пользователя, который редактирует комментарий. Вышесказанное достаточно, потому что единственными пользователями, которые могут редактировать комментарии других пользователей, являются те, у которых есть роль администратора. – Jeroen
Таким образом, проблема сводится к необходимости использования объекта комментария. Я не рядом со своей рабочей станцией, чтобы что-то попробовать, поэтому я не хочу давать правильный ответ, который я не могу проверить. У вас есть доступ к '$ form ['# node'] -> comment'? Если нет, можете ли вы сбросить и отправить '$ form'? – bishop