#drupal #drupal-6
#drupal #drupal-6
Вопрос:
У меня есть сайт на Drupal 6 с типом узла, который имеет необязательное неограниченное значение Imagefield (Filefield / CCK). Разрешения на содержимое типа узла установлены так, чтобы все аутентифицированные пользователи могли редактировать эти узлы, что здорово. Пользователи могут редактировать узел и прикреплять изображения к Imagefield, что тоже здорово.
Однако, когда пользователь редактирует один из этих узлов, он также может редактировать / удалять изображения Imagefield, загруженные другими пользователями. Как я могу запретить пользователю редактировать и / или удалять изображения Imagefield, которые не были загружены сами по себе?
Ответ №1:
Благодаря нескольким людям на канале #drupal-support в IRC я смог получить ответ на этот вопрос. Вот пример решения на основе модуля:
function my_module_form_alter(amp;$form, amp;$form_state, $form_id) {
global $user;
switch ($form['type']['#value']) {
case "my_content_type":
if (user_access("administer nodes")) { break; }
foreach (array_keys($form['field_my_images']) as $key) {
if (!is_numeric($key)) { continue; }
if ($form['field_my_images'][$key]['#default_value']['fid']) {
if ($form['field_my_images'][$key]['#default_value']['uid'] != $user->uid) {
$form['field_my_images'][$key]['#access'] = false;
}
}
}
break;
}
}
Теперь я чувствую себя глупо, когда понимаю, что вся моя проблема заключалась в том, что я обращался, например :
$form['#node']->field_my_images
вместо:
$form['field_my_images']