menu_language.module in Menu per language - i18n menu overview 7
menu language module file displays menus per language
File
menu_language.moduleView source
<?php
/**
* @file
* menu language module file
* displays menus per language
*/
/**
* Implements hook_init()
* adds my css file
*/
function menu_language_init() {
drupal_add_css(drupal_get_path('module', 'menu_language') . '/css/menu_language.css', array(
'group' => CSS_DEFAULT,
));
}
/**
* @return array
* Implements hook_menu()
*/
function menu_language_menu() {
$menus = _menu_language_get_enabled_menus();
$enabled_menu_languages = _menu_language_get_enabled_languages();
foreach ($enabled_menu_languages as $index => $enabled_mnu_language) {
foreach ($menus as $menu) {
$items['admin/structure/' . $menu . $enabled_mnu_language] = array(
'title' => ucfirst($menu) . ' : ' . $enabled_mnu_language,
'description' => 'This is the ' . $menu . ' edit page for language : ' . $enabled_mnu_language,
'page callback' => 'drupal_get_form',
'page arguments' => array(
'menu_language_menulanguage_form',
$menu,
$enabled_mnu_language,
),
'access callback' => TRUE,
'file' => 'menu_language_form.inc',
'access arguments' => array(
'administer menu',
),
'type' => MENU_NORMAL_ITEM,
);
}
}
/**
* ADMIN SECTION
*/
$items['admin/config/menu_language'] = array(
'title' => 'Menu language',
'description' => 'Configure the menu per language module.',
'position' => 'left',
'weight' => -20,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array(
'access administration pages',
),
'file' => 'system.admin.inc',
'file path' => drupal_get_path('module', 'system'),
);
$items['admin/config/menu_language/config'] = array(
'title' => 'Menu language configuration',
'description' => 'Configure menu per language module.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'menu_language_settings',
),
'access arguments' => array(
'administer site configuration',
),
'file' => 'menu_language.admin.inc',
);
return $items;
}
/**
* Implements hook_theme().
*/
function menu_language_theme() {
return array(
'menu_language_menulanguage_form' => array(
'render element' => 'form',
'file' => 'menu_language_form.inc',
),
'menu_language_page' => array(
'variables' => array(
'menu' => NULL,
'table' => NULL,
'remaining_form_elements' => NULL,
),
'template' => 'theme/menu_language_page',
),
);
}
/**
* @return array
* gets all enabled languages for the site
*/
function _menu_language_get_enabled_languages() {
$languages = language_list();
foreach ($languages as $lang) {
if ($lang->enabled == 1) {
$enabled_languages[] = $lang->language;
}
}
return $enabled_languages;
}
/**
* @param $enabled_language
* @param string $which_menu
*
* GETS THE GIVEN MENU FOR THE GIVE LANGUAGE
* using the Q builder:-)
* DEFAULTS * menu = main-menu
*/
function menu_language_get_menu_links_by_language($enabled_language, $which_menu = "main-menu") {
$query = db_select('menu_links', 'ml');
/**
* FIELDS
*/
$query
->fields('m', array(
'load_functions',
'to_arg_functions',
'access_callback',
'access_arguments',
'page_callback',
'page_arguments',
'delivery_callback',
'title',
'title_callback',
'title_arguments',
'type',
'description',
));
$query
->fields('ml');
/**
* CONDITIONS
*/
$query
->condition('ml.language', $enabled_language, '=');
$query
->condition('ml.menu_name', $which_menu, '=');
/**
* JOINS
*/
$query
->leftJoin('menu_router', 'm', 'm.path = ml.router_path');
/**
* ORDERING
*/
$query
->orderBy('p1', 'ASC');
$query
->orderBy('p2', 'ASC');
$query
->orderBy('p3', 'ASC');
$query
->orderBy('p4', 'ASC');
$query
->orderBy('p5', 'ASC');
$query
->orderBy('p6', 'ASC');
$query
->orderBy('p7', 'ASC');
$query
->orderBy('p8', 'ASC');
$query
->orderBy('p9', 'ASC');
/**
* EXECUTE IT
*/
return $query
->execute();
}
/**
* @return array
* Gets all the enabled menus
*/
function _menu_language_get_enabled_menus() {
$menus = menu_get_names();
foreach ($menus as $menu) {
$is_enabled_menu = variable_get('menu_language_mng_' . $menu, FALSE);
if ($is_enabled_menu) {
$menu_language_enabled_menus[] = $menu;
}
}
return $menu_language_enabled_menus;
}
Functions
Name![]() |
Description |
---|---|
menu_language_get_menu_links_by_language | |
menu_language_init | Implements hook_init() adds my css file |
menu_language_menu | |
menu_language_theme | Implements hook_theme(). |
_menu_language_get_enabled_languages | |
_menu_language_get_enabled_menus |