materio-base-legacy/sites/all/modules/gui/editmenu/editmenu_inactive_parents.module
2015-04-19 16:06:48 +02:00

64 lines
1.8 KiB
PHP

<?php
/**
* @file
* Make all the editmenu parent menu items non-clickable.
*/
/**
* \brief Alter the menu item link theme registry.
*
* This function grabs the editmenu theme registry for the
* menu_link theming. This gives us a way to remove the
* link and replace it with a name (anchor) instead.
*
* This is only applied to the Editmenu as intefering with
* other menus could have unwanted side effects.
*
* \note
* This is called at the time the theme registry is built.
* It is then put in the cache until next time the registry
* is built by the system (i.e. caches are cleared by user,
* because a module is installed, etc.)
*/
function editmenu_inactive_parents_theme_registry_alter(&$theme_registry) {
global $theme;
// Save theme function
$themes = variable_get('editmenu_inactive_parents_theme_function', array());
$themes[$theme] = $theme_registry['menu_link']['function'];
variable_set('editmenu_inactive_parents_theme_function', $themes);
// Replace with our own
$theme_registry['menu_item_link']['function'] = 'editmenu_inactive_parents_theme_menu_link';
}
/**
* \brief Transform the menu item link.
*
* This function intercepts the menu item link theming function of
* the system and
*/
function editmenu_inactive_parents_theme_menu_link($link) {
global $theme;
static $cnt = 0;
// this is a drop down?
if (!empty($link['has_children']) && variable_get('editmenu_running', FALSE)) {
++$cnt;
return '<a name="menu-id-' . $cnt . '">' . $link['title'] . '</a>';
}
// got a theme function?
$themes = variable_get('editmenu_inactive_parents_theme_function', array());
if (isset($themes[$theme])) {
return $themes[$theme]($link);
}
// somehow the preprocess function did not get called?!
// use the core default
return theme_menu_link($link);
}
// vim: ts=2 sw=2 et syntax=php