function field_ui_admin_menu_map in Administration menu 7.3
Same name and namespace in other branches
- 8.3 admin_menu.map.inc \field_ui_admin_menu_map()
Implements hook_admin_menu_map() on behalf of Field UI module.
@todo Figure out how to fix the comment entity bundle mappings.
File
- ./
admin_menu.map.inc, line 64 - Implements hook_admin_menu_map() on behalf of core modules.
Code
function field_ui_admin_menu_map() {
$map = array();
foreach (entity_get_info() as $entity_type => $entity_info) {
if (!$entity_info['fieldable']) {
continue;
}
foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
// @see field_ui_menu()
if (!isset($bundle_info['admin'])) {
continue;
}
// Check access to this bundle.
$bundle_info['admin'] += array(
'access callback' => 'user_access',
'access arguments' => array(
'administer site configuration',
),
);
$access_arguments = $bundle_info['admin']['access arguments'];
if (isset($bundle_info['admin']['real path'])) {
$menu_item = menu_get_item($bundle_info['admin']['real path']);
if (isset($menu_item['map'])) {
$access_arguments = menu_unserialize(serialize($access_arguments), $menu_item['map']);
}
}
if (!call_user_func_array($bundle_info['admin']['access callback'], $access_arguments)) {
continue;
}
if ($fields = field_info_instances($entity_type, $bundle)) {
$path = $bundle_info['admin']['path'];
$argument = array();
if (isset($bundle_info['admin']['bundle argument'])) {
$bundle_arg = arg($bundle_info['admin']['bundle argument'], $path);
$argument[$bundle_arg] = array(
$bundle,
);
}
$argument['%field_ui_menu'] = array_keys($fields);
if (!isset($map["{$path}/fields/%field_ui_menu"])) {
$map["{$path}/fields/%field_ui_menu"] = array(
'parent' => "{$path}/fields",
'arguments' => array(),
);
}
$map["{$path}/fields/%field_ui_menu"]['arguments'][] = $argument;
}
}
}
return $map;
}