1
0

BxBaseCalendar.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. * Calendar objects representation.
  11. * @see BxDolCalendar
  12. */
  13. class BxBaseCalendar extends BxDolCalendar
  14. {
  15. protected $_bJsCssAdded = false;
  16. protected $_oTemplate;
  17. protected $_aOptions;
  18. public function __construct ($aOptions, $oTemplate = null)
  19. {
  20. parent::__construct ();
  21. if ($oTemplate)
  22. $this->_oTemplate = $oTemplate;
  23. else
  24. $this->_oTemplate = BxDolTemplate::getInstance();
  25. $oConfig = BxTemplConfig::getInstance();
  26. $aOptionsDefault = array(
  27. 'timeZone' => 'local',
  28. 'eventColor' => $oConfig->aLessConfig['bx-color-active'],
  29. 'eventTextColor' => $oConfig->aLessConfig['bx-font-color-default'],
  30. 'locale' => $this->_getLang(),
  31. );
  32. $this->_aOptions = array_merge($aOptionsDefault, $aOptions);
  33. }
  34. public function display ($sTemplate = 'calendar.html')
  35. {
  36. $this->_addJsCss();
  37. return $this->_oTemplate->parseHtmlByName($sTemplate, array(
  38. 'id' => 'bx_events_calendar_' . genRndPwd (8, false),
  39. 'options' => json_encode($this->_aOptions),
  40. ));
  41. }
  42. protected function _getLang()
  43. {
  44. $aCalendarLangs = array('af' => 1, 'ar-dz' => 1, 'ar-kw' => 1, 'ar-ly' => 1, 'ar-ma' => 1, 'ar-sa' => 1, 'ar-tn' => 1, 'ar' => 1, 'bg' => 1, 'bs' => 1, 'ca' => 1, 'cs' => 1, 'da' => 1, 'de-at' => 1, 'de-ch' => 1, 'de' => 1, 'el' => 1, 'en-au' => 1, 'en-ca' => 1, 'en-gb' => 1, 'en-ie' => 1, 'en-nz' => 1, 'es-do' => 1, 'es-us' => 1, 'es' => 1, 'et' => 1, 'eu' => 1, 'fa' => 1, 'fi' => 1, 'fr-ca' => 1, 'fr-ch' => 1, 'fr' => 1, 'gl' => 1, 'he' => 1, 'hi' => 1, 'hr' => 1, 'hu' => 1, 'id' => 1, 'is' => 1, 'it' => 1, 'ja' => 1, 'ka' => 1, 'kk' => 1, 'ko' => 1, 'lb' => 1, 'lt' => 1, 'lv' => 1, 'mk' => 1, 'ms-my' => 1, 'ms' => 1, 'nb' => 1, 'nl-be' => 1, 'nl' => 1, 'nn' => 1, 'pl' => 1, 'pt-br' => 1, 'pt' => 1, 'ro' => 1, 'ru' => 1, 'sk' => 1, 'sl' => 1, 'sq' => 1, 'sr-cyrl' => 1, 'sr' => 1, 'sv' => 1, 'th' => 1, 'tr' => 1, 'uk' => 1, 'vi' => 1, 'zh-cn' => 1, 'zh-tw' => 1);
  45. return BxDolLanguages::getInstance()->detectLanguageFromArray ($aCalendarLangs, 'en', true);
  46. }
  47. /**
  48. * Add css/js files which are needed for display and functionality.
  49. */
  50. protected function _addJsCss()
  51. {
  52. if ($this->_bJsCssAdded)
  53. return;
  54. $this->_oTemplate->addCss(array(
  55. 'fullcalendar.css',
  56. ));
  57. $sCalendarLang = $this->_getLang();
  58. $this->_oTemplate->addJs(array(
  59. 'fullcalendar/index.global.min.js',
  60. 'fullcalendar/locales/' . $sCalendarLang . '.global.min.js',
  61. ));
  62. $this->_bJsCssAdded = true;
  63. }
  64. }
  65. /** @} */