Skip to content

Commit

Permalink
Improve code: detect megamenu configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
khanhlh committed Jun 19, 2014
1 parent 2d771d9 commit 0e06955
Showing 1 changed file with 15 additions and 29 deletions.
44 changes: 15 additions & 29 deletions source/plg_system_t3/includes/renderer/megamenurender.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,48 +45,34 @@ public function render($info = null, $params = array(), $content = null)
$mmkey = $menutype;
$mmconfig = array();
if (!empty($currentconfig)) {

//find best fit configuration based on view level
$vlevels = array_merge($viewLevels);
if (is_array($vlevels) && in_array(3, $vlevels)) { //we assume, if a user is special, they should be registered also
$vlevels[] = 2;
}
$vlevels = array_unique($vlevels);
rsort($vlevels);
if (!is_array($vlevels)) $vlevels = array();
$vlevels[] = ''; // extend a blank, default key

if (is_array($vlevels) && count($vlevels)) {
//should check for special view level first
if (in_array(3, $vlevels)) {
array_unshift($vlevels, 3);
}
// check if available configuration for language override
$langcode = JFactory::getDocument()->language;
$shortlangcode = substr($langcode, 0, 2);
$types = array($menutype . '-' . $langcode, $menutype . '-' . $shortlangcode, $menutype);

$found = false;
foreach ($types as $type) {
foreach ($vlevels as $vlevel) {
$mmkey = $menutype . '-' . $vlevel;
if (isset($currentconfig[$mmkey])) {
$found = true;
break;
$key = $type . ($vlevel !== '' ? '-' . $vlevel : '');
if(isset($currentconfig[$key])) {
$mmkey = $key;
$menutype = $type;
break 2;
} else if (isset($currentconfig[$type])){
$mmkey = $menutype = $type;
break 2;
}
}

//fallback
if (!$found) {
$mmkey = $menutype;
}
}

// check if available configuration for language override
$langcode = substr(JFactory::getDocument()->language, 0, 2);
$langtype = $menutype . '-' . $langcode;
$langkey = $langtype . str_replace($menutype, '', $mmkey);

if(isset($currentconfig[$langkey])) {
$mmkey = $langkey;
$menutype = $langtype;
} else if (isset($currentconfig[$langtype])){
$mmkey = $menutype = $langtype;
}

if (isset($currentconfig[$mmkey])) {
$mmconfig = $currentconfig[$mmkey];
if(!is_array($mmconfig)){
Expand Down

0 comments on commit 0e06955

Please sign in to comment.