<?php

function imagen_menu_form_menu_edit_item_alter(array &$form, array &$form_state) {
  list(, $link) = $form_state['build_info']['args'];
  $settings = imagen_menu_menu_settings($form['original_item']['#value']);//['menu_name'],$form['original_item']
  $data = [
    'fid' => 0,
    'style' => '',
  ];

  if (isset($link['options']['imagen_menu'])) {
    $data = $link['options']['imagen_menu'];
  }

  if (is_array($data) && empty($data['style'])) {
    $data['style'] = $settings['style'];
  }
  $form['imagen_menu'] = [
    '#type' => 'fieldset',
    '#title' => t('Image'),
    '#description' => t('Upload an image to represent this menu item.'),
  ];

  $form['imagen_menu']['imagen_menu'] = [
    '#type' => 'managed_file',
    '#title' => t('Image'),
    '#widget' => $settings['widget'],
//    '#styles' => TRUE,
    '#preview' => TRUE,
    '#parents' => ['options', 'imagen_menu'],
    '#description' => t('Available extensions: <strong>@extensions</strong>.<br />Maximum file size: <strong>@size Mb</strong>.', [
      '@size' => $settings['size'],
      '@extensions' => implode(', ', $settings['extensions']),
    ]),
    '#default_value' => $data,
    '#title_display' => 'invisible',
    '#upload_location' => 'public://imagen_menu',
    '#upload_validators' => [
      'file_validate_size' => [$settings['size'] * 1024 * 1024],
      'file_validate_extensions' => [implode(' ', $settings['extensions'])],
    ],
  ];
  $form['imagen_menu']['usar'] = [
    '#type' => 'checkbox',
    '#title' => t('Usar'),
    '#description' => t('.'),
    '#default_value' =>$settings["usar"]//implode(",",
    
  ];
  $form['imagen_menu']['width'] = [
    '#type' => 'textfield',
    '#title' => t('width'),
    '#description' => t('.'),
   '#default_value' => $settings['width'],
    
  ];
  $form['imagen_menu']['height'] = [
    '#type' => 'textfield',
    '#title' => t('height'),
    '#description' => t('.'),
    '#default_value' =>$settings["height"]//implode(",",
    
  ];
  $form['imagen_menu']['type'] = [
    '#type' => 'select',
    '#title' => t('type'),
    '#options' => [0=>'Imagén y texto en línea', 1=>'Sólo imagén',2=>'Imagén y texto abajo'],
    '#description' => t('.'),
    '#default_value' =>  $settings['type'],
    
  ];
  $form['imagen_menu']['style2'] = [
    '#type' => 'textarea',
    '#title' => t('Style'),
    '#description' => t('Esto es el estilo sobre el item del menú, es decir sobre el tag a .'),
    '#default_value' => $settings['style2'],
    
  ];

  array_unshift($form['#submit'], __FUNCTION__ . '_submit');
}

function imagen_menu_menu_settings($form) {
    $options =array();
    $settings= [
    'size' => 2,
    'style' => '',
    'widget' => 'imce',
    'extensions' => ['jpg', 'jpeg', 'png', 'gif','svg'],
  ];
    
    
    $options = unserialize(db_query('SELECT options FROM {menu_links} WHERE mlid = :mlid', array(':mlid' => $form['mlid']))->fetchField());
    
    $settings['usar']=empty($options['imagen_menu']['usar'])?'':$options['imagen_menu']['usar'];
    $settings['width']=empty($options['imagen_menu']['width'])?'':$options['imagen_menu']['width'];
    $settings['height']=empty($options['imagen_menu']['height'])?'':$options['imagen_menu']['height'];
    $settings['type']=empty($options['imagen_menu']['type'])?0:$options['imagen_menu']['type'];
    $settings['style2']=empty($options['imagen_menu']['style2'])?'':$options['imagen_menu']['style2'];
    return $settings;
}

function imagen_menu_form_menu_edit_item_alter_submit(array &$form, array &$form_state) {
  $file=managed_file_element_submit($form['imagen_menu']['imagen_menu'], $form_state, [
    'imagen_menu', 'menu', $form_state['values']['mlid'],
  ]);
  $fid=$form['imagen_menu']['imagen_menu']['fid']['#value'];

  $options = array(
      'fid' => $fid,
    'usar' => $form_state['values']['usar'],
    'width' => $form_state['values']['width'],
    'height' => $form_state['values']['height'],
    'type' => $form_state['values']['type'],
    'style2' => $form_state['values']['style2'],
  );
$form_state['values']['options']['imagen_menu']=$options;


}
/*esto funciona*/
function imagen_menu_preprocess_menu_link(&$variables){
   	if (array_key_exists('imagen_menu', $variables['element']['#localized_options'])
		 && isset($variables['element']['#localized_options']['imagen_menu']['usar']) 
		&& $variables['element']['#localized_options']['imagen_menu']['usar']) {
//print_r($variables['element']['#localized_options']['imagen_menu']);exit();
		$img = file_load($variables['element']['#localized_options']['imagen_menu']['fid']);
		$i_uri=file_create_url($img->uri);
$options=$variables['element']['#localized_options']['imagen_menu'];
$imagen="<img src='$i_uri'  ";
if(!empty($options['width']))$imagen.="width=$options[width]";
if(!empty($options['height']))$imagen.="height$options[height]";
$variables['element']['#localized_options']['html'] = TRUE;
//$variables['element']['#attributes']['style']="$options[style2]";//esto es sobre el li
$variables['element']['#localized_options']['attributes']['style'] = "$options[style2]";
//[0=>'Imagén y texto en línea', 1=>'Sólo imagén',2=>'Imagén y texto abajo']
switch ($options['type']){
	case 0:
$imagen.=">";
			$variables['element']['#title'] ="<span id='imagen_menu'>$imagen</span>". $variables['element']['#title'];


	break;
	case 1:
$title=$variables['element']['#title'];
$imagen.=" title='$title'>";
			$variables['element']['#title'] =$imagen;
	break;
	case 2:
//$variables['element']['#localized_options']['attributes']['style'] = 'background-image: url("'.$i_uri.'");background-repeat: no-repeat;background-position: center;position: absolute;left: 10px;width: 15px;height: 15px;';
//$variables['element']['#localized_options']['attributes']['id']='im1';
$imagen.=">";
//$variables['element']['#localized_options']['attributes']['style']='background-color:black;';esto es sobre el ahref

			$variables['element']['#title'] ="<span id='imagen_menu' style='display: block;text-align:center;'>$imagen</span><label style='text-align:center;'>". $variables['element']['#title']."</label>";
	break;
}
//print_r($variables['element']);
		
	}
}

/* function custom_theme_preprocess_menu(&$variables, $hook) {
  if ($hook == 'menu__main') { // We're doing that for main menu.
    // Get the current path.
    $current_path = \Drupal::request()->getRequestUri();
    $items = $variables['items'];
    foreach ($items as $key => $item) {
      // If path is current_path, set active to li.
      if ($item['url']->toString() == $current_path) {
      // Add active link.
      $variables['items'][$key]['attributes']['class'] = 'active';
      }
    }

  }
}/* 

    if (isset($form_state['values']['variable_one'])) {
        variable_set('variable_one', $form_state['values']['variable_one']);
    }
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

