function menu_admin_per_menu_form_alter in Menu Admin per Menu 6
Same name and namespace in other branches
- 7 menu_admin_per_menu.module \menu_admin_per_menu_form_alter()
Implementation of hook_form_alter()
File
- ./
menu_admin_per_menu.module, line 93 - menu_admin_per_menu.module Main file for the menu_admin_per_menu module.
Code
function menu_admin_per_menu_form_alter(&$form, $form_state, $form_id) {
if (isset($form['menu']['parent']) && !user_access('administer menu')) {
if ($form_id == 'menu_edit_item' && isset($form['menu']['#access']) && !$form['menu']['#access']) {
return;
}
$form['menu']['#access'] = FALSE;
$perm_menus = array();
$menus = menu_get_menus();
foreach ($menus as $name => $title) {
if (user_access('administer ' . $name . ' menu items')) {
$perm_menus[] = $name;
}
}
if (count($perm_menus) > 0 && is_array($form['menu']['parent']['#options'])) {
$has_mlid = !empty($form['menu']['mlid']['#value']);
$default_value = $form['menu']['parent']['#default_value'];
$option_keys = array_keys($form['menu']['parent']['#options']);
foreach ($option_keys as $option_key) {
list($menu, $item) = explode(':', $option_key);
if (!in_array($menu, $perm_menus)) {
unset($form['menu']['parent']['#options'][$option_key]);
if ($has_mlid && $option_key == $default_value) {
return;
}
}
}
$option_keys = array_keys($form['menu']['parent']['#options']);
if (count($option_keys) > 0) {
$form['menu']['#access'] = TRUE;
if (!$has_mlid && !in_array($default_value, $option_keys)) {
$form['menu']['parent']['#default_value'] = $option_keys[0];
}
}
}
}
}