xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Дублируем настройки разрешений на административной странице своего модуля

Опубликовано в

Бывает полезно продублировать настройки определённого разрешения на административной странице своего модуля. Например так сделано в модуле Filter, в форме редактирования текстового формата:

Форма настроек текстового формата

Делается это так:

/**
 * Форма настроек
 */
function mymodule_form($form, &$form_state, $template = null) {
    // ...
    $form['roles'] = array(
        '#type' => 'checkboxes',
        '#title' => t('Roles'),
        '#options' => array_map('check_plain', user_roles()),
        '#default_value' => array_keys(user_roles(FALSE, 'имя пермишенна')),
    );
    return $form;
}
 
/**
 * Сохранение настроек
 */
function mymodule_form_submit($form, &$form_state) {
    // ...
    foreach ($form_state['values']['roles'] as $rid => $enabled) {
        user_role_change_permissions($rid, array('имя пермишенна' => $enabled));
    }
}

Вместо имя пермишенна нужно прописать системное имя разрешения, настройки которого необходимо сохранить.

Написанное актуально для Drupal 7.x
Похожие записи

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании