define('DOMAIN_NAV_MENU', TRUE);
function domain_nav_menu($may_cache) {
global $base_url;
$items = array();
if ($may_cache && DOMAIN_NAV_MENU) {
$root = domain_default();
$items[] = array(
'path' => 'domain',
'title' => t('Domain'),
'description' => t('Go to main site'),
'callback' => 'drupal_goto',
'callback arguments' => array($root['path']),
'type' => MENU_SUGGESTED_ITEM,
'access' => TRUE
);
$domains = domain_domains();
foreach ($domains as $domain) {
$type = MENU_NORMAL_ITEM;
if (!$domain['valid']) {
$type = MENU_SUGGESTED_ITEM;
}
$items[] = array(
'path' => 'domain/'. $domain['subdomain'], 'title' => $domain['sitename'],
'description' => t('Go to !domain', array('!domain' => $domain['subdomain'])),
'callback' => 'drupal_goto',
'callback arguments' => array($domain['path']),
'type' => $type,
'access' => TRUE
);
}
}
drupal_add_css(drupal_get_path('module', 'domain_nav') .'/domain_nav.css');
return $items;
}
function domain_nav_block($op='list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$block[0]['info'] = t('Domain list navigator');
break;
case 'view':
$block['subject'] = '';
$block['content'] = domain_nav_render();
break;
case 'configure':
$form['domain_nav_block'] = array(
'#type' => 'radios',
'#title' => t('Link paths'),
'#default_value' => variable_get('domain_nav_block', 0),
'#options' => array(0 => t('Link to site home page'), 1 => t('Link to active url')),
);
$form['domain_nav_theme'] = array(
'#type' => 'radios',
'#title' => t('Link theme'),
'#default_value' => variable_get('domain_nav_theme', 'default'),
'#options' => array(
'default' => t('JavaScript select list'),
'menus' => t('Menu-style tab links'),
'ul' => t('Unordered list of links'),
),
);
return $form;
break;
case 'save':
variable_set('domain_nav_block', $edit['domain_nav_block']);
variable_set('domain_nav_theme', $edit['domain_nav_theme']);
break;
}
return $block;
}
function domain_nav_render($paths = NULL, $style = NULL) {
global $_domain;
if (empty($paths)) {
$paths = variable_get('domain_nav_block', 0);
}
if (empty($style)) {
$style = variable_get('domain_nav_theme', 'default');
}
$options = array();
$domains = domain_domains();
($paths == 0) ? $func = 'domain_get_path' : $func = 'domain_get_uri';
foreach ($domains as $key => $value) {
$allow = TRUE;
if (!$value['valid']) {
if (user_access('administer domains')) {
$value['sitename'] .= ' *';
}
else {
$allow = FALSE;
}
}
if ($allow) {
if ($_domain['subdomain'] == $value['subdomain']) {
$value['active'] = TRUE;
}
$path = $func($value);
$value['path'] = $path;
$extra = array();
$extra = module_invoke_all('domainnav', $value);
$value = array_merge($value, $extra);
$options[$value['domain_id']] = $value;
}
}
$theme = 'domain_nav_'. $style;
$content = theme($theme, $options);
return $content;
}
function theme_domain_nav_default($options) {
global $_domain;
$current = $options[$_domain['domain_id']];
$output = '<form class="domain-list" action="">';
$output .= '<select onchange="if (this.value) location.href=this.value;">';
$output .= '<option value="'. $current['path'] .'">'. t('Jump to...') .'</option>';
foreach ($options as $key => $value) {
($value['active']) ? $selected = ' selected' : $selected = '';
$output .= '<option value="'. $value['path'] .'"'. $selected .'>'. filter_xss_admin($value['sitename']) .'</option>';
}
$output .= '</select>';
$output .= '</form>';
return $output;
}
function theme_domain_nav_ul($options) {
foreach ($options as $key => $value) {
$items[] = l($value['sitename'], $value['path']);
}
return theme('item_list', $items);
}
function theme_domain_nav_menus($options) {
foreach ($options as $key => $value) {
($value['active']) ? $active = 'active' : $active = '';
$items[] = array(
'data' => l($value['sitename'], $value['path']),
'class' => $active
);
}
return theme('item_list', $items, NULL, 'ul', array('class' => 'tabs primary'));
}
function domain_nav_domainupdate($op, $domain = array(), $edit = array()) {
if (DOMAIN_NAV_MENU) {
cache_clear_all('*', 'cache_page', TRUE);
cache_clear_all('*', 'cache_menu', TRUE);
}
}