You are here

function theme_nodehierarchy_menu_overview_form in Node Hierarchy 7.2

Same name and namespace in other branches
  1. 6.3 nodehierarchy.module \theme_nodehierarchy_menu_overview_form()
  2. 6.2 nodehierarchy.module \theme_nodehierarchy_menu_overview_form()
  3. 7.4 nodehierarchy_menu/nodehierarchy_menu.module \theme_nodehierarchy_menu_overview_form()

Theme the menu overview form into a table respecting the node hierarchy rules.

File

./nodehierarchy.module, line 423
A module to make nodes hierarchical.

Code

function theme_nodehierarchy_menu_overview_form($variables) {
  $form = $variables['form'];
  drupal_add_js(drupal_get_path("module", "nodehierarchy") . '/nodehierarchy.tabledrag.js');
  drupal_add_css(drupal_get_path('module', 'nodehierarchy') . '/nodehierarchy.css');

  // Show a notice if items have been omitted.
  if (!empty($form['hidden']['#value'])) {
    $msg = t('@hidden disabled menu items generated by Node Hierarchy have been ommited from this list.', array(
      '@hidden' => $form['hidden']['#value'],
    ));
    $msg .= ' ' . l('Click here to show all items', $_GET['q'], array(
      'query' => array(
        'all' => TRUE,
      ),
    )) . '.';
    if (user_access('administer site configuration')) {
      $msg .= ' ' . t('To permentently show all items, edit your !settings.', array(
        '!settings' => l(t('Node hierarchy settings'), 'admin/config/nodehierarchy'),
      ));
    }
    drupal_set_message($msg, 'warning');
  }
  $js_settings = array();
  $rows = array();
  foreach (element_children($form) as $mlid) {
    if (isset($form[$mlid]['hidden'])) {
      $element = $form[$mlid];
      if ($element['#item']['module'] == 'nodehierarchy') {
        list(, $nid) = explode('/', $element['#item']['link_path']);
        $type = db_query_range('SELECT type FROM {node} WHERE nid = :nid', 0, 1, array(
          ':nid' => $nid,
        ))
          ->fetchField();
        $js_settings['nodehierarchyMenuDrag']['allowed-parents'][$type] = nodehierarchy_get_allowed_parent_types($type);

        // Add special classes to be used for nodehierarchy.js.
        $variables['form'][$mlid]['#attributes']['class'][] = 'nodehierarchy-menu-item';
        $variables['form'][$mlid]['#attributes']['class'][] = 'node-type-' . $type;
        $variables['form'][$mlid]['#attributes']['id'] = 'mlid-' . $element['#item']['mlid'];
      }
    }
  }
  drupal_add_js($js_settings, array(
    'type' => 'setting',
    'scope' => JS_DEFAULT,
  ));
  return theme_menu_overview_form($variables);
}