function _menu_position_form_menu_edit_item_alter in Menu Position 7.2
Same name and namespace in other branches
- 6 menu_position.admin.inc \_menu_position_form_menu_edit_item_alter()
- 7 menu_position.admin.inc \_menu_position_form_menu_edit_item_alter()
Implements hook_form_menu_edit_item_alter().
This handles the edge case of another module accidentally exposing (or of a user hacking the URL to) the standard "menu link edit" form for a menu position rule's hidden menu link. We alter the form so that it is not posible for the link to be edited.
1 call to _menu_position_form_menu_edit_item_alter()
- menu_position_form_menu_edit_item_alter in ./
menu_position.module - Implements hook_form_FORM_ID_alter().
File
- ./
menu_position.admin.inc, line 62 - Provides infrequently used functions and hooks for menu_position.
Code
function _menu_position_form_menu_edit_item_alter(&$form, &$form_state) {
if ($form['mlid']['#value'] == 0) {
return;
}
// Retrieve all of the rules' mlids.
$mlids = db_query('SELECT mlid FROM {menu_position_rules} WHERE mlid = :mlid ORDER BY weight, rid', array(
':mlid' => (int) $form['mlid']['#value'],
))
->fetchAll();
if (!empty($mlids)) {
// If the form hasn't been submitted, display a warning.
if (empty($form_state['input'])) {
drupal_set_message(t('This menu item cannot be edited.'), 'warning');
}
// Disable all the normal form elements.
foreach (array(
'link_title',
'description',
'enabled',
'expanded',
'parent',
'weight',
) as $key) {
$form[$key]['#disabled'] = TRUE;
}
// Remove the validator.
$key = array_search('menu_edit_item_validate', $form['#validate']);
if ($key !== FALSE) {
unset($form['#validate'][$key]);
}
// Replace the standard submit handler with our own.
$key = array_search('menu_edit_item_submit', $form['#submit']);
if ($key !== FALSE) {
$form['#submit'][$key] = 'menu_position_edit_item_submit';
}
// Replace the Save button with a Cancel button.
unset($form['actions']['submit']);
$form['actions']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
);
}
}