Révision c8d66f01
Ajouté par Assos Assos il y a plus de 9 ans
drupal7/sites/all/modules/admin_menu/admin_menu.map.inc | ||
---|---|---|
58 | 58 |
|
59 | 59 |
/** |
60 | 60 |
* Implements hook_admin_menu_map() on behalf of Field UI module. |
61 |
* |
|
62 |
* @todo Figure out how to fix the comment entity bundle mappings. |
|
61 | 63 |
*/ |
62 | 64 |
function field_ui_admin_menu_map() { |
63 | 65 |
$map = array(); |
64 |
foreach (entity_get_info() as $obj_type => $info) { |
|
65 |
foreach ($info['bundles'] as $bundle_name => $bundle_info) { |
|
66 |
if (isset($bundle_info['admin'])) { |
|
67 |
$arguments = array(); |
|
68 |
switch ($obj_type) { |
|
69 |
case 'comment': |
|
70 |
$fields = array(); |
|
71 |
foreach (field_info_instances($obj_type, $bundle_name) as $field) { |
|
72 |
$fields[] = $field['field_name']; |
|
73 |
} |
|
74 |
// @todo Make Comment module expose the original node type bundle, |
|
75 |
// pretty please. |
|
76 |
if (drupal_substr($bundle_name, 0, 13) == 'comment_node_') { |
|
77 |
$bundle_name = drupal_substr($bundle_name, 13); |
|
78 |
} |
|
79 |
// @todo Doesn't work yet. Why? |
|
80 |
$arguments = array( |
|
81 |
'%comment_node_type' => array($bundle_name), |
|
82 |
'%field_ui_menu' => $fields, |
|
83 |
); |
|
84 |
break; |
|
85 | 66 |
|
86 |
case 'node':
|
|
87 |
$fields = array();
|
|
88 |
foreach (field_info_instances($obj_type, $bundle_name) as $field) {
|
|
89 |
$fields[] = $field['field_name'];
|
|
90 |
} |
|
91 |
$arguments = array(
|
|
92 |
'%node_type' => array($bundle_name),
|
|
93 |
'%field_ui_menu' => $fields,
|
|
94 |
);
|
|
95 |
break;
|
|
67 |
foreach (entity_get_info() as $entity_type => $entity_info) {
|
|
68 |
if (!$entity_info['fieldable']) {
|
|
69 |
continue;
|
|
70 |
}
|
|
71 |
|
|
72 |
foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
|
|
73 |
// @see field_ui_menu()
|
|
74 |
if (!isset($bundle_info['admin'])) {
|
|
75 |
continue;
|
|
76 |
}
|
|
96 | 77 |
|
97 |
case 'taxonomy_term': |
|
98 |
$fields = array(); |
|
99 |
foreach (field_info_instances($obj_type, $bundle_name) as $field) { |
|
100 |
$fields[] = $field['field_name']; |
|
101 |
} |
|
102 |
// Map machine_name to vid. |
|
103 |
$arguments = array( |
|
104 |
'%taxonomy_vocabulary_machine_name' => array($bundle_name), |
|
105 |
'%field_ui_menu' => $fields, |
|
106 |
); |
|
107 |
break; |
|
78 |
// Check access to this bundle. |
|
79 |
$bundle_info['admin'] += array( |
|
80 |
'access callback' => 'user_access', |
|
81 |
'access arguments' => array('administer site configuration'), |
|
82 |
); |
|
83 |
if (!call_user_func_array($bundle_info['admin']['access callback'], $bundle_info['admin']['access arguments'])) { |
|
84 |
continue; |
|
85 |
} |
|
108 | 86 |
|
109 |
case 'user': |
|
110 |
$arguments = array( |
|
111 |
'%field_ui_menu' => array_keys(field_info_fields('user')), |
|
112 |
); |
|
113 |
break; |
|
87 |
if ($fields = field_info_instances($entity_type, $bundle)) { |
|
88 |
$path = $bundle_info['admin']['path']; |
|
89 |
$argument = array(); |
|
90 |
if (isset($bundle_info['admin']['bundle argument'])) { |
|
91 |
$bundle_arg = arg($bundle_info['admin']['bundle argument'], $path); |
|
92 |
$argument[$bundle_arg] = array($bundle); |
|
114 | 93 |
} |
115 |
if (!empty($arguments)) { |
|
116 |
$path = $bundle_info['admin']['path']; |
|
117 |
$map["$path/fields/%field_ui_menu"]['parent'] = "$path/fields"; |
|
118 |
$map["$path/fields/%field_ui_menu"]['arguments'][] = $arguments; |
|
94 |
$argument['%field_ui_menu'] = array_keys($fields); |
|
95 |
|
|
96 |
if (!isset($map["$path/fields/%field_ui_menu"])) { |
|
97 |
$map["$path/fields/%field_ui_menu"] = array( |
|
98 |
'parent' => "$path/fields", |
|
99 |
'arguments' => array(), |
|
100 |
); |
|
119 | 101 |
} |
102 |
$map["$path/fields/%field_ui_menu"]['arguments'][] = $argument; |
|
120 | 103 |
} |
121 | 104 |
} |
122 | 105 |
} |
106 |
|
|
123 | 107 |
return $map; |
124 | 108 |
} |
125 | 109 |
|
... | ... | |
161 | 145 |
); |
162 | 146 |
return $map; |
163 | 147 |
} |
164 |
|
Formats disponibles : Unified diff
Weekly update of contrib modules