You are here

function menu_reference_field_widget_form in Menu Reference 7

Implements hook_field_widget_form().

File

./menu_reference.module, line 155
Primarily Drupal hooks and global API functions for module Menu Reference.

Code

function menu_reference_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $value = isset($items[$delta]['mlid']) ? $items[$delta]['mlid'] : '';
  $widget = $element;
  $widget['#delta'] = $delta;
  switch ($instance['widget']['type']) {
    case 'menu_reference_select':
      $options = array();
      $menu_list = menu_get_menus(TRUE);
      $allowed_menus = array_filter($field['settings']['allowed_menus']);
      $language_visibility = !empty($field['settings']['language_visibility']) ? $field['settings']['language_visibility'] : MENU_REFERENCE_LANG_ALL;
      $languages = array();
      if ($language_visibility == MENU_REFERENCE_LANG_NODE || $language_visibility == MENU_REFERENCE_LANG_NODE_UND && isset($form['#node'])) {
        $node = $form['#node'];
        $languages[] = $node->language;
      }
      if ($language_visibility == MENU_REFERENCE_LANG_NODE_UND && !in_array(LANGUAGE_NONE, $languages)) {
        $languages[] = LANGUAGE_NONE;
      }
      foreach ($allowed_menus as $menu) {
        $options[$menu_list[$menu]] = menu_reference_get_menu_hierarchy($menu, $languages);
      }
      $widget += array(
        '#type' => 'select',
        '#default_value' => $value,
        '#options' => array(
          '' => t('- Select -'),
        ) + $options,
      );
      break;
  }
  $element['mlid'] = $widget;
  return $element;
}