i18n_menu_overview.module in Menu per language - i18n menu overview 7.2
Same filename and directory in other branches
menu language module file displays menus per language
File
i18n_menu_overview.moduleView source
<?php
/**
* @file
* menu language module file
* displays menus per language
*/
/**
* Implements hook_permission().
*/
function i18n_menu_overview_permission() {
$menus = _i18n_menu_overview_get_enabled_menus();
$enabled_i18n_menu_overviews = _i18n_menu_overview_get_enabled_languages();
$permissions = array();
// Make permissions for all the enabled languages.
foreach ($enabled_i18n_menu_overviews as $index => $enabled_mnu_language) {
if (!empty($menus)) {
foreach ($menus as $menu) {
$permissions['administer ' . $menu . '_' . $enabled_mnu_language] = array(
'title' => t('Administer the menu:') . $menu . ' ' . t('in') . ' ' . $enabled_mnu_language,
);
}
}
}
return $permissions;
}
/**
* Implements hook_menu().
*
* @return array
* arr menu items
*/
function i18n_menu_overview_menu() {
$menus = _i18n_menu_overview_get_enabled_menus();
$enabled_i18n_menu_overviews = _i18n_menu_overview_get_enabled_languages();
// Shows all the enabled menus in the enabled languages.
foreach ($enabled_i18n_menu_overviews as $index => $enabled_mnu_language) {
if (!empty($menus)) {
foreach ($menus as $localized_menu_name => $menu) {
$items['admin/structure/' . $menu . '_' . $enabled_mnu_language] = array(
'title' => ucfirst($localized_menu_name) . ' : ' . $enabled_mnu_language,
'description' => 'This is the ' . $localized_menu_name . ' edit page for language : ' . $enabled_mnu_language,
'page callback' => 'drupal_get_form',
'page arguments' => array(
'i18n_menu_overview_menulanguage_form',
$menu,
$enabled_mnu_language,
),
'file' => 'i18n_menu_overview_form.inc',
'access arguments' => array(
'administer ' . $menu . '_' . $enabled_mnu_language,
),
'type' => MENU_NORMAL_ITEM,
);
// Shows tabs on the per language menu page to switch to other langs.
foreach ($enabled_i18n_menu_overviews as $index => $other_i18n_menu_overviews) {
if ($other_i18n_menu_overviews != $enabled_mnu_language) {
$items['admin/structure/' . $menu . '_' . $enabled_mnu_language . '/tab_' . $menu . '_' . $other_i18n_menu_overviews] = array(
'title' => ucfirst($localized_menu_name) . ' : ' . $other_i18n_menu_overviews,
'page callback' => '_i18n_menu_overview_goto_menu',
'page arguments' => array(
$menu,
$other_i18n_menu_overviews,
),
'access arguments' => array(
'administer ' . $menu . '_' . $enabled_mnu_language,
),
'type' => MENU_LOCAL_TASK,
);
}
else {
// The lang where you are in.
$items['admin/structure/' . $menu . '_' . $enabled_mnu_language . '/tab_' . $menu . '_' . $enabled_mnu_language] = array(
'title' => ucfirst($localized_menu_name) . ' : ' . $other_i18n_menu_overviews,
'type' => MENU_DEFAULT_LOCAL_TASK,
);
}
}
}
}
}
// Admin section.
$items['admin/config/regional/i18n_menu_overview'] = array(
'title' => 'i18n Menu overview',
'description' => 'Configure the i18n menu per language module.',
'position' => 'left',
'weight' => -20,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array(
'administer site configuration',
),
'file' => 'system.admin.inc',
'file path' => drupal_get_path('module', 'system'),
);
$items['admin/config/regional/i18n_menu_overview/config'] = array(
'title' => 'i18n Menu overview configuration',
'description' => 'Configure menu per language module.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'i18n_menu_overview_settings',
),
'access arguments' => array(
'administer site configuration',
),
'file' => 'i18n_menu_overview.admin.inc',
);
return $items;
}
/**
* Implements hook_theme().
*/
function i18n_menu_overview_theme() {
return array(
'i18n_menu_overview_menulanguage_form' => array(
'render element' => 'form',
'file' => 'i18n_menu_overview_form.inc',
),
'i18n_menu_overview_page' => array(
'variables' => array(
'menu' => NULL,
'table' => NULL,
'remaining_form_elements' => NULL,
),
'template' => 'theme/i18n_menu_overview_page',
),
);
}
/**
* Gets all enabled languages for the site.
*
* @return array
* arr of enabled languages.
*/
function _i18n_menu_overview_get_enabled_languages() {
$languages = language_list();
// Enblabes langs array.
$enabled_languages = array();
foreach ($languages as $lang) {
if ($lang->enabled == 1) {
$enabled_languages[] = $lang->language;
}
}
return $enabled_languages;
}
/**
* Gets the given menu for the gven language using the Q builder.
*
* Array @param $enabled_language
* enabled langs
*
* @param string $which_menu
* which menu u want to use
*
* Defaults * menu = main-menu
*/
function i18n_menu_overview_get_menu_links_by_language($enabled_language, $which_menu = "main-menu") {
$query = db_select('menu_links', 'ml');
// Fields: which fields I need: see below which 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 added to the query for the language and the selected menu.
$query
->condition('ml.language', $enabled_language, '=');
$query
->condition('ml.menu_name', $which_menu, '=');
// Joins: join with the menu router..
$query
->leftJoin('menu_router', 'm', 'm.path = ml.router_path');
// Ordering my query based on the tree (the menu tree).
$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();
}
/**
* Gets all the enabled menus.
* @return array
* arr language enabled menus
*/
function _i18n_menu_overview_get_enabled_menus() {
$menus = menu_get_menus();
$i18n_menu_overview_enabled_menus = NULL;
foreach ($menus as $menu => $localized_menu_name) {
$is_enabled_menu = variable_get('i18n_menu_overview_' . str_replace(' ', '_', $menu), FALSE);
if ($is_enabled_menu) {
$i18n_menu_overview_enabled_menus[$localized_menu_name] = $menu;
}
}
return $i18n_menu_overview_enabled_menus;
}
/**
* MenuItem @param $menu LanguageString @param $enabled_mnu_language.
*/
function _i18n_menu_overview_goto_menu($menu, $enabled_mnu_language) {
drupal_goto('admin/structure/' . $menu . '_' . $enabled_mnu_language);
}
/**
* Implementation of hook_menu_alter()
*/
function i18n_menu_overview_menu_alter(&$items) {
$items['admin/structure/menu']['page callback'] = '_i18n_menu_overview_menu_overview_page';
$items['admin/structure/menu']['access callback'] = '_i18n_menu_overview_access';
unset($items['admin/structure/menu']['access arguments']);
$items['admin/structure/menu/manage/%menu']['access callback'] = '_i18n_menu_overview_menu_access';
$items['admin/structure/menu/manage/%menu']['access arguments'] = array(
4,
);
$items['admin/structure/menu/manage/%menu/add']['access callback'] = '_i18n_menu_overview_menu_access';
$items['admin/structure/menu/manage/%menu/add']['access arguments'] = array(
4,
);
$items['admin/structure/menu/item/%menu_link/edit']['access callback'] = '_i18n_menu_overview_menu_link_access';
$items['admin/structure/menu/item/%menu_link/edit']['access arguments'] = array(
4,
);
$items['admin/structure/menu/item/%menu_link/reset']['access callback'] = '_i18n_menu_overview_menu_link_access';
$items['admin/structure/menu/item/%menu_link/reset']['access arguments'] = array(
4,
);
$items['admin/structure/menu/item/%menu_link/delete']['access callback'] = '_i18n_menu_overview_menu_link_access';
$items['admin/structure/menu/item/%menu_link/delete']['access arguments'] = array(
4,
);
}
// TODO REWRITEEEEEEE
function _i18n_menu_overview_menu_overview_page() {
if (user_access('administer menu')) {
return menu_overview_page();
}
return 'test';
}
function _i18n_menu_overview_access() {
if (user_access('administer menu')) {
return TRUE;
}
$perms = array_keys(i18n_menu_overview_permission());
foreach ($perms as $perm) {
if (user_access($perm)) {
return TRUE;
}
}
return FALSE;
}
function _i18n_menu_overview_menu_access($menu = NULL) {
global $language;
if (user_access('administer menu') || user_access('administer ' . $menu['menu_name'] . '_' . $language->language)) {
return TRUE;
}
return FALSE;
}
function _i18n_menu_overview_menu_link_access($menu_link = NULL) {
global $language;
if (user_access('administer menu') || user_access('administer ' . $menu_link['menu_name'] . '_' . $language->language)) {
return TRUE;
}
return FALSE;
}
Functions
Name![]() |
Description |
---|---|
i18n_menu_overview_get_menu_links_by_language | Gets the given menu for the gven language using the Q builder. |
i18n_menu_overview_menu | Implements hook_menu(). |
i18n_menu_overview_menu_alter | Implementation of hook_menu_alter() |
i18n_menu_overview_permission | Implements hook_permission(). |
i18n_menu_overview_theme | Implements hook_theme(). |
_i18n_menu_overview_access | |
_i18n_menu_overview_get_enabled_languages | Gets all enabled languages for the site. |
_i18n_menu_overview_get_enabled_menus | Gets all the enabled menus. |
_i18n_menu_overview_goto_menu | MenuItem |
_i18n_menu_overview_menu_access | |
_i18n_menu_overview_menu_link_access | |
_i18n_menu_overview_menu_overview_page |