BxTimelineMenuFeeds.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 Timeline Timeline
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. class BxTimelineMenuFeeds extends BxTemplMenu
  12. {
  13. protected $_sModule;
  14. protected $_oModule;
  15. protected $_sJsObject;
  16. protected $_sStylePrefix;
  17. public function __construct($aObject, $oTemplate = false)
  18. {
  19. $this->_sModule = 'bx_timeline';
  20. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  21. parent::__construct($aObject, $this->_oModule->_oTemplate);
  22. $this->_isMultilevel = true;
  23. $this->_bDisplayAddons = true;
  24. }
  25. public function setBrowseParams($aParams = [])
  26. {
  27. $this->_sJsObject = $this->_oModule->_oConfig->getJsObject('view_filters');
  28. $this->_sStylePrefix = $this->_oModule->_oConfig->getPrefix('style');
  29. $aMarkers = array();
  30. foreach($aParams as $sKey => $mixedValue)
  31. if(!is_array($mixedValue))
  32. $aMarkers[$sKey] = $mixedValue;
  33. $aMarkers['js_object_view'] = $this->_sJsObject;
  34. $this->addMarkers($aMarkers);
  35. }
  36. protected function getMenuItemsRaw()
  37. {
  38. $aMenuItems = parent::getMenuItemsRaw();
  39. if(empty($aMenuItems) || !is_array($aMenuItems))
  40. return $aMenuItems;
  41. $iProfile = bx_get_logged_profile_id();
  42. $oConnection = BxDolConnection::getObjectInstance('sys_profiles_subscriptions');
  43. $sOnClickMask = "return " . $this->_sJsObject. ".changeFeed(this, '%s', {context: %d})";
  44. foreach($aMenuItems as $iIndex => $aItem) {
  45. $aIds = $oConnection->getConnectedContentByType($iProfile, array($aItem['module']));
  46. if(empty($aItem['onclick']))
  47. $aMenuItems[$iIndex]['onclick'] = $this->_sJsObject . '.toggleMenuItemFeeds(this)';
  48. $aSubmenu = array();
  49. foreach($aIds as $iId) {
  50. $oContext = BxDolProfile::getInstance($iId);
  51. if(!$oContext)
  52. continue;
  53. $aSubmenu[] = array(
  54. 'id' => 'context-' . $iId,
  55. 'name' => 'context-' . $iId,
  56. 'module' => $aItem['module'],
  57. 'class' => '',
  58. 'link' => $oContext->getUrl(),
  59. 'onclick' => sprintf($sOnClickMask, $aItem['module'], $iId),
  60. 'target' => '_self',
  61. 'title' => $oContext->getDisplayName(),
  62. 'icon' => $oContext->getIcon(),
  63. 'active' => 1,
  64. 'context_id' => $iId
  65. );
  66. }
  67. if(!empty($aSubmenu))
  68. $aMenuItems[$iIndex]['subitems'] = $aSubmenu;
  69. }
  70. return $aMenuItems;
  71. }
  72. protected function _getTemplateVars ()
  73. {
  74. $aResult = parent::_getTemplateVars();
  75. $aResult['style_prefix'] = $this->_sStylePrefix;
  76. return $aResult;
  77. }
  78. protected function _getMenuItem ($a)
  79. {
  80. if($a['name'] == 'divider' && parent::_getMenuItem($a) !== false)
  81. return $this->_oModule->_oTemplate->parseHtmlByName('menu_item_divider.html', []);
  82. $aResult = parent::_getMenuItem($a);
  83. if(!$aResult)
  84. return $aResult;
  85. return array_merge($aResult, [
  86. 'js_object' => $this->_sJsObject,
  87. 'style_prefix' => $this->_sStylePrefix,
  88. 'bx_if:show_toggle' => [
  89. 'condition' => $this->isMultilevel() && !empty($a['subitems']),
  90. 'content' => [
  91. 'js_object' => $this->_sJsObject,
  92. 'style_prefix' => $this->_sStylePrefix,
  93. 'name' => $a['name']
  94. ]
  95. ]
  96. ]);
  97. }
  98. }
  99. /** @} */