Index: menu_breadcrumb.module
===================================================================
--- menu_breadcrumb.module (revision 403)
+++ menu_breadcrumb.module (working copy)
@@ -300,13 +300,17 @@
* Set the active menu according to the current path.
*/
function menu_breadcrumb_init() {
+ global $language;
+ $menu_lang_check = variable_get('menu_breadcrumb_determine_menu_language', 0);
if (variable_get('menu_breadcrumb_determine_menu', 1)) {
// Find the set of menus containing a link for the current page.
$menu_item = menu_get_item();
- $result = db_query("SELECT mlid, menu_name FROM {menu_links} WHERE link_path = '%s'", $menu_item['href']);
- $menu_link_menus = array();
+ $result = db_query("SELECT mlid, menu_name, options FROM {menu_links} WHERE link_path = '%s'", $menu_item['href']);
+ $menu_link_menus = $menu_link_options = array();
while ($menu_link = db_fetch_array($result)) {
+ $temp_options = unserialize($menu_link['options']);
$menu_link_menus[$menu_link['menu_name']] = TRUE;
+ $menu_link_options[$menu_link['menu_name']] = $temp_options['langcode'];
}
// Choose the highest-priority 'Enabled' menu.
@@ -318,7 +322,15 @@
if ($is_pattern) {
// Look for each of the $menu_link_menus in the pattern match cache.
foreach (array_keys($menu_link_menus) as $menu_link_menu_name) {
- if (array_key_exists($menu_link_menu_name, $match_cache)
+ if ($menu_lang_check
+ && array_key_exists($menu_link_menu_name, $match_cache)
+ && $match_cache[$menu_link_menu_name] == $menu_name
+ && $menu_link_options[$menu_link_menu_name] == $language->language) {
+ menu_set_active_menu_name($menu_link_menu_name);
+ break 2;
+ }
+ else if (!$menu_lang_check
+ && array_key_exists($menu_link_menu_name, $match_cache)
&& $match_cache[$menu_link_menu_name] == $menu_name) {
menu_set_active_menu_name($menu_link_menu_name);
break 2;
@@ -326,10 +338,17 @@
}
}
else {
- if (array_key_exists($menu_name, $menu_link_menus)) {
+ if ($menu_lang_check
+ && array_key_exists($menu_name, $menu_link_menus)
+ && $menu_link_options[$menu_name] == $language->language) {
menu_set_active_menu_name($menu_name);
break;
}
+ else if (!$menu_lang_check &&
+ array_key_exists($menu_name, $menu_link_menus)) {
+ menu_set_active_menu_name($menu_name);
+ break;
+ }
}
}
}
@@ -360,13 +379,26 @@
* The settings form used by Menu breadcrumb.
*/
function menu_breadcrumb_admin_settings_form() {
- $form['menu_breadcrumb_determine_menu'] = array(
+ $form['menu_breadcrumb_determine_menu_fset'] = array(
+ '#type' => 'fieldset',
+ );
+
+ $form['menu_breadcrumb_determine_menu_fset']['menu_breadcrumb_determine_menu'] = array(
'#type' => 'checkbox',
'#title' => t('Use menu the page belongs to for the breadcrumb.'),
'#description' => t('By default, Drupal 6 will use the Navigation menu for the breadcrumb. If you want to use the menu the active page belongs to for the breadcrumb, enable this option.'),
'#default_value' => variable_get('menu_breadcrumb_determine_menu', 1),
);
+ $form['menu_breadcrumb_determine_menu_fset']['menu_breadcrumb_determine_menu_language'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Also take current language into account when determening the menu item.'),
+ '#description' => t('If you use a separate menu for each language, and you have activated the
+ Menu translation of i18n you can take the menu language into account. Each menu item must have a language set.'),
+ '#default_value' => variable_get('menu_breadcrumb_determine_menu_language', 0),
+ '#disabled' => !module_exists('i18nmenu'),
+ );
+
$form['menu_breadcrumb_append_node_title'] = array(
'#type' => 'checkbox',
'#title' => t('Append page title to breadcrumb'),