View source
<?php
define('DOMAIN_NAV_MENU', TRUE);
function domain_nav_menu() {
$items = array();
if (DOMAIN_NAV_MENU == TRUE && module_exists('domain')) {
$root = domain_default(TRUE, TRUE);
$items['domain'] = array(
'title' => 'Domain',
'type' => MENU_SUGGESTED_ITEM,
'page callback' => 'drupal_goto',
'page arguments' => array(
$root['path'],
),
'access callback' => 'domain_nav_check',
'access arguments' => array(
TRUE,
),
'description' => 'Go to main site',
);
$domains = domain_domains();
foreach ($domains as $domain) {
$type = MENU_NORMAL_ITEM;
if (empty($domain['valid'])) {
$type = MENU_SUGGESTED_ITEM;
}
$items['domain/' . filter_xss_admin($domain['subdomain'])] = array(
'title' => check_plain($domain['sitename']),
'type' => $type,
'page callback' => 'drupal_goto',
'page arguments' => array(
$domain['path'],
),
'access callback' => 'domain_nav_check',
'access arguments' => array(
TRUE,
),
'description' => 'Go to ' . filter_xss_admin($domain['subdomain']),
);
}
}
return $items;
}
function domain_nav_check($access = FALSE) {
return $access;
}
function domain_nav_permission() {
$permissions = array(
'access domain navigation' => array(
'title' => t('Access domain navigation links'),
),
);
return $permissions;
}
function domain_nav_theme() {
$themes = array(
'domain_nav_default' => array(
'variables' => array(
'options' => array(),
),
),
'domain_nav_ul' => array(
'variables' => array(
'options' => array(),
),
),
'domain_nav_menus' => array(
'variables' => array(
'options' => array(),
),
),
);
return $themes;
}
function domain_nav_hook_info() {
$hooks['domain_nav'] = array(
'group' => 'domain',
);
$hooks['domain_nav_options_alter'] = array(
'group' => 'domain',
);
return $hooks;
}
function domain_nav_block_info() {
$block = array();
$block['default'] = array(
'info' => t('Domain list navigator'),
);
return $block;
}
function domain_nav_block_view($delta = '') {
$block = array(
'subject' => '',
'content' => domain_nav_render(),
);
return $block;
}
function domain_nav_block_configure($delta = '') {
$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'),
),
);
$options = array(
'default' => t('JavaScript select list'),
'menus' => t('Menu-style tab links'),
'ul' => t('Unordered list of links'),
);
$form['domain_nav_theme'] = array(
'#type' => 'radios',
'#title' => t('Link theme'),
'#default_value' => variable_get('domain_nav_theme', 'default'),
'#options' => $options,
);
return $form;
}
function domain_nav_block_save($delta = '', $edit = array()) {
variable_set('domain_nav_block', $edit['domain_nav_block']);
variable_set('domain_nav_theme', $edit['domain_nav_theme']);
}
function domain_nav_render($paths = NULL, $style = NULL) {
$_domain = domain_get_domain();
if (!user_access('access domain navigation')) {
return;
}
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('access inactive 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('domain_nav', $value);
$value = array_merge($value, $extra);
$options[$value['domain_id']] = $value;
}
}
$theme = 'domain_nav_' . $style;
drupal_alter('domain_nav_options', $options);
$content = theme($theme, array(
'options' => $options,
));
return $content;
}
function theme_domain_nav_default($variables) {
$_domain = domain_get_domain();
$options = $variables['options'];
$current = $options[$_domain['domain_id']];
$output = '<form class="domain-list" action=""><div class="domain-pointless-validator-class">';
$output .= '<select onchange="if (this.value) location.href=this.value;">';
$output .= '<option value="' . $current['path'] . '">' . t('Jump to...') . '</option>';
foreach ($options as $key => $value) {
isset($value['active']) ? $selected = ' selected="selected"' : ($selected = '');
$output .= '<option value="' . $value['path'] . '"' . $selected . '>' . filter_xss_admin($value['sitename']) . '</option>';
}
$output .= '</select>';
$output .= '</div></form>';
return $output;
}
function theme_domain_nav_ul($variables) {
$options = $variables['options'];
foreach ($options as $key => $value) {
isset($value['active']) ? $active = 'active' : ($active = '');
$class = "domain-id-" . $value['domain_id'] . " " . $active;
$items[] = l($value['sitename'], $value['path'], array(
'attributes' => array(
'class' => $class,
),
));
}
return theme('item_list', array(
'items' => $items,
));
}
function theme_domain_nav_menus($variables) {
$options = $variables['options'];
foreach ($options as $key => $value) {
isset($value['active']) ? $active = 'active' : ($active = '');
$items[] = array(
'data' => l($value['sitename'], $value['path']),
'attribute' => array(
'class' => "domain-id-" . $value['domain_id'] . ' ' . $active,
),
);
}
return theme('item_list', array(
'items' => $items,
'attributes' => array(
'class' => 'tabs primary',
),
));
}
function domain_nav_domain_insert($domain, $form_values = array()) {
domain_nav_rebuild_menu();
}
function domain_nav_domain_update($domain, $form_values = array()) {
domain_nav_rebuild_menu();
}
function domain_nav_domain_delete($domain, $form_values = array()) {
domain_nav_rebuild_menu();
}
function domain_nav_rebuild_menu() {
if (DOMAIN_NAV_MENU == TRUE) {
menu_rebuild();
}
}