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

10.03.2011

Бывает полезно продублировать настройки определённого разрешения на административной странице своего модуля. Например так сделано в модуле 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
Похожие записи

Добавить комментарий