Skip to content

Instantly share code, notes, and snippets.

@lonalore
Last active December 30, 2015 10:46
Show Gist options
  • Save lonalore/36ae6c24c8d3261bea6f to your computer and use it in GitHub Desktop.
Save lonalore/36ae6c24c8d3261bea6f to your computer and use it in GitHub Desktop.
function sc_bootstrap_languagelinks($parm = '')
{
if(!defined('LANGLINKS_SEPARATOR'))
{
define('LANGLINKS_SEPARATOR', '  ');
}
$tmp = explode('|', $parm, 2);
$parm = $tmp[0];
$parms = array();
if(isset($tmp[1]))
{
parse_str($tmp[1], $parms);
}
// Ignore Query string if required by parms or external code, false by default.
if(!defined('LANGLINKS_NOQUERY'))
{
define('LANGLINKS_NOQUERY', isset($parms['noquery']));
}
if(!defined('LANGLINKS_HOME'))
{
define('LANGLINKS_HOME', isset($parms['home']));
}
/*
require_once(e_HANDLER.'language_class.php');
$slng = new language;
*/
$slng = e107::getLanguage();
if(!empty($parm))
{
$languageList = explode(',', $parm);
}
else
{
$languageList = $slng->installed();
sort($languageList);
}
if(count($languageList) < 2)
{
return;
}
$ret[] = "<ul id='navbar-languages' class='nav navbar-nav pull-right'>";
$ret[] = "<li class='dropdown'>";
$ret[] = "<a class='dropdown-toggle' href='#' data-target='#' data-toggle='dropdown' role='button' title='Change Language'>";
$ret[] = "<span class='lang-sm lang-lbl-full' lang='".$slng->convert(e_LANGUAGE)."'></span>";
$ret[] = "<b class='caret pull-righ'></b>";
/*
foreach($languageList as $languageFolder)
{
$code = ($lng == e107::getPref('sitelanguage')) ? 'www' : $code;
$class = ($languageFolder == e_LANGUAGE) ? 'languagelink_active' : 'languagelink';
$ret[] = "<div class='{$class}' href='{$link}'><span class='lang-lg lang-lbl-full' lang='".$code."'></span></div><b class='caret pull-righ'></b>";
}
*/
$ret[] = "</a>";
$ret[] = "<ul class='dropdown-menu pull-right' role='menu'>";
foreach($languageList as $languageFolder)
{
$code = $slng->convert($languageFolder);
$name = $slng->toNative($languageFolder);
// $subdom = (isset($cursub[2])) ? $cursub[0] : '';
if(e107::getPref('multilanguage_subdomain'))
{
$code = ($languageFolder == e107::getPref('sitelanguage')) ? 'www' : $code;
if(LANGLINKS_HOME)
{
$link = str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, SITEURL);
}
else
{
if(!LANGLINKS_NOQUERY)
{
// Includes query string.
$link = str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, e_REQUEST_URL);
}
else
{
// Excludes query string.
$link = str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, e_REQUEST_SELF);
}
}
}
else
{
// TODO - switch to elan=Language query when possible (now it'll break the old DOT query string format)
if(LANGLINKS_HOME)
{
$link = SITEURL.'?elan='.$code;
}
else
{
$e_QUERY = str_replace('['.e_MENU.']',"",e_QUERY);
$link = (!LANGLINKS_NOQUERY) ? e_REQUEST_SELF.'?['.$code.']'.$e_QUERY : e_REQUEST_SELF.'?elan='.$code;
}
}
$class = ($languageFolder == e_LANGUAGE) ? 'languagelink_active' : 'languagelink';
$ret[] = "<li class='' role='menuitem'>";
$ret[] = "<a class='{$class}' href='{$link}'><span class='lang-lg lang-lbl-full' lang='".$code."'></span></a>";
$ret[] = "</li>";
}
$ret[] = "</ul></li></ul>";
return implode(LANGLINKS_SEPARATOR, $ret);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment