Joomla 5.2.2 Security & Bugfix Release
Joomla 5.2.2 je nyní k dispozici. Jedná se o bezpečnostní vydání pro Joomla 5.x.
po aktualizaci joomla 2.5.4 zmizí modul language
05. dub 2012 10:26 #92063
přesněji řečeno mod_language v adresáři modules
zjistil sem že chyba je v souboru v adresáři modules/mod_languages/helper.php
resp nevim jestli je to chyba, ale po updatu má jiný obsah a mě se pak nevypíšou vlaječky pro přepínání jazyků, modul tam vlastně jakoby je, ale je prázdný.
kód souboru helper.php před updatem
po updatu
moc nevim co s tim, tušíte někdo jiný. Na jiných webech update proběhl normálně. Zkoušel sem i jinou šablonu a tou to není. pomůže když přepíšu tento soubor, ale nevim jestli si tim nějak nezavařim do budoucna. díky
zjistil sem že chyba je v souboru v adresáři modules/mod_languages/helper.php
resp nevim jestli je to chyba, ale po updatu má jiný obsah a mě se pak nevypíšou vlaječky pro přepínání jazyků, modul tam vlastně jakoby je, ale je prázdný.
kód souboru helper.php před updatem
Code:
<?php
/**
* @package Joomla.Site
* @subpackage mod_languages
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// no direct access
defined('_JEXEC') or die;
jimport('joomla.utilities.utility');
JLoader::register('MenusHelper', JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php');
abstract class modLanguagesHelper
{
public static function getList(&$params)
{
$lang = JFactory::getLanguage();
$languages = JLanguageHelper::getLanguages();
$db = JFactory::getDBO();
$app = JFactory::getApplication();
$query = $db->getQuery(true);
$query->select('id');
$query->select('language');
$query->from($db->quoteName('#__menu'));
$query->where('home=1');
$db->setQuery($query);
$homes = $db->loadObjectList('language');
if ($app->get('menu_associations', 0)) {
$menu = $app->getMenu();
$active = $menu->getActive();
if ($active) {
$associations = MenusHelper::getAssociations($active->id);
}
}
foreach($languages as $i => &$language) {
// Do not display language without frontend UI
if (!JLanguage::exists($language->lang_code)) {
unset($languages[$i]);
}
// Do not display language without specific home menu
elseif (!isset($homes[$language->lang_code])) {
unset($languages[$i]);
}
else {
$language->active = $language->lang_code == $lang->getTag();
if ($app->getLanguageFilter()) {
if (isset($associations[$language->lang_code]) && $menu->getItem($associations[$language->lang_code])) {
$itemid = $associations[$language->lang_code];
if ($app->getCfg('sef')=='1') {
$language->link = JRoute::_('index.php?lang='.$language->sef.'&Itemid='.$itemid);
}
else {
$language->link = 'index.php?lang='.$language->sef.'&Itemid='.$itemid;
}
}
else {
if ($app->getCfg('sef')=='1') {
$itemid = isset($homes[$language->lang_code]) ? $homes[$language->lang_code]->id : $homes['*']->id;
$language->link = JRoute::_('index.php?lang='.$language->sef.'&Itemid='.$itemid);
}
else {
$language->link = 'index.php?lang='.$language->sef;
}
}
}
else {
$language->link = JRoute::_('&Itemid='.$homes['*']->id);
}
}
}
return $languages;
}
}
po updatu
Code:
<?php
/**
* @package Joomla.Site
* @subpackage mod_languages
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// no direct access
defined('_JEXEC') or die;
jimport('joomla.utilities.utility');
JLoader::register('MenusHelper', JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php');
abstract class modLanguagesHelper
{
public static function getList(&$params)
{
$user = JFactory::getUser();
$lang = JFactory::getLanguage();
$app = JFactory::getApplication();
$menu = $app->getMenu();
// Get menu home items
$homes = array();
foreach($menu->getMenu() as $item) {
if ($item->home) {
$homes[$item->language] = $item;
}
}
// Load associations
if ($app->get('menu_associations', 0)) {
$active = $menu->getActive();
if ($active) {
$associations = MenusHelper::getAssociations($active->id);
}
}
$levels = $user->getAuthorisedViewLevels();
$languages = JLanguageHelper::getLanguages();
// Filter allowed languages
foreach($languages as $i => &$language) {
// Do not display language without frontend UI
if (!JLanguage::exists($language->lang_code)) {
unset($languages[$i]);
}
// Do not display language without specific home menu
elseif (!isset($homes[$language->lang_code])) {
unset($languages[$i]);
}
// Do not display language without authorized access level
elseif (isset($language->access) && $language->access && !in_array($language->access, $levels)) {
unset($languages[$i]);
}
else {
$language->active = $language->lang_code == $lang->getTag();
if ($app->getLanguageFilter()) {
if (isset($associations[$language->lang_code]) && $menu->getItem($associations[$language->lang_code])) {
$itemid = $associations[$language->lang_code];
if ($app->getCfg('sef')=='1') {
$language->link = JRoute::_('index.php?lang='.$language->sef.'&Itemid='.$itemid);
}
else {
$language->link = 'index.php?lang='.$language->sef.'&Itemid='.$itemid;
}
}
else {
if ($app->getCfg('sef')=='1') {
$itemid = isset($homes[$language->lang_code]) ? $homes[$language->lang_code]->id : $homes['*']->id;
$language->link = JRoute::_('index.php?lang='.$language->sef.'&Itemid='.$itemid);
}
else {
$language->link = 'index.php?lang='.$language->sef;
}
}
}
else {
$language->link = JRoute::_('&Itemid='.$homes['*']->id);
}
}
}
return $languages;
}
}
moc nevim co s tim, tušíte někdo jiný. Na jiných webech update proběhl normálně. Zkoušel sem i jinou šablonu a tou to není. pomůže když přepíšu tento soubor, ale nevim jestli si tim nějak nezavařim do budoucna. díky
05. dub 2012 10:33 #92065
Odpověď od Mirek Adamec
Začátečník
ha tak sem asi přišel na problém
v jednotlivých jazycích a jejich menu sem měl v každém menu položku home, která je defaultní pro daný jazyk, ale tu sem měl nezveřejněnou, protože se mi nechtělo tam mít nicneříkající položku home, ale přesto sem nechtěl mít jinou položku jako defaulní pro daný jazyk.
Holt přepsali nějakou funkci a už mi to nefunguje jako předtím.
Asi promyslim jak to udělat jinak a ono to nějak pujde.
Takže asi není potřeba odpovídat, tedy pokud nemáte jiný nápad jak toto udělat.
sorry za spam, ale díky tomu že sem to sem napsal sem si tu chybu našel a třeba se někdy někomu může hodit.
v jednotlivých jazycích a jejich menu sem měl v každém menu položku home, která je defaultní pro daný jazyk, ale tu sem měl nezveřejněnou, protože se mi nechtělo tam mít nicneříkající položku home, ale přesto sem nechtěl mít jinou položku jako defaulní pro daný jazyk.
Holt přepsali nějakou funkci a už mi to nefunguje jako předtím.
Asi promyslim jak to udělat jinak a ono to nějak pujde.
Takže asi není potřeba odpovídat, tedy pokud nemáte jiný nápad jak toto udělat.
sorry za spam, ale díky tomu že sem to sem napsal sem si tu chybu našel a třeba se někdy někomu může hodit.