View source
<?php
function theme_responsive_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
$mlid = $element['#original_link']['mlid'];
}
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
function template_preprocess_responsive_menu_tree(&$variables) {
$tree = reset($variables['tree']);
$depth = $tree['#original_link']['depth'];
$parent = !empty($tree['#original_link']['plid']) ? menu_link_load($tree['#original_link']['plid']) : FALSE;
$variables['depth'] = $depth;
$variables['mlid'] = $tree['#original_link']['mlid'];
$variables['parent_title'] = $parent ? $parent['link_title'] : FALSE;
$variables['plid'] = $parent ? $parent['mlid'] : FALSE;
}
function theme_responsive_menu_tree($variables) {
$plid = $variables['plid'];
$parent_title = $variables['parent_title'];
if ($variables['depth'] > 1) {
$content = '<ul id="menu-tree-mlid-' . $plid . '" class="sub-nav">';
$content .= $variables['tree']['#children'] . '</ul>';
return $content;
}
else {
if (isset($variables['tree']['#id'])) {
$attributes = 'id="' . $variables['tree']['#id'] . '"';
}
else {
$attributes = 'id="horizontal-menu" class="horizontal-menu"';
}
return '<ul ' . $attributes . '>' . $variables['tree']['#children'] . '</ul>';
}
}
function theme_responsive_menu_overview_form($variables) {
$form = $variables['form'];
drupal_add_tabledrag('menu-overview', 'match', 'parent', 'menu-plid', 'menu-plid', 'menu-mlid', TRUE, MENU_MAX_DEPTH - 1);
drupal_add_tabledrag('menu-overview', 'order', 'sibling', 'menu-weight');
$header = array(
t('Menu link'),
array(
'data' => t('Enabled'),
'class' => array(
'checkbox',
),
),
array(
'data' => t('Fly-left'),
'class' => array(
'checkbox',
),
),
t('Weight'),
array(
'data' => t('Operations'),
'colspan' => '3',
),
);
$rows = array();
foreach (element_children($form) as $mlid) {
if (isset($form[$mlid]['hidden'])) {
$element =& $form[$mlid];
$operations = array();
foreach (element_children($element['operations']) as $op) {
$operations[] = array(
'data' => drupal_render($element['operations'][$op]),
'class' => array(
'menu-operations',
),
);
}
while (count($operations) < 2) {
$operations[] = '';
}
$element['plid']['#attributes']['class'] = array(
'menu-plid',
);
$element['mlid']['#attributes']['class'] = array(
'menu-mlid',
);
$element['weight']['#attributes']['class'] = array(
'menu-weight',
);
$element['plid']['#type'] = 'hidden';
$row = array();
$row[] = theme('indentation', array(
'size' => $element['#item']['depth'] - 1,
)) . drupal_render($element['title']);
$row[] = array(
'data' => drupal_render($element['hidden']),
'class' => array(
'checkbox',
'menu-enabled',
),
);
$row[] = array(
'data' => drupal_render($element['flyleft']),
'class' => array(
'checkbox',
'flyleft',
),
);
$row[] = drupal_render($element['weight']) . drupal_render($element['plid']) . drupal_render($element['mlid']);
$row = array_merge($row, $operations);
$row = array_merge(array(
'data' => $row,
), $element['#attributes']);
$row['class'][] = 'draggable';
$rows[] = $row;
}
}
$output = '';
if (empty($rows)) {
$rows[] = array(
array(
'data' => $form['#empty_text'],
'colspan' => '7',
),
);
}
$output .= theme('table', array(
'header' => $header,
'rows' => $rows,
'attributes' => array(
'id' => 'menu-overview',
),
));
$output .= drupal_render_children($form);
return $output;
}