File: /home/oscasa/public_html/plugins/system/t3/includes/menu/megamenu.tpl.php
<?php
/**
*------------------------------------------------------------------------------
* @package T3 Framework for Joomla!
*------------------------------------------------------------------------------
* @copyright Copyright (C) 2004-2013 JoomlArt.com. All Rights Reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @authors JoomlArt, JoomlaBamboo, (contribute to this project at github
* & Google group to become co-author)
* @Google group: https://groups.google.com/forum/#!forum/t3fw
* @Link: http://t3-framework.org
*------------------------------------------------------------------------------
*/
class T3MenuMegamenuTpl
{
static function beginmenu($vars)
{
$menu = $vars['menu'];
$animation = $menu->getParam('navigation_animation', '');
$trigger = $menu->getParam('navigation_trigger', 'hover');
$responsive = $menu->getParam('responsive', 1);
$anim_duration = $menu->getParam('navigation_animation_duration', 0);
$cls = ' class="t3-megamenu' . ($trigger == 'hover' && $animation ? ' animate ' . $animation : '') . '"';
$data = $animation && $anim_duration ? ' data-duration="' . $anim_duration . '"' : '';
$data = $data . ($responsive ? ' data-responsive="true"' : '');
return "<div $cls $data>";
}
static function endmenu($vars)
{
return '</div>';
}
static function beginnav($vars)
{
$item = $vars['item'];
$cls = '';
if (!$item) {
// first nav
$cls = 'nav navbar-nav level0';
} else {
$cls .= ' mega-nav';
$cls .= ' level' . $item->level;
}
if ($cls) $cls = 'class="' . trim($cls) . '"';
return '<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement" ' . $cls . '>';
}
static function endnav($vars)
{
return '</ul>';
}
static function beginmega($vars)
{
$item = $vars['item'];
$setting = $item->setting;
$sub = $setting['sub'];
$cls = 'nav-child ' . ($item->dropdown ? 'dropdown-menu mega-dropdown-menu' : 'mega-group-ct');
$style = '';
$data = '';
if (isset($sub['class'])) {
$data .= " data-class=\"{$sub['class']}\"";
$cls .= " {$sub['class']}";
}
if (isset($setting['alignsub']) && $setting['alignsub'] == 'justify') {
$cls .= ' ' . ($vars['menu']->editmode ? 'span' : T3_BASE_NONRSP_WIDTH_PREFIX) . '12';
} else {
if (isset($sub['width'])) {
if ($item->dropdown) $style = ' style="width: ' . str_replace('px', '', $sub['width']) . 'px"';
$data .= ' data-width="' . str_replace('px', '', $sub['width']) . '"';
}
}
if ($cls) $cls = 'class="' . trim($cls) . '"';
return "<div $cls $style $data><div class=\"mega-dropdown-inner\">";
}
static function endmega($vars)
{
return '</div></div>';
}
static function beginrow($vars)
{
return '<div class="' . ($vars['menu']->editmode ? 'row-fluid' : T3_BASE_ROW_FLUID_PREFIX) . '">';
}
static function endrow($vars)
{
return '</div>';
}
static function begincol($vars)
{
$setting = isset($vars['setting']) ? $vars['setting'] : array();
$width = isset($setting['width']) ? $setting['width'] : T3_BASE_MAX_GRID;
$data = "data-width=\"$width\"";
$cls = ($vars['menu']->editmode ? 'span' : T3_BASE_NONRSP_WIDTH_PREFIX) . $width;
if (isset($setting['position'])) {
$cls .= " mega-col-module";
$data .= " data-position=\"{$setting['position']}\"";
} else {
$cls .= " mega-col-nav";
}
if (isset($setting['class'])) {
$cls .= " {$setting['class']}";
$data .= " data-class=\"{$setting['class']}\"";
}
if (isset($setting['hidewcol'])) {
$cls .= " hidden-collapse";
$data .= " data-hidewcol=\"1\"";
}
if (isset($setting['groupstyle']) && $setting['groupstyle']) {
$cls .= " " . $setting['groupstyle'];
$data .= " data-groupstyle=\"{$setting['groupstyle']}\"";
}
return "<div class=\"$cls\" $data><div class=\"mega-inner\">";
}
static function endcol($vars)
{
return '</div></div>';
}
static function beginitem($vars)
{
$item = $vars['item'];
$setting = $item->setting;
$cls = $item->class;
if ($item->dropdown) {
$cls .= $item->level == 1 ? ' dropdown' : ' dropdown-submenu';
}
if ($item->mega) $cls .= ' mega';
if ($item->group) $cls .= ' mega-group';
if ($item->type == 'separator' && !$item->group && !$item->mega) $cls .= ' divider';
$data = "data-id=\"{$item->id}\" data-level=\"{$item->level}\"";
if ($item->group) $data .= " data-group=\"1\"";
if (isset($setting['class'])) {
$cls .= " {$setting['class']}";
$data .= " data-class=\"{$setting['class']}\"";
}
if (isset($setting['alignsub'])) {
$cls .= " mega-align-{$setting['alignsub']}";
$data .= " data-alignsub=\"{$setting['alignsub']}\"";
}
if (isset($setting['hidesub'])) $data .= " data-hidesub=\"1\"";
if (isset($setting['xicon'])) $data .= " data-xicon=\"{$setting['xicon']}\"";
if (isset($setting['caption'])) $data .= " data-caption=\"" . htmlspecialchars($setting['caption']) . "\"";
if (isset($setting['hidewcol'])) {
$data .= " data-hidewcol=\"1\"";
$cls .= " sub-hidden-collapse";
}
if ($cls) $cls = 'class="' . trim($cls) . '"';
return "<li itemprop='name' $cls $data>";
}
static function enditem($vars)
{
return '</li>';
}
static function item($vars)
{
$item = $vars['item'];
$setting = $item->setting;
// Note. It is important to remove spaces between elements.
$vars['class'] = $item->anchor_css ? $item->anchor_css : '';
$vars['title'] = $item->anchor_title ? ' title="' . $item->anchor_title . '" ' : '';
$vars['rel'] = $item->anchor_rel ? ' rel="' . $item->anchor_rel . '" ' : '';
$vars['dropdown'] = ' data-target="#"';
$vars['caret'] = '';
$vars['icon'] = '';
$vars['caption'] = '';
if ($item->dropdown && $item->level < 2) {
$vars['class'] .= ' dropdown-toggle';
$vars['dropdown'] .= ' data-toggle="dropdown"'; // Note: data-target for JomSocial old bootstrap lib
$vars['caret'] = '<em class="caret"></em>';
}
if($item->group){
$vars['class'] .= ' dropdown-header mega-group-title';
}
if ($item->menu_image) {
$item->params->get('menu_text', 1) ?
$vars['linktype'] = '<img class="' . $item->menu_image_css . '" src="' . $item->menu_image . '" alt="' . $item->title . '" /><span class="image-title">' . $item->title . '</span> ' :
$vars['linktype'] = '<img class="' . $item->menu_image_css . '" src="' . $item->menu_image . '" alt="' . $item->title . '" />';
} else {
$vars['linktype'] = $item->title;
}
if (isset($setting['xicon']) && $setting['xicon']) {
$vars['icon'] = '<span class="' . $setting['xicon'] . '"></span>';
}
if (isset($setting['caption']) && $setting['caption']) {
$vars['caption'] = '<span class="mega-caption">' . $setting['caption'] . '</span>';
} else if ($item->level == 1 && $vars['menu']->get('top_level_caption')) {
$vars['caption'] = '<span class="mega-caption mega-caption-empty"> </span>';
}
switch ($item->type) {
case 'separator':
case 'heading':
$html = self::_('item_separator', $vars);
break;
case 'component':
$html = self::_('item_component', $vars);
break;
case 'url':
default:
$html = self::_('item_url', $vars);
}
return $html;
}
static function item_url($vars)
{
$item = $vars['item'];
$class = $vars['class'];
$rel = $vars['rel'];
$title = $vars['title'];
$dropdown = $vars['dropdown'];
$caret = $vars['caret'];
$linktype = $vars['linktype'];
$icon = $vars['icon'];
$caption = $vars['caption'];
$flink = $item->flink;
$flink = JFilterOutput::ampReplace(htmlspecialchars($flink));
switch ($item->browserNav) :
default:
case 0:
$link = "<a itemprop='url' class=\"$class\" $rel href=\"$flink\" $title $dropdown>$icon$linktype$caret$caption</a>";
break;
case 1:
// _blank
$link = "<a itemprop='url' class=\"$class\" $rel href=\"$flink\" target=\"_blank\" $title $dropdown>$icon$linktype$caret$caption</a>";
break;
case 2:
// window.open
$options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes';
$link = "<a itemprop='url' class=\"$class\" $rel href=\"$flink\"" . (!$vars['menu']->editmode ? " onclick=\"window.open(this.href,'targetWindow','$options');return false;\"" : "") . " $title $dropdown>$icon$linktype$caret$caption</a>";
break;
endswitch;
return $link;
}
static function item_separator($vars)
{
$item = $vars['item'];
$class = $vars['class'];
$title = $vars['title'];
$dropdown = $vars['dropdown'];
$caret = $vars['caret'];
$linktype = $vars['linktype'];
$icon = $vars['icon'];
$caption = $vars['caption'];
// Note. It is important to remove spaces between elements.
$class .= " separator";
return "<span class=\"$class\" $title $dropdown>$icon$title $linktype$caret$caption</span>";
}
static function item_component($vars)
{
$item = $vars['item'];
$class = $vars['class'];
$rel = $vars['rel'];
$title = $vars['title'];
$dropdown = $vars['dropdown'];
$caret = $vars['caret'];
$linktype = $vars['linktype'];
$icon = $vars['icon'];
$caption = $vars['caption'];
// Note. It is important to remove spaces between elements.
switch ($item->browserNav) :
default:
case 0:
$link = "<a itemprop='url' class=\"$class\" $rel href=\"{$item->flink}\" $title $dropdown>$icon$linktype $caret$caption</a>";
break;
case 1:
// _blank
$link = "<a itemprop='url' class=\"$class\" $rel href=\"{$item->flink}\" target=\"_blank\" $title $dropdown>$icon$linktype $caret$caption</a>";
break;
case 2:
// window.open
$link = "<a itemprop='url' class=\"$class\" $rel href=\"{$item->flink}\"" . (!$vars['menu']->editmode ? " onclick=\"window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;\"" : "") . " $title $dropdown>$icon$linktype $caret$caption</a>";
break;
endswitch;
return $link;
}
static function _($tmpl, $vars) {
if (function_exists($func = 'T3MenuMegamenuTpl_'.$tmpl)) {
return $func($vars) . "\n";
} else if (method_exists('T3MenuMegamenuTpl', $tmpl)) {
return T3MenuMegamenuTpl::$tmpl($vars) . "\n";
} else {
return "$tmpl\n";
}
}
}