You are here

function micon_menu_form_node_form_alter in Micon 8

Same name and namespace in other branches
  1. 2.x micon_menu/micon_menu.module \micon_menu_form_node_form_alter()

Implements hook_form_BASE_FORM_ID_alter().

File

micon_menu/micon_menu.module, line 70
Contains micon_menu.module.

Code

function micon_menu_form_node_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
  if (function_exists('menu_ui_form_node_form_alter')) {
    menu_ui_form_node_form_alter($form, $form_state, $form_id);
    if (isset($form['menu'])) {
      $node = $form_state
        ->getFormObject()
        ->getEntity();
      $defaults = menu_ui_get_menu_link_defaults($node);
      $options = [];
      if ($defaults['entity_id']) {
        $menu = MenuLinkContent::load($defaults['entity_id']);
        $options = $menu
          ->get('link')
          ->first()
          ->get('options')
          ->getValue();
      }
      $config = \Drupal::config('micon_menu.config');
      $form['menu']['link']['title']['#weight'] = -2;
      $form['menu']['link']['options']['#tree'] = TRUE;
      $form['menu']['link']['options']['#weight'] = -1;
      $form['menu']['link']['options']['attributes']['#tree'] = TRUE;
      $form['menu']['link']['options']['attributes']['data-icon'] = [
        '#type' => 'micon',
        '#title' => t('Icon'),
        '#default_value' => isset($options['attributes']['data-icon']) ? $options['attributes']['data-icon'] : NULL,
        '#packages' => $config
          ->get('packages'),
        '#access' => \Drupal::currentUser()
          ->hasPermission('use micon link'),
      ];
      foreach (array_keys($form['actions']) as $action) {
        if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
          if (($key = array_search('menu_ui_form_node_form_submit', $form['actions'][$action]['#submit'])) !== FALSE) {
            $form['actions'][$action]['#submit'][$key] = 'micon_menu_menu_ui_form_node_form_submit';
          }
        }
      }
    }
  }
}