Přihlásit se

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
po aktualizaci joomla 2.5.4 zmizí modul language od Mirek Adamec
Začátečník
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
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. :)

Powered by Fórum