function _menu_minipanels_include in Menu Minipanels 7
Same name and namespace in other branches
- 6 menu_minipanels.module \_menu_minipanels_include()
When a minipanel menu item is detected by our theme interception functions this function is used to add the appropriate configuration javascript and minipanel output.
The javascript is added to the closure by drupal when hook_footer is called. The minipanel output is added to closure. See @menu_minipanels_footer
Parameters
$minipanel_name The name of the minipanel that is to show:
$menu_config The configuration array for qtip, as configued in menu item edit:
2 calls to _menu_minipanels_include()
- menu_minipanels_prepare_links in ./
menu_minipanels.module - Ensure that we capture any mini panel menus. This is run on every page load. See @menu_minipanels_page_alter().
- menu_minipanels_theme_link in ./
menu_minipanels.module - This replacement theme function adds minipanels support to theme_link() without disturbing themes that may also implement this function.
File
- ./
menu_minipanels.module, line 355 - Allows an administrator to specify a minipanel to be associated with a Drupal menu item. When that menu item is hovered or clicked (as per config), the minipanel content will be shown using the qTip javascript library.
Code
function _menu_minipanels_include($minipanel_name, $menu_config) {
// Early betas did not have this value and the menu settings need to be
// re-saved in order to be compatible.
if (!isset($menu_config['mlid'])) {
// Leave a warning message for the
static $logged_warning = FALSE;
if (!$logged_warning) {
watchdog('Menu MiniPanels', t('Recent changes to the Menu MiniPanels module require that any menus with attached MiniPanels have their configuration re-saved.'), array(), WATCHDOG_WARNING, l('Menu configuration', 'admin/structure/menu'));
$logged_warning = TRUE;
}
return;
}
$mlid = $menu_config['mlid'];
// The same panel/mlid may be added multiple times, if the same menu is added
// to a page more than once, i.e. the primary links, plus primary links also
// added as a block.
static $added = array();
if (!isset($added[$mlid])) {
$added[$mlid] = TRUE;
}
else {
return _menu_minipanels_link_class_name($mlid);
}
// qTip interprets the absence of the 'position' array element as 'false'.
// specifying 'false' doesn't work.
if ($menu_config['position']['target'] == 'element') {
unset($menu_config['position']['target']);
}
// qTip interprets the absence of the 'tip' array element as 'don't display a tip'
// specifying 'false' doesn't work.
if ($menu_config['style']['tip'] == 'none') {
unset($menu_config['style']['tip']);
}
// Remove blank values.
if (isset($menu_config['hide']['effect']['length']) && $menu_config['hide']['effect']['length'] == '') {
unset($menu_config['hide']['effect']['length']);
}
if (isset($menu_config['hide']['effect']['delay']) && $menu_config['hide']['effect']['delay'] == '') {
unset($menu_config['hide']['effect']['delay']);
}
if (isset($menu_config['show']['effect']['delay']) && $menu_config['show']['effect']['delay'] == '') {
unset($menu_config['show']['effect']['delay']);
}
if (isset($menu_config['show']['effect']['length']) && $menu_config['show']['effect']['length'] == '') {
unset($menu_config['show']['effect']['length']);
}
if (isset($menu_config['style']['border']['color']) && $menu_config['style']['border']['color'] == '') {
unset($menu_config['style']['border']['color']);
}
if (isset($menu_config['style']['border']['radius']) && $menu_config['style']['border']['radius'] == '') {
unset($menu_config['style']['border']['radius']);
}
if (isset($menu_config['style']['border']['width']) && $menu_config['style']['border']['width'] == '') {
unset($menu_config['style']['border']['width']);
}
if (isset($menu_config['style']['border']) && empty($menu_config['style']['border'])) {
unset($menu_config['style']['border']);
}
if (isset($menu_config['style']['width']['max']) && $menu_config['style']['width']['max'] == '') {
unset($menu_config['style']['width']['max']);
}
if (isset($menu_config['style']['width']['min']) && $menu_config['style']['width']['min'] == '') {
unset($menu_config['style']['width']['min']);
}
if (isset($menu_config['style']['width']) && empty($menu_config['style']['width'])) {
unset($menu_config['style']['width']);
}
if (isset($menu_config['position']['container']) && empty($menu_config['position']['container'])) {
unset($menu_config['position']['container']);
}
// Must have all both for this to work correctly.
if (isset($menu_config['position']['adjust']['x']) && empty($menu_config['position']['adjust']['x']) || isset($menu_config['position']['adjust']['y']) && empty($menu_config['position']['adjust']['y'])) {
unset($menu_config['position']['adjust']['x']);
unset($menu_config['position']['adjust']['y']);
}
else {
// Qtip expects an integer to compute position.
settype($menu_config['position']['adjust']['x'], 'int');
settype($menu_config['position']['adjust']['y'], 'int');
}
if (empty($menu_config['position']['adjust'])) {
unset($menu_config['position']['adjust']);
}
$settings = array(
'menuMinipanels' => array(
'panels' => array(
'panel_' . $mlid => $menu_config,
),
),
);
drupal_add_js($settings, 'setting');
// Load the necessary style JS file.
module_invoke_all('menu_minipanels_style', $menu_config);
menu_minipanels_panels($mlid, $minipanel_name);
return _menu_minipanels_link_class_name($mlid);
}