You are here

function menu_editor_overview_form in Menu Editor 6

Same name and namespace in other branches
  1. 6.3 menu_editor.admin.inc \menu_editor_overview_form()
  2. 6.2 menu_editor.admin.inc \menu_editor_overview_form()
  3. 7 menu_editor.admin.inc \menu_editor_overview_form()

Form for editing an entire menu tree at once.

Shows for one menu the menu items accessible to the current user and relevant operations.

1 string reference to 'menu_editor_overview_form'
menu_editor_menu in ./menu_editor.module
Implementation of hook_menu().

File

./menu_editor.admin.inc, line 10

Code

function menu_editor_overview_form(&$form_state, $menu) {
  global $menu_admin;
  $sql = "\n    SELECT\n      m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments,\n      m.page_callback, m.page_arguments, m.title, m.title_callback, m.title_arguments,\n      m.type, m.description, ml.*\n    FROM {menu_links} ml\n    LEFT JOIN {menu_router} m ON m.path = ml.router_path\n    WHERE ml.menu_name = '%s'\n    ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC";
  $result = db_query($sql, $menu['menu_name']);
  $tree = menu_tree_data($result);
  $node_links = array();
  menu_tree_collect_node_links($tree, $node_links);

  // We indicate that a menu administrator is running the menu access check.
  $menu_admin = TRUE;
  menu_tree_check_access($tree, $node_links);
  $menu_admin = FALSE;
  $form = array(
    '#tree' => TRUE,
  );
  if (module_exists('i18nmenu')) {
    $language_options = array(
      '' => t('All languages'),
    ) + locale_language_list('name');
    $form['#_language_options'] = $language_options;
  }
  $max_root_weight = _menu_editor_overview_tree_form($form, $form_state, $tree, $language_options);

  // default values for all new menu items..
  $default_values = array(
    'link_title' => '',
    'link_path' => '<front>',
    'hidden' => true,
    'expanded' => false,
    'weight' => 0,
    // 'mlid' => NULL,  // this is different for every single one
    'plid' => 0,
    'language' => '',
  );
  foreach (module_invoke_all('menu_editor_placeholders') as $placeholder_code => $placeholder_path) {

    // take the first placeholder as default link path instead of <front>
    $default_values['link_path'] = $placeholder_code;
    break;
  }
  for ($i = 0; $i < 8; ++$i) {

    // new menu item
    $default_values['mlid'] = 'new' . $i;
    $item_key = 'mlid-new' . $i;
    $form[$item_key] = _menu_editor_overview_tree_form_item('new' . $i, $default_values, $language_options);
    $form[$item_key]['weight']['#default_value'] = $max_root_weight + $i + 1;
    $form[$item_key]['#item'] = array();
    $form[$item_key]['#attributes'] = array(
      'class' => 'menu-new',
    );
    $form[$item_key]['drag']['#value'] = t('New menu item');
  }
  $form['#menu'] = $menu;
  if (element_children($form)) {
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Save configuration'),
    );
  }
  else {
    $form['empty_menu'] = array(
      '#value' => t('There are no menu items yet.'),
    );
  }
  return $form;
}