1 taxonomy.admin.inc | taxonomy_vocabulary_form_permissions($vocabulary) |
Builds a matrix of node permissions for this node type.
Parameters
$vocabulary: Fully loaded TaxonomyVocabulary object.
See also
File
- core/
modules/ taxonomy/ taxonomy.admin.inc, line 260 - Admin page callbacks for the Taxonomy module.
Code
function taxonomy_vocabulary_form_permissions($vocabulary) {
// Retrieve role names for columns.
$roles = user_roles(FALSE, NULL, TRUE);
$admin_role = config_get('system.core', 'user_admin_role');
// Note that in taxonomy_theme() the 'node_type_form_permissions' theme
// callback reuses theme_user_admin_permissions(), to make it identical to
// the user module permissions page.
$form['#theme'] = array('node_type_form_permissions');
// Wrap the table in a form element to make margins match other form elements.
$form['#theme_wrappers'] = array('form_element');
$form['roles'] = array(
'#type' => 'value',
'#value' => $roles,
);
// Render role/permission overview:
$options = array();
$permissions = taxonomy_vocabulary_list_permissions($vocabulary);
$status = array();
foreach ($permissions as $perm => $perm_item) {
// Fill in default values for the permission.
$perm_item += array(
'description' => '',
'restrict access' => FALSE,
'warning' => '',
);
$options[$perm] = '';
$parts = explode(': ', $perm_item['title']);
$form['permission'][$perm] = array(
'#type' => 'item',
'#markup' => $parts[1],
'#description' => theme('user_permission_description', array('permission_item' => $perm_item)),
);
foreach ($roles as $role_name => $role) {
// Builds arrays for checked boxes for each role. Always select the Admin
// role on new forms.
if (in_array($perm, $role->permissions) || (!$vocabulary->machine_name && $role->name == $admin_role)) {
$status[$role_name][] = $perm;
}
}
}
// Have to build checkboxes here after checkbox arrays are built.
foreach ($roles as $role_name => $role) {
$form['checkboxes'][$role_name] = array(
'#type' => 'checkboxes',
'#options' => $options,
'#default_value' => isset($status[$role_name]) ? $status[$role_name] : array(),
'#attributes' => array('class' => array('role-' . $role_name)),
);
$form['role_names'][$role_name] = array(
'#markup' => check_plain($role->label),
'#description' => filter_xss_admin($role->description),
'#tree' => TRUE,
);
}
$form['#attached']['js'][] = backdrop_get_path('module', 'user') . '/js/user.permissions.js';
return $form;
}