You are here

function responsive_menu_form_menu_link_content_form_alter in Responsive and off-canvas menu 8.2

Same name and namespace in other branches
  1. 8.3 responsive_menu.module \responsive_menu_form_menu_link_content_form_alter()
  2. 4.4.x responsive_menu.module \responsive_menu_form_menu_link_content_form_alter()
  3. 4.0.x responsive_menu.module \responsive_menu_form_menu_link_content_form_alter()
  4. 4.1.x responsive_menu.module \responsive_menu_form_menu_link_content_form_alter()
  5. 4.3.x responsive_menu.module \responsive_menu_form_menu_link_content_form_alter()

Implements hook_form_FORM_ID_alter() for menu_link_content_form().

See also

\Drupal\menu_link_content\Form\MenuLinkContentForm

File

./responsive_menu.module, line 260
Contains procedural code.

Code

function responsive_menu_form_menu_link_content_form_alter(&$form, FormStateInterface $form_state) {
  $menu_link = $form_state
    ->getFormObject()
    ->getEntity();
  $menu_link_options = $menu_link->link
    ->first()->options ?: [];
  $flyleft = isset($menu_link_options['attributes']['flyleft']) ? TRUE : FALSE;

  // Determine whether this menu item has a grandparent which means that this
  // menu item is of depth 3 or greater and therefore is able to have the
  // flyleft checkbox shown.
  $build_info = $form_state
    ->getBuildInfo()['callback_object'];
  $menu_link_content = $build_info
    ->getEntity();
  $parent = $menu_link_content->parent->value;
  if (!$parent) {
    return;
  }
  $definition = \Drupal::service('plugin.manager.menu.link')
    ->hasDefinition($parent);
  if (!$definition) {
    return;
  }
  $parent_link = \Drupal::service('plugin.manager.menu.link')
    ->createInstance($parent);
  $grandparent = $parent_link
    ->getParent();
  if (!empty($grandparent)) {
    $form['flyleft'] = [
      '#type' => 'checkbox',
      '#title' => t('Fly left'),
      '#description' => t('Whether this item (and its children) should fly left instead of right'),
      '#default_value' => $flyleft,
    ];
    $form['#submit'][] = 'responsive_menu_menu_link_content_submit';
    $form['actions']['submit']['#submit'][] = 'responsive_menu_menu_link_content_submit';
  }
}