1
0

BxBaseMenuSwitchLanguage.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaBaseView UNA Base Representation Classes
  7. * @{
  8. */
  9. /**
  10. * Site main menu representation.
  11. */
  12. class BxBaseMenuSwitchLanguage extends BxTemplMenu
  13. {
  14. protected $_sType;
  15. public function __construct ($aObject, $oTemplate)
  16. {
  17. parent::__construct ($aObject, $oTemplate);
  18. $this->_sType = str_replace('sys_switch_language_', '', $this->_sObject);
  19. }
  20. public function getMenuItems ()
  21. {
  22. $this->loadData();
  23. return parent::getMenuItems();
  24. }
  25. protected function loadData()
  26. {
  27. $aLanguages = BxDolLanguagesQuery::getInstance()->getLanguages(false, true);
  28. if(empty($aLanguages) || !is_array($aLanguages) || count($aLanguages) < 2)
  29. return;
  30. $oModuleQuery = BxDolModuleQuery::getInstance();
  31. $sLanguage = BxDolLanguages::getInstance()->getCurrentLangName();
  32. $this->setSelected('', $sLanguage);
  33. list($sPageLink, $aPageParams) = $this->{'getBaseUrl' . bx_gen_method_name($this->_sType)}();
  34. $oPermalink = BxDolPermalinks::getInstance();
  35. $sMethod = 'getItemTitle' . bx_gen_method_name($this->_sType);
  36. $aItems = array();
  37. foreach( $aLanguages as $sName => $sLang ) {
  38. $aModule = $oModuleQuery->getModuleByUri($sName);
  39. if(empty($aModule) || !is_array($aModule) || (int)$aModule['enabled'] == 0)
  40. continue;
  41. $aPageParams['lang'] = $sName;
  42. $sTitle = getParam($aModule['name'] . '_switcher_title');
  43. if(!empty($sTitle))
  44. $sLang = $sTitle;
  45. $aItems[] = array(
  46. 'id' => $sName,
  47. 'name' => 'lang-' . $sName,
  48. 'class' => '',
  49. 'title' => $this->$sMethod($sName, $sLang),
  50. 'target' => '_self',
  51. 'icon' => '',
  52. 'link' => bx_html_attribute($oPermalink->permalink(bx_append_url_params($sPageLink, $aPageParams))),
  53. 'onclick' => ''
  54. );
  55. }
  56. $this->_aObject['menu_items'] = $aItems;
  57. }
  58. protected function getBaseUrlPopup()
  59. {
  60. return bx_get_base_url_popup();
  61. }
  62. protected function getBaseUrlInline()
  63. {
  64. return bx_get_base_url_inline();
  65. }
  66. protected function getItemTitlePopup($sName, $sTitle)
  67. {
  68. return $this->_oTemplate->parseHtmlByName('menu_switch_language_title.html', [
  69. 'icon' => genFlag($sName),
  70. 'title' => $sTitle
  71. ]);
  72. }
  73. protected function getItemTitleInline($sName, $sTitle)
  74. {
  75. return $this->_oTemplate->parseHtmlByName('menu_switch_language_title.html', [
  76. 'icon' => genFlag($sName),
  77. 'title' => ''
  78. ]);
  79. }
  80. }
  81. /** @} */